Custom Contact Forms - Version 4.7.0.0

Version Description

  • All files have been changed!
Download this release

Release Info

Developer tlovett1
Plugin Icon 128x128 Custom Contact Forms
Version 4.7.0.0
Comparing to
See all releases

Code changes from version 4.6.0.1 to 4.7.0.0

css/colorpicker.css CHANGED
@@ -1,161 +1,161 @@
1
- .colorpicker {
2
- width: 356px;
3
- height: 176px;
4
- overflow: hidden;
5
- position: absolute;
6
- background: url(../images/colorpicker_background.png);
7
- font-family: Arial, Helvetica, sans-serif;
8
- display: none;
9
- }
10
- .colorpicker_color {
11
- width: 150px;
12
- height: 150px;
13
- left: 14px;
14
- top: 13px;
15
- position: absolute;
16
- background: #f00;
17
- overflow: hidden;
18
- cursor: crosshair;
19
- }
20
- .colorpicker_color div {
21
- position: absolute;
22
- top: 0;
23
- left: 0;
24
- width: 150px;
25
- height: 150px;
26
- background: url(../images/colorpicker_overlay.png);
27
- }
28
- .colorpicker_color div div {
29
- position: absolute;
30
- top: 0;
31
- left: 0;
32
- width: 11px;
33
- height: 11px;
34
- overflow: hidden;
35
- background: url(../images/colorpicker_select.gif);
36
- margin: -5px 0 0 -5px;
37
- }
38
- .colorpicker_hue {
39
- position: absolute;
40
- top: 13px;
41
- left: 171px;
42
- width: 35px;
43
- height: 150px;
44
- cursor: n-resize;
45
- }
46
- .colorpicker_hue div {
47
- position: absolute;
48
- width: 35px;
49
- height: 9px;
50
- overflow: hidden;
51
- background: url(../images/colorpicker_indic.gif) left top;
52
- margin: -4px 0 0 0;
53
- left: 0px;
54
- }
55
- .colorpicker_new_color {
56
- position: absolute;
57
- width: 60px;
58
- height: 30px;
59
- left: 213px;
60
- top: 13px;
61
- background: #f00;
62
- }
63
- .colorpicker_current_color {
64
- position: absolute;
65
- width: 60px;
66
- height: 30px;
67
- left: 283px;
68
- top: 13px;
69
- background: #f00;
70
- }
71
- .colorpicker input {
72
- background-color: transparent;
73
- border: 1px solid transparent;
74
- position: absolute;
75
- font-size: 10px;
76
- font-family: Arial, Helvetica, sans-serif;
77
- color: #898989;
78
- top: 4px;
79
- right: 11px;
80
- text-align: right;
81
- margin: 0;
82
- padding: 0;
83
- height: 11px;
84
- }
85
- .colorpicker_hex {
86
- position: absolute;
87
- width: 72px;
88
- height: 22px;
89
- background: url(../images/colorpicker_hex.png) top;
90
- left: 212px;
91
- top: 142px;
92
- }
93
- .colorpicker_hex input {
94
- right: 6px;
95
- }
96
- .colorpicker_field {
97
- height: 22px;
98
- width: 62px;
99
- background-position: top;
100
- position: absolute;
101
- }
102
- .colorpicker_field span {
103
- position: absolute;
104
- width: 12px;
105
- height: 22px;
106
- overflow: hidden;
107
- top: 0;
108
- right: 0;
109
- cursor: n-resize;
110
- }
111
- .colorpicker_rgb_r {
112
- background-image: url(../images/colorpicker_rgb_r.png);
113
- top: 52px;
114
- left: 212px;
115
- }
116
- .colorpicker_rgb_g {
117
- background-image: url(../images/colorpicker_rgb_g.png);
118
- top: 82px;
119
- left: 212px;
120
- }
121
- .colorpicker_rgb_b {
122
- background-image: url(../images/colorpicker_rgb_b.png);
123
- top: 112px;
124
- left: 212px;
125
- }
126
- .colorpicker_hsb_h {
127
- background-image: url(../images/colorpicker_hsb_h.png);
128
- top: 52px;
129
- left: 282px;
130
- }
131
- .colorpicker_hsb_s {
132
- background-image: url(../images/colorpicker_hsb_s.png);
133
- top: 82px;
134
- left: 282px;
135
- }
136
- .colorpicker_hsb_b {
137
- background-image: url(../images/colorpicker_hsb_b.png);
138
- top: 112px;
139
- left: 282px;
140
- }
141
- .colorpicker_submit {
142
- position: absolute;
143
- width: 22px;
144
- height: 22px;
145
- background: url(../images/colorpicker_submit.png) top;
146
- left: 322px;
147
- top: 142px;
148
- overflow: hidden;
149
- }
150
- .colorpicker_focus {
151
- background-position: center;
152
- }
153
- .colorpicker_hex.colorpicker_focus {
154
- background-position: bottom;
155
- }
156
- .colorpicker_submit.colorpicker_focus {
157
- background-position: bottom;
158
- }
159
- .colorpicker_slider {
160
- background-position: bottom;
161
- }
1
+ .colorpicker {
2
+ width: 356px;
3
+ height: 176px;
4
+ overflow: hidden;
5
+ position: absolute;
6
+ background: url(../images/colorpicker_background.png);
7
+ font-family: Arial, Helvetica, sans-serif;
8
+ display: none;
9
+ }
10
+ .colorpicker_color {
11
+ width: 150px;
12
+ height: 150px;
13
+ left: 14px;
14
+ top: 13px;
15
+ position: absolute;
16
+ background: #f00;
17
+ overflow: hidden;
18
+ cursor: crosshair;
19
+ }
20
+ .colorpicker_color div {
21
+ position: absolute;
22
+ top: 0;
23
+ left: 0;
24
+ width: 150px;
25
+ height: 150px;
26
+ background: url(../images/colorpicker_overlay.png);
27
+ }
28
+ .colorpicker_color div div {
29
+ position: absolute;
30
+ top: 0;
31
+ left: 0;
32
+ width: 11px;
33
+ height: 11px;
34
+ overflow: hidden;
35
+ background: url(../images/colorpicker_select.gif);
36
+ margin: -5px 0 0 -5px;
37
+ }
38
+ .colorpicker_hue {
39
+ position: absolute;
40
+ top: 13px;
41
+ left: 171px;
42
+ width: 35px;
43
+ height: 150px;
44
+ cursor: n-resize;
45
+ }
46
+ .colorpicker_hue div {
47
+ position: absolute;
48
+ width: 35px;
49
+ height: 9px;
50
+ overflow: hidden;
51
+ background: url(../images/colorpicker_indic.gif) left top;
52
+ margin: -4px 0 0 0;
53
+ left: 0px;
54
+ }
55
+ .colorpicker_new_color {
56
+ position: absolute;
57
+ width: 60px;
58
+ height: 30px;
59
+ left: 213px;
60
+ top: 13px;
61
+ background: #f00;
62
+ }
63
+ .colorpicker_current_color {
64
+ position: absolute;
65
+ width: 60px;
66
+ height: 30px;
67
+ left: 283px;
68
+ top: 13px;
69
+ background: #f00;
70
+ }
71
+ .colorpicker input {
72
+ background-color: transparent;
73
+ border: 1px solid transparent;
74
+ position: absolute;
75
+ font-size: 10px;
76
+ font-family: Arial, Helvetica, sans-serif;
77
+ color: #898989;
78
+ top: 4px;
79
+ right: 11px;
80
+ text-align: right;
81
+ margin: 0;
82
+ padding: 0;
83
+ height: 11px;
84
+ }
85
+ .colorpicker_hex {
86
+ position: absolute;
87
+ width: 72px;
88
+ height: 22px;
89
+ background: url(../images/colorpicker_hex.png) top;
90
+ left: 212px;
91
+ top: 142px;
92
+ }
93
+ .colorpicker_hex input {
94
+ right: 6px;
95
+ }
96
+ .colorpicker_field {
97
+ height: 22px;
98
+ width: 62px;
99
+ background-position: top;
100
+ position: absolute;
101
+ }
102
+ .colorpicker_field span {
103
+ position: absolute;
104
+ width: 12px;
105
+ height: 22px;
106
+ overflow: hidden;
107
+ top: 0;
108
+ right: 0;
109
+ cursor: n-resize;
110
+ }
111
+ .colorpicker_rgb_r {
112
+ background-image: url(../images/colorpicker_rgb_r.png);
113
+ top: 52px;
114
+ left: 212px;
115
+ }
116
+ .colorpicker_rgb_g {
117
+ background-image: url(../images/colorpicker_rgb_g.png);
118
+ top: 82px;
119
+ left: 212px;
120
+ }
121
+ .colorpicker_rgb_b {
122
+ background-image: url(../images/colorpicker_rgb_b.png);
123
+ top: 112px;
124
+ left: 212px;
125
+ }
126
+ .colorpicker_hsb_h {
127
+ background-image: url(../images/colorpicker_hsb_h.png);
128
+ top: 52px;
129
+ left: 282px;
130
+ }
131
+ .colorpicker_hsb_s {
132
+ background-image: url(../images/colorpicker_hsb_s.png);
133
+ top: 82px;
134
+ left: 282px;
135
+ }
136
+ .colorpicker_hsb_b {
137
+ background-image: url(../images/colorpicker_hsb_b.png);
138
+ top: 112px;
139
+ left: 282px;
140
+ }
141
+ .colorpicker_submit {
142
+ position: absolute;
143
+ width: 22px;
144
+ height: 22px;
145
+ background: url(../images/colorpicker_submit.png) top;
146
+ left: 322px;
147
+ top: 142px;
148
+ overflow: hidden;
149
+ }
150
+ .colorpicker_focus {
151
+ background-position: center;
152
+ }
153
+ .colorpicker_hex.colorpicker_focus {
154
+ background-position: bottom;
155
+ }
156
+ .colorpicker_submit.colorpicker_focus {
157
+ background-position: bottom;
158
+ }
159
+ .colorpicker_slider {
160
+ background-position: bottom;
161
+ }
css/custom-contact-forms-admin.css CHANGED
@@ -1,602 +1,603 @@
1
- #customcontactforms-admin {
2
- vertical-align:top;
3
- margin:1em 0 30px 25px;
4
- overflow:visible;
5
- min-width:1020px;
6
- }
7
- #customcontactforms-admin .plugin-header {
8
- clear:both;
9
- padding:0;
10
- margin:0;
11
- width:100%;
12
- display:block;
13
- height:60px;
14
- background:url(../images/admin-icon.png) no-repeat 0px 10px;
15
- }
16
- #customcontactforms-admin .plugin-header h2 {
17
- float:left;
18
- clear:none;
19
- margin-left:46px;
20
- width:30%;
21
- display:block; padding:0;
22
- }
23
- #customcontactforms-admin .plugin-header input {
24
- float:right;
25
- display:block;
26
- clear:none;
27
- margin-top:.9em;
28
- }
29
- #customcontactforms-admin .plugin-header input.quick-start-button { color:red; margin-right:65px; }
30
- #customcontactforms-admin .plugin-header input.usage-popover-button {
31
- margin-right:10px;
32
- }
33
- #customcontactforms-admin input[type=button] {
34
- -moz-background-clip:border;
35
- -moz-background-inline-policy:continuous;
36
- -moz-background-origin:padding;
37
- background:#F2F2F2 url(../images/white-grad.png) repeat-x scroll left top;
38
- text-shadow:0 1px 0 #FFFFFF;
39
- }
40
- #customcontactforms-admin .loading-img {
41
- display:none;
42
- }
43
- #customcontactforms-admin input[type=submit], .ccf-popover input[type=submit] {
44
- -moz-background-clip:border;
45
- -moz-background-inline-policy:continuous;
46
- -moz-background-origin:padding;
47
- background:#21759B url(../images/button-grad.png) repeat-x scroll left top;
48
- border-color:#298CBA;
49
- color:#FFFFFF;
50
- font-weight:bold;
51
- text-shadow:0 -1px 0 rgba(0, 0, 0, 0.3);
52
- }
53
- #customcontactforms-admin label { font-weight:bold; }
54
- #customcontactforms-admin input, textarea, select {
55
- font-size:1em;
56
- }
57
- #customcontactforms-admin .inside {
58
- padding:5px 10px 10px 10px;
59
- }
60
- #customcontactforms-admin h3 {
61
- margin:0 0 7px 0;
62
- height:25px;
63
- padding: 7px 0 0 9px;
64
- }
65
- #customcontactforms-admin #instructions {
66
- float:left;
67
- clear:none;
68
- width:436px;
69
- margin:20px 1em 1em 1em;
70
- }
71
- #customcontactforms-admin #contact-author {
72
- float:left;
73
- width:380px;
74
- margin:5px 1em 1em 6px;
75
- }
76
-
77
- #customcontactforms-admin #custom-html {
78
- float:left;
79
- width:520px;
80
- margin:5px 1em 1em 6px;
81
- }
82
- #customcontactforms-admin #custom-html p { margin: 0; padding:0; }
83
- #customcontactforms-admin #custom-html #custom_html_textarea {
84
- width:495px;
85
- height:250px;
86
- }
87
- #customcontactforms-admin #contact-author form label {
88
- display:block; font-weight:bold;
89
- }
90
- #customcontactforms-admin #instructions p:first-child {
91
- padding-top:0;
92
- margin-top:0;
93
- }
94
-
95
- #customcontactforms-admin .rate-me {
96
- background-color:#FFFEEB;
97
- width:920px;
98
- border:1px solid #cccccc;
99
- padding:7px;
100
- display:block;
101
- height:30px;
102
- clear:both;
103
- text-align:center;
104
- margin:.5em 0 .8em 5px;
105
- -moz-border-radius:11px;
106
- -webkit-border-radius:11px;
107
- border-radius:11px;
108
- }
109
-
110
- #customcontactforms-admin .rate-me a { font-weight:bold; width:auto; margin-left:20px; display:block; float:left; text-decoration:none; margin:6px 0 10px 0; }
111
- #customcontactforms-admin .rate-me input[type=image] { float:right; }
112
-
113
- #customcontactforms-admin .action-complete {
114
- background-color:#2bd604;
115
- width:920px;
116
- border:1px solid #333;
117
- padding:7px 7px 1px 7px;
118
- display:block;
119
- height:30px;
120
- clear:both;
121
- color:#000;
122
- font-weight:bold;
123
- text-align:center;
124
- margin:.5em 0 .8em 5px;
125
- -moz-border-radius:11px;
126
- -webkit-border-radius:11px;
127
- border-radius:11px;
128
- }
129
-
130
- .ccf-tooltip {
131
- background-color:#FFFEEB;
132
- border:2px solid #666666;
133
- padding:10px 15px;
134
- width:200px;
135
- -moz-border-radius:9px;
136
- -khtml-border-radius:9px;
137
- -webkit-border-radius:9px;
138
- border-radius:9px;
139
- display:none;
140
- color:#333333;/*#D54E21;*/
141
- font-weight:bold;
142
- font-family:Verdana, Arial, Helvetica, sans-serif;
143
- text-align:left;
144
- font-size:10px;
145
- -moz-box-shadow:0 0 6px #123;
146
- -webkit-box-shadow: 0 0 6px #123;
147
- box-shadow:0 0 6px #123;
148
- }
149
- #customcontactforms-admin .toollink {
150
- text-decoration:none;
151
- }
152
- #customcontactforms-admin a.rate-me span { font-weight:bold }
153
- #customcontactforms-admin .rate-me a span { text-decoration:underline }
154
-
155
- #customcontactforms-admin #form-submissions-table {
156
- clear:both;
157
- width:1000px;
158
- }
159
- #customcontactforms-admin .genesis {
160
- text-align:center;
161
- background-color:#FFFEEB;
162
- width:920px;
163
- border:1px solid #cccccc;
164
- display:block;
165
- height:30px;
166
- font-weight:bold;
167
- text-decoration:none;
168
- padding:7px 7px 7px 7px;
169
- margin:.5em 0 .8em 5px;
170
- -moz-border-radius:11px;
171
- -webkit-border-radius:11px;
172
- border-radius:11px;
173
- font-size:11px;
174
- line-height:normal;
175
- }
176
- #customcontactforms-admin .genesis span { color:red; font-weight:bold; }
177
-
178
- #customcontactforms-admin form.blog-horizontal-form {
179
- background-color:#FFFEEB;
180
- width:920px;
181
- border:1px solid #cccccc;
182
- padding:7px;
183
- display:block;
184
- height:30px;
185
- text-align:center;
186
- margin:.5em 0 .8em 5px;
187
- -moz-border-radius:11px;
188
- -webkit-border-radius:11px;
189
- border-radius:11px;
190
- font-size:11px;
191
- line-height:normal;
192
- }
193
-
194
- #customcontactforms-admin form.blog-horizontal-form input[type=text] { width:100px; }
195
-
196
- #customcontactforms-admin form.blog-horizontal-form span { font-weight:bold; padding-right:4px; }
197
- #customcontactforms-admin #form-submissions-hidden { display:none; }
198
- #customcontactforms-admin #form-submissions-table .submission-content { }
199
- #customcontactforms-admin #form-submissions-table tr { border-top:1px solid #666; }
200
- #customcontactforms-admin #form-submissions-table td { border:0; }
201
- #customcontactforms-admin #form-submissions-table ul { min-height:30px; width:95%; margin:3px auto 2px auto; }
202
- #customcontactforms-admin #form-submissions-table ul li { float:left; margin-right:9px; }
203
- #customcontactforms-admin #form-submissions-table ul li p { display:block; }
204
- #customcontactforms-admin #form-submissions-table ul li div { font-weight:bold; border-bottom:1px solid #666; padding:2px; text-align:left; }
205
-
206
- #customcontactforms-admin #form-submissions-table table.first { float:left; width:48%; border-collapse:collapse; margin-right:10px; }
207
- #customcontactforms-admin #form-submissions table.second { margin-left:48%; border-collapse:collapse; width:48%; }
208
-
209
-
210
- #customcontactforms-admin #import, #customcontactforms-admin #export {
211
- clear:both;
212
- width:1000px;
213
- margin:20px 1em 1em 5px;
214
- }
215
- #customcontactforms-admin #export input { margin:7px; }
216
- #customcontactforms-admin #export p { padding:0; margin:0; }
217
- #customcontactforms-admin #import .choose_import { font-size:1.1em; clear:both; font-weight:bold; }
218
- #customcontactforms-admin #import input[type=file] { margin:6px; }
219
- #customcontactforms-admin #import ul { margin:6px; }
220
- #customcontactforms-admin #import ul li { width:130px; float:left; }
221
- #customcontactforms-admin #import ul li label { font-size:.9em; }
222
- #customcontactforms-admin #import input[type=checkbox] { margin-left:9px; }
223
- #customcontactforms-admin #import p { padding:0 0 5px 0; margin:0; }
224
-
225
- #customcontactforms-admin #manage-field-options table {
226
- font-size:1em;
227
- margin: 0 0 5px 14px;
228
- width:95%;
229
- }
230
- #customcontactforms-admin #manage-field-options table td { padding-left:8px; padding-top:3px; padding-bottom:3px; }
231
- #customcontactforms-admin #manage-field-options table thead,
232
- #customcontactforms-admin #manage-field-options table tfoot {
233
- background-color:#f4f4f4;
234
- }
235
- #customcontactforms-admin #manage-field-options table thead th,
236
- #customcontactforms-admin #manage-field-options table tfoot th { padding:8px; text-align:left; }
237
- #customcontactforms-admin #manage-field-options {
238
- float:left;
239
- clear:left;
240
- width:530px;
241
- margin:20px 1em 1em 1em;
242
- }
243
- #customcontactforms-admin #create-field-options {
244
- float:left;
245
- clear:none;
246
- width:420px;
247
- margin:20px 1em 1em 5px;
248
- }
249
-
250
- #customcontactforms-admin #field-options .evenrow-field-options div { background-color:#f9f9f9; }
251
- #customcontactforms-admin #field-options .evenrow-field-options { background-color:#f9f9f9; }
252
-
253
- .ccf-style-example {
254
- background:url(../images/style-example.gif) no-repeat top left;
255
- width:405px;
256
- height:135px;
257
- padding-left:20px;
258
- margin:10px 0 0 10px;
259
- border:0;
260
- }
261
- .ccf-success-popover-example {
262
- background:url(../images/success-popover-example.gif) no-repeat top left;
263
- width:405px;
264
- height:135px;
265
- padding-left:20px;
266
- margin:10px 0 0 10px;
267
- border:0;
268
- }
269
- #customcontactforms-admin #configure-mail {
270
- clear:both;
271
- width:1000px;
272
- margin:20px 1em 1em 5px;
273
- }
274
- #customcontactforms-admin #configure-mail p { padding:0; margin:0; }
275
- #customcontactforms-admin #configure-mail form div { margin:10px 0 0 0; padding-top:10px; border-top:1px solid #ccc;}
276
- #customcontactforms-admin #configure-mail ul.left { float:left; width:48%; }
277
- #customcontactforms-admin #configure-mail ul.right { margin-left:48%; width:48%; }
278
- #customcontactforms-admin #create-styles {
279
- clear:both;
280
- width:1000px;
281
- margin:20px 1em 1em 5px;
282
- }
283
- #customcontactforms-admin #create-styles .inside,
284
- #customcontactforms-admin #create-styles form { margin-top:0px; padding-top:0 }
285
- #customcontactforms-admin #create-styles .style_left { float:left; width:48% }
286
- #customcontactforms-admin #create-styles .style_right { width:48%; margin-left:51%; clear:none }
287
- #customcontactforms-admin #plugin-news {
288
- clear:both;
289
- width:1000px;
290
- margin:20px 1em 1em 5px;
291
- }
292
- #customcontactforms-admin #plugin-news ul li.first { border-bottom:1px dashed #666; }
293
- #customcontactforms-admin #manage-styles {
294
- width:1000px;
295
- }
296
- #customcontactforms-admin #manage-styles td { border:0; }
297
- #customcontactforms-admin #manage-styles label {
298
- display:block;
299
- }
300
- #customcontactforms-admin #manage-styles input[type=text], #customcontactforms-admin #manage-styles select, #customcontactforms-admin #manage-styles textarea {
301
- width:80px;
302
- }
303
- #customcontactforms-admin #general-settings {
304
- clear:both;
305
- width:1000px;
306
- margin:20px 1em 1em 5px;
307
- }
308
- #customcontactforms-admin #general-settings .gleft { float:left; width:48%; clear:none; }
309
- #customcontactforms-admin #general-settings .gright { clear:none; float:none; width:48%; margin-left:49%; }
310
- #customcontactforms-admin #general-settings label { font-weight:bold; }
311
- #customcontactforms-admin #general-settings form div p.descrip {
312
- font-style:italic;
313
- padding-left:20px;
314
- }
315
- #customcontactforms-admin #general-settings form div p.show-widget {
316
- margin-top:1em;
317
- padding-top:.4em;
318
- border-top:1px solid #ccc;
319
- }
320
- #customcontactforms-admin #create-fields {
321
- float:left;
322
- clear:left;
323
- width:450px;
324
- margin:0 1em 1em 5px;
325
- }
326
- #customcontactforms-admin #create-forms {
327
- float:left;
328
- width:500px;
329
- border-left:1px solid #ccc;
330
- margin:0 1em 1em 1em;
331
- }
332
- #customcontactforms-admin #create-forms .inside div p {
333
- font-size:.8em;
334
- }
335
- #customcontactforms-admin #create-forms .role{ display:inline; padding-left:5px; }
336
- #customcontactforms-admin #create-fields .attach, #customcontactforms-admin #create-forms .attach { margin-top:6px; }
337
- #customcontactforms-admin .manage-h3 {
338
- clear:both;
339
- margin-top:20px;
340
- }
341
- #customcontactforms-admin #manage-fields {
342
- width:1000px;
343
- }
344
- #customcontactforms-admin #manage-fields td { border:0; }
345
- #customcontactforms-admin #manage-fields .row-one {
346
- margin-bottom:15px;
347
- }
348
- #customcontactforms-admin #manage-fields .row-one label { margin-right:4px; }
349
- #customcontactforms-admin #manage-fields .attach-field-options {
350
- float:left;
351
- padding: 0 0 0 9px;
352
- width:470px;
353
- clear:none;
354
- }
355
- #customcontactforms-admin #manage-fields .detach-field-options {
356
- clear:left;
357
- float:left;
358
- padding: 0 0 0 20px;
359
- width:470px;
360
- }
361
- #customcontactforms-admin #manage-forms {
362
- width:1000px;
363
- margin-right:10px;
364
- }
365
- #customcontactforms-admin .fattach {
366
- margin:6px;
367
- clear:both;
368
- -moz-border-radius:6px;
369
- padding:6px 6px 6px 15px;
370
- -webkit-border-radius:6px;
371
- border-radius:6px;
372
- -moz-box-shadow:0 0 2px #123;
373
- -webkit-box-shadow: 0 0 2px #123;
374
- box-shadow:0 0 2px #123;
375
- background-color:#FFFEEB;
376
- display:block;
377
- height:56px;
378
- width:90%;
379
- }
380
- #customcontactforms-admin .form-attach, #customcontactforms-admin .field-attach {
381
- width:49%; float:left; text-align:left; clear:none;
382
- }
383
- #customcontactforms-admin .form-detach, #customcontactforms-admin .field-detach {
384
- width:49%; float:left; text-align:left; clear:none;
385
- }
386
- #customcontactforms-admin #manage-forms td { border:0; }
387
- #customcontactforms-admin #manage-fixed-fields {
388
- width:1000px;
389
- }
390
- #customcontactforms-admin #manage-fixed-fields td { border:0; }
391
- #customcontactforms-admin #manage-fixed-fields .field_descrip { padding-bottom:5px; }
392
- #customcontactforms-admin .nobordertop {
393
- border-top:none;
394
- }
395
- #customcontactforms-admin .borderbottom {
396
- border-bottom:2px solid black;
397
- }
398
- #customcontactforms-admin .attached_fields {
399
- float:left;
400
- width:400px;
401
- }
402
- #customcontactforms-admin .attach_field {
403
- float:left;
404
- width:300px;
405
- }
406
- #customcontactforms-admin .actions {
407
- float:right;
408
- width: 80px; padding:0 18px 0 8px;
409
- }
410
- #customcontactforms-admin .bulk-dropdown { margin:8px 1px 8px 8px; font-size:1.1em; padding:4px; }
411
- #customcontactforms-admin .bulk-apply { margin:8px 8px 8px 8px; }
412
- #customcontactforms-admin .attach_styles {
413
- float:left;
414
- width:300px;
415
- }
416
- #customcontactforms-admin label span {
417
- font-weight:bold;
418
- }
419
-
420
- #customcontactforms-admin #plugin-nav {
421
- clear:both;
422
- max-width:1000px;
423
- }
424
- #customcontactforms-admin #plugin-nav { text-align:center; border-bottom:1px #ccc dashed; margin:0 0 10px 0; padding:0 0 6px 0; }
425
- #customcontactforms-admin #plugin-nav li {
426
- border-right:1px solid #666; display:inline; padding:0 8px 0 8px;
427
- }
428
- #customcontactforms-admin #plugin-nav li.last {
429
- border-right:none;
430
- }
431
- /* CCF Install Popover -------------------------------- */
432
- .ccf-popover {
433
- display:none;
434
- }
435
- .ccf-popover #popover-tof { text-align:center; border-bottom:1px #ccc dashed; margin:5px 0 10px 0; padding:0 0 6px 0; }
436
- .ccf-popover #popover-tof li { display:inline; padding:0 2px 0 3px;
437
- }
438
-
439
- .ccf-popover div.popover-body span { font-weight:bold; }
440
- .ccf-popover div.popover-body {
441
- text-align:left;
442
- padding:3px;
443
- }
444
- .ccf-popover div.popover-body ul { margin:5px 0px 5px 8px; padding:0; border-top:1px solid #efefef; }
445
- .ccf-popover div.popover-body ul ul { margin:0px 0px 2px 30px; padding:0; list-style-type:disc; border-top:none; }
446
- .ccf-popover div.popover-body ul li { margin-left:20px; }
447
- .ccf-popover div.popover-body p { padding:8px; font-size:1em; text-align:left; }
448
- .ccf-popover div.popover-body form { width:100%; text-align:center; }
449
- .ccf-popover div.popover-body .insert-default-content-button {
450
- margin:5px auto 5px auto;
451
- }
452
-
453
- .modal-overlay {
454
- position:fixed;
455
- top:0;
456
- left:0;
457
- bottom:0;
458
- width:100%;
459
- height:100%;
460
- background-color:rgba(0,0,0.5);
461
- z-index:20;
462
- }
463
-
464
- .modal-window {
465
- position:fixed;
466
- top:140px;
467
- left:50%;
468
- width:300px;
469
- height:auto;
470
- text-align:center;
471
- /*max-height:200px;
472
- text-align:left;
473
- overflow:scroll;*/
474
- margin-left:-150px;
475
- padding:20px;
476
- border:10px solid #efefef;
477
- background-color:#fff;
478
- -moz-border-radius:6px;
479
- -webkit-border-radius:6px;
480
- border-radius:6px;
481
- -moz-box-shadow:0 0 14px #123;
482
- -webkit-box-shadow: 0 0 14px #123;
483
- box-shadow:0 0 14px #123;
484
- z-index:10000;
485
- }
486
-
487
- .debug-window {
488
- position:fixed;
489
- top:20px;
490
- left:50%;
491
- bottom:20px;
492
- width:500px;
493
- text-align:center;
494
- text-align:left;
495
- overflow:scroll;
496
- margin-left:-250px;
497
- padding:20px;
498
- border:10px solid #efefef;
499
- background-color:#fff;
500
- -moz-border-radius:6px;
501
- -webkit-border-radius:6px;
502
- border-radius:6px;
503
- -moz-box-shadow:0 0 14px #123;
504
- -webkit-box-shadow: 0 0 14px #123;
505
- box-shadow:0 0 14px #123;
506
- z-index:500;
507
- }
508
-
509
- .modal-close-btn {
510
- position:absolute;
511
- top:0;
512
- right:4px;
513
- margin:0;
514
- padding:0;
515
- text-decoration:none;
516
- color:#000;
517
- font-size:16px;
518
- }
519
-
520
- .modal-close-btn:before {
521
- position:relative;
522
- top:-1px;
523
- }
524
-
525
- .save-box {
526
- width:150px;
527
- height:auto;
528
- padding:0px;
529
- margin:0 0 0 -75px;
530
- border:12px solid #efefef;
531
- background-color:#fff;
532
- -moz-border-radius:12px;
533
- -webkit-border-radius:12px;
534
- border-radius:12px;
535
- -moz-box-shadow:0 0 14px #123;
536
- -webkit-box-shadow: 0 0 14px #123;
537
- box-shadow:0 0 14px #123;
538
- z-index:5000;
539
- position:fixed;
540
- left:50%;
541
- top:40%;
542
- }
543
- .save-box p { text-align:center; width:100%; font-weight:bold; font-size:16px; }
544
- .save-box-close-btn {
545
- position:absolute;
546
- top:0;
547
- right:4px;
548
- margin:0;
549
- padding:0;
550
- text-decoration:none;
551
- color:#000;
552
- font-size:16px;
553
- }
554
- .modal-wpspin { margin-left:5px; }
555
- #customcontactforms-admin .pagination {
556
- font-size: 80%;
557
- }
558
-
559
- #customcontactforms-admin .pagination a {
560
- text-decoration: none;
561
- border: solid 1px #AAE;
562
- color: #15B;
563
- }
564
-
565
- #customcontactforms-admin .pagination a, .pagination span {
566
- display: block;
567
- float: left;
568
- padding: 0.3em 0.5em;
569
- margin-right: 5px;
570
- margin-bottom: 5px;
571
- min-width:1em;
572
- text-align:center;
573
- }
574
-
575
- #customcontactforms-admin .pagination .current {
576
- background: #26B;
577
- color: #fff;
578
- border: solid 1px #AAE;
579
- }
580
-
581
- #customcontactforms-admin .pagination .current.prev, #customcontactforms-admin .pagination .current.next{
582
- color:#999;
583
- border-color:#999;
584
- background:#fff;
585
- }
586
-
587
- #customcontactforms-admin form.blog-horizontal-form {
588
- background-color:#FFFEEB;
589
- width:920px;
590
- border:1px solid #cccccc;
591
- padding:7px;
592
- display:block;
593
- height:30px;
594
- text-align:center;
595
- margin:.5em 0 .8em 5px;
596
- -moz-border-radius:11px;
597
- -webkit-border-radius:11px;
598
- border-radius:11px;
599
- }
600
-
601
- #customcontactforms-admin form.blog-horizontal-form span { font-weight:bold; padding-right:4px; }
602
-
 
1
+ #customcontactforms-admin {
2
+ vertical-align:top;
3
+ margin:1em 15px 0px 0px;
4
+
5
+ }
6
+ #customcontactforms-admin .plugin-header {
7
+ clear:both;
8
+ height:50px;
9
+ background:url(../images/admin-icon.png) no-repeat 0px 10px;
10
+ }
11
+ #customcontactforms-admin .plugin-header h2 {
12
+ float:left;
13
+ clear:none;
14
+ margin-left:46px;
15
+ width:30%;
16
+ display:block; padding:0;
17
+ }
18
+ #customcontactforms-admin .plugin-header .links {
19
+ float:right;
20
+ clear:none;
21
+ margin-top:25px;
22
+ }
23
+ #customcontactforms-admin .plugin-header input.quick-start-button { color:red; margin-right:5px; }
24
+ #customcontactforms-admin .plugin-header input.usage-popover-button {
25
+ margin-right:10px;
26
+ }
27
+ #customcontactforms-admin input[type=button] {
28
+ -moz-background-clip:border;
29
+ -moz-background-inline-policy:continuous;
30
+ -moz-background-origin:padding;
31
+ background:#F2F2F2 url(../images/white-grad.png) repeat-x scroll left top;
32
+ text-shadow:0 1px 0 #FFFFFF;
33
+ }
34
+ #customcontactforms-admin .loading-img {
35
+ display:none;
36
+ }
37
+ #customcontactforms-admin input[type=submit], .ccf-popover input[type=submit] {
38
+ -moz-background-clip:border;
39
+ -moz-background-inline-policy:continuous;
40
+ -moz-background-origin:padding;
41
+ background:#21759B url(../images/button-grad.png) repeat-x scroll left top;
42
+ border-color:#298CBA;
43
+ color:#FFFFFF;
44
+ font-weight:bold;
45
+ text-shadow:0 -1px 0 rgba(0, 0, 0, 0.3);
46
+ }
47
+ #customcontactforms-admin label { font-weight:bold; }
48
+
49
+ #customcontactforms-admin .inside {
50
+ padding:5px 10px 10px 10px;
51
+ }
52
+ #customcontactforms-admin h3 {
53
+ margin:0 0 7px 0;
54
+ height:25px;
55
+ padding: 7px 0 0 7px;
56
+ }
57
+ #customcontactforms-admin #instructions {
58
+ float:left;
59
+ clear:none;
60
+ width:436px;
61
+ margin:20px 1em 1em 1em;
62
+ }
63
+ #customcontactforms-admin #contact-author {
64
+
65
+ }
66
+
67
+ #contact-author ul { float:left; margin-right:15px; }
68
+ #contact-author ul.message { clear:both; float:none; }
69
+
70
+ #customcontactforms-admin #custom-html {
71
+
72
+ }
73
+ #customcontactforms-admin #custom-html p { margin: 0; padding:0; }
74
+ #customcontactforms-admin #custom-html #custom_html_textarea {
75
+ width:80%;
76
+ margin-top:10px;
77
+ height:250px;
78
+ }
79
+ #customcontactforms-admin #contact-author form label {
80
+ display:block; font-weight:bold;
81
+ }
82
+ #customcontactforms-admin #instructions p:first-child {
83
+ padding-top:0;
84
+ margin-top:0;
85
+ }
86
+
87
+ #customcontactforms-admin .rate-me {
88
+ background-color:#FFFEEB;
89
+ border:1px solid #cccccc;
90
+ padding:7px;
91
+ display:block;
92
+ height:30px;
93
+ font-size:13px;
94
+ clear:both;
95
+ text-align:center;
96
+ margin:.5em 5px .8em 5px;
97
+ -moz-border-radius:11px;
98
+ -webkit-border-radius:11px;
99
+ border-radius:11px;
100
+ }
101
+
102
+ #customcontactforms-admin .rate-me a { font-weight:bold; width:auto; margin-left:20px;font-size:13px; display:block; float:left; text-decoration:none; margin:6px 0 10px 0; }
103
+ #customcontactforms-admin .rate-me input[type=image] { float:right; }
104
+
105
+ #customcontactforms-admin .action-complete {
106
+ background-color:#2bd604;
107
+ border:1px solid #333;
108
+ padding:7px 7px 1px 7px;
109
+ display:block;
110
+ height:30px;
111
+ clear:both;
112
+ color:#000;
113
+ font-weight:bold;
114
+ text-align:center;
115
+ margin:.5em 5px .8em 5px;
116
+ -moz-border-radius:11px;
117
+ -webkit-border-radius:11px;
118
+ border-radius:11px;
119
+ }
120
+
121
+ .ccf-tooltip {
122
+ background-color:#FFFEEB;
123
+ border:2px solid #666666;
124
+ padding:10px 15px;
125
+ width:200px;
126
+ -moz-border-radius:9px;
127
+ -khtml-border-radius:9px;
128
+ -webkit-border-radius:9px;
129
+ border-radius:9px;
130
+ display:none;
131
+ color:#333333;/*#D54E21;*/
132
+ font-weight:bold;
133
+ font-family:Verdana, Arial, Helvetica, sans-serif;
134
+ text-align:left;
135
+ font-size:10px;
136
+ -moz-box-shadow:0 0 6px #123;
137
+ -webkit-box-shadow: 0 0 6px #123;
138
+ box-shadow:0 0 6px #123;
139
+ }
140
+ #customcontactforms-admin .toollink {
141
+ text-decoration:none;
142
+ }
143
+ #customcontactforms-admin a.rate-me span { font-weight:bold }
144
+ #customcontactforms-admin .rate-me a span { text-decoration:underline }
145
+
146
+ #customcontactforms-admin #form-submissions-table {
147
+
148
+ }
149
+ #customcontactforms-admin .genesis {
150
+ text-align:center;
151
+ background-color:#FFFEEB;
152
+ border:1px solid #cccccc;
153
+ display:block;
154
+ height:30px;
155
+ color: #21759B;
156
+ font-size:13px;
157
+ font-weight:bold;
158
+ text-decoration:none;
159
+ padding:7px 7px 7px 7px;
160
+ margin:.5em 5px .8em 5px;
161
+ -moz-border-radius:11px;
162
+ -webkit-border-radius:11px;
163
+ border-radius:11px; line-height:normal;
164
+ }
165
+ #customcontactforms-admin .genesis span { color:red; font-weight:bold; }
166
+
167
+ #customcontactforms-admin .checkbox-warning {
168
+ text-align:center;
169
+ background-color:#FF3333;
170
+ border:1px solid #ff0000;
171
+ display:block;
172
+ height:auto;
173
+ color: #fff;
174
+ font-size:13px;
175
+ font-weight:bold;
176
+ text-decoration:none;
177
+ padding:7px 7px 7px 7px;
178
+ margin:.5em 5px .8em 5px;
179
+ -moz-border-radius:11px;
180
+ -webkit-border-radius:11px;
181
+ border-radius:11px; line-height:normal;
182
+ }
183
+ #customcontactforms-admin .checkbox-warning span { font-weight:bold; }
184
+
185
+ #customcontactforms-admin form.blog-horizontal-form {
186
+ background-color:#FFFEEB;
187
+ border:1px solid #cccccc;
188
+ padding:7px;
189
+ display:block;
190
+ height:30px;
191
+ font-size:13px;
192
+ text-align:center;
193
+ margin:.5em 5px .8em 5px;
194
+ -moz-border-radius:11px;
195
+ -webkit-border-radius:11px;
196
+ border-radius:11px;
197
+ line-height:normal;
198
+ }
199
+
200
+
201
+
202
+ #customcontactforms-admin form.blog-horizontal-form input[type=text] { width:100px; }
203
+
204
+ #customcontactforms-admin form.blog-horizontal-form span { font-weight:bold; padding-right:4px; }
205
+ #customcontactforms-admin #form-submissions-hidden { display:none; }
206
+ #customcontactforms-admin #form-submissions-table .submission-content { }
207
+ #customcontactforms-admin #form-submissions-table tr { border-top:1px solid #666; }
208
+ #customcontactforms-admin #form-submissions-table td { border:0; }
209
+ #customcontactforms-admin #form-submissions-table ul { min-height:30px; width:95%; margin:3px auto 2px auto; }
210
+ #customcontactforms-admin #form-submissions-table ul li { float:left; margin-right:9px; }
211
+ #customcontactforms-admin #form-submissions-table ul li p { display:block; }
212
+ #customcontactforms-admin #form-submissions-table ul li div { font-weight:bold; border-bottom:1px solid #666; padding:2px; text-align:left; }
213
+
214
+ #customcontactforms-admin #form-submissions-table table.first { float:left; width:48%; border-collapse:collapse; margin-right:10px; }
215
+ #customcontactforms-admin #form-submissions table.second { margin-left:48%; border-collapse:collapse; width:48%; }
216
+
217
+
218
+ #customcontactforms-admin #import, #customcontactforms-admin #export {
219
+
220
+ }
221
+ #customcontactforms-admin #export input { margin:7px; }
222
+ #customcontactforms-admin #export p { padding:0; margin:0; }
223
+ #customcontactforms-admin #import .choose_import { font-size:1.1em; clear:both; font-weight:bold; }
224
+ #customcontactforms-admin #import input[type=file] { margin:6px; }
225
+ #customcontactforms-admin #import ul { margin:6px; }
226
+ #customcontactforms-admin #import ul li { width:130px; float:left; }
227
+ #customcontactforms-admin #import ul li label { }
228
+ #customcontactforms-admin #import input[type=checkbox] { margin-left:9px; }
229
+ #customcontactforms-admin #import p { padding:0 0 5px 0; margin:0; }
230
+
231
+ #customcontactforms-admin #manage-field-options table {
232
+ margin: 0 0 5px 14px;
233
+ width:95%;
234
+ }
235
+ #customcontactforms-admin #manage-field-options table td { padding-left:8px; padding-top:3px; padding-bottom:3px; }
236
+ #customcontactforms-admin #manage-field-options table thead,
237
+ #customcontactforms-admin #manage-field-options table tfoot {
238
+ background-color:#eee;
239
+ }
240
+ #customcontactforms-admin #manage-field-options table thead th,
241
+ #customcontactforms-admin #manage-field-options table tfoot th { padding:8px; text-align:left; }
242
+ #customcontactforms-admin #manage-field-options {
243
+ float:left;
244
+ clear:left;
245
+ width:49%;
246
+ }
247
+ #customcontactforms-admin #create-field-options {
248
+ float:left;
249
+ clear:none;
250
+ width:49%;
251
+ margin:0 0em 1em 10px;
252
+ }
253
+
254
+ #customcontactforms-admin #field-options .evenrow-field-options div { background-color:#f0f0f0; }
255
+ #customcontactforms-admin #field-options .evenrow-field-options { background-color:#f0f0f0; }
256
+
257
+ .ccf-style-example {
258
+ background:url(../images/style-example.gif) no-repeat top left;
259
+ width:405px;
260
+ height:135px;
261
+ padding-left:20px;
262
+ margin:10px 0 0 10px;
263
+ border:0;
264
+ }
265
+ .ccf-success-popover-example {
266
+ background:url(../images/success-popover-example.gif) no-repeat top left;
267
+ width:405px;
268
+ height:135px;
269
+ padding-left:20px;
270
+ margin:10px 0 0 10px;
271
+ border:0;
272
+ }
273
+ #customcontactforms-admin #configure-mail {
274
+ }
275
+ #customcontactforms-admin #configure-mail p { padding:0; margin:0; }
276
+ #customcontactforms-admin #configure-mail form div { margin:10px 0 0 0; padding-top:10px; border-top:1px solid #ccc;}
277
+ #customcontactforms-admin #configure-mail ul.left { float:left; width:48%; }
278
+ #customcontactforms-admin #configure-mail ul.right { margin-left:48%; width:48%; }
279
+ #customcontactforms-admin #create-styles {
280
+
281
+ }
282
+ #customcontactforms-admin #create-styles .inside,
283
+ #customcontactforms-admin #create-styles form { margin-top:0px; padding-top:0 }
284
+ #customcontactforms-admin #create-styles .style_left { float:left; width:48% }
285
+ #customcontactforms-admin #create-styles .style_right { width:48%; margin-left:51%; clear:none }
286
+ #customcontactforms-admin #plugin-news {
287
+
288
+ }
289
+ #customcontactforms-admin #plugin-news ul li a { color: #21759B; line-height:normal; font-family: Georgia,"Times New Roman","Bitstream Charter",Times,serif;
290
+ font-size: 13px; text-decoration:none; }
291
+
292
+ #customcontactforms-admin #plugin-news ul li .date { color: #999999; font-size: 12px; padding-left: 3px; }
293
+ #customcontactforms-admin #plugin-news ul li .news-content p { margin-top:0; padding-top:0; }
294
+ #customcontactforms-admin #plugin-news ul li .news-header { margin-bottom:5px; }
295
+ #customcontactforms-admin #manage-styles {
296
+ }
297
+ #customcontactforms-admin #manage-styles td { border:0; }
298
+ #customcontactforms-admin #manage-styles label {
299
+ display:block;
300
+ }
301
+ #customcontactforms-admin #manage-styles input[type=text], #customcontactforms-admin #manage-styles select, #customcontactforms-admin #manage-styles textarea {
302
+ width:80px;
303
+ }
304
+ #customcontactforms-admin #general-settings {
305
+
306
+ }
307
+ #customcontactforms-admin #general-settings .gleft { float:left; width:48%; clear:none; }
308
+ #customcontactforms-admin #general-settings .gright { clear:none; float:none; width:48%; margin-left:49%; }
309
+ #customcontactforms-admin #general-settings label { font-weight:bold; }
310
+ #customcontactforms-admin #general-settings form div p.descrip {
311
+ font-style:italic;
312
+ padding-left:20px;
313
+ }
314
+ #customcontactforms-admin #general-settings form div p.show-widget {
315
+ margin-top:1em;
316
+ padding-top:.4em;
317
+ border-top:1px solid #ccc;
318
+ }
319
+ #customcontactforms-admin #create-fields {
320
+
321
+ }
322
+ #customcontactforms-admin #create-fields .left { float:left; width:48%; }
323
+ #customcontactforms-admin #create-fields .right { margin-left:50%; }
324
+ #customcontactforms-admin #create-fields .file-fields { display:none; }
325
+ #customcontactforms-admin #create-forms {
326
+
327
+ }
328
+ #customcontactforms-admin #create-forms .left { float:left; width:48%; }
329
+ #customcontactforms-admin #create-forms .right { width:48%; margin-left:50%; }
330
+
331
+ #customcontactforms-admin #create-forms .role{ display:inline; padding-left:5px; }
332
+ #customcontactforms-admin #create-fields .attach, #customcontactforms-admin #create-forms .attach { margin-top:6px; }
333
+ #customcontactforms-admin .manage-h3 {
334
+ clear:both;
335
+ margin-top:20px;
336
+ }
337
+ #customcontactforms-admin #manage-fields {
338
+
339
+ }
340
+ #customcontactforms-admin #manage-fields td { border:0; }
341
+ #customcontactforms-admin #manage-fields .row-one {
342
+ margin-bottom:0px;
343
+ }
344
+ #customcontactforms-admin #manage-fields .row-two {
345
+ margin-top:6px;
346
+ }
347
+ #customcontactforms-admin #manage-fields .row-one label { margin-right:4px; }
348
+ #customcontactforms-admin #manage-fields .attach-field-options {
349
+ float:left;
350
+ padding: 0 0 0 9px;
351
+ width:470px;
352
+ clear:none;
353
+ }
354
+ #customcontactforms-admin #manage-fields .detach-field-options {
355
+ clear:left;
356
+ float:left;
357
+ padding: 0 0 0 20px;
358
+ width:470px;
359
+ }
360
+ #customcontactforms-admin #manage-forms {
361
+ }
362
+ #customcontactforms-admin .fattach {
363
+ margin:20px 6px 6px 6px;
364
+ clear:both;
365
+ -moz-border-radius:6px;
366
+ padding:6px 6px 6px 15px;
367
+ -webkit-border-radius:6px;
368
+ border-radius:6px;
369
+ -moz-box-shadow:0 0 2px #123;
370
+ -webkit-box-shadow: 0 0 2px #123;
371
+ box-shadow:0 0 2px #123;
372
+ background-color:#FFFEEB;
373
+ display:block;
374
+ height:56px;
375
+ width:90%;
376
+ }
377
+ #customcontactforms-admin .form-attach, #customcontactforms-admin .field-attach {
378
+ width:49%; float:left; text-align:left; clear:none;
379
+ }
380
+ #customcontactforms-admin .form-detach, #customcontactforms-admin .field-detach {
381
+ width:49%; float:left; text-align:left; clear:none;
382
+ }
383
+ #customcontactforms-admin #manage-forms td { border:0; }
384
+ #customcontactforms-admin #manage-fixed-fields {
385
+
386
+ }
387
+ #customcontactforms-admin #manage-fixed-fields td { border:0; }
388
+ #customcontactforms-admin #manage-fixed-fields .field_descrip { padding-bottom:5px; }
389
+ #customcontactforms-admin .nobordertop {
390
+ border-top:none;
391
+ }
392
+ #customcontactforms-admin .borderbottom {
393
+ border-bottom:2px solid black;
394
+ }
395
+ #customcontactforms-admin .attached_fields {
396
+ float:left;
397
+ width:400px;
398
+ }
399
+ #customcontactforms-admin .attach_field {
400
+ float:left;
401
+ width:300px;
402
+ }
403
+ #customcontactforms-admin .actions {
404
+ float:right;
405
+ width: 80px; padding:0 18px 0 8px;
406
+ }
407
+ #customcontactforms-admin .bulk-dropdown { margin:8px 1px 8px 8px; font-size:1.1em; padding:4px; }
408
+ #customcontactforms-admin .bulk-apply { margin:8px 8px 8px 8px; }
409
+ #customcontactforms-admin .attach_styles {
410
+ float:left;
411
+ width:300px;
412
+ }
413
+ #customcontactforms-admin label span {
414
+ font-weight:bold;
415
+ }
416
+
417
+ #customcontactforms-admin #plugin-nav {
418
+ clear:both;
419
+ }
420
+ /* CCF Install Popover -------------------------------- */
421
+ .ccf-popover {
422
+ display:none;
423
+ }
424
+ .ccf-popover #popover-tof { text-align:center; border-bottom:1px #ccc dashed; margin:5px 0 10px 0; padding:0 0 6px 0; }
425
+ .ccf-popover #popover-tof li { display:inline; padding:0 2px 0 3px;
426
+ }
427
+
428
+ .ccf-popover div.popover-body span { font-weight:bold; }
429
+ .ccf-popover div.popover-body {
430
+ text-align:left;
431
+ padding:3px;
432
+ }
433
+ .ccf-popover div.popover-body ul { margin:5px 0px 5px 8px; padding:0; border-top:1px solid #efefef; }
434
+ .ccf-popover div.popover-body ul ul { margin:0px 0px 2px 30px; padding:0; list-style-type:disc; border-top:none; }
435
+ .ccf-popover div.popover-body ul li { margin-left:20px; }
436
+ .ccf-popover div.popover-body p { padding:8px; text-align:left; }
437
+ .ccf-popover div.popover-body form { width:100%; text-align:center; }
438
+ .ccf-popover div.popover-body .insert-default-content-button {
439
+ margin:5px auto 5px auto;
440
+ }
441
+
442
+ .modal-overlay {
443
+ position:fixed;
444
+ top:0;
445
+ left:0;
446
+ bottom:0;
447
+ width:100%;
448
+ height:100%;
449
+ background-color:rgba(0,0,0.5);
450
+ z-index:20;
451
+ }
452
+
453
+ .modal-window {
454
+ position:fixed;
455
+ top:140px;
456
+ left:50%;
457
+ width:300px;
458
+ height:auto;
459
+ text-align:center;
460
+ /*max-height:200px;
461
+ text-align:left;
462
+ overflow:scroll;*/
463
+ margin-left:-150px;
464
+ padding:20px;
465
+ border:10px solid #efefef;
466
+ background-color:#fff;
467
+ -moz-border-radius:6px;
468
+ -webkit-border-radius:6px;
469
+ border-radius:6px;
470
+ -moz-box-shadow:0 0 14px #123;
471
+ -webkit-box-shadow: 0 0 14px #123;
472
+ box-shadow:0 0 14px #123;
473
+ z-index:10000;
474
+ }
475
+
476
+ .debug-window {
477
+ position:fixed;
478
+ top:20px;
479
+ left:50%;
480
+ bottom:20px;
481
+ width:500px;
482
+ text-align:center;
483
+ text-align:left;
484
+ overflow:scroll;
485
+ margin-left:-250px;
486
+ padding:20px;
487
+ border:10px solid #efefef;
488
+ background-color:#fff;
489
+ -moz-border-radius:6px;
490
+ -webkit-border-radius:6px;
491
+ border-radius:6px;
492
+ -moz-box-shadow:0 0 14px #123;
493
+ -webkit-box-shadow: 0 0 14px #123;
494
+ box-shadow:0 0 14px #123;
495
+ z-index:500;
496
+ }
497
+
498
+ .modal-close-btn {
499
+ position:absolute;
500
+ top:0;
501
+ right:4px;
502
+ margin:0;
503
+ padding:0;
504
+ text-decoration:none;
505
+ color:#000;
506
+ font-size:16px;
507
+ }
508
+
509
+ .modal-close-btn:before {
510
+ position:relative;
511
+ top:-1px;
512
+ }
513
+
514
+ .save-box {
515
+ width:150px;
516
+ height:auto;
517
+ padding:0px;
518
+ margin:0 0 0 -75px;
519
+ border:12px solid #efefef;
520
+ background-color:#fff;
521
+ -moz-border-radius:12px;
522
+ -webkit-border-radius:12px;
523
+ border-radius:12px;
524
+ -moz-box-shadow:0 0 14px #123;
525
+ -webkit-box-shadow: 0 0 14px #123;
526
+ box-shadow:0 0 14px #123;
527
+ z-index:5000;
528
+ position:fixed;
529
+ left:50%;
530
+ top:40%;
531
+ }
532
+ .save-box p { text-align:center; width:100%; font-weight:bold; font-size:16px; }
533
+ .save-box-close-btn {
534
+ position:absolute;
535
+ top:0;
536
+ right:4px;
537
+ margin:0;
538
+ padding:0;
539
+ text-decoration:none;
540
+ color:#000;
541
+ font-size:16px;
542
+ }
543
+ .modal-wpspin { margin-left:5px; }
544
+ #customcontactforms-admin .pagination {
545
+ font-size: 80%;
546
+ }
547
+
548
+ #customcontactforms-admin .pagination a {
549
+ text-decoration: none;
550
+ border: solid 1px #AAE;
551
+ color: #15B;
552
+ }
553
+
554
+ #customcontactforms-admin .pagination a, .pagination span {
555
+ display: block;
556
+ float: left;
557
+ padding: 0.3em 0.5em;
558
+ margin-right: 5px;
559
+ margin-bottom: 5px;
560
+ min-width:1em;
561
+ text-align:center;
562
+ }
563
+
564
+ #customcontactforms-admin .pagination .current {
565
+ background: #26B;
566
+ color: #fff;
567
+ border: solid 1px #AAE;
568
+ }
569
+
570
+ #customcontactforms-admin .pagination .current.prev, #customcontactforms-admin .pagination .current.next{
571
+ color:#999;
572
+ border-color:#999;
573
+ background:#fff;
574
+ }
575
+
576
+ #customcontactforms-admin form.blog-horizontal-form {
577
+ background-color:#FFFEEB;
578
+ border:1px solid #cccccc;
579
+ padding:7px;
580
+ display:block;
581
+ height:30px;
582
+ text-align:center;
583
+ margin:.5em 5px .8em 5px;
584
+ -moz-border-radius:11px;
585
+ -webkit-border-radius:11px;
586
+ border-radius:11px;
587
+ }
588
+
589
+ #customcontactforms-admin form.blog-horizontal-form span { font-weight:bold; padding-right:4px; }
590
+
591
+ .ui-tabs .ui-tabs-panel {
592
+ background: none repeat scroll 0 0 transparent;
593
+ border-width: 0;
594
+ display: block;
595
+ padding: 1em 5px 5px 5px;
596
+ }
597
+
598
+ .ui-widget-content {
599
+ border: 0px solid #AAAAAA;
600
+ }
601
+
602
+ #message { margin-bottom:9px; }
603
+ #message-textarea { height: 196px; width: 95%; margin-bottom:9px; }
css/custom-contact-forms-dashboard.css CHANGED
@@ -1,35 +1,39 @@
1
- #ccf-dashboard {
2
- width:100%;
3
- margin:0 0 15px 0;
4
- }
5
- #ccf-dashboard thead tr th { text-align:left; padding-left:2px; padding-bottom:7px; }
6
- #ccf-dashboard tr { margin:0; }
7
- #ccf-dashboard td { margin:0; padding: 3px;}
8
- #ccf-dashboard tr.even { background-color:#f0f0f0; }
9
-
10
- #ccf-dashboard .ccf-view-submission {
11
- -moz-background-clip:border;
12
- -moz-background-inline-policy:continuous;
13
- -moz-background-origin:padding;
14
- background:#F2F2F2 url(../images/white-grad.png) repeat-x scroll left top;
15
- text-shadow:0 1px 0 #FFFFFF;
16
- }
17
-
18
- #ccf-dashboard .ccf-view-submission-popover {
19
- display:none;
20
- }
21
-
22
- .ccf-view-submission-popover div.top { height:30px; padding-bottom:7px; }
23
- .ccf-view-submission-popover div.top .right { float:right; width:40%; }
24
- .ccf-view-submission-popover div.top .left p { margin:2px; padding:0; }
25
- .ccf-view-submission-popover div.top .right span, .ccf-view-submission-popover div.top .left span { font-weight:bold; }
26
- .ccf-view-submission-popover div.top .left { float:left; width:60%; }
27
- .ccf-view-submission-popover ul {
28
- min-height:30px;
29
- width:95%;
30
- margin:3px auto 2px auto;
31
- }
32
- .ccf-view-submission-popover .separate { clear:both; width:100%; border-bottom:1px solid #ccc; height:1px; margin:3px; }
33
- .ccf-view-submission-popover ul li { float:left; margin-right:9px; }
34
- .ccf-view-submission-popover ul li p { display:block; }
35
- .ccf-view-submission-popover ul li div { font-weight:bold; border-bottom:1px solid #666; padding:2px; text-align:left; }
 
 
 
 
1
+ #ccf-dashboard {
2
+ width:100%;
3
+ margin:0 0 15px 0;
4
+ }
5
+ #ccf-dashboard thead tr th { text-align:left; padding-left:2px; padding-bottom:7px; color: #8F8F8F;
6
+ font-size: 14px;
7
+ border-bottom:1px solid #ececec;
8
+ font-weight:400; }
9
+
10
+ #ccf-dashboard tr { margin:0; }
11
+ #ccf-dashboard td { margin:0; padding: 3px;}
12
+ #ccf-dashboard tr.even { background-color:#f0f0f0; }
13
+
14
+ #ccf-dashboard .ccf-view-submission {
15
+ -moz-background-clip:border;
16
+ -moz-background-inline-policy:continuous;
17
+ -moz-background-origin:padding;
18
+ background:#F2F2F2 url(../images/white-grad.png) repeat-x scroll left top;
19
+ text-shadow:0 1px 0 #FFFFFF;
20
+ }
21
+
22
+ #ccf-dashboard .ccf-view-submission-popover {
23
+ display:none;
24
+ }
25
+
26
+ .ccf-view-submission-popover div.top { height:30px; padding-bottom:7px; }
27
+ .ccf-view-submission-popover div.top .right { float:right; width:40%; }
28
+ .ccf-view-submission-popover div.top .left p { margin:2px; padding:0; }
29
+ .ccf-view-submission-popover div.top .right span, .ccf-view-submission-popover div.top .left span { font-weight:bold; }
30
+ .ccf-view-submission-popover div.top .left { float:left; width:60%; }
31
+ .ccf-view-submission-popover ul {
32
+ min-height:30px;
33
+ width:95%;
34
+ margin:3px auto 2px auto;
35
+ }
36
+ .ccf-view-submission-popover .separate { clear:both; width:100%; border-bottom:1px solid #ccc; height:1px; margin:3px; }
37
+ .ccf-view-submission-popover ul li { float:left; margin-right:9px; }
38
+ .ccf-view-submission-popover ul li p { display:block; }
39
+ .ccf-view-submission-popover ul li div { font-weight:bold; border-bottom:1px solid #666; padding:2px; text-align:left; }
css/custom-contact-forms-standards.css CHANGED
@@ -1,16 +1,16 @@
1
- .ccf-width25 { width:25px; } .ccf-width50 { width:50px; } .ccf-width75 { width:75px; } .ccf-width100 { width:100px; }
2
- .ccf-width125 { width:125px; } .ccf-width150 { width:150px; } .ccf-width175 { width:175px; } .ccf-width200 { width:200px; }
3
- .ccf-width225 { width:225px; } .ccf-width250 { width:250px; } .ccf-width275 { width:275px; } .ccf-width300 { width:300px; }
4
- .ccf-center { text-align:center; }
5
- .ccf-red { color:#F00; }
6
- .ccf-bold { font-weight:bold; }
7
- .ccf-italic { font-style:italic; }
8
- .ccf-hide { display:none; }
9
- .ccf-clear { clear:both; }
10
- .ccf-floatleft { float:left; }
11
- .ccf-floatright { float:right; }
12
- .form-extra-options-table { margin:0 auto 0 auto; }
13
- .ccf-evenrow { background-color:#f5f5f5; }
14
- .ccf-alignright { text-align:right; }
15
- .ccf-alignleft { text-align:right; }
16
  .ccf-loading-icon { margin-left: 5px; margin-right:7px; }
1
+ .ccf-width25 { width:25px; } .ccf-width50 { width:50px; } .ccf-width75 { width:75px; } .ccf-width100 { width:100px; }
2
+ .ccf-width125 { width:125px; } .ccf-width150 { width:150px; } .ccf-width175 { width:175px; } .ccf-width200 { width:200px; }
3
+ .ccf-width225 { width:225px; } .ccf-width250 { width:250px; } .ccf-width275 { width:275px; } .ccf-width300 { width:300px; }
4
+ .ccf-center { text-align:center; }
5
+ .ccf-red { color:#F00; }
6
+ .ccf-bold { font-weight:bold; }
7
+ .ccf-italic { font-style:italic; }
8
+ .ccf-hide { display:none; }
9
+ .ccf-clear { clear:both; }
10
+ .ccf-floatleft { float:left; }
11
+ .ccf-floatright { float:right; }
12
+ .form-extra-options-table { margin:0 auto 0 auto; }
13
+ .ccf-evenrow { background-color:#f0f0f0; }
14
+ .ccf-alignright { text-align:right; }
15
+ .ccf-alignleft { text-align:right; }
16
  .ccf-loading-icon { margin-left: 5px; margin-right:7px; }
css/custom-contact-forms.css CHANGED
@@ -1,125 +1,125 @@
1
- /* Custom Contact Forms CSS */
2
- form.customcontactform, form.customcontactform-sidebar {
3
- margin:8px;
4
- width:95%;
5
- max-width:600px;
6
- font-size:11px;
7
- padding:4px;
8
- }
9
- form.customcontactform-sidebar { width:100%; }
10
- form.customcontactform h4, form.customcontactform-sidebar h4 {
11
- font-size:1.3em;
12
- font-weight:bold;
13
- }
14
- form.customcontactform div label, form.customcontactform-sidebar div label { display:block; width:100%; }
15
- form.customcontactform div label.checkbox, form.customcontactform-sidebar div label.checkbox { display:inline; }
16
- form.customcontactform div label.select, form.customcontactform-sidebar div label.select { display:inline; margin-right:8px; }
17
- form.customcontactform div, form.customcontactform-sidebar div {
18
- /*border-bottom: 1px dashed #e1e1e1;*/
19
- padding:.4em 0 .3em 0;
20
- width:100%;
21
- margin:0 0 6px 0;
22
- }
23
- form.customcontactform div div, form.customcontactform-sidebar div div { border-bottom:none; margin-bottom:0; padding:0; }
24
- form.customcontactform div input, form.customcontactform div select, form.customcontactform-sidebar div input, form.customcontactform-sidebar div select {
25
- width:16em;
26
- padding:2px;
27
- margin:0;
28
- font-size:1.3em;
29
- font-family:Verdana, Arial, Helvetica, sans-serif;
30
- -moz-border-radius:4px;
31
- -khtml-border-radius:4px;
32
- -webkit-border-radius:4px;
33
- border-radius:4px;
34
- }
35
- form.customcontactform div input[type=checkbox], form.customcontactform-sidebar div input[type=checkbox] { width:30px; margin:5px 6px 0 0; }
36
- form.customcontactform div input[type=radio], form.customcontactform-sidebar div input[type=radio] { width:20px; margin:5px 6px 0 0; }
37
- form.customcontactform input, form.customcontactform-sidebar input { margin: 7px 0 0 0; }
38
- form.customcontactform div textarea, form.customcontactform-sidebar div textarea {
39
- width:16em;
40
- padding:4px;
41
- margin:0;
42
- font-size:1.3em;
43
- font-family:Verdana, Arial, Helvetica, sans-serif;
44
- -moz-border-radius:6px;
45
- -khtml-border-radius:6px;
46
- -webkit-border-radius:6px;
47
- border-radius:6px;
48
- height:5em;
49
- }
50
- form.customcontactform div select { font-size:1.3em; width:auto; margin-right:9px; }
51
- form.customcontactform-sidebar div input[type=text],
52
- form.customcontactform-sidebar div select,
53
- form.customcontactform-sidebar div textarea { width:95%; max-width:16em; margin:2px 0 4px 0; }
54
- form.customcontactform-sidebar div select { width:auto; }
55
- /* ----- popover box ---------- */
56
-
57
- .ccf-popover {
58
- position: absolute;
59
- top:25%;
60
- left:25%;
61
- width:500px;
62
- padding:10px;
63
- background-color:#fff;
64
- border:1px solid #666;
65
- display:none;
66
- z-index:1000000000;
67
- }
68
-
69
- .ccf-popover .ccf-popover-close { position:absolute; top:0px; right:5px; font-size:22px; }
70
- .ccf-tooltip {
71
- background-color:#000;
72
- border:1px solid #fff;
73
- padding:10px 15px;
74
- width:200px;
75
- display:none;
76
- color:#fff;
77
- text-align:left;
78
- font-size:12px;
79
- -moz-box-shadow:0 0 10px #000;
80
- -webkit-box-shadow:0 0 10px #000;
81
- }
82
- /* --- form success popover -------------------- */
83
- #ccf-form-success {
84
- display:none;
85
- border: 9px solid #efefef;
86
- border-spacing:0;
87
- width:480px;
88
- height:200px;
89
- padding:0px;
90
- margin:0;
91
- z-index:10000;
92
- -moz-border-radius:10px;
93
- -khtml-border-radius:10px;
94
- -webkit-border-radius:10px;
95
- border-radius:15px;
96
- position:fixed;
97
- left:30%;
98
- background-color:white;
99
- top:30%;
100
- -moz-box-shadow:0 0 14px #123;
101
- -webkit-box-shadow: 0 0 14px #123;
102
- box-shadow:0 0 14px #123;
103
- }
104
- #ccf-form-success div {
105
- background-color:#efefef;
106
- padding:9px 9px 9px 20px;
107
- margin:0 0 15px 0px;
108
- height:1.3em;
109
- }
110
- #ccf-form-success div h5 {
111
- text-align:left;
112
- float:left;
113
- margin:0;
114
- padding:0;
115
- font-size:1.5em;
116
- font-weight:bold;
117
- }
118
- #ccf-form-success p { padding:8px; margin:0; clear:both; font-size:1.1em; text-align:center; }
119
- #ccf-form-success div a.close {
120
- float:right;
121
- display:block;
122
- font-size:12px;
123
- margin:0;
124
- padding:0;
125
  }
1
+ /* Custom Contact Forms CSS */
2
+ form.customcontactform, form.customcontactform-sidebar {
3
+ margin:8px;
4
+ width:95%;
5
+ max-width:600px;
6
+ font-size:11px;
7
+ padding:4px;
8
+ }
9
+ form.customcontactform-sidebar { width:100%; }
10
+ form.customcontactform h4, form.customcontactform-sidebar h4 {
11
+ font-size:1.3em;
12
+ font-weight:bold;
13
+ }
14
+ form.customcontactform div label, form.customcontactform-sidebar div label { display:block; width:100%; }
15
+ form.customcontactform div label.checkbox, form.customcontactform-sidebar div label.checkbox { display:inline; }
16
+ form.customcontactform div label.select, form.customcontactform-sidebar div label.select { display:inline; margin-right:8px; }
17
+ form.customcontactform div, form.customcontactform-sidebar div {
18
+ /*border-bottom: 1px dashed #e1e1e1;*/
19
+ padding:.4em 0 .3em 0;
20
+ width:100%;
21
+ margin:0 0 6px 0;
22
+ }
23
+ form.customcontactform div div, form.customcontactform-sidebar div div { border-bottom:none; margin-bottom:0; padding:0; }
24
+ form.customcontactform div input, form.customcontactform div select, form.customcontactform-sidebar div input, form.customcontactform-sidebar div select {
25
+ width:16em;
26
+ padding:2px;
27
+ margin:0;
28
+ font-size:1.3em;
29
+ font-family:Verdana, Arial, Helvetica, sans-serif;
30
+ -moz-border-radius:4px;
31
+ -khtml-border-radius:4px;
32
+ -webkit-border-radius:4px;
33
+ border-radius:4px;
34
+ }
35
+ form.customcontactform div input[type=checkbox], form.customcontactform-sidebar div input[type=checkbox] { width:30px; margin:5px 6px 0 0; }
36
+ form.customcontactform div input[type=radio], form.customcontactform-sidebar div input[type=radio] { width:20px; margin:5px 6px 0 0; }
37
+ form.customcontactform input, form.customcontactform-sidebar input { margin: 7px 0 0 0; }
38
+ form.customcontactform div textarea, form.customcontactform-sidebar div textarea {
39
+ width:16em;
40
+ padding:4px;
41
+ margin:0;
42
+ font-size:1.3em;
43
+ font-family:Verdana, Arial, Helvetica, sans-serif;
44
+ -moz-border-radius:6px;
45
+ -khtml-border-radius:6px;
46
+ -webkit-border-radius:6px;
47
+ border-radius:6px;
48
+ height:5em;
49
+ }
50
+ form.customcontactform div select { font-size:1.3em; width:auto; margin-right:9px; }
51
+ form.customcontactform-sidebar div input[type=text],
52
+ form.customcontactform-sidebar div select,
53
+ form.customcontactform-sidebar div textarea { width:95%; max-width:16em; margin:2px 0 4px 0; }
54
+ form.customcontactform-sidebar div select { width:auto; }
55
+ /* ----- popover box ---------- */
56
+
57
+ .ccf-popover {
58
+ position: absolute;
59
+ top:25%;
60
+ left:25%;
61
+ width:500px;
62
+ padding:10px;
63
+ background-color:#fff;
64
+ border:1px solid #666;
65
+ display:none;
66
+ z-index:1000000000;
67
+ }
68
+
69
+ .ccf-popover .ccf-popover-close { position:absolute; top:0px; right:5px; font-size:22px; }
70
+ .ccf-tooltip {
71
+ background-color:#000;
72
+ border:1px solid #fff;
73
+ padding:10px 15px;
74
+ width:200px;
75
+ display:none;
76
+ color:#fff;
77
+ text-align:left;
78
+ font-size:12px;
79
+ -moz-box-shadow:0 0 10px #000;
80
+ -webkit-box-shadow:0 0 10px #000;
81
+ }
82
+ /* --- form success popover -------------------- */
83
+ #ccf-form-success {
84
+ display:none;
85
+ border: 9px solid #efefef;
86
+ border-spacing:0;
87
+ width:480px;
88
+ height:200px;
89
+ padding:0px;
90
+ margin:0;
91
+ z-index:10000;
92
+ -moz-border-radius:10px;
93
+ -khtml-border-radius:10px;
94
+ -webkit-border-radius:10px;
95
+ border-radius:15px;
96
+ position:fixed;
97
+ left:30%;
98
+ background-color:white;
99
+ top:30%;
100
+ -moz-box-shadow:0 0 14px #123;
101
+ -webkit-box-shadow: 0 0 14px #123;
102
+ box-shadow:0 0 14px #123;
103
+ }
104
+ #ccf-form-success div {
105
+ background-color:#efefef;
106
+ padding:9px 9px 9px 20px;
107
+ margin:0 0 15px 0px;
108
+ height:1.3em;
109
+ }
110
+ #ccf-form-success div h5 {
111
+ text-align:left;
112
+ float:left;
113
+ margin:0;
114
+ padding:0;
115
+ font-size:1.5em;
116
+ font-weight:bold;
117
+ }
118
+ #ccf-form-success p { padding:8px; margin:0; clear:both; font-size:1.1em; text-align:center; }
119
+ #ccf-form-success div a.close {
120
+ float:right;
121
+ display:block;
122
+ font-size:12px;
123
+ margin:0;
124
+ padding:0;
125
  }
css/jquery-ui.css CHANGED
@@ -1,571 +1,571 @@
1
- /*
2
- * jQuery UI CSS Framework 1.8.9
3
- *
4
- * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
5
- * Dual licensed under the MIT or GPL Version 2 licenses.
6
- * http://jquery.org/license
7
- *
8
- * http://docs.jquery.com/UI/Theming/API
9
- */
10
-
11
- /* Layout helpers
12
- ----------------------------------*/
13
- .ui-helper-hidden { display: none; }
14
- .ui-helper-hidden-accessible { position: absolute !important; clip: rect(1px 1px 1px 1px); clip: rect(1px,1px,1px,1px); }
15
- .ui-helper-reset { margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none; }
16
- .ui-helper-clearfix:after { content: "."; display: block; height: 0; clear: both; visibility: hidden; }
17
- .ui-helper-clearfix { display: inline-block; }
18
- /* required comment for clearfix to work in Opera \*/
19
- * html .ui-helper-clearfix { height:1%; }
20
- .ui-helper-clearfix { display:block; }
21
- /* end clearfix */
22
- .ui-helper-zfix { width: 100%; height: 100%; top: 0; left: 0; position: absolute; opacity: 0; filter:Alpha(Opacity=0); }
23
-
24
-
25
- /* Interaction Cues
26
- ----------------------------------*/
27
- .ui-state-disabled { cursor: default !important; }
28
-
29
-
30
- /* Icons
31
- ----------------------------------*/
32
-
33
- /* states and images */
34
- .ui-icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; }
35
-
36
-
37
- /* Misc visuals
38
- ----------------------------------*/
39
-
40
- /* Overlays */
41
- .ui-widget-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }
42
- /*
43
- * jQuery UI Accordion 1.8.9
44
- *
45
- * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
46
- * Dual licensed under the MIT or GPL Version 2 licenses.
47
- * http://jquery.org/license
48
- *
49
- * http://docs.jquery.com/UI/Accordion#theming
50
- */
51
- /* IE/Win - Fix animation bug - #4615 */
52
- .ui-accordion { width: 100%; }
53
- .ui-accordion .ui-accordion-header { cursor: pointer; position: relative; margin-top: 1px; zoom: 1; }
54
- .ui-accordion .ui-accordion-li-fix { display: inline; }
55
- .ui-accordion .ui-accordion-header-active { border-bottom: 0 !important; }
56
- .ui-accordion .ui-accordion-header a { display: block; font-size: 1em; padding: .5em .5em .5em .7em; }
57
- .ui-accordion-icons .ui-accordion-header a { padding-left: 2.2em; }
58
- .ui-accordion .ui-accordion-header .ui-icon { position: absolute; left: .5em; top: 50%; margin-top: -8px; }
59
- .ui-accordion .ui-accordion-content { padding: 1em 2.2em; border-top: 0; margin-top: -2px; position: relative; top: 1px; margin-bottom: 2px; overflow: auto; display: none; zoom: 1; }
60
- .ui-accordion .ui-accordion-content-active { display: block; }
61
- /*
62
- * jQuery UI Autocomplete 1.8.9
63
- *
64
- * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
65
- * Dual licensed under the MIT or GPL Version 2 licenses.
66
- * http://jquery.org/license
67
- *
68
- * http://docs.jquery.com/UI/Autocomplete#theming
69
- */
70
- .ui-autocomplete { position: absolute; cursor: default; }
71
-
72
- /* workarounds */
73
- * html .ui-autocomplete { width:1px; } /* without this, the menu expands to 100% in IE6 */
74
-
75
- /*
76
- * jQuery UI Menu 1.8.9
77
- *
78
- * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
79
- * Dual licensed under the MIT or GPL Version 2 licenses.
80
- * http://jquery.org/license
81
- *
82
- * http://docs.jquery.com/UI/Menu#theming
83
- */
84
- .ui-menu {
85
- list-style:none;
86
- padding: 2px;
87
- margin: 0;
88
- display:block;
89
- float: left;
90
- }
91
- .ui-menu .ui-menu {
92
- margin-top: -3px;
93
- }
94
- .ui-menu .ui-menu-item {
95
- margin:0;
96
- padding: 0;
97
- zoom: 1;
98
- float: left;
99
- clear: left;
100
- width: 100%;
101
- }
102
- .ui-menu .ui-menu-item a {
103
- text-decoration:none;
104
- display:block;
105
- padding:.2em .4em;
106
- line-height:1.5;
107
- zoom:1;
108
- }
109
- .ui-menu .ui-menu-item a.ui-state-hover,
110
- .ui-menu .ui-menu-item a.ui-state-active {
111
- font-weight: normal;
112
- margin: -1px;
113
- }
114
- /*
115
- * jQuery UI Button 1.8.9
116
- *
117
- * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
118
- * Dual licensed under the MIT or GPL Version 2 licenses.
119
- * http://jquery.org/license
120
- *
121
- * http://docs.jquery.com/UI/Button#theming
122
- */
123
- .ui-button { display: inline-block; position: relative; padding: 0; margin-right: .1em; text-decoration: none !important; cursor: pointer; text-align: center; zoom: 1; overflow: visible; } /* the overflow property removes extra width in IE */
124
- .ui-button-icon-only { width: 2.2em; } /* to make room for the icon, a width needs to be set here */
125
- button.ui-button-icon-only { width: 2.4em; } /* button elements seem to need a little more width */
126
- .ui-button-icons-only { width: 3.4em; }
127
- button.ui-button-icons-only { width: 3.7em; }
128
-
129
- /*button text element */
130
- .ui-button .ui-button-text { display: block; line-height: 1.4; }
131
- .ui-button-text-only .ui-button-text { padding: .4em 1em; }
132
- .ui-button-icon-only .ui-button-text, .ui-button-icons-only .ui-button-text { padding: .4em; text-indent: -9999999px; }
133
- .ui-button-text-icon-primary .ui-button-text, .ui-button-text-icons .ui-button-text { padding: .4em 1em .4em 2.1em; }
134
- .ui-button-text-icon-secondary .ui-button-text, .ui-button-text-icons .ui-button-text { padding: .4em 2.1em .4em 1em; }
135
- .ui-button-text-icons .ui-button-text { padding-left: 2.1em; padding-right: 2.1em; }
136
- /* no icon support for input elements, provide padding by default */
137
- input.ui-button { padding: .4em 1em; }
138
-
139
- /*button icon element(s) */
140
- .ui-button-icon-only .ui-icon, .ui-button-text-icon-primary .ui-icon, .ui-button-text-icon-secondary .ui-icon, .ui-button-text-icons .ui-icon, .ui-button-icons-only .ui-icon { position: absolute; top: 50%; margin-top: -8px; }
141
- .ui-button-icon-only .ui-icon { left: 50%; margin-left: -8px; }
142
- .ui-button-text-icon-primary .ui-button-icon-primary, .ui-button-text-icons .ui-button-icon-primary, .ui-button-icons-only .ui-button-icon-primary { left: .5em; }
143
- .ui-button-text-icon-secondary .ui-button-icon-secondary, .ui-button-text-icons .ui-button-icon-secondary, .ui-button-icons-only .ui-button-icon-secondary { right: .5em; }
144
- .ui-button-text-icons .ui-button-icon-secondary, .ui-button-icons-only .ui-button-icon-secondary { right: .5em; }
145
-
146
- /*button sets*/
147
- .ui-buttonset { margin-right: 7px; }
148
- .ui-buttonset .ui-button { margin-left: 0; margin-right: -.3em; }
149
-
150
- /* workarounds */
151
- button.ui-button::-moz-focus-inner { border: 0; padding: 0; } /* reset extra padding in Firefox */
152
- /*
153
- * jQuery UI Datepicker 1.8.9
154
- *
155
- * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
156
- * Dual licensed under the MIT or GPL Version 2 licenses.
157
- * http://jquery.org/license
158
- *
159
- * http://docs.jquery.com/UI/Datepicker#theming
160
- */
161
- .ui-datepicker { width: 17em; padding: .2em .2em 0; display: none; }
162
- .ui-datepicker .ui-datepicker-header { position:relative; padding:.2em 0; }
163
- .ui-datepicker .ui-datepicker-prev, .ui-datepicker .ui-datepicker-next { position:absolute; top: 2px; width: 1.8em; height: 1.8em; }
164
- .ui-datepicker .ui-datepicker-prev-hover, .ui-datepicker .ui-datepicker-next-hover { top: 1px; }
165
- .ui-datepicker .ui-datepicker-prev { left:2px; }
166
- .ui-datepicker .ui-datepicker-next { right:2px; }
167
- .ui-datepicker .ui-datepicker-prev-hover { left:1px; }
168
- .ui-datepicker .ui-datepicker-next-hover { right:1px; }
169
- .ui-datepicker .ui-datepicker-prev span, .ui-datepicker .ui-datepicker-next span { display: block; position: absolute; left: 50%; margin-left: -8px; top: 50%; margin-top: -8px; }
170
- .ui-datepicker .ui-datepicker-title { margin: 0 2.3em; line-height: 1.8em; text-align: center; }
171
- .ui-datepicker .ui-datepicker-title select { font-size:1em; margin:1px 0; }
172
- .ui-datepicker select.ui-datepicker-month-year {width: 100%;}
173
- .ui-datepicker select.ui-datepicker-month,
174
- .ui-datepicker select.ui-datepicker-year { width: 49%;}
175
- .ui-datepicker table {width: 100%; font-size: .9em; border-collapse: collapse; margin:0 0 .4em; }
176
- .ui-datepicker th { padding: .7em .3em; text-align: center; font-weight: bold; border: 0; }
177
- .ui-datepicker td { border: 0; padding: 1px; }
178
- .ui-datepicker td span, .ui-datepicker td a { display: block; padding: .2em; text-align: right; text-decoration: none; }
179
- .ui-datepicker .ui-datepicker-buttonpane { background-image: none; margin: .7em 0 0 0; padding:0 .2em; border-left: 0; border-right: 0; border-bottom: 0; }
180
- .ui-datepicker .ui-datepicker-buttonpane button { float: right; margin: .5em .2em .4em; cursor: pointer; padding: .2em .6em .3em .6em; width:auto; overflow:visible; }
181
- .ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current { float:left; }
182
-
183
- /* with multiple calendars */
184
- .ui-datepicker.ui-datepicker-multi { width:auto; }
185
- .ui-datepicker-multi .ui-datepicker-group { float:left; }
186
- .ui-datepicker-multi .ui-datepicker-group table { width:95%; margin:0 auto .4em; }
187
- .ui-datepicker-multi-2 .ui-datepicker-group { width:50%; }
188
- .ui-datepicker-multi-3 .ui-datepicker-group { width:33.3%; }
189
- .ui-datepicker-multi-4 .ui-datepicker-group { width:25%; }
190
- .ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header { border-left-width:0; }
191
- .ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header { border-left-width:0; }
192
- .ui-datepicker-multi .ui-datepicker-buttonpane { clear:left; }
193
- .ui-datepicker-row-break { clear:both; width:100%; }
194
-
195
- /* RTL support */
196
- .ui-datepicker-rtl { direction: rtl; }
197
- .ui-datepicker-rtl .ui-datepicker-prev { right: 2px; left: auto; }
198
- .ui-datepicker-rtl .ui-datepicker-next { left: 2px; right: auto; }
199
- .ui-datepicker-rtl .ui-datepicker-prev:hover { right: 1px; left: auto; }
200
- .ui-datepicker-rtl .ui-datepicker-next:hover { left: 1px; right: auto; }
201
- .ui-datepicker-rtl .ui-datepicker-buttonpane { clear:right; }
202
- .ui-datepicker-rtl .ui-datepicker-buttonpane button { float: left; }
203
- .ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current { float:right; }
204
- .ui-datepicker-rtl .ui-datepicker-group { float:right; }
205
- .ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header { border-right-width:0; border-left-width:1px; }
206
- .ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header { border-right-width:0; border-left-width:1px; }
207
-
208
- /* IE6 IFRAME FIX (taken from datepicker 1.5.3 */
209
- .ui-datepicker-cover {
210
- display: none; /*sorry for IE5*/
211
- display/**/: block; /*sorry for IE5*/
212
- position: absolute; /*must have*/
213
- z-index: -1; /*must have*/
214
- filter: mask(); /*must have*/
215
- top: -4px; /*must have*/
216
- left: -4px; /*must have*/
217
- width: 200px; /*must have*/
218
- height: 200px; /*must have*/
219
- }/*
220
- * jQuery UI Dialog 1.8.9
221
- *
222
- * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
223
- * Dual licensed under the MIT or GPL Version 2 licenses.
224
- * http://jquery.org/license
225
- *
226
- * http://docs.jquery.com/UI/Dialog#theming
227
- */
228
- .ui-dialog { position: absolute; padding: .2em; width: 300px; overflow: hidden; }
229
- .ui-dialog .ui-dialog-titlebar { padding: .4em 1em; position: relative; }
230
- .ui-dialog .ui-dialog-title { float: left; margin: .1em 16px .1em 0; }
231
- .ui-dialog .ui-dialog-titlebar-close { position: absolute; right: .3em; top: 50%; width: 19px; margin: -10px 0 0 0; padding: 1px; height: 18px; }
232
- .ui-dialog .ui-dialog-titlebar-close span { display: block; margin: 1px; }
233
- .ui-dialog .ui-dialog-titlebar-close:hover, .ui-dialog .ui-dialog-titlebar-close:focus { padding: 0; }
234
- .ui-dialog .ui-dialog-content { position: relative; border: 0; padding: .5em 1em; background: none; overflow: auto; zoom: 1; }
235
- .ui-dialog .ui-dialog-buttonpane { text-align: left; border-width: 1px 0 0 0; background-image: none; margin: .5em 0 0 0; padding: .3em 1em .5em .4em; }
236
- .ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset { float: right; }
237
- .ui-dialog .ui-dialog-buttonpane button { margin: .5em .4em .5em 0; cursor: pointer; }
238
- .ui-dialog .ui-resizable-se { width: 14px; height: 14px; right: 3px; bottom: 3px; }
239
- .ui-draggable .ui-dialog-titlebar { cursor: move; }
240
- /*
241
- * jQuery UI Progressbar 1.8.9
242
- *
243
- * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
244
- * Dual licensed under the MIT or GPL Version 2 licenses.
245
- * http://jquery.org/license
246
- *
247
- * http://docs.jquery.com/UI/Progressbar#theming
248
- */
249
- .ui-progressbar { height:2em; text-align: left; }
250
- .ui-progressbar .ui-progressbar-value {margin: -1px; height:100%; }/*
251
- * jQuery UI Resizable 1.8.9
252
- *
253
- * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
254
- * Dual licensed under the MIT or GPL Version 2 licenses.
255
- * http://jquery.org/license
256
- *
257
- * http://docs.jquery.com/UI/Resizable#theming
258
- */
259
- .ui-resizable { position: relative;}
260
- .ui-resizable-handle { position: absolute;font-size: 0.1px;z-index: 99999; display: block;}
261
- .ui-resizable-disabled .ui-resizable-handle, .ui-resizable-autohide .ui-resizable-handle { display: none; }
262
- .ui-resizable-n { cursor: n-resize; height: 7px; width: 100%; top: -5px; left: 0; }
263
- .ui-resizable-s { cursor: s-resize; height: 7px; width: 100%; bottom: -5px; left: 0; }
264
- .ui-resizable-e { cursor: e-resize; width: 7px; right: -5px; top: 0; height: 100%; }
265
- .ui-resizable-w { cursor: w-resize; width: 7px; left: -5px; top: 0; height: 100%; }
266
- .ui-resizable-se { cursor: se-resize; width: 12px; height: 12px; right: 1px; bottom: 1px; }
267
- .ui-resizable-sw { cursor: sw-resize; width: 9px; height: 9px; left: -5px; bottom: -5px; }
268
- .ui-resizable-nw { cursor: nw-resize; width: 9px; height: 9px; left: -5px; top: -5px; }
269
- .ui-resizable-ne { cursor: ne-resize; width: 9px; height: 9px; right: -5px; top: -5px;}/*
270
- * jQuery UI Selectable 1.8.9
271
- *
272
- * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
273
- * Dual licensed under the MIT or GPL Version 2 licenses.
274
- * http://jquery.org/license
275
- *
276
- * http://docs.jquery.com/UI/Selectable#theming
277
- */
278
- .ui-selectable-helper { position: absolute; z-index: 100; border:1px dotted black; }
279
- /*
280
- * jQuery UI Slider 1.8.9
281
- *
282
- * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
283
- * Dual licensed under the MIT or GPL Version 2 licenses.
284
- * http://jquery.org/license
285
- *
286
- * http://docs.jquery.com/UI/Slider#theming
287
- */
288
- .ui-slider { position: relative; text-align: left; }
289
- .ui-slider .ui-slider-handle { position: absolute; z-index: 2; width: 1.2em; height: 1.2em; cursor: default; }
290
- .ui-slider .ui-slider-range { position: absolute; z-index: 1; font-size: .7em; display: block; border: 0; background-position: 0 0; }
291
-
292
- .ui-slider-horizontal { height: .8em; }
293
- .ui-slider-horizontal .ui-slider-handle { top: -.3em; margin-left: -.6em; }
294
- .ui-slider-horizontal .ui-slider-range { top: 0; height: 100%; }
295
- .ui-slider-horizontal .ui-slider-range-min { left: 0; }
296
- .ui-slider-horizontal .ui-slider-range-max { right: 0; }
297
-
298
- .ui-slider-vertical { width: .8em; height: 100px; }
299
- .ui-slider-vertical .ui-slider-handle { left: -.3em; margin-left: 0; margin-bottom: -.6em; }
300
- .ui-slider-vertical .ui-slider-range { left: 0; width: 100%; }
301
- .ui-slider-vertical .ui-slider-range-min { bottom: 0; }
302
- .ui-slider-vertical .ui-slider-range-max { top: 0; }/*
303
- * jQuery UI Tabs 1.8.9
304
- *
305
- * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
306
- * Dual licensed under the MIT or GPL Version 2 licenses.
307
- * http://jquery.org/license
308
- *
309
- * http://docs.jquery.com/UI/Tabs#theming
310
- */
311
- .ui-tabs { position: relative; padding: .2em; zoom: 1; } /* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */
312
- .ui-tabs .ui-tabs-nav { margin: 0; padding: .2em .2em 0; }
313
- .ui-tabs .ui-tabs-nav li { list-style: none; float: left; position: relative; top: 1px; margin: 0 .2em 1px 0; border-bottom: 0 !important; padding: 0; white-space: nowrap; }
314
- .ui-tabs .ui-tabs-nav li a { float: left; padding: .5em 1em; text-decoration: none; }
315
- .ui-tabs .ui-tabs-nav li.ui-tabs-selected { margin-bottom: 0; padding-bottom: 1px; }
316
- .ui-tabs .ui-tabs-nav li.ui-tabs-selected a, .ui-tabs .ui-tabs-nav li.ui-state-disabled a, .ui-tabs .ui-tabs-nav li.ui-state-processing a { cursor: text; }
317
- .ui-tabs .ui-tabs-nav li a, .ui-tabs.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-selected a { cursor: pointer; } /* first selector in group seems obsolete, but required to overcome bug in Opera applying cursor: text overall if defined elsewhere... */
318
- .ui-tabs .ui-tabs-panel { display: block; border-width: 0; padding: 1em 1.4em; background: none; }
319
- .ui-tabs .ui-tabs-hide { display: none !important; }
320
- /*
321
- * jQuery UI CSS Framework 1.8.9
322
- *
323
- * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
324
- * Dual licensed under the MIT or GPL Version 2 licenses.
325
- * http://jquery.org/license
326
- *
327
- * http://docs.jquery.com/UI/Theming/API
328
- *
329
- * To view and modify this theme, visit http://jqueryui.com/themeroller/
330
- */
331
-
332
-
333
- /* Component containers
334
- ----------------------------------*/
335
- .ui-widget { font-family: Verdana,Arial,sans-serif/*{ffDefault}*/; font-size: 1.1em/*{fsDefault}*/; }
336
- .ui-widget .ui-widget { font-size: 1em; }
337
- .ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button { font-family: Verdana,Arial,sans-serif/*{ffDefault}*/; font-size: 1em; }
338
- .ui-widget-content { border: 1px solid #aaaaaa/*{borderColorContent}*/; background: #ffffff/*{bgColorContent}*/ url(../images/ui-bg_flat_75_ffffff_40x100.png)/*{bgImgUrlContent}*/ 50%/*{bgContentXPos}*/ 50%/*{bgContentYPos}*/ repeat-x/*{bgContentRepeat}*/; color: #222222/*{fcContent}*/; }
339
- .ui-widget-content a { color: #222222/*{fcContent}*/; }
340
- .ui-widget-header { border: 1px solid #aaaaaa/*{borderColorHeader}*/; background: #cccccc/*{bgColorHeader}*/ url(../images/ui-bg_highlight-soft_75_cccccc_1x100.png)/*{bgImgUrlHeader}*/ 50%/*{bgHeaderXPos}*/ 50%/*{bgHeaderYPos}*/ repeat-x/*{bgHeaderRepeat}*/; color: #222222/*{fcHeader}*/; font-weight: bold; }
341
- .ui-widget-header a { color: #222222/*{fcHeader}*/; }
342
-
343
- /* Interaction states
344
- ----------------------------------*/
345
- .ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default { border: 1px solid #d3d3d3/*{borderColorDefault}*/; background: #e6e6e6/*{bgColorDefault}*/ url(../images/ui-bg_glass_75_e6e6e6_1x400.png)/*{bgImgUrlDefault}*/ 50%/*{bgDefaultXPos}*/ 50%/*{bgDefaultYPos}*/ repeat-x/*{bgDefaultRepeat}*/; font-weight: normal/*{fwDefault}*/; color: #555555/*{fcDefault}*/; }
346
- .ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: #555555/*{fcDefault}*/; text-decoration: none; }
347
- .ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus { border: 1px solid #999999/*{borderColorHover}*/; background: #dadada/*{bgColorHover}*/ url(../images/ui-bg_glass_75_dadada_1x400.png)/*{bgImgUrlHover}*/ 50%/*{bgHoverXPos}*/ 50%/*{bgHoverYPos}*/ repeat-x/*{bgHoverRepeat}*/; font-weight: normal/*{fwDefault}*/; color: #212121/*{fcHover}*/; }
348
- .ui-state-hover a, .ui-state-hover a:hover { color: #212121/*{fcHover}*/; text-decoration: none; }
349
- .ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active { border: 1px solid #aaaaaa/*{borderColorActive}*/; background: #ffffff/*{bgColorActive}*/ url(../images/ui-bg_glass_65_ffffff_1x400.png)/*{bgImgUrlActive}*/ 50%/*{bgActiveXPos}*/ 50%/*{bgActiveYPos}*/ repeat-x/*{bgActiveRepeat}*/; font-weight: normal/*{fwDefault}*/; color: #212121/*{fcActive}*/; }
350
- .ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited { color: #212121/*{fcActive}*/; text-decoration: none; }
351
- .ui-widget :active { outline: none; }
352
-
353
- /* Interaction Cues
354
- ----------------------------------*/
355
- .ui-state-highlight, .ui-widget-content .ui-state-highlight, .ui-widget-header .ui-state-highlight {border: 1px solid #fcefa1/*{borderColorHighlight}*/; background: #fbf9ee/*{bgColorHighlight}*/ url(../images/ui-bg_glass_55_fbf9ee_1x400.png)/*{bgImgUrlHighlight}*/ 50%/*{bgHighlightXPos}*/ 50%/*{bgHighlightYPos}*/ repeat-x/*{bgHighlightRepeat}*/; color: #363636/*{fcHighlight}*/; }
356
- .ui-state-highlight a, .ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a { color: #363636/*{fcHighlight}*/; }
357
- .ui-state-error, .ui-widget-content .ui-state-error, .ui-widget-header .ui-state-error {border: 1px solid #cd0a0a/*{borderColorError}*/; background: #fef1ec/*{bgColorError}*/ url(../images/ui-bg_glass_95_fef1ec_1x400.png)/*{bgImgUrlError}*/ 50%/*{bgErrorXPos}*/ 50%/*{bgErrorYPos}*/ repeat-x/*{bgErrorRepeat}*/; color: #cd0a0a/*{fcError}*/; }
358
- .ui-state-error a, .ui-widget-content .ui-state-error a, .ui-widget-header .ui-state-error a { color: #cd0a0a/*{fcError}*/; }
359
- .ui-state-error-text, .ui-widget-content .ui-state-error-text, .ui-widget-header .ui-state-error-text { color: #cd0a0a/*{fcError}*/; }
360
- .ui-priority-primary, .ui-widget-content .ui-priority-primary, .ui-widget-header .ui-priority-primary { font-weight: bold; }
361
- .ui-priority-secondary, .ui-widget-content .ui-priority-secondary, .ui-widget-header .ui-priority-secondary { opacity: .7; filter:Alpha(Opacity=70); font-weight: normal; }
362
- .ui-state-disabled, .ui-widget-content .ui-state-disabled, .ui-widget-header .ui-state-disabled { opacity: .35; filter:Alpha(Opacity=35); background-image: none; }
363
-
364
- /* Icons
365
- ----------------------------------*/
366
-
367
- /* states and images */
368
- .ui-icon { width: 16px; height: 16px; background-image: url(../images/ui-icons_222222_256x240.png)/*{iconsContent}*/; }
369
- .ui-widget-content .ui-icon {background-image: url(../images/ui-icons_222222_256x240.png)/*{iconsContent}*/; }
370
- .ui-widget-header .ui-icon {background-image: url(../images/ui-icons_222222_256x240.png)/*{iconsHeader}*/; }
371
- .ui-state-default .ui-icon { background-image: url(../images/ui-icons_888888_256x240.png)/*{iconsDefault}*/; }
372
- .ui-state-hover .ui-icon, .ui-state-focus .ui-icon {background-image: url(../images/ui-icons_454545_256x240.png)/*{iconsHover}*/; }
373
- .ui-state-active .ui-icon {background-image: url(../images/ui-icons_454545_256x240.png)/*{iconsActive}*/; }
374
- .ui-state-highlight .ui-icon {background-image: url(../images/ui-icons_2e83ff_256x240.png)/*{iconsHighlight}*/; }
375
- .ui-state-error .ui-icon, .ui-state-error-text .ui-icon {background-image: url(../images/ui-icons_cd0a0a_256x240.png)/*{iconsError}*/; }
376
-
377
- /* positioning */
378
- .ui-icon-carat-1-n { background-position: 0 0; }
379
- .ui-icon-carat-1-ne { background-position: -16px 0; }
380
- .ui-icon-carat-1-e { background-position: -32px 0; }
381
- .ui-icon-carat-1-se { background-position: -48px 0; }
382
- .ui-icon-carat-1-s { background-position: -64px 0; }
383
- .ui-icon-carat-1-sw { background-position: -80px 0; }
384
- .ui-icon-carat-1-w { background-position: -96px 0; }
385
- .ui-icon-carat-1-nw { background-position: -112px 0; }
386
- .ui-icon-carat-2-n-s { background-position: -128px 0; }
387
- .ui-icon-carat-2-e-w { background-position: -144px 0; }
388
- .ui-icon-triangle-1-n { background-position: 0 -16px; }
389
- .ui-icon-triangle-1-ne { background-position: -16px -16px; }
390
- .ui-icon-triangle-1-e { background-position: -32px -16px; }
391
- .ui-icon-triangle-1-se { background-position: -48px -16px; }
392
- .ui-icon-triangle-1-s { background-position: -64px -16px; }
393
- .ui-icon-triangle-1-sw { background-position: -80px -16px; }
394
- .ui-icon-triangle-1-w { background-position: -96px -16px; }
395
- .ui-icon-triangle-1-nw { background-position: -112px -16px; }
396
- .ui-icon-triangle-2-n-s { background-position: -128px -16px; }
397
- .ui-icon-triangle-2-e-w { background-position: -144px -16px; }
398
- .ui-icon-arrow-1-n { background-position: 0 -32px; }
399
- .ui-icon-arrow-1-ne { background-position: -16px -32px; }
400
- .ui-icon-arrow-1-e { background-position: -32px -32px; }
401
- .ui-icon-arrow-1-se { background-position: -48px -32px; }
402
- .ui-icon-arrow-1-s { background-position: -64px -32px; }
403
- .ui-icon-arrow-1-sw { background-position: -80px -32px; }
404
- .ui-icon-arrow-1-w { background-position: -96px -32px; }
405
- .ui-icon-arrow-1-nw { background-position: -112px -32px; }
406
- .ui-icon-arrow-2-n-s { background-position: -128px -32px; }
407
- .ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }
408
- .ui-icon-arrow-2-e-w { background-position: -160px -32px; }
409
- .ui-icon-arrow-2-se-nw { background-position: -176px -32px; }
410
- .ui-icon-arrowstop-1-n { background-position: -192px -32px; }
411
- .ui-icon-arrowstop-1-e { background-position: -208px -32px; }
412
- .ui-icon-arrowstop-1-s { background-position: -224px -32px; }
413
- .ui-icon-arrowstop-1-w { background-position: -240px -32px; }
414
- .ui-icon-arrowthick-1-n { background-position: 0 -48px; }
415
- .ui-icon-arrowthick-1-ne { background-position: -16px -48px; }
416
- .ui-icon-arrowthick-1-e { background-position: -32px -48px; }
417
- .ui-icon-arrowthick-1-se { background-position: -48px -48px; }
418
- .ui-icon-arrowthick-1-s { background-position: -64px -48px; }
419
- .ui-icon-arrowthick-1-sw { background-position: -80px -48px; }
420
- .ui-icon-arrowthick-1-w { background-position: -96px -48px; }
421
- .ui-icon-arrowthick-1-nw { background-position: -112px -48px; }
422
- .ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }
423
- .ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }
424
- .ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }
425
- .ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }
426
- .ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }
427
- .ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }
428
- .ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }
429
- .ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }
430
- .ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }
431
- .ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }
432
- .ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }
433
- .ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }
434
- .ui-icon-arrowreturn-1-w { background-position: -64px -64px; }
435
- .ui-icon-arrowreturn-1-n { background-position: -80px -64px; }
436
- .ui-icon-arrowreturn-1-e { background-position: -96px -64px; }
437
- .ui-icon-arrowreturn-1-s { background-position: -112px -64px; }
438
- .ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }
439
- .ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }
440
- .ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }
441
- .ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }
442
- .ui-icon-arrow-4 { background-position: 0 -80px; }
443
- .ui-icon-arrow-4-diag { background-position: -16px -80px; }
444
- .ui-icon-extlink { background-position: -32px -80px; }
445
- .ui-icon-newwin { background-position: -48px -80px; }
446
- .ui-icon-refresh { background-position: -64px -80px; }
447
- .ui-icon-shuffle { background-position: -80px -80px; }
448
- .ui-icon-transfer-e-w { background-position: -96px -80px; }
449
- .ui-icon-transferthick-e-w { background-position: -112px -80px; }
450
- .ui-icon-folder-collapsed { background-position: 0 -96px; }
451
- .ui-icon-folder-open { background-position: -16px -96px; }
452
- .ui-icon-document { background-position: -32px -96px; }
453
- .ui-icon-document-b { background-position: -48px -96px; }
454
- .ui-icon-note { background-position: -64px -96px; }
455
- .ui-icon-mail-closed { background-position: -80px -96px; }
456
- .ui-icon-mail-open { background-position: -96px -96px; }
457
- .ui-icon-suitcase { background-position: -112px -96px; }
458
- .ui-icon-comment { background-position: -128px -96px; }
459
- .ui-icon-person { background-position: -144px -96px; }
460
- .ui-icon-print { background-position: -160px -96px; }
461
- .ui-icon-trash { background-position: -176px -96px; }
462
- .ui-icon-locked { background-position: -192px -96px; }
463
- .ui-icon-unlocked { background-position: -208px -96px; }
464
- .ui-icon-bookmark { background-position: -224px -96px; }
465
- .ui-icon-tag { background-position: -240px -96px; }
466
- .ui-icon-home { background-position: 0 -112px; }
467
- .ui-icon-flag { background-position: -16px -112px; }
468
- .ui-icon-calendar { background-position: -32px -112px; }
469
- .ui-icon-cart { background-position: -48px -112px; }
470
- .ui-icon-pencil { background-position: -64px -112px; }
471
- .ui-icon-clock { background-position: -80px -112px; }
472
- .ui-icon-disk { background-position: -96px -112px; }
473
- .ui-icon-calculator { background-position: -112px -112px; }
474
- .ui-icon-zoomin { background-position: -128px -112px; }
475
- .ui-icon-zoomout { background-position: -144px -112px; }
476
- .ui-icon-search { background-position: -160px -112px; }
477
- .ui-icon-wrench { background-position: -176px -112px; }
478
- .ui-icon-gear { background-position: -192px -112px; }
479
- .ui-icon-heart { background-position: -208px -112px; }
480
- .ui-icon-star { background-position: -224px -112px; }
481
- .ui-icon-link { background-position: -240px -112px; }
482
- .ui-icon-cancel { background-position: 0 -128px; }
483
- .ui-icon-plus { background-position: -16px -128px; }
484
- .ui-icon-plusthick { background-position: -32px -128px; }
485
- .ui-icon-minus { background-position: -48px -128px; }
486
- .ui-icon-minusthick { background-position: -64px -128px; }
487
- .ui-icon-close { background-position: -80px -128px; }
488
- .ui-icon-closethick { background-position: -96px -128px; }
489
- .ui-icon-key { background-position: -112px -128px; }
490
- .ui-icon-lightbulb { background-position: -128px -128px; }
491
- .ui-icon-scissors { background-position: -144px -128px; }
492
- .ui-icon-clipboard { background-position: -160px -128px; }
493
- .ui-icon-copy { background-position: -176px -128px; }
494
- .ui-icon-contact { background-position: -192px -128px; }
495
- .ui-icon-image { background-position: -208px -128px; }
496
- .ui-icon-video { background-position: -224px -128px; }
497
- .ui-icon-script { background-position: -240px -128px; }
498
- .ui-icon-alert { background-position: 0 -144px; }
499
- .ui-icon-info { background-position: -16px -144px; }
500
- .ui-icon-notice { background-position: -32px -144px; }
501
- .ui-icon-help { background-position: -48px -144px; }
502
- .ui-icon-check { background-position: -64px -144px; }
503
- .ui-icon-bullet { background-position: -80px -144px; }
504
- .ui-icon-radio-off { background-position: -96px -144px; }
505
- .ui-icon-radio-on { background-position: -112px -144px; }
506
- .ui-icon-pin-w { background-position: -128px -144px; }
507
- .ui-icon-pin-s { background-position: -144px -144px; }
508
- .ui-icon-play { background-position: 0 -160px; }
509
- .ui-icon-pause { background-position: -16px -160px; }
510
- .ui-icon-seek-next { background-position: -32px -160px; }
511
- .ui-icon-seek-prev { background-position: -48px -160px; }
512
- .ui-icon-seek-end { background-position: -64px -160px; }
513
- .ui-icon-seek-start { background-position: -80px -160px; }
514
- /* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */
515
- .ui-icon-seek-first { background-position: -80px -160px; }
516
- .ui-icon-stop { background-position: -96px -160px; }
517
- .ui-icon-eject { background-position: -112px -160px; }
518
- .ui-icon-volume-off { background-position: -128px -160px; }
519
- .ui-icon-volume-on { background-position: -144px -160px; }
520
- .ui-icon-power { background-position: 0 -176px; }
521
- .ui-icon-signal-diag { background-position: -16px -176px; }
522
- .ui-icon-signal { background-position: -32px -176px; }
523
- .ui-icon-battery-0 { background-position: -48px -176px; }
524
- .ui-icon-battery-1 { background-position: -64px -176px; }
525
- .ui-icon-battery-2 { background-position: -80px -176px; }
526
- .ui-icon-battery-3 { background-position: -96px -176px; }
527
- .ui-icon-circle-plus { background-position: 0 -192px; }
528
- .ui-icon-circle-minus { background-position: -16px -192px; }
529
- .ui-icon-circle-close { background-position: -32px -192px; }
530
- .ui-icon-circle-triangle-e { background-position: -48px -192px; }
531
- .ui-icon-circle-triangle-s { background-position: -64px -192px; }
532
- .ui-icon-circle-triangle-w { background-position: -80px -192px; }
533
- .ui-icon-circle-triangle-n { background-position: -96px -192px; }
534
- .ui-icon-circle-arrow-e { background-position: -112px -192px; }
535
- .ui-icon-circle-arrow-s { background-position: -128px -192px; }
536
- .ui-icon-circle-arrow-w { background-position: -144px -192px; }
537
- .ui-icon-circle-arrow-n { background-position: -160px -192px; }
538
- .ui-icon-circle-zoomin { background-position: -176px -192px; }
539
- .ui-icon-circle-zoomout { background-position: -192px -192px; }
540
- .ui-icon-circle-check { background-position: -208px -192px; }
541
- .ui-icon-circlesmall-plus { background-position: 0 -208px; }
542
- .ui-icon-circlesmall-minus { background-position: -16px -208px; }
543
- .ui-icon-circlesmall-close { background-position: -32px -208px; }
544
- .ui-icon-squaresmall-plus { background-position: -48px -208px; }
545
- .ui-icon-squaresmall-minus { background-position: -64px -208px; }
546
- .ui-icon-squaresmall-close { background-position: -80px -208px; }
547
- .ui-icon-grip-dotted-vertical { background-position: 0 -224px; }
548
- .ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }
549
- .ui-icon-grip-solid-vertical { background-position: -32px -224px; }
550
- .ui-icon-grip-solid-horizontal { background-position: -48px -224px; }
551
- .ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }
552
- .ui-icon-grip-diagonal-se { background-position: -80px -224px; }
553
-
554
-
555
- /* Misc visuals
556
- ----------------------------------*/
557
-
558
- /* Corner radius */
559
- .ui-corner-tl { -moz-border-radius-topleft: 4px/*{cornerRadius}*/; -webkit-border-top-left-radius: 4px/*{cornerRadius}*/; border-top-left-radius: 4px/*{cornerRadius}*/; }
560
- .ui-corner-tr { -moz-border-radius-topright: 4px/*{cornerRadius}*/; -webkit-border-top-right-radius: 4px/*{cornerRadius}*/; border-top-right-radius: 4px/*{cornerRadius}*/; }
561
- .ui-corner-bl { -moz-border-radius-bottomleft: 4px/*{cornerRadius}*/; -webkit-border-bottom-left-radius: 4px/*{cornerRadius}*/; border-bottom-left-radius: 4px/*{cornerRadius}*/; }
562
- .ui-corner-br { -moz-border-radius-bottomright: 4px/*{cornerRadius}*/; -webkit-border-bottom-right-radius: 4px/*{cornerRadius}*/; border-bottom-right-radius: 4px/*{cornerRadius}*/; }
563
- .ui-corner-top { -moz-border-radius-topleft: 4px/*{cornerRadius}*/; -webkit-border-top-left-radius: 4px/*{cornerRadius}*/; border-top-left-radius: 4px/*{cornerRadius}*/; -moz-border-radius-topright: 4px/*{cornerRadius}*/; -webkit-border-top-right-radius: 4px/*{cornerRadius}*/; border-top-right-radius: 4px/*{cornerRadius}*/; }
564
- .ui-corner-bottom { -moz-border-radius-bottomleft: 4px/*{cornerRadius}*/; -webkit-border-bottom-left-radius: 4px/*{cornerRadius}*/; border-bottom-left-radius: 4px/*{cornerRadius}*/; -moz-border-radius-bottomright: 4px/*{cornerRadius}*/; -webkit-border-bottom-right-radius: 4px/*{cornerRadius}*/; border-bottom-right-radius: 4px/*{cornerRadius}*/; }
565
- .ui-corner-right { -moz-border-radius-topright: 4px/*{cornerRadius}*/; -webkit-border-top-right-radius: 4px/*{cornerRadius}*/; border-top-right-radius: 4px/*{cornerRadius}*/; -moz-border-radius-bottomright: 4px/*{cornerRadius}*/; -webkit-border-bottom-right-radius: 4px/*{cornerRadius}*/; border-bottom-right-radius: 4px/*{cornerRadius}*/; }
566
- .ui-corner-left { -moz-border-radius-topleft: 4px/*{cornerRadius}*/; -webkit-border-top-left-radius: 4px/*{cornerRadius}*/; border-top-left-radius: 4px/*{cornerRadius}*/; -moz-border-radius-bottomleft: 4px/*{cornerRadius}*/; -webkit-border-bottom-left-radius: 4px/*{cornerRadius}*/; border-bottom-left-radius: 4px/*{cornerRadius}*/; }
567
- .ui-corner-all { -moz-border-radius: 4px/*{cornerRadius}*/; -webkit-border-radius: 4px/*{cornerRadius}*/; border-radius: 4px/*{cornerRadius}*/; }
568
-
569
- /* Overlays */
570
- .ui-widget-overlay { background: #aaaaaa/*{bgColorOverlay}*/ url(../images/ui-bg_flat_0_aaaaaa_40x100.png)/*{bgImgUrlOverlay}*/ 50%/*{bgOverlayXPos}*/ 50%/*{bgOverlayYPos}*/ repeat-x/*{bgOverlayRepeat}*/; opacity: .3;filter:Alpha(Opacity=30)/*{opacityOverlay}*/; }
571
  .ui-widget-shadow { margin: -8px/*{offsetTopShadow}*/ 0 0 -8px/*{offsetLeftShadow}*/; padding: 8px/*{thicknessShadow}*/; background: #aaaaaa/*{bgColorShadow}*/ url(../images/ui-bg_flat_0_aaaaaa_40x100.png)/*{bgImgUrlShadow}*/ 50%/*{bgShadowXPos}*/ 50%/*{bgShadowYPos}*/ repeat-x/*{bgShadowRepeat}*/; opacity: .3;filter:Alpha(Opacity=30)/*{opacityShadow}*/; -moz-border-radius: 8px/*{cornerRadiusShadow}*/; -webkit-border-radius: 8px/*{cornerRadiusShadow}*/; border-radius: 8px/*{cornerRadiusShadow}*/; }
1
+ /*
2
+ * jQuery UI CSS Framework 1.8.9
3
+ *
4
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
5
+ * Dual licensed under the MIT or GPL Version 2 licenses.
6
+ * http://jquery.org/license
7
+ *
8
+ * http://docs.jquery.com/UI/Theming/API
9
+ */
10
+
11
+ /* Layout helpers
12
+ ----------------------------------*/
13
+ .ui-helper-hidden { display: none; }
14
+ .ui-helper-hidden-accessible { position: absolute !important; clip: rect(1px 1px 1px 1px); clip: rect(1px,1px,1px,1px); }
15
+ .ui-helper-reset { margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none; }
16
+ .ui-helper-clearfix:after { content: "."; display: block; height: 0; clear: both; visibility: hidden; }
17
+ .ui-helper-clearfix { display: inline-block; }
18
+ /* required comment for clearfix to work in Opera \*/
19
+ * html .ui-helper-clearfix { height:1%; }
20
+ .ui-helper-clearfix { display:block; }
21
+ /* end clearfix */
22
+ .ui-helper-zfix { width: 100%; height: 100%; top: 0; left: 0; position: absolute; opacity: 0; filter:Alpha(Opacity=0); }
23
+
24
+
25
+ /* Interaction Cues
26
+ ----------------------------------*/
27
+ .ui-state-disabled { cursor: default !important; }
28
+
29
+
30
+ /* Icons
31
+ ----------------------------------*/
32
+
33
+ /* states and images */
34
+ .ui-icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; }
35
+
36
+
37
+ /* Misc visuals
38
+ ----------------------------------*/
39
+
40
+ /* Overlays */
41
+ .ui-widget-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }
42
+ /*
43
+ * jQuery UI Accordion 1.8.9
44
+ *
45
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
46
+ * Dual licensed under the MIT or GPL Version 2 licenses.
47
+ * http://jquery.org/license
48
+ *
49
+ * http://docs.jquery.com/UI/Accordion#theming
50
+ */
51
+ /* IE/Win - Fix animation bug - #4615 */
52
+ .ui-accordion { width: 100%; }
53
+ .ui-accordion .ui-accordion-header { cursor: pointer; position: relative; margin-top: 1px; zoom: 1; }
54
+ .ui-accordion .ui-accordion-li-fix { display: inline; }
55
+ .ui-accordion .ui-accordion-header-active { border-bottom: 0 !important; }
56
+ .ui-accordion .ui-accordion-header a { display: block; font-size: 1em; padding: .5em .5em .5em .7em; }
57
+ .ui-accordion-icons .ui-accordion-header a { padding-left: 2.2em; }
58
+ .ui-accordion .ui-accordion-header .ui-icon { position: absolute; left: .5em; top: 50%; margin-top: -8px; }
59
+ .ui-accordion .ui-accordion-content { padding: 1em 2.2em; border-top: 0; margin-top: -2px; position: relative; top: 1px; margin-bottom: 2px; overflow: auto; display: none; zoom: 1; }
60
+ .ui-accordion .ui-accordion-content-active { display: block; }
61
+ /*
62
+ * jQuery UI Autocomplete 1.8.9
63
+ *
64
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
65
+ * Dual licensed under the MIT or GPL Version 2 licenses.
66
+ * http://jquery.org/license
67
+ *
68
+ * http://docs.jquery.com/UI/Autocomplete#theming
69
+ */
70
+ .ui-autocomplete { position: absolute; cursor: default; }
71
+
72
+ /* workarounds */
73
+ * html .ui-autocomplete { width:1px; } /* without this, the menu expands to 100% in IE6 */
74
+
75
+ /*
76
+ * jQuery UI Menu 1.8.9
77
+ *
78
+ * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
79
+ * Dual licensed under the MIT or GPL Version 2 licenses.
80
+ * http://jquery.org/license
81
+ *
82
+ * http://docs.jquery.com/UI/Menu#theming
83
+ */
84
+ .ui-menu {
85
+ list-style:none;
86
+ padding: 2px;
87
+ margin: 0;
88
+ display:block;
89
+ float: left;
90
+ }
91
+ .ui-menu .ui-menu {
92
+ margin-top: -3px;
93
+ }
94
+ .ui-menu .ui-menu-item {
95
+ margin:0;
96
+ padding: 0;
97
+ zoom: 1;
98
+ float: left;
99
+ clear: left;
100
+ width: 100%;
101
+ }
102
+ .ui-menu .ui-menu-item a {
103
+ text-decoration:none;
104
+ display:block;
105
+ padding:.2em .4em;
106
+ line-height:1.5;
107
+ zoom:1;
108
+ }
109
+ .ui-menu .ui-menu-item a.ui-state-hover,
110
+ .ui-menu .ui-menu-item a.ui-state-active {
111
+ font-weight: normal;
112
+ margin: -1px;
113
+ }
114
+ /*
115
+ * jQuery UI Button 1.8.9
116
+ *
117
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
118
+ * Dual licensed under the MIT or GPL Version 2 licenses.
119
+ * http://jquery.org/license
120
+ *
121
+ * http://docs.jquery.com/UI/Button#theming
122
+ */
123
+ .ui-button { display: inline-block; position: relative; padding: 0; margin-right: .1em; text-decoration: none !important; cursor: pointer; text-align: center; zoom: 1; overflow: visible; } /* the overflow property removes extra width in IE */
124
+ .ui-button-icon-only { width: 2.2em; } /* to make room for the icon, a width needs to be set here */
125
+ button.ui-button-icon-only { width: 2.4em; } /* button elements seem to need a little more width */
126
+ .ui-button-icons-only { width: 3.4em; }
127
+ button.ui-button-icons-only { width: 3.7em; }
128
+
129
+ /*button text element */
130
+ .ui-button .ui-button-text { display: block; line-height: 1.4; }
131
+ .ui-button-text-only .ui-button-text { padding: .4em 1em; }
132
+ .ui-button-icon-only .ui-button-text, .ui-button-icons-only .ui-button-text { padding: .4em; text-indent: -9999999px; }
133
+ .ui-button-text-icon-primary .ui-button-text, .ui-button-text-icons .ui-button-text { padding: .4em 1em .4em 2.1em; }
134
+ .ui-button-text-icon-secondary .ui-button-text, .ui-button-text-icons .ui-button-text { padding: .4em 2.1em .4em 1em; }
135
+ .ui-button-text-icons .ui-button-text { padding-left: 2.1em; padding-right: 2.1em; }
136
+ /* no icon support for input elements, provide padding by default */
137
+ input.ui-button { padding: .4em 1em; }
138
+
139
+ /*button icon element(s) */
140
+ .ui-button-icon-only .ui-icon, .ui-button-text-icon-primary .ui-icon, .ui-button-text-icon-secondary .ui-icon, .ui-button-text-icons .ui-icon, .ui-button-icons-only .ui-icon { position: absolute; top: 50%; margin-top: -8px; }
141
+ .ui-button-icon-only .ui-icon { left: 50%; margin-left: -8px; }
142
+ .ui-button-text-icon-primary .ui-button-icon-primary, .ui-button-text-icons .ui-button-icon-primary, .ui-button-icons-only .ui-button-icon-primary { left: .5em; }
143
+ .ui-button-text-icon-secondary .ui-button-icon-secondary, .ui-button-text-icons .ui-button-icon-secondary, .ui-button-icons-only .ui-button-icon-secondary { right: .5em; }
144
+ .ui-button-text-icons .ui-button-icon-secondary, .ui-button-icons-only .ui-button-icon-secondary { right: .5em; }
145
+
146
+ /*button sets*/
147
+ .ui-buttonset { margin-right: 7px; }
148
+ .ui-buttonset .ui-button { margin-left: 0; margin-right: -.3em; }
149
+
150
+ /* workarounds */
151
+ button.ui-button::-moz-focus-inner { border: 0; padding: 0; } /* reset extra padding in Firefox */
152
+ /*
153
+ * jQuery UI Datepicker 1.8.9
154
+ *
155
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
156
+ * Dual licensed under the MIT or GPL Version 2 licenses.
157
+ * http://jquery.org/license
158
+ *
159
+ * http://docs.jquery.com/UI/Datepicker#theming
160
+ */
161
+ .ui-datepicker { width: 17em; padding: .2em .2em 0; display: none; }
162
+ .ui-datepicker .ui-datepicker-header { position:relative; padding:.2em 0; }
163
+ .ui-datepicker .ui-datepicker-prev, .ui-datepicker .ui-datepicker-next { position:absolute; top: 2px; width: 1.8em; height: 1.8em; }
164
+ .ui-datepicker .ui-datepicker-prev-hover, .ui-datepicker .ui-datepicker-next-hover { top: 1px; }
165
+ .ui-datepicker .ui-datepicker-prev { left:2px; }
166
+ .ui-datepicker .ui-datepicker-next { right:2px; }
167
+ .ui-datepicker .ui-datepicker-prev-hover { left:1px; }
168
+ .ui-datepicker .ui-datepicker-next-hover { right:1px; }
169
+ .ui-datepicker .ui-datepicker-prev span, .ui-datepicker .ui-datepicker-next span { display: block; position: absolute; left: 50%; margin-left: -8px; top: 50%; margin-top: -8px; }
170
+ .ui-datepicker .ui-datepicker-title { margin: 0 2.3em; line-height: 1.8em; text-align: center; }
171
+ .ui-datepicker .ui-datepicker-title select { font-size:1em; margin:1px 0; }
172
+ .ui-datepicker select.ui-datepicker-month-year {width: 100%;}
173
+ .ui-datepicker select.ui-datepicker-month,
174
+ .ui-datepicker select.ui-datepicker-year { width: 49%;}
175
+ .ui-datepicker table {width: 100%; font-size: .9em; border-collapse: collapse; margin:0 0 .4em; }
176
+ .ui-datepicker th { padding: .7em .3em; text-align: center; font-weight: bold; border: 0; }
177
+ .ui-datepicker td { border: 0; padding: 1px; }
178
+ .ui-datepicker td span, .ui-datepicker td a { display: block; padding: .2em; text-align: right; text-decoration: none; }
179
+ .ui-datepicker .ui-datepicker-buttonpane { background-image: none; margin: .7em 0 0 0; padding:0 .2em; border-left: 0; border-right: 0; border-bottom: 0; }
180
+ .ui-datepicker .ui-datepicker-buttonpane button { float: right; margin: .5em .2em .4em; cursor: pointer; padding: .2em .6em .3em .6em; width:auto; overflow:visible; }
181
+ .ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current { float:left; }
182
+
183
+ /* with multiple calendars */
184
+ .ui-datepicker.ui-datepicker-multi { width:auto; }
185
+ .ui-datepicker-multi .ui-datepicker-group { float:left; }
186
+ .ui-datepicker-multi .ui-datepicker-group table { width:95%; margin:0 auto .4em; }
187
+ .ui-datepicker-multi-2 .ui-datepicker-group { width:50%; }
188
+ .ui-datepicker-multi-3 .ui-datepicker-group { width:33.3%; }
189
+ .ui-datepicker-multi-4 .ui-datepicker-group { width:25%; }
190
+ .ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header { border-left-width:0; }
191
+ .ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header { border-left-width:0; }
192
+ .ui-datepicker-multi .ui-datepicker-buttonpane { clear:left; }
193
+ .ui-datepicker-row-break { clear:both; width:100%; }
194
+
195
+ /* RTL support */
196
+ .ui-datepicker-rtl { direction: rtl; }
197
+ .ui-datepicker-rtl .ui-datepicker-prev { right: 2px; left: auto; }
198
+ .ui-datepicker-rtl .ui-datepicker-next { left: 2px; right: auto; }
199
+ .ui-datepicker-rtl .ui-datepicker-prev:hover { right: 1px; left: auto; }
200
+ .ui-datepicker-rtl .ui-datepicker-next:hover { left: 1px; right: auto; }
201
+ .ui-datepicker-rtl .ui-datepicker-buttonpane { clear:right; }
202
+ .ui-datepicker-rtl .ui-datepicker-buttonpane button { float: left; }
203
+ .ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current { float:right; }
204
+ .ui-datepicker-rtl .ui-datepicker-group { float:right; }
205
+ .ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header { border-right-width:0; border-left-width:1px; }
206
+ .ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header { border-right-width:0; border-left-width:1px; }
207
+
208
+ /* IE6 IFRAME FIX (taken from datepicker 1.5.3 */
209
+ .ui-datepicker-cover {
210
+ display: none; /*sorry for IE5*/
211
+ display/**/: block; /*sorry for IE5*/
212
+ position: absolute; /*must have*/
213
+ z-index: -1; /*must have*/
214
+ filter: mask(); /*must have*/
215
+ top: -4px; /*must have*/
216
+ left: -4px; /*must have*/
217
+ width: 200px; /*must have*/
218
+ height: 200px; /*must have*/
219
+ }/*
220
+ * jQuery UI Dialog 1.8.9
221
+ *
222
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
223
+ * Dual licensed under the MIT or GPL Version 2 licenses.
224
+ * http://jquery.org/license
225
+ *
226
+ * http://docs.jquery.com/UI/Dialog#theming
227
+ */
228
+ .ui-dialog { position: absolute; padding: .2em; width: 300px; overflow: hidden; }
229
+ .ui-dialog .ui-dialog-titlebar { padding: .4em 1em; position: relative; }
230
+ .ui-dialog .ui-dialog-title { float: left; margin: .1em 16px .1em 0; }
231
+ .ui-dialog .ui-dialog-titlebar-close { position: absolute; right: .3em; top: 50%; width: 19px; margin: -10px 0 0 0; padding: 1px; height: 18px; }
232
+ .ui-dialog .ui-dialog-titlebar-close span { display: block; margin: 1px; }
233
+ .ui-dialog .ui-dialog-titlebar-close:hover, .ui-dialog .ui-dialog-titlebar-close:focus { padding: 0; }
234
+ .ui-dialog .ui-dialog-content { position: relative; border: 0; padding: .5em 1em; background: none; overflow: auto; zoom: 1; }
235
+ .ui-dialog .ui-dialog-buttonpane { text-align: left; border-width: 1px 0 0 0; background-image: none; margin: .5em 0 0 0; padding: .3em 1em .5em .4em; }
236
+ .ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset { float: right; }
237
+ .ui-dialog .ui-dialog-buttonpane button { margin: .5em .4em .5em 0; cursor: pointer; }
238
+ .ui-dialog .ui-resizable-se { width: 14px; height: 14px; right: 3px; bottom: 3px; }
239
+ .ui-draggable .ui-dialog-titlebar { cursor: move; }
240
+ /*
241
+ * jQuery UI Progressbar 1.8.9
242
+ *
243
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
244
+ * Dual licensed under the MIT or GPL Version 2 licenses.
245
+ * http://jquery.org/license
246
+ *
247
+ * http://docs.jquery.com/UI/Progressbar#theming
248
+ */
249
+ .ui-progressbar { height:2em; text-align: left; }
250
+ .ui-progressbar .ui-progressbar-value {margin: -1px; height:100%; }/*
251
+ * jQuery UI Resizable 1.8.9
252
+ *
253
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
254
+ * Dual licensed under the MIT or GPL Version 2 licenses.
255
+ * http://jquery.org/license
256
+ *
257
+ * http://docs.jquery.com/UI/Resizable#theming
258
+ */
259
+ .ui-resizable { position: relative;}
260
+ .ui-resizable-handle { position: absolute;font-size: 0.1px;z-index: 99999; display: block;}
261
+ .ui-resizable-disabled .ui-resizable-handle, .ui-resizable-autohide .ui-resizable-handle { display: none; }
262
+ .ui-resizable-n { cursor: n-resize; height: 7px; width: 100%; top: -5px; left: 0; }
263
+ .ui-resizable-s { cursor: s-resize; height: 7px; width: 100%; bottom: -5px; left: 0; }
264
+ .ui-resizable-e { cursor: e-resize; width: 7px; right: -5px; top: 0; height: 100%; }
265
+ .ui-resizable-w { cursor: w-resize; width: 7px; left: -5px; top: 0; height: 100%; }
266
+ .ui-resizable-se { cursor: se-resize; width: 12px; height: 12px; right: 1px; bottom: 1px; }
267
+ .ui-resizable-sw { cursor: sw-resize; width: 9px; height: 9px; left: -5px; bottom: -5px; }
268
+ .ui-resizable-nw { cursor: nw-resize; width: 9px; height: 9px; left: -5px; top: -5px; }
269
+ .ui-resizable-ne { cursor: ne-resize; width: 9px; height: 9px; right: -5px; top: -5px;}/*
270
+ * jQuery UI Selectable 1.8.9
271
+ *
272
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
273
+ * Dual licensed under the MIT or GPL Version 2 licenses.
274
+ * http://jquery.org/license
275
+ *
276
+ * http://docs.jquery.com/UI/Selectable#theming
277
+ */
278
+ .ui-selectable-helper { position: absolute; z-index: 100; border:1px dotted black; }
279
+ /*
280
+ * jQuery UI Slider 1.8.9
281
+ *
282
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
283
+ * Dual licensed under the MIT or GPL Version 2 licenses.
284
+ * http://jquery.org/license
285
+ *
286
+ * http://docs.jquery.com/UI/Slider#theming
287
+ */
288
+ .ui-slider { position: relative; text-align: left; }
289
+ .ui-slider .ui-slider-handle { position: absolute; z-index: 2; width: 1.2em; height: 1.2em; cursor: default; }
290
+ .ui-slider .ui-slider-range { position: absolute; z-index: 1; font-size: .7em; display: block; border: 0; background-position: 0 0; }
291
+
292
+ .ui-slider-horizontal { height: .8em; }
293
+ .ui-slider-horizontal .ui-slider-handle { top: -.3em; margin-left: -.6em; }
294
+ .ui-slider-horizontal .ui-slider-range { top: 0; height: 100%; }
295
+ .ui-slider-horizontal .ui-slider-range-min { left: 0; }
296
+ .ui-slider-horizontal .ui-slider-range-max { right: 0; }
297
+
298
+ .ui-slider-vertical { width: .8em; height: 100px; }
299
+ .ui-slider-vertical .ui-slider-handle { left: -.3em; margin-left: 0; margin-bottom: -.6em; }
300
+ .ui-slider-vertical .ui-slider-range { left: 0; width: 100%; }
301
+ .ui-slider-vertical .ui-slider-range-min { bottom: 0; }
302
+ .ui-slider-vertical .ui-slider-range-max { top: 0; }/*
303
+ * jQuery UI Tabs 1.8.9
304
+ *
305
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
306
+ * Dual licensed under the MIT or GPL Version 2 licenses.
307
+ * http://jquery.org/license
308
+ *
309
+ * http://docs.jquery.com/UI/Tabs#theming
310
+ */
311
+ .ui-tabs { position: relative; padding: .2em; zoom: 1; } /* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */
312
+ .ui-tabs .ui-tabs-nav { margin: 0; padding: .2em .2em 0; }
313
+ .ui-tabs .ui-tabs-nav li { list-style: none; float: left; position: relative; top: 1px; margin: 0 .2em 1px 0; border-bottom: 0 !important; padding: 0; white-space: nowrap; }
314
+ .ui-tabs .ui-tabs-nav li a { float: left; padding: .5em 1em; text-decoration: none; }
315
+ .ui-tabs .ui-tabs-nav li.ui-tabs-selected { margin-bottom: 0; padding-bottom: 1px; }
316
+ .ui-tabs .ui-tabs-nav li.ui-tabs-selected a, .ui-tabs .ui-tabs-nav li.ui-state-disabled a, .ui-tabs .ui-tabs-nav li.ui-state-processing a { cursor: text; }
317
+ .ui-tabs .ui-tabs-nav li a, .ui-tabs.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-selected a { cursor: pointer; } /* first selector in group seems obsolete, but required to overcome bug in Opera applying cursor: text overall if defined elsewhere... */
318
+ .ui-tabs .ui-tabs-panel { display: block; border-width: 0; padding: 1em 1.4em; background: none; }
319
+ .ui-tabs .ui-tabs-hide { display: none !important; }
320
+ /*
321
+ * jQuery UI CSS Framework 1.8.9
322
+ *
323
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
324
+ * Dual licensed under the MIT or GPL Version 2 licenses.
325
+ * http://jquery.org/license
326
+ *
327
+ * http://docs.jquery.com/UI/Theming/API
328
+ *
329
+ * To view and modify this theme, visit http://jqueryui.com/themeroller/
330
+ */
331
+
332
+
333
+ /* Component containers
334
+ ----------------------------------*/
335
+ .ui-widget { font-family: Verdana,Arial,sans-serif/*{ffDefault}*/; font-size: 1.1em/*{fsDefault}*/; }
336
+ .ui-widget .ui-widget { font-size: 1em; }
337
+ .ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button { font-family: Verdana,Arial,sans-serif/*{ffDefault}*/; font-size: 1em; }
338
+ .ui-widget-content { border: 1px solid #aaaaaa/*{borderColorContent}*/; background: #ffffff/*{bgColorContent}*/ url(../images/ui-bg_flat_75_ffffff_40x100.png)/*{bgImgUrlContent}*/ 50%/*{bgContentXPos}*/ 50%/*{bgContentYPos}*/ repeat-x/*{bgContentRepeat}*/; color: #222222/*{fcContent}*/; }
339
+ .ui-widget-content a { color: #222222/*{fcContent}*/; }
340
+ .ui-widget-header { border: 1px solid #aaaaaa/*{borderColorHeader}*/; background: #cccccc/*{bgColorHeader}*/ url(../images/ui-bg_highlight-soft_75_cccccc_1x100.png)/*{bgImgUrlHeader}*/ 50%/*{bgHeaderXPos}*/ 50%/*{bgHeaderYPos}*/ repeat-x/*{bgHeaderRepeat}*/; color: #222222/*{fcHeader}*/; font-weight: bold; }
341
+ .ui-widget-header a { color: #222222/*{fcHeader}*/; }
342
+
343
+ /* Interaction states
344
+ ----------------------------------*/
345
+ .ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default { border: 1px solid #d3d3d3/*{borderColorDefault}*/; background: #e6e6e6/*{bgColorDefault}*/ url(../images/ui-bg_glass_75_e6e6e6_1x400.png)/*{bgImgUrlDefault}*/ 50%/*{bgDefaultXPos}*/ 50%/*{bgDefaultYPos}*/ repeat-x/*{bgDefaultRepeat}*/; font-weight: normal/*{fwDefault}*/; color: #555555/*{fcDefault}*/; }
346
+ .ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: #555555/*{fcDefault}*/; text-decoration: none; }
347
+ .ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus { border: 1px solid #999999/*{borderColorHover}*/; background: #dadada/*{bgColorHover}*/ url(../images/ui-bg_glass_75_dadada_1x400.png)/*{bgImgUrlHover}*/ 50%/*{bgHoverXPos}*/ 50%/*{bgHoverYPos}*/ repeat-x/*{bgHoverRepeat}*/; font-weight: normal/*{fwDefault}*/; color: #212121/*{fcHover}*/; }
348
+ .ui-state-hover a, .ui-state-hover a:hover { color: #212121/*{fcHover}*/; text-decoration: none; }
349
+ .ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active { border: 1px solid #aaaaaa/*{borderColorActive}*/; background: #ffffff/*{bgColorActive}*/ url(../images/ui-bg_glass_65_ffffff_1x400.png)/*{bgImgUrlActive}*/ 50%/*{bgActiveXPos}*/ 50%/*{bgActiveYPos}*/ repeat-x/*{bgActiveRepeat}*/; font-weight: normal/*{fwDefault}*/; color: #212121/*{fcActive}*/; }
350
+ .ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited { color: #212121/*{fcActive}*/; text-decoration: none; }
351
+ .ui-widget :active { outline: none; }
352
+
353
+ /* Interaction Cues
354
+ ----------------------------------*/
355
+ .ui-state-highlight, .ui-widget-content .ui-state-highlight, .ui-widget-header .ui-state-highlight {border: 1px solid #fcefa1/*{borderColorHighlight}*/; background: #fbf9ee/*{bgColorHighlight}*/ url(../images/ui-bg_glass_55_fbf9ee_1x400.png)/*{bgImgUrlHighlight}*/ 50%/*{bgHighlightXPos}*/ 50%/*{bgHighlightYPos}*/ repeat-x/*{bgHighlightRepeat}*/; color: #363636/*{fcHighlight}*/; }
356
+ .ui-state-highlight a, .ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a { color: #363636/*{fcHighlight}*/; }
357
+ .ui-state-error, .ui-widget-content .ui-state-error, .ui-widget-header .ui-state-error {border: 1px solid #cd0a0a/*{borderColorError}*/; background: #fef1ec/*{bgColorError}*/ url(../images/ui-bg_glass_95_fef1ec_1x400.png)/*{bgImgUrlError}*/ 50%/*{bgErrorXPos}*/ 50%/*{bgErrorYPos}*/ repeat-x/*{bgErrorRepeat}*/; color: #cd0a0a/*{fcError}*/; }
358
+ .ui-state-error a, .ui-widget-content .ui-state-error a, .ui-widget-header .ui-state-error a { color: #cd0a0a/*{fcError}*/; }
359
+ .ui-state-error-text, .ui-widget-content .ui-state-error-text, .ui-widget-header .ui-state-error-text { color: #cd0a0a/*{fcError}*/; }
360
+ .ui-priority-primary, .ui-widget-content .ui-priority-primary, .ui-widget-header .ui-priority-primary { font-weight: bold; }
361
+ .ui-priority-secondary, .ui-widget-content .ui-priority-secondary, .ui-widget-header .ui-priority-secondary { opacity: .7; filter:Alpha(Opacity=70); font-weight: normal; }
362
+ .ui-state-disabled, .ui-widget-content .ui-state-disabled, .ui-widget-header .ui-state-disabled { opacity: .35; filter:Alpha(Opacity=35); background-image: none; }
363
+
364
+ /* Icons
365
+ ----------------------------------*/
366
+
367
+ /* states and images */
368
+ .ui-icon { width: 16px; height: 16px; background-image: url(../images/ui-icons_222222_256x240.png)/*{iconsContent}*/; }
369
+ .ui-widget-content .ui-icon {background-image: url(../images/ui-icons_222222_256x240.png)/*{iconsContent}*/; }
370
+ .ui-widget-header .ui-icon {background-image: url(../images/ui-icons_222222_256x240.png)/*{iconsHeader}*/; }
371
+ .ui-state-default .ui-icon { background-image: url(../images/ui-icons_888888_256x240.png)/*{iconsDefault}*/; }
372
+ .ui-state-hover .ui-icon, .ui-state-focus .ui-icon {background-image: url(../images/ui-icons_454545_256x240.png)/*{iconsHover}*/; }
373
+ .ui-state-active .ui-icon {background-image: url(../images/ui-icons_454545_256x240.png)/*{iconsActive}*/; }
374
+ .ui-state-highlight .ui-icon {background-image: url(../images/ui-icons_2e83ff_256x240.png)/*{iconsHighlight}*/; }
375
+ .ui-state-error .ui-icon, .ui-state-error-text .ui-icon {background-image: url(../images/ui-icons_cd0a0a_256x240.png)/*{iconsError}*/; }
376
+
377
+ /* positioning */
378
+ .ui-icon-carat-1-n { background-position: 0 0; }
379
+ .ui-icon-carat-1-ne { background-position: -16px 0; }
380
+ .ui-icon-carat-1-e { background-position: -32px 0; }
381
+ .ui-icon-carat-1-se { background-position: -48px 0; }
382
+ .ui-icon-carat-1-s { background-position: -64px 0; }
383
+ .ui-icon-carat-1-sw { background-position: -80px 0; }
384
+ .ui-icon-carat-1-w { background-position: -96px 0; }
385
+ .ui-icon-carat-1-nw { background-position: -112px 0; }
386
+ .ui-icon-carat-2-n-s { background-position: -128px 0; }
387
+ .ui-icon-carat-2-e-w { background-position: -144px 0; }
388
+ .ui-icon-triangle-1-n { background-position: 0 -16px; }
389
+ .ui-icon-triangle-1-ne { background-position: -16px -16px; }
390
+ .ui-icon-triangle-1-e { background-position: -32px -16px; }
391
+ .ui-icon-triangle-1-se { background-position: -48px -16px; }
392
+ .ui-icon-triangle-1-s { background-position: -64px -16px; }
393
+ .ui-icon-triangle-1-sw { background-position: -80px -16px; }
394
+ .ui-icon-triangle-1-w { background-position: -96px -16px; }
395
+ .ui-icon-triangle-1-nw { background-position: -112px -16px; }
396
+ .ui-icon-triangle-2-n-s { background-position: -128px -16px; }
397
+ .ui-icon-triangle-2-e-w { background-position: -144px -16px; }
398
+ .ui-icon-arrow-1-n { background-position: 0 -32px; }
399
+ .ui-icon-arrow-1-ne { background-position: -16px -32px; }
400
+ .ui-icon-arrow-1-e { background-position: -32px -32px; }
401
+ .ui-icon-arrow-1-se { background-position: -48px -32px; }
402
+ .ui-icon-arrow-1-s { background-position: -64px -32px; }
403
+ .ui-icon-arrow-1-sw { background-position: -80px -32px; }
404
+ .ui-icon-arrow-1-w { background-position: -96px -32px; }
405
+ .ui-icon-arrow-1-nw { background-position: -112px -32px; }
406
+ .ui-icon-arrow-2-n-s { background-position: -128px -32px; }
407
+ .ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }
408
+ .ui-icon-arrow-2-e-w { background-position: -160px -32px; }
409
+ .ui-icon-arrow-2-se-nw { background-position: -176px -32px; }
410
+ .ui-icon-arrowstop-1-n { background-position: -192px -32px; }
411
+ .ui-icon-arrowstop-1-e { background-position: -208px -32px; }
412
+ .ui-icon-arrowstop-1-s { background-position: -224px -32px; }
413
+ .ui-icon-arrowstop-1-w { background-position: -240px -32px; }
414
+ .ui-icon-arrowthick-1-n { background-position: 0 -48px; }
415
+ .ui-icon-arrowthick-1-ne { background-position: -16px -48px; }
416
+ .ui-icon-arrowthick-1-e { background-position: -32px -48px; }
417
+ .ui-icon-arrowthick-1-se { background-position: -48px -48px; }
418
+ .ui-icon-arrowthick-1-s { background-position: -64px -48px; }
419
+ .ui-icon-arrowthick-1-sw { background-position: -80px -48px; }
420
+ .ui-icon-arrowthick-1-w { background-position: -96px -48px; }
421
+ .ui-icon-arrowthick-1-nw { background-position: -112px -48px; }
422
+ .ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }
423
+ .ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }
424
+ .ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }
425
+ .ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }
426
+ .ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }
427
+ .ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }
428
+ .ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }
429
+ .ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }
430
+ .ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }
431
+ .ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }
432
+ .ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }
433
+ .ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }
434
+ .ui-icon-arrowreturn-1-w { background-position: -64px -64px; }
435
+ .ui-icon-arrowreturn-1-n { background-position: -80px -64px; }
436
+ .ui-icon-arrowreturn-1-e { background-position: -96px -64px; }
437
+ .ui-icon-arrowreturn-1-s { background-position: -112px -64px; }
438
+ .ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }
439
+ .ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }
440
+ .ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }
441
+ .ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }
442
+ .ui-icon-arrow-4 { background-position: 0 -80px; }
443
+ .ui-icon-arrow-4-diag { background-position: -16px -80px; }
444
+ .ui-icon-extlink { background-position: -32px -80px; }
445
+ .ui-icon-newwin { background-position: -48px -80px; }
446
+ .ui-icon-refresh { background-position: -64px -80px; }
447
+ .ui-icon-shuffle { background-position: -80px -80px; }
448
+ .ui-icon-transfer-e-w { background-position: -96px -80px; }
449
+ .ui-icon-transferthick-e-w { background-position: -112px -80px; }
450
+ .ui-icon-folder-collapsed { background-position: 0 -96px; }
451
+ .ui-icon-folder-open { background-position: -16px -96px; }
452
+ .ui-icon-document { background-position: -32px -96px; }
453
+ .ui-icon-document-b { background-position: -48px -96px; }
454
+ .ui-icon-note { background-position: -64px -96px; }
455
+ .ui-icon-mail-closed { background-position: -80px -96px; }
456
+ .ui-icon-mail-open { background-position: -96px -96px; }
457
+ .ui-icon-suitcase { background-position: -112px -96px; }
458
+ .ui-icon-comment { background-position: -128px -96px; }
459
+ .ui-icon-person { background-position: -144px -96px; }
460
+ .ui-icon-print { background-position: -160px -96px; }
461
+ .ui-icon-trash { background-position: -176px -96px; }
462
+ .ui-icon-locked { background-position: -192px -96px; }
463
+ .ui-icon-unlocked { background-position: -208px -96px; }
464
+ .ui-icon-bookmark { background-position: -224px -96px; }
465
+ .ui-icon-tag { background-position: -240px -96px; }
466
+ .ui-icon-home { background-position: 0 -112px; }
467
+ .ui-icon-flag { background-position: -16px -112px; }
468
+ .ui-icon-calendar { background-position: -32px -112px; }
469
+ .ui-icon-cart { background-position: -48px -112px; }
470
+ .ui-icon-pencil { background-position: -64px -112px; }
471
+ .ui-icon-clock { background-position: -80px -112px; }
472
+ .ui-icon-disk { background-position: -96px -112px; }
473
+ .ui-icon-calculator { background-position: -112px -112px; }
474
+ .ui-icon-zoomin { background-position: -128px -112px; }
475
+ .ui-icon-zoomout { background-position: -144px -112px; }
476
+ .ui-icon-search { background-position: -160px -112px; }
477
+ .ui-icon-wrench { background-position: -176px -112px; }
478
+ .ui-icon-gear { background-position: -192px -112px; }
479
+ .ui-icon-heart { background-position: -208px -112px; }
480
+ .ui-icon-star { background-position: -224px -112px; }
481
+ .ui-icon-link { background-position: -240px -112px; }
482
+ .ui-icon-cancel { background-position: 0 -128px; }
483
+ .ui-icon-plus { background-position: -16px -128px; }
484
+ .ui-icon-plusthick { background-position: -32px -128px; }
485
+ .ui-icon-minus { background-position: -48px -128px; }
486
+ .ui-icon-minusthick { background-position: -64px -128px; }
487
+ .ui-icon-close { background-position: -80px -128px; }
488
+ .ui-icon-closethick { background-position: -96px -128px; }
489
+ .ui-icon-key { background-position: -112px -128px; }
490
+ .ui-icon-lightbulb { background-position: -128px -128px; }
491
+ .ui-icon-scissors { background-position: -144px -128px; }
492
+ .ui-icon-clipboard { background-position: -160px -128px; }
493
+ .ui-icon-copy { background-position: -176px -128px; }
494
+ .ui-icon-contact { background-position: -192px -128px; }
495
+ .ui-icon-image { background-position: -208px -128px; }
496
+ .ui-icon-video { background-position: -224px -128px; }
497
+ .ui-icon-script { background-position: -240px -128px; }
498
+ .ui-icon-alert { background-position: 0 -144px; }
499
+ .ui-icon-info { background-position: -16px -144px; }
500
+ .ui-icon-notice { background-position: -32px -144px; }
501
+ .ui-icon-help { background-position: -48px -144px; }
502
+ .ui-icon-check { background-position: -64px -144px; }
503
+ .ui-icon-bullet { background-position: -80px -144px; }
504
+ .ui-icon-radio-off { background-position: -96px -144px; }
505
+ .ui-icon-radio-on { background-position: -112px -144px; }
506
+ .ui-icon-pin-w { background-position: -128px -144px; }
507
+ .ui-icon-pin-s { background-position: -144px -144px; }
508
+ .ui-icon-play { background-position: 0 -160px; }
509
+ .ui-icon-pause { background-position: -16px -160px; }
510
+ .ui-icon-seek-next { background-position: -32px -160px; }
511
+ .ui-icon-seek-prev { background-position: -48px -160px; }
512
+ .ui-icon-seek-end { background-position: -64px -160px; }
513
+ .ui-icon-seek-start { background-position: -80px -160px; }
514
+ /* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */
515
+ .ui-icon-seek-first { background-position: -80px -160px; }
516
+ .ui-icon-stop { background-position: -96px -160px; }
517
+ .ui-icon-eject { background-position: -112px -160px; }
518
+ .ui-icon-volume-off { background-position: -128px -160px; }
519
+ .ui-icon-volume-on { background-position: -144px -160px; }
520
+ .ui-icon-power { background-position: 0 -176px; }
521
+ .ui-icon-signal-diag { background-position: -16px -176px; }
522
+ .ui-icon-signal { background-position: -32px -176px; }
523
+ .ui-icon-battery-0 { background-position: -48px -176px; }
524
+ .ui-icon-battery-1 { background-position: -64px -176px; }
525
+ .ui-icon-battery-2 { background-position: -80px -176px; }
526
+ .ui-icon-battery-3 { background-position: -96px -176px; }
527
+ .ui-icon-circle-plus { background-position: 0 -192px; }
528
+ .ui-icon-circle-minus { background-position: -16px -192px; }
529
+ .ui-icon-circle-close { background-position: -32px -192px; }
530
+ .ui-icon-circle-triangle-e { background-position: -48px -192px; }
531
+ .ui-icon-circle-triangle-s { background-position: -64px -192px; }
532
+ .ui-icon-circle-triangle-w { background-position: -80px -192px; }
533
+ .ui-icon-circle-triangle-n { background-position: -96px -192px; }
534
+ .ui-icon-circle-arrow-e { background-position: -112px -192px; }
535
+ .ui-icon-circle-arrow-s { background-position: -128px -192px; }
536
+ .ui-icon-circle-arrow-w { background-position: -144px -192px; }
537
+ .ui-icon-circle-arrow-n { background-position: -160px -192px; }
538
+ .ui-icon-circle-zoomin { background-position: -176px -192px; }
539
+ .ui-icon-circle-zoomout { background-position: -192px -192px; }
540
+ .ui-icon-circle-check { background-position: -208px -192px; }
541
+ .ui-icon-circlesmall-plus { background-position: 0 -208px; }
542
+ .ui-icon-circlesmall-minus { background-position: -16px -208px; }
543
+ .ui-icon-circlesmall-close { background-position: -32px -208px; }
544
+ .ui-icon-squaresmall-plus { background-position: -48px -208px; }
545
+ .ui-icon-squaresmall-minus { background-position: -64px -208px; }
546
+ .ui-icon-squaresmall-close { background-position: -80px -208px; }
547
+ .ui-icon-grip-dotted-vertical { background-position: 0 -224px; }
548
+ .ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }
549
+ .ui-icon-grip-solid-vertical { background-position: -32px -224px; }
550
+ .ui-icon-grip-solid-horizontal { background-position: -48px -224px; }
551
+ .ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }
552
+ .ui-icon-grip-diagonal-se { background-position: -80px -224px; }
553
+
554
+
555
+ /* Misc visuals
556
+ ----------------------------------*/
557
+
558
+ /* Corner radius */
559
+ .ui-corner-tl { -moz-border-radius-topleft: 4px/*{cornerRadius}*/; -webkit-border-top-left-radius: 4px/*{cornerRadius}*/; border-top-left-radius: 4px/*{cornerRadius}*/; }
560
+ .ui-corner-tr { -moz-border-radius-topright: 4px/*{cornerRadius}*/; -webkit-border-top-right-radius: 4px/*{cornerRadius}*/; border-top-right-radius: 4px/*{cornerRadius}*/; }
561
+ .ui-corner-bl { -moz-border-radius-bottomleft: 4px/*{cornerRadius}*/; -webkit-border-bottom-left-radius: 4px/*{cornerRadius}*/; border-bottom-left-radius: 4px/*{cornerRadius}*/; }
562
+ .ui-corner-br { -moz-border-radius-bottomright: 4px/*{cornerRadius}*/; -webkit-border-bottom-right-radius: 4px/*{cornerRadius}*/; border-bottom-right-radius: 4px/*{cornerRadius}*/; }
563
+ .ui-corner-top { -moz-border-radius-topleft: 4px/*{cornerRadius}*/; -webkit-border-top-left-radius: 4px/*{cornerRadius}*/; border-top-left-radius: 4px/*{cornerRadius}*/; -moz-border-radius-topright: 4px/*{cornerRadius}*/; -webkit-border-top-right-radius: 4px/*{cornerRadius}*/; border-top-right-radius: 4px/*{cornerRadius}*/; }
564
+ .ui-corner-bottom { -moz-border-radius-bottomleft: 4px/*{cornerRadius}*/; -webkit-border-bottom-left-radius: 4px/*{cornerRadius}*/; border-bottom-left-radius: 4px/*{cornerRadius}*/; -moz-border-radius-bottomright: 4px/*{cornerRadius}*/; -webkit-border-bottom-right-radius: 4px/*{cornerRadius}*/; border-bottom-right-radius: 4px/*{cornerRadius}*/; }
565
+ .ui-corner-right { -moz-border-radius-topright: 4px/*{cornerRadius}*/; -webkit-border-top-right-radius: 4px/*{cornerRadius}*/; border-top-right-radius: 4px/*{cornerRadius}*/; -moz-border-radius-bottomright: 4px/*{cornerRadius}*/; -webkit-border-bottom-right-radius: 4px/*{cornerRadius}*/; border-bottom-right-radius: 4px/*{cornerRadius}*/; }
566
+ .ui-corner-left { -moz-border-radius-topleft: 4px/*{cornerRadius}*/; -webkit-border-top-left-radius: 4px/*{cornerRadius}*/; border-top-left-radius: 4px/*{cornerRadius}*/; -moz-border-radius-bottomleft: 4px/*{cornerRadius}*/; -webkit-border-bottom-left-radius: 4px/*{cornerRadius}*/; border-bottom-left-radius: 4px/*{cornerRadius}*/; }
567
+ .ui-corner-all { -moz-border-radius: 4px/*{cornerRadius}*/; -webkit-border-radius: 4px/*{cornerRadius}*/; border-radius: 4px/*{cornerRadius}*/; }
568
+
569
+ /* Overlays */
570
+ .ui-widget-overlay { background: #aaaaaa/*{bgColorOverlay}*/ url(../images/ui-bg_flat_0_aaaaaa_40x100.png)/*{bgImgUrlOverlay}*/ 50%/*{bgOverlayXPos}*/ 50%/*{bgOverlayYPos}*/ repeat-x/*{bgOverlayRepeat}*/; opacity: .3;filter:Alpha(Opacity=30)/*{opacityOverlay}*/; }
571
  .ui-widget-shadow { margin: -8px/*{offsetTopShadow}*/ 0 0 -8px/*{offsetLeftShadow}*/; padding: 8px/*{thicknessShadow}*/; background: #aaaaaa/*{bgColorShadow}*/ url(../images/ui-bg_flat_0_aaaaaa_40x100.png)/*{bgImgUrlShadow}*/ 50%/*{bgShadowXPos}*/ 50%/*{bgShadowYPos}*/ repeat-x/*{bgShadowRepeat}*/; opacity: .3;filter:Alpha(Opacity=30)/*{opacityShadow}*/; -moz-border-radius: 8px/*{cornerRadiusShadow}*/; -webkit-border-radius: 8px/*{cornerRadiusShadow}*/; border-radius: 8px/*{cornerRadiusShadow}*/; }
custom-contact-forms-admin.php CHANGED
@@ -1,2451 +1,2508 @@
1
- <?php
2
- /*
3
- Custom Contact Forms Plugin
4
- By Taylor Lovett - http://www.taylorlovett.com
5
- Plugin URL: http://www.taylorlovett.com/wordpress-plugins
6
- */
7
- if (!class_exists('CustomContactFormsAdmin')) {
8
- class CustomContactFormsAdmin extends CustomContactForms {
9
- var $action_complete = '';
10
-
11
- function adminInit() {
12
- $this->downloadExportFile();
13
- $this->runImport();
14
- }
15
-
16
- function insertUsagePopover() {
17
- ccf_utils::load_module('usage_popover/custom-contact-forms-usage-popover.php');
18
- }
19
-
20
- function insertQuickStartPopover() {
21
- ccf_utils::load_module('usage_popover/custom-contact-forms-quick-start-popover.php');
22
- }
23
-
24
- function isPluginAdminPage() {
25
- $pages = array('custom-contact-forms', 'ccf-settings', 'ccf-saved-form-submissions');
26
- return (in_array($GLOBALS['ccf_current_page'], $pages));
27
- }
28
-
29
- function appendToActionLinks($action_links, $plugin_file) {
30
- static $link_added = false;
31
- if (!$link_added && basename($plugin_file) == 'custom-contact-forms.php') {
32
- $new_link = '<a style="font-weight:bold;" href="admin.php?page=custom-contact-forms" title="' . __('Manage Custom Contact Forms', 'custom-contact-forms') . '">' . __('Settings', 'custom-contact-forms') . '</a>';
33
- array_unshift($action_links, $new_link);
34
- $link_added = true;
35
- }
36
- return $action_links;
37
- }
38
-
39
- function downloadExportFile() {
40
- if ($_POST['ccf_export']) {
41
- //chmod('modules/export/', 0777);
42
- ccf_utils::load_module('export/custom-contact-forms-export.php');
43
- $transit = new CustomContactFormsExport(parent::getAdminOptionsName());
44
- $transit->exportAll();
45
- $file = $transit->exportToFile();
46
- ccf_utils::redirect(plugins_url() . '/custom-contact-forms/download.php?location=export/' . $file);
47
- }
48
- }
49
-
50
- function runImport() {
51
- if ($_POST['ccf_clear_import'] || $_POST['ccf_merge_import']) {
52
- //chmod('modules/export/', 0777);
53
- ccf_utils::load_module('export/custom-contact-forms-export.php');
54
- $transit = new CustomContactFormsExport(parent::getAdminOptionsName());
55
- $settings['import_general_settings'] = ($_POST['ccf_import_overwrite_settings'] == 1) ? true : false;
56
- $settings['import_forms'] = ($_POST['ccf_import_forms'] == 1) ? true : false;
57
- $settings['import_fields'] = ($_POST['ccf_import_fields'] == 1) ? true : false;
58
- $settings['import_field_options'] = ($_POST['ccf_import_field_options'] == 1) ? true : false;
59
- $settings['import_styles'] = ($_POST['ccf_import_styles'] == 1) ? true : false;
60
- $settings['import_saved_submissions'] = ($_POST['ccf_import_saved_submissions'] == 1) ? true : false;
61
- $settings['mode'] = ($_POST['ccf_clear_import']) ? 'clear_import' : 'merge_import';
62
- $transit->importFromFile($_FILES['import_file'], $settings);
63
- ccf_utils::redirect('options-general.php?page=custom-contact-forms');
64
- }
65
- }
66
-
67
- function contactAuthor($name, $email, $website, $message, $type, $host, $ccf_version, $wp_version) {
68
- if (empty($message)) return false;
69
- if (!class_exists('PHPMailer'))
70
- require_once(ABSPATH . "wp-includes/class-phpmailer.php");
71
- $mail = new PHPMailer();
72
- $body = "Name: $name<br />\n";
73
- $body .= "Email: $email<br />\n";
74
- $body .= "Website: $website<br />\n";
75
- $body .= "CCF Version: $ccf_version<br />\n";
76
- $body .= "WP Version: $wp_version<br />\n";
77
- $body .= "Host: $host<br />\n";
78
- $body .= "Message: $message<br />\n";
79
- $body .= "Message Type: $type<br />\n";
80
- $body .= 'Sender IP: ' . $_SERVER['REMOTE_ADDR'] . "<br />\n";
81
- $admin_options = parent::getAdminOptions();
82
- if ($admin_options['mail_function'] == 'smtp') {
83
- $mail->IsSMTP();
84
- $mail->Host = $admin_options['smtp_host'];
85
- if ($admin_options['smtp_authentication'] == 1) {
86
- $mail->SMTPAuth = true;
87
- $mail->Username = $admin_options['smtp_username'];
88
- $mail->Password = $admin_options['smtp_password'];
89
- $mail->Port = $admin_options['smtp_port'];
90
- } else
91
- $mail->SMTPAuth = false;
92
- }
93
- $mail->From = $email;
94
- $mail->FromName = 'Custom Contact Forms';
95
- $mail->AddAddress('admin@taylorlovett.com');
96
- $mail->Subject = "CCF Message: $type";
97
- $mail->CharSet = "utf-8";
98
- $mail->AltBody = "To view the message, please use an HTML compatible email viewer!"; // optional, comment out and test
99
- $mail->MsgHTML($body);
100
- $mail->Send();
101
- return true;
102
- }
103
-
104
- function displayPluginNewsFeed() {
105
- include_once(ABSPATH . WPINC . '/feed.php');
106
- $rss = @fetch_feed('http://www.taylorlovett.com/category/custom-contact-forms/feed');
107
- if (!is_wp_error($rss) ) {
108
- $maxitems = $rss->get_item_quantity(5);
109
- $rss_items = $rss->get_items(0, 1);
110
- $rss_items2 = $rss->get_items(1, $maxitems);
111
- }
112
- ?>
113
- <ul>
114
- <?php if ($maxitems == 0) echo '<li>' . __('Nothing to show.', 'custom-contact-forms') . '</li>';
115
- else
116
- foreach ( $rss_items as $item ) : ?>
117
- <li class="first">
118
- <a href='<?php echo $item->get_permalink(); ?>'
119
- title='<?php echo __('Posted', 'custom-contact-forms'). ' '.$item->get_date('j F Y | g:i a'); ?>'>
120
- <?php echo $item->get_title(); ?></a><br />
121
- <?php echo $item->get_content(); ?>
122
- </li>
123
- <?php endforeach; ?>
124
- <?php if ($maxitems == 0) echo '';
125
- else
126
- foreach ( $rss_items2 as $item ) : ?>
127
- <li>
128
- <a href='<?php echo $item->get_permalink(); ?>'
129
- title='<?php echo __('Posted', 'custom-contact-forms') . ' '.$item->get_date('j F Y | g:i a'); ?>'>
130
- <?php echo $item->get_title(); ?></a><br />
131
- </li>
132
- <?php endforeach; ?>
133
- </ul>
134
- <?php
135
- }
136
-
137
-
138
- function getFieldsForm() {
139
- $fields = parent::selectAllFields();
140
- $out = '';
141
- foreach ($fields as $field) {
142
- $out .= '<option value="'.$field->id.'">'.$field->field_slug.'</option>' . "\n";
143
- }
144
- return $out;
145
- }
146
-
147
- function handleAJAX() {
148
-
149
- if (!wp_verify_nonce($_POST['nonce'], 'ccf_nonce')) exit(__('Invalid request.', 'custom-contact-forms'));
150
- $output = $this->handleAdminPostRequests();
151
- $response = json_encode( $output );
152
- header("Content-Type: application/json");
153
- exit($response);
154
- return true;
155
- }
156
-
157
-
158
- function getFieldOptionsForm() {
159
- $options = parent::selectAllFieldOptions();
160
- $out = '';
161
- foreach ($options as $option) {
162
- $out .= '<option value="'.$option->id.'">'.$option->option_slug.'</option>' . "\n";
163
- }
164
- return $out;
165
- }
166
-
167
- function insertBackEndStyles() {
168
- wp_register_style('ccf-standards', plugins_url() . '/custom-contact-forms/css/custom-contact-forms-standards.css');
169
- wp_register_style('ccf-jquery-ui', plugins_url() . '/custom-contact-forms/css/jquery-ui.css');
170
- wp_register_style('ccf-admin', plugins_url() . '/custom-contact-forms/css/custom-contact-forms-admin.css');
171
- wp_register_style('ccf-colorpicker', plugins_url() . '/custom-contact-forms/css/colorpicker.css');
172
- wp_enqueue_style('ccf-jquery-ui');
173
- wp_enqueue_style('ccf-standards');
174
- wp_enqueue_style('ccf-admin');
175
- wp_enqueue_style('ccf-colorpicker');
176
- }
177
-
178
- function insertAdminScripts() {
179
- $js_version = '2.0.0';
180
- $admin_options = parent::getAdminOptions();
181
- $js_lang = array(
182
- 'attaching' => __('Attaching', 'custom-contact-forms'),
183
- 'detaching' => __('Detaching', 'custom-contact-forms'),
184
- 'detach_button' => __('Detach', 'custom-contact-forms'),
185
- 'attach_button' => __('Attach', 'custom-contact-forms'),
186
- 'saving' => __('Saving', 'custom-contact-forms'),
187
- 'more_options' => __('More Options', 'custom-contact-forms'),
188
- 'expand' => __('Expand', 'custom-contact-forms'),
189
- 'click_to_confirm' => __('Click to Confirm', 'custom-contact-forms'),
190
- 'delete_confirm' => __('Are you sure you want to delete this', 'custom-contact-forms'),
191
- 'error' => __('An error has occured. Please try again later.', 'custom-contact-forms'),
192
- 'nothing_to_show' => __('Nothing to show.', 'custom-contact-forms'),
193
- 'nothing_attached' => __('Nothing Attached!', 'custom-contact-forms'),
194
- 'nonce' => wp_create_nonce('ccf_nonce')
195
- );
196
- $js_ajax = array('plugin_dir' => plugins_url() . '/custom-contact-forms',
197
- 'url' => admin_url('admin-ajax.php'),
198
- 'nonce' => wp_create_nonce('ccf-ajax-nonce'));
199
- wp_enqueue_script('jquery');
200
- wp_deregister_script('jquery-form');
201
- wp_register_script('jquery-form', plugins_url() . '/custom-contact-forms/js/jquery.form.js', $js_version);
202
- wp_enqueue_script('jquery-ui-core');
203
- wp_enqueue_script('jquery-ui-tabs');
204
- wp_enqueue_script('jquery-ui-dialog');
205
-
206
- wp_enqueue_script('jquery-tools', plugins_url() . '/custom-contact-forms/js/jquery.tools.min.js');
207
- wp_enqueue_script('jquery-ui-widget', plugins_url() . '/custom-contact-forms/js/jquery.ui.widget.js');
208
- //wp_enqueue_script('jquery-ui-dialog', plugins_url() . '/custom-contact-forms/js/jquery.ui.dialog.js', array('jquery', 'jquery-ui-core', 'jquery-ui-tabs'));
209
- //wp_enqueue_script('ccf-pagination', plugins_url() . '/custom-contact-forms/js/jquery.pagination.js');
210
- wp_enqueue_script('ccf-admin-inc', plugins_url() . '/custom-contact-forms/js/custom-contact-forms-admin-inc.js', $js_version);
211
- wp_enqueue_script('ccf-admin', plugins_url() . '/custom-contact-forms/js/custom-contact-forms-admin.js', $js_version);
212
- if ($admin_options['admin_ajax'] == 1) {
213
- wp_enqueue_script('ccf-admin-ajax', plugins_url() . '/custom-contact-forms/js/custom-contact-forms-admin-ajax.js', array('jquery-form'), $js_version);
214
- wp_localize_script('ccf-admin-ajax', 'ccfLang', $js_lang);
215
- wp_localize_script('ccf-admin-ajax', 'ccfAjax', $js_ajax);
216
- }
217
- wp_enqueue_script('ccf-colorpicker', plugins_url() . '/custom-contact-forms/js/colorpicker.js');
218
- wp_enqueue_script('ccf-eye', plugins_url() . '/custom-contact-forms/js/eye.js');
219
- wp_enqueue_script('ccf-utils', plugins_url() . '/custom-contact-forms/js/utils.js');
220
- wp_enqueue_script('ccf-layout', plugins_url() . '/custom-contact-forms/js/layout.js?ver=1.0.2');
221
- wp_localize_script('ccf-admin-inc', 'ccfLang', $js_lang);
222
- wp_localize_script('ccf-admin-inc', 'ccfAjax', $js_ajax);
223
- wp_localize_script('ccf-admin', 'ccfLang', $js_lang);
224
- }
225
-
226
- function handleAdminPostRequests() {
227
- $out = array('success' => true);
228
- if ($_POST['object_create']) {
229
- if ($_POST['object_type'] == 'form') {
230
- if (parent::insertForm($_POST['object']) != false)
231
- $this->action_complete = __('A new form was successfully created!', 'custom-contact-forms');
232
- } elseif ($_POST['object_type'] == 'field') {
233
- if (parent::insertField($_POST['object']) != false)
234
- $this->action_complete = __('A new field was successful created!', 'custom-contact-forms');
235
- } elseif ($_POST['object_type'] == 'field_option') {
236
- if (parent::insertFieldOption($_POST['object']) != false)
237
- $this->action_complete = __('A new field option was successful created!', 'custom-contact-forms');
238
- } elseif ($_POST['object_type'] == 'style') {
239
- if (parent::insertStyle($_POST['object']) != false)
240
- $this->action_complete = __('A new style was successful created!', 'custom-contact-forms');
241
- }
242
- return $out;
243
- }
244
-
245
- if ($_POST['object_attach']) {
246
- if ($_POST['object_type'] == 'form') {
247
- if (parent::addFieldToForm($_POST['attach_object_id'], $_POST['object_id']) != false)
248
- $this->action_complete = __('A field was successful attached!', 'custom-contact-forms');
249
- } elseif ($_POST['object_type'] == 'field') {
250
- if (parent::addFieldOptionToField($_POST['attach_object_id'], $_POST['object_id']) != false)
251
- $this->action_complete = __('A field option was successful attached!', 'custom-contact-forms');
252
- }
253
- return $out;
254
- }
255
-
256
- if ($_POST['object_detach']) {
257
- if ($_POST['object_type'] == 'form') {
258
- if (parent::detachField($_POST['detach_object_id'], $_POST['object_id']) != false)
259
- $this->action_complete = __('A field was successful detached!', 'custom-contact-forms');
260
- } elseif ($_POST['object_type'] == 'field') {
261
- if (parent::detachFieldOption($_POST['detach_object_id'], $_POST['object_id']) != false)
262
- $this->action_complete = __('A field option was successful detached!', 'custom-contact-forms');
263
- }
264
- return $out;
265
- }
266
-
267
- if (isset($_POST['object_bulk_apply'])) {
268
- $out['object_bulk_action'] = $_POST['object_bulk_action'];
269
- if ($_POST['object_bulk_action'] == 'edit') {
270
- foreach ($_POST['objects'] as $obj) {
271
- if ($obj['object_do'] == 1) {
272
- if ($obj['object_type'] == 'form') {
273
- parent::updateForm($obj['values'], $obj['object_id']);
274
- if ($obj['detach_confirm'] == 1 && $obj['detach'] > 0) {
275
- parent::detachField($obj['detach'], $obj['object_id']);
276
- } if ($obj['attach_confirm'] == 1 && $obj['attach'] > 0) {
277
- parent::addFieldToForm($obj['attach'], $obj['object_id']);
278
- }
279
- } elseif ($obj['object_type'] == 'field') {
280
- parent::updateField($obj['values'], $obj['object_id']);
281
- if ($obj['detach_confirm'] == 1 && $obj['detach'] > 0) {
282
- parent::detachFieldOption($obj['detach'], $obj['object_id']);
283
- } if ($obj['attach_confirm'] == 1 && $obj['attach'] > 0) {
284
- parent::addFieldOptionToField($obj['attach'], $obj['object_id']);
285
- }
286
- } elseif ($obj['object_type'] == 'field_option') parent::updateFieldOption($obj['values'], $obj['object_id']);
287
- elseif ($obj['object_type'] == 'style') parent::updateStyle($obj['values'], $obj['object_id']);
288
- $out['objects'][] = $obj;
289
- }
290
- }
291
- $this->action_complete = __('Your bulk action has been completed!', 'custom-contact-forms');
292
- }
293
-
294
- elseif ($_POST['object_bulk_action'] == 'delete') {
295
- foreach ($_POST['objects'] as $obj) {
296
- if ($obj['object_do'] == 1) {
297
- if ($obj['object_type'] == 'form') parent::deleteForm($obj['object_id']);
298
- elseif ($obj['object_type'] == 'field') parent::deleteField($obj['object_id']);
299
- elseif ($obj['object_type'] == 'field_option') parent::deleteFieldOption($obj['object_id']);
300
- elseif ($obj['object_type'] == 'style') parent::deleteStyle($obj['object_id']);
301
- elseif ($obj['object_type'] == 'form_submission') {
302
- parent::deleteUserData($obj['object_id']);
303
- }
304
- $out['objects'][] = $obj;
305
- }
306
- }
307
- $this->action_complete = __('Your bulk action has been completed!', 'custom-contact-forms');
308
- }
309
- }
310
- return $out;
311
- }
312
-
313
- function printAdminPage() {
314
- $admin_options = parent::getAdminOptions();
315
- if ($admin_options['show_install_popover'] == 1) {
316
- $admin_options['show_install_popover'] = 0;
317
- ?>
318
- <script type="text/javascript" language="javascript">
319
- $j(document).ready(function() {
320
- $j("#ccf-usage-popover").dialog('open');
321
- });
322
- </script>
323
- <?php
324
- update_option(parent::getAdminOptionsName(), $admin_options);
325
- }
326
- $this->handleAdminPostRequests();
327
- if ($_POST['insert_default_content']) {
328
- ccf_utils::load_module('db/custom-contact-forms-default-db.php');
329
- $this->action_complete = __('Default content has been inserted!', 'custom-contact-forms');
330
- new CustomContactFormsDefaultDB();
331
- } elseif ($_POST['contact_author']) {
332
- $this->action_complete = __('Your message has been sent!', 'custom-contact-forms');
333
- $this_url = (!empty($_SERVER['HTTP_REFERER'])) ? $_SERVER['HTTP_REFERER'] : $_SERVER['SERVER_NAME'];
334
- $this->contactAuthor($_POST['name'], $_POST['email'], $this_url, $_POST['message'], $_POST['type'], $_POST['host'], $_POST['ccf-version'], $_POST['wp-version']);
335
- } elseif ($_GET['clear_tables'] == 1) {
336
- parent::emptyAllTables();
337
- }
338
- $styles = parent::selectAllStyles();
339
- $style_options = '<option value="0">Default</option>';
340
- foreach ($styles as $style)
341
- $style_options .= '<option value="'.$style->id.'">'.$style->style_slug.'</option>';
342
- ?>
343
- <div id="customcontactforms-admin">
344
- <div class="plugin-header">
345
- <h2>
346
- <?php _e("Custom Contact Forms", 'custom-contact-forms'); ?>
347
- </h2>
348
- <input type="button" class="quick-start-button" value="<?php _e("Quick Start Guide", 'custom-contact-forms'); ?>" />
349
- <input type="button" class="usage-popover-button" value="<?php _e("Plugin Usage Manual", 'custom-contact-forms'); ?>" />
350
- </div>
351
- <ul id="plugin-nav">
352
- <li><a href="#create-fields"><?php _e("Create Fields", 'custom-contact-forms'); ?></a></li>
353
- <li><a href="#create-forms"><?php _e("Create Forms", 'custom-contact-forms'); ?></a></li>
354
- <li><a href="#manage-fields"><?php _e("Manage Fields", 'custom-contact-forms'); ?></a></li>
355
- <li><a href="#manage-fixed-fields"><?php _e("Manage Fixed Fields", 'custom-contact-forms'); ?></a></li>
356
- <li><a href="#manage-forms"><?php _e("Manage Forms", 'custom-contact-forms'); ?></a></li>
357
- <li><a href="#create-styles"><?php _e("Create Styles", 'custom-contact-forms'); ?></a></li>
358
- <li><a href="#manage-styles"><?php _e("Manage Styles", 'custom-contact-forms'); ?></a></li>
359
- <li><a href="#manage-field-options"><?php _e("Manage Field Options", 'custom-contact-forms'); ?></a></li>
360
- <li><a href="#contact-author"><?php _e("Suggest a Feature", 'custom-contact-forms'); ?></a></li>
361
- <li><a href="#contact-author"><?php _e("Bug Report", 'custom-contact-forms'); ?></a></li>
362
- <li><a href="#custom-html"><?php _e("Custom HTML Forms", 'custom-contact-forms'); ?></a></li>
363
- <li class="last"><a href="#plugin-news"><?php _e("Plugin News", 'custom-contact-forms'); ?></a></li>
364
- </ul>
365
- <div style="text-align:center"><a target="_blank" href="http://www.shareasale.com/r.cfm?b=256143&u=481196&m=25929&urllink=&afftrack="><img src="http://www.shareasale.com/image/25929/728x90.png" alt="Scribe. SEO Made Simple." border="0"></a>
366
- </div><a class="genesis" href="http://www.shareasale.com/r.cfm?b=241369&u=481196&m=28169&urllink=&afftrack="><?php _e('Custom Contact Forms works best with any of the 20+ ', 'custom-contact-forms'); ?><span><?php _e('Genesis', 'custom-contact-forms'); ?></span> <?php _e('Wordpress child themes. The', 'custom-contact-forms'); ?> <span><?php _e('Genesis Framework', 'custom-contact-forms'); ?></span> <?php _e('empowers you to quickly and easily build incredible websites with WordPress.', 'custom-contact-forms'); ?></a>
367
-
368
- <form class="blog-horizontal-form" method="post" action="http://www.aweber.com/scripts/addlead.pl">
369
- <input type="hidden" name="meta_web_form_id" value="1578604781" />
370
- <input type="hidden" name="meta_split_id" value="" />
371
- <input type="hidden" name="listname" value="ccf-plugin" />
372
- <input type="hidden" name="redirect" value="http://www.taylorlovett.com/wordpress-plugins/tutorials-offers-tips/" id="redirect_5832e41084448adb07da67a35dc83c27" />
373
- <input type="hidden" name="meta_adtracking" value="CCF_-_Wordpress_Plugins_Horizontal" />
374
- <input type="hidden" name="meta_message" value="1" />
375
- <input type="hidden" name="meta_required" value="name,email" />
376
- <span><?php _e('WP Blogging Tips, Downloads, SEO Tricks & Exclusive Tutorials', 'custom-contact-forms'); ?></span>
377
- <input type="text" name="name" value="Your Name" onclick="value=''" />
378
- <input type="text" name="email" value="Your Email" onclick="value=''" />
379
- <input type="submit" value="Sign Up for Free" />
380
- </form>
381
-
382
- <?php if (!empty($this->action_complete)) { ?>
383
- <div class="action-complete">
384
- <?php echo $this->action_complete; ?>
385
- </div>
386
- <?php } ?>
387
-
388
- <a name="create-fields"></a>
389
- <div id="create-fields" class="postbox">
390
- <h3 class="hndle"><span>
391
- <?php _e("Create A Form Field", 'custom-contact-forms'); ?>
392
- </span></h3>
393
- <div class="inside">
394
- <form id="ccf-create-field" method="post" action="<?php echo $_SERVER['REQUEST_URI']; ?>">
395
- <ul>
396
- <li>
397
- <label for="field_slug">*
398
- <?php _e("Field Slug:", 'custom-contact-forms'); ?>
399
- </label>
400
- <input name="object[field_slug]" type="text" maxlength="40" />
401
- <br />
402
- <?php _e("This is just a unique way for CCF to refer to your field. Must be unique from other slugs and contain only underscores and alphanumeric characters.", 'custom-contact-forms'); ?>
403
- </li>
404
- <li>
405
- <label for="field_label">
406
- <?php _e("Field Label:", 'custom-contact-forms'); ?>
407
- </label>
408
- <input name="object[field_label]" type="text" maxlength="100" />
409
- <br />
410
- <?php _e("The field label is displayed next to the field and is visible to the user.", 'custom-contact-forms'); ?>
411
- </li>
412
- <li>
413
- <label for="field_type">*
414
- <?php _e("Field Type:", 'custom-contact-forms'); ?>
415
- </label>
416
- <select name="object[field_type]">
417
- <option>Text</option>
418
- <option>Date</option>
419
- <option>Textarea</option>
420
- <option>Hidden</option>
421
- <option>Checkbox</option>
422
- <option>Radio</option>
423
- <option>Dropdown</option>
424
- </select>
425
- </li>
426
- <li>
427
- <label for="field_value">
428
- <?php _e("Initial Value:", 'custom-contact-forms'); ?>
429
- </label>
430
- <input name="object[field_value]" type="text" maxlength="50" />
431
- <br />
432
- (
433
- <?php _e("This is the initial value of the field. If you set the type as checkbox, it is recommend you set this to what the checkbox is implying. For example if I were creating the checkbox
434
- 'Are you human?', I would set the initial value to 'Yes'.", 'custom-contact-forms'); ?>
435
- <?php _e("If you set the field type as 'Dropdown' or 'Radio', you should enter the slug of the", 'custom-contact-forms'); ?>
436
- <a href="#manage-field-options" title="<?php _e("Create a Field Option", 'custom-contact-forms'); ?>"><?php _e("field option", 'custom-contact-forms'); ?></a>
437
- <?php _e("you would like initially selected.", 'custom-contact-forms'); ?>
438
- ) </li>
439
- <li>
440
- <label for="field_maxlength">
441
- <?php _e("Max Length:", 'custom-contact-forms'); ?>
442
- </label>
443
- <input class="ccf-width50" size="10" name="object[field_maxlength]" type="text" maxlength="4" />
444
- <br />
445
- <?php _e("0 for no limit; only applies to Text fields", 'custom-contact-forms'); ?>
446
- </li>
447
- <li>
448
- <label for="field_required">*
449
- <?php _e("Required Field:", 'custom-contact-forms'); ?>
450
- </label>
451
- <select name="object[field_required]">
452
- <option value="0">
453
- <?php _e("No", 'custom-contact-forms'); ?>
454
- </option>
455
- <option value="1">
456
- <?php _e("Yes", 'custom-contact-forms'); ?>
457
- </option>
458
- </select>
459
- <br />
460
- <?php _e("If a field is required and a user leaves it blank, the plugin will display an error message (which you can customize using 'Field Error') explaining the problem.", 'custom-contact-forms'); ?>
461
- </li>
462
- <li>
463
- <label for="field_instructions">
464
- <?php _e("Field Instructions:", 'custom-contact-forms'); ?>
465
- </label>
466
- <input name="object[field_instructions]" type="text" />
467
- <br />
468
- <?php _e("If this is filled out, a tooltip popover displaying this text will show when the field is selected.", 'custom-contact-forms'); ?>
469
- </li>
470
- <li>
471
- <label for="field_class">
472
- <?php _e("Field Class:", 'custom-contact-forms'); ?>
473
- </label>
474
- <input name="object[field_class]" type="text" />
475
- <br />
476
- <?php _e("If you manage your own .css stylesheet, you can use this to attach a class to this field. Leaving this blank will do nothing.", 'custom-contact-forms'); ?>
477
- </li>
478
- <li>
479
- <label for="field_error">
480
- <?php _e("Field Error:", 'custom-contact-forms'); ?>
481
- </label>
482
- <input name="object[field_error]" type="text" />
483
- <br />
484
- <?php _e("If a user leaves this field blank and the field is required, this error message will be shown. A generic default will show if left blank.", 'custom-contact-forms'); ?>
485
- </li>
486
- <li>
487
- <input type="hidden" name="object[user_field]" value="1" />
488
- <input type="hidden" name="object_type" value="field" />
489
- <input type="submit" value="<?php _e("Create Field", 'custom-contact-forms'); ?>" name="object_create" class="create-button" />
490
- </li>
491
- <li class="attach"><span class="ccf-red">*</span> <?php _e('If this is a dropdown or radio field, you should go to the field manager below to attach field options after you create it.', 'custom-contact-forms'); ?></li>
492
-
493
- </ul>
494
- </form>
495
- </div>
496
- </div>
497
- <a name="create-forms"></a>
498
- <div id="create-forms" class="postbox">
499
- <h3 class="hndle"><span>
500
- <?php _e("Create A Form", 'custom-contact-forms'); ?>
501
- </span></h3>
502
- <div class="inside">
503
- <form id="ccf-create-form" method="post" action="<?php echo $_SERVER['REQUEST_URI']; ?>">
504
- <ul>
505
- <li>
506
- <label for="object[form_slug]">*
507
- <?php _e("Form Slug:", 'custom-contact-forms'); ?>
508
- </label>
509
- <input type="text" maxlength="100" name="object[form_slug]" />
510
- <br />
511
- <?php _e("This is just a unique way for CCF to refer to your form. Must be unique from other slugs and contain only underscores and alphanumeric characters.", 'custom-contact-forms'); ?>
512
- </li>
513
- <li>
514
- <label for="object[form_title]">
515
- <?php _e("Form Title:", 'custom-contact-forms'); ?>
516
- </label>
517
- <input type="text" maxlength="200" name="object[form_title]" />
518
- <?php _e("This text is displayed above the form as the heading.", 'custom-contact-forms'); ?>
519
- </li>
520
- <li>
521
- <label for="object[form_action]">
522
- <?php _e("Form Style:", 'custom-contact-forms'); ?>
523
- </label>
524
- <select name="object[form_style]" class="form_style_input">
525
- <?php echo $style_options; ?>
526
- </select>
527
- (<a href="#create-styles"><?php _e("Click to create a style", 'custom-contact-forms'); ?></a>)</li>
528
- <li>
529
- <label for="object[submit_button_text]">
530
- <?php _e("Submit Button Text:", 'custom-contact-forms'); ?>
531
- </label>
532
- <input type="text" maxlength="200" name="object[submit_button_text]" />
533
- </li>
534
- <li>
535
- <label for="object[form_email]">
536
- <?php _e("Form Destination Email:", 'custom-contact-forms'); ?>
537
- </label>
538
- <input type="text" name="object[form_email]" />
539
- <br />
540
- <?php _e("Will receive all submissions from this form; if left blank it will use the default specified in general settings.", 'custom-contact-forms'); ?>
541
- </li>
542
- <li>
543
- <label for="object[form_email_subject]">
544
- <?php _e("Form Email Subject:", 'custom-contact-forms'); ?>
545
- </label>
546
- <input type="text" name="object[form_email_subject]" />
547
- <br />
548
- <?php _e("When submitted and configured accordingly, the form will send an email with this subject.", 'custom-contact-forms'); ?>
549
- </li>
550
- <li>
551
- <label for="object[form_email_name]">
552
- <?php _e("Form Email Name:", 'custom-contact-forms'); ?>
553
- </label>
554
- <input type="text" name="object[form_email_name]" />
555
- <br />
556
- <?php _e("When submitted and configured accordingly, the form will send an email with this as the email 'from name'.", 'custom-contact-forms'); ?>
557
- </li>
558
- <li>
559
- <label for="object[form_success_message]">
560
- <?php _e("Form Success Message:", 'custom-contact-forms'); ?>
561
- </label>
562
- <input type="text" name="object[form_success_message]" />
563
- <br />
564
- <?php _e("Will be displayed in a popover when the form is filled out successfully when no custom success page is specified; if left blank it will use the default specified in general settings.", 'custom-contact-forms'); ?>
565
- </li>
566
- <li>
567
- <label for="object[form_success_title]">
568
- <?php _e("Form Success Message Title:", 'custom-contact-forms'); ?>
569
- </label>
570
- <input type="text" name="object[form_success_title]" />
571
- <br />
572
- <?php _e("Will be displayed in a popover when the form is filled out successfully when no custom success page is specified; if left blank it will use the default specified in general settings.", 'custom-contact-forms'); ?>
573
- </li>
574
- <li>
575
- <label for="object[form_thank_you_page]">
576
- <?php _e("Custom Success URL:", 'custom-contact-forms'); ?>
577
- </label>
578
- <input type="text" name="object[form_thank_you_page]" />
579
- <br />
580
- <?php _e("If this is filled out, users will be sent to this page when they successfully fill out this form. If it is left blank, a popover showing the form's 'success message' will be displayed on form success.", 'custom-contact-forms'); ?>
581
- </li>
582
- <li>
583
- <label for="form_access"><?php _e('Who Can View This Form:', ''); ?></label>
584
-
585
- <?php
586
- $roles = parent::getRolesArray();
587
- $i = 0;
588
- foreach ($roles as $role) {
589
- if ($i == 3) echo '<br />';
590
- ?>
591
- <div class="role">
592
- <input type="checkbox" checked="checked" name="object[form_access][]" value="<?php echo $role; ?>" />
593
- <?php echo $role; ?>
594
- </div>
595
- <?php
596
- $i++;
597
- }
598
- ?><br />
599
- <?php _e('Choose which types of users should be able to view this form.', 'custom-contact-forms'); ?>
600
- </li>
601
- <li>
602
- <input type="hidden" name="object_type" value="form" />
603
- <input type="submit" class="create-button" value="<?php _e("Create Form", 'custom-contact-forms'); ?>" name="object_create" />
604
- </li>
605
- <li class="attach"><span class="ccf-red">*</span> <?php _e('You should go to the form manager below to attach fields to this form after you create it.', 'custom-contact-forms'); ?></li>
606
- </ul>
607
- </form>
608
- </div>
609
- </div>
610
- <a name="manage-fields"></a>
611
- <h3 class="manage-h3">
612
- <?php _e("Manage User Fields", 'custom-contact-forms'); ?>
613
- </h3>
614
- <form class="ccf-edit-ajax" method="post" action="<?php echo $_SERVER['REQUEST_URI']; ?>">
615
- <table class="widefat post" id="manage-fields" cellspacing="0">
616
- <thead>
617
- <tr>
618
- <th scope="col" class="manage-column check-col"><input type="checkbox" class="checkall" /></th>
619
- <th scope="col" class="manage-column field-slug"><?php _e("Slug", 'custom-contact-forms'); ?></th>
620
- <th scope="col" class="manage-column field-label"><?php _e("Label", 'custom-contact-forms'); ?></th>
621
- <th scope="col" class="manage-column field-type"><?php _e("Type", 'custom-contact-forms'); ?></th>
622
- <th scope="col" class="manage-column field-value"><?php _e("Initial Value", 'custom-contact-forms'); ?></th>
623
- <th scope="col" class="manage-column field-required"><?php _e("Required", 'custom-contact-forms'); ?></th>
624
- <th scope="col" class="manage-column field-maxlength"><?php _e("Maxlength", 'custom-contact-forms'); ?></th>
625
- <th scope="col" class="manage-column field-expand"></th>
626
- </tr>
627
- </thead>
628
- <tbody>
629
- <?php
630
- $fields = parent::selectAllFields();
631
- for ($i = 0, $z = 0; $i < count($fields); $i++, $z++) {
632
- if ($fields[$i]->user_field == 0) { $z--; continue; }
633
- $attached_options = parent::getAttachedFieldOptionsArray($fields[$i]->id);
634
- $field_types = '<option>Text</option><option>Date</option><option>Textarea</option><option>Hidden</option><option>Checkbox</option><option>Radio</option><option>Dropdown</option>';
635
- $field_types = str_replace('<option>'.$fields[$i]->field_type.'</option>', '<option selected="selected">'.$fields[$i]->field_type.'</option>', $field_types);
636
-
637
- ?>
638
- <tr class="row-field-<?php echo $fields[$i]->id; ?> <?php if ($z % 2 == 1) echo ' ccf-evenrow'; ?>">
639
- <td><input class="object-check" type="checkbox" value="1" name="objects[<?php echo $i; ?>][object_do]" /></td>
640
- <td><input type="text" name="objects[<?php echo $i; ?>][values][field_slug]" class="ccf-width100" maxlength="50" value="<?php echo $fields[$i]->field_slug; ?>" /></td>
641
- <td><input type="text" name="objects[<?php echo $i; ?>][values][field_label]" maxlength="100" value="<?php echo $fields[$i]->field_label; ?>" /></td>
642
- <td><select name="objects[<?php echo $i; ?>][values][field_type]">
643
- <?php echo $field_types; ?>
644
- </select></td>
645
- <td><input type="text" name="objects[<?php echo $i; ?>][values][field_value]" maxlength="50" class="ccf-width75" value="<?php echo $fields[$i]->field_value; ?>" /></td>
646
- <td><select name="objects[<?php echo $i; ?>][values][field_required]">
647
- <option value="1">
648
- <?php _e("Yes", 'custom-contact-forms'); ?>
649
- </option>
650
- <option value="0" <?php if ($fields[$i]->field_required != 1) echo 'selected="selected"'; ?>>
651
- <?php _e("No", 'custom-contact-forms'); ?>
652
- </option>
653
- </select></td>
654
- <td><?php if ($fields[$i]->field_type == 'Dropdown' || $fields[$i]->field_type == 'Radio') { ?>
655
- <b>-</b>
656
- <?php } else { ?>
657
- <input type="text" class="ccf-width50" name="objects[<?php echo $i; ?>][values][field_maxlength]" value="<?php echo $fields[$i]->field_maxlength; ?>" />
658
- <?php } ?>
659
- </td>
660
- <td><input type="hidden" class="object-type" name="objects[<?php echo $i; ?>][object_type]" value="field" />
661
- <input type="hidden" class="object-id" name="objects[<?php echo $i; ?>][object_id]" value="<?php echo $fields[$i]->id; ?>" />
662
- <span class="fields-options-expand"></span>
663
- </tr>
664
- <?php $show_field_options = ($fields[$i]->field_type == 'Radio' || $fields[$i]->field_type == 'Dropdown') ? true : false; ?>
665
- <tr class="row-field-<?php echo $fields[$i]->id; ?> <?php if ($z % 2 == 1) echo 'ccf-evenrow'; ?>">
666
- <td class="fields-extra-options" colspan="8">
667
- <div class="row-one">
668
- <a href="javascript:void(0)" class="toollink" title="<?php _e('If this is filled out, a tooltip popover displaying this text will show when the field is selected.', 'custom-contact-forms'); ?>">(?)</a>
669
- <label for="field_instructions">
670
- <?php _e("Field Instructions:", 'custom-contact-forms'); ?>
671
- </label>
672
- <input type="text" class="ccf-width150" name="objects[<?php echo $i; ?>][values][field_instructions]" value="<?php echo $fields[$i]->field_instructions; ?>" />
673
- <a href="javascript:void(0)" class="toollink" title="<?php _e('If you manage a .CSS file for your theme, you could create a class in that file and add it to this field. If the form attaching this field is using a "Form Style" other than the default, styles inherited from the "Field Class" might be overwritten.', 'custom-contact-forms'); ?>">(?)</a>
674
- <label for="field_class">
675
- <?php _e("Field Class:", 'custom-contact-forms'); ?>
676
- </label>
677
- <input type="text" class="ccf-width100" name="objects[<?php echo $i; ?>][values][field_class]" value="<?php echo $fields[$i]->field_class; ?>" />
678
- <a href="javascript:void(0)" class="toollink" title="<?php _e('This lets you customize the error message displayed when this field is required and left blank.', 'custom-contact-forms'); ?>">(?)</a>
679
- <label for="field_error">
680
- <?php _e("Field Error:", 'custom-contact-forms'); ?>
681
- </label>
682
- <input type="text" class="ccf-width200" name="objects[<?php echo $i; ?>][values][field_error]" value="<?php echo $fields[$i]->field_error; ?>" />
683
- </div>
684
- <?php
685
- if ($show_field_options) { ?>
686
- <div class="fattach">
687
- <div class="field-detach">
688
- <span class="ccf-bold">Detach Options:</span>
689
- <?php if (empty($attached_options)) { ?>
690
- <select class="onObject<?php echo $fields[$i]->id ?> detach-object detach-field-option objectTypeField" name="objects[<?php echo $i; ?>][detach]">
691
- <option value="-1">Nothing Attached!</option>
692
- </select>
693
- <?php } else { ?>
694
- <select name="objects[<?php echo $i; ?>][detach]" class="onObject<?php echo $fields[$i]->id ?> detach-object detach-field-option objectTypeField">
695
- <?php
696
- foreach ($attached_options as $option_id) {
697
- $option = parent::selectFieldOption($option_id);
698
- ?>
699
- <option value="<?php echo $option_id; ?>"><?php echo $option->option_slug; ?></option>
700
- <?php
701
- }
702
- ?>
703
- </select>
704
- <?php } ?>
705
- <span class="field-detach-check">
706
- <input class="detach-check" type="checkbox" name="objects[<?php echo $i; ?>][detach_confirm]" value="1" />
707
- <span class="detach-lang">(Check to detach option)</span>
708
- </span><br />
709
- <span class="ccf-red ccf-bold">*</span>
710
- <?php _e("Detach field options you", 'custom-contact-forms'); ?>
711
- <a href="#create-field-options">
712
- <?php _e("create", 'custom-contact-forms'); ?>
713
- </a>. </div>
714
- <?php $all_options = $this->getFieldOptionsForm(); ?>
715
- <div class="field-attach">
716
- <span class="ccf-bold">Attach Options:</span>
717
- <?php if (empty($all_options)) { ?>
718
- <b>No Field Options to Attach</b>
719
- <?php } else { ?>
720
- <select name="objects[<?php echo $i; ?>][attach]" class="onObject<?php echo $fields[$i]->id ?> attach-object attach-field-option objectTypeField">
721
- <?php echo $all_options; ?>
722
- </select>
723
- <span class="field-attach-check">
724
- <input type="checkbox" class="attach-check" name="objects[<?php echo $i; ?>][attach_confirm]" value="1" />
725
- <?php } ?>
726
- <span class="attach-lang">(Check to attach option)</span>
727
- </span><br />
728
- <span class="ccf-red ccf-bold">*</span>
729
- <?php _e("Attach field options in the order you want them to display.", 'custom-contact-forms'); ?>
730
- </div>
731
- </div>
732
- <?php } ?>
733
- </td>
734
- </tr>
735
- <?php
736
- }
737
- ?>
738
- </tbody>
739
-
740
- <tfoot>
741
- <tr>
742
- <th scope="col" class="manage-column check-col"><input type="checkbox" class="checkall" /></th>
743
- <th scope="col" class="manage-column field-slug"><?php _e("Slug", 'custom-contact-forms'); ?></th>
744
- <th scope="col" class="manage-column field-label"><?php _e("Label", 'custom-contact-forms'); ?></th>
745
- <th scope="col" class="manage-column field-type"><?php _e("Type", 'custom-contact-forms'); ?></th>
746
- <th scope="col" class="manage-column field-value"><?php _e("Initial Value", 'custom-contact-forms'); ?></th>
747
- <th scope="col" class="manage-column field-required"><?php _e("Required", 'custom-contact-forms'); ?></th>
748
- <th scope="col" class="manage-column field-maxlength"><?php _e("Maxlength", 'custom-contact-forms'); ?></th>
749
- <th scope="col" class="manage-column field-expand"></th>
750
- </tr>
751
- </tfoot>
752
- </table>
753
- <select class="bulk-dropdown" name="object_bulk_action">
754
- <option value="0"><?php _e('Bulk Actions', 'custom-contact-forms'); ?></option>
755
- <option value="edit"><?php _e('Save', 'custom-contact-forms'); ?></option>
756
- <option value="delete"><?php _e('Delete', 'custom-contact-forms'); ?></option>
757
- </select> <input type="submit" name="object_bulk_apply" class="bulk-apply" value="<?php _e('Apply', 'custom-contact-forms'); ?>" /> <img src="<?php echo plugins_url(); ?>/custom-contact-forms/images/wpspin_light.gif" width="16" height="16" class="loading-img" />
758
- </form>
759
- <a name="manage-fixed-fields"></a>
760
- <h3 class="manage-h3">
761
- <?php _e("Manage Fixed Fields", 'custom-contact-forms'); ?>
762
- </h3>
763
- <form class="ccf-edit-ajax" method="post" action="<?php echo $_SERVER['REQUEST_URI']; ?>">
764
- <table class="widefat post" id="manage-fixed-fields" cellspacing="0">
765
- <thead>
766
- <tr>
767
- <th scope="col" class="manage-column check-col"><input type="checkbox" class="checkall" /></th>
768
- <th scope="col" class="manage-column field-slug"><?php _e("Slug", 'custom-contact-forms'); ?></th>
769
- <th scope="col" class="manage-column field-label"><?php _e("Label", 'custom-contact-forms'); ?></th>
770
- <th scope="col" class="manage-column field-type"><?php _e("Type", 'custom-contact-forms'); ?></th>
771
- <th scope="col" class="manage-column field-value"><?php _e("Initial Value", 'custom-contact-forms'); ?></th>
772
- <th scope="col" class="manage-column field-value"><?php _e("Required", 'custom-contact-forms'); ?></th>
773
- <th scope="col" class="manage-column field-maxlength"><?php _e("Maxlength", 'custom-contact-forms'); ?></th>
774
- <th scope="col" class="manage-column field-expand"></th>
775
- </tr>
776
- </thead>
777
- <tbody>
778
- <?php
779
- $fields = parent::selectAllFields();
780
- for ($i = 0, $z = 0; $i < count($fields); $i++, $z++) {
781
- if ($fields[$i]->user_field == 1) { $z--; continue;}
782
- $field_types = '<option>Text</option><option>Textarea</option><option>Hidden</option><option>Checkbox</option>';
783
- $field_types = str_replace('<option>'.$fields[$i]->field_type.'</option>', '<option selected="selected">'.$fields[$i]->field_type.'</option>', $field_types);
784
-
785
- ?>
786
- <tr class="row-field-<?php echo $fields[$i]->id; ?> <?php if ($z % 2 == 0) echo 'ccf-evenrow'; ?>">
787
- <td><input class="object-check" type="checkbox" value="1" name="objects[<?php echo $i; ?>][object_do]" /></td>
788
- <td><?php echo $fields[$i]->field_slug; ?></td>
789
- <td><?php if ($fields[$i]->field_slug == 'resetButton') { _e('None', 'custom-contact-forms'); } else { ?>
790
- <input type="text" name="objects[<?php echo $i; ?>][values][field_label]" maxlength="100" value="<?php echo $fields[$i]->field_label; ?>" />
791
- <?php } ?></td>
792
- <td><?php echo $fields[$i]->field_type; ?>
793
- <td><?php if ($fields[$i]->field_type != 'Checkbox') { ?>
794
- <input type="text" name="objects[<?php echo $i; ?>][values][field_value]" class="ccf-width75" maxlength="50" value="<?php echo $fields[$i]->field_value; ?>" />
795
- <?php } else {
796
- echo $fields[$i]->field_value;
797
- ?>
798
- <?php } ?>
799
- </td>
800
- <td><?php if ($fields[$i]->field_slug == 'fixedEmail' || $fields[$i]->field_slug == 'emailSubject' || $fields[$i]->field_slug == 'fixedWebsite' || $fields[$i]->field_slug == 'usaStates' || $fields[$i]->field_slug == 'datePicker' || $fields[$i]->field_slug == 'allCountries') { ?>
801
- <select name="objects[<?php echo $i; ?>][values][field_required]">
802
- <option value="1">
803
- <?php _e("Yes", 'custom-contact-forms'); ?>
804
- </option>
805
- <option <?php if($fields[$i]->field_required != 1) echo 'selected="selected"'; ?> value="0">
806
- <?php _e("No", 'custom-contact-forms'); ?>
807
- </option>
808
- </select>
809
- <?php } else {
810
- if ($fields[$i]->field_slug == 'resetButton') {
811
- echo '-';
812
- } else {
813
- _e("Yes", 'custom-contact-forms');
814
- }
815
- }
816
- ?>
817
- </td>
818
- <td><?php if ($fields[$i]->field_type != 'Checkbox' && $fields[$i]->field_slug != 'resetButton' && $fields[$i]->field_slug != 'allCountries' && $fields[$i]->field_slug != 'usaStates') { ?>
819
- <input type="text" class="ccf-width50" name="objects[<?php echo $i; ?>][values][field_maxlength]" value="<?php echo $fields[$i]->field_maxlength; ?>" />
820
- <?php } else { _e('None', 'custom-contact-forms'); } ?>
821
- </td>
822
- <td><input type="hidden" name="objects[<?php echo $i; ?>][object_type]" value="field" />
823
- <input type="hidden" class="object-id" name="objects[<?php echo $i; ?>][object_id]" value="<?php echo $fields[$i]->id; ?>" />
824
- <span class="fixed-fields-options-expand"></span>
825
- </tr>
826
- <tr class="row-field-<?php echo $fields[$i]->id; ?> <?php if ($z % 2 == 0) echo 'ccf-evenrow'; ?>">
827
- <td class="fixed-fields-extra-options" colspan="8"><label for="field_class">
828
- <a href="javascript:void(0)" class="toollink" title="<?php _e('If you manage a .CSS file for your theme, you could create a class in that file and add it to this field. If the form attaching this field is using a "Form Style" other than the default, styles inherited from the "Field Class" might be overwritten.', 'custom-contact-forms'); ?>">(?)</a>
829
- <?php _e('Field Class:', 'custom-contact-forms'); ?>
830
- </label>
831
- <input type="text" value="<?php echo $fields[$i]->field_class; ?>" name="objects[<?php echo $i; ?>][values][field_class]" />
832
- <?php if ($fields[$i]->field_slug != 'resetButton') { ?>
833
- <a href="javascript:void(0)" class="toollink" title="<?php _e('If this is filled out, a tooltip popover displaying this text will show when the field is selected.', 'custom-contact-forms'); ?>">(?)</a>
834
- <label for="field_instructions">
835
- <?php _e("Field Instructions:", 'custom-contact-forms'); ?>
836
- </label>
837
- <input type="text" name="objects[<?php echo $i; ?>][values][field_instructions]" class="ccf-width200" value="<?php echo $fields[$i]->field_instructions; ?>" />
838
- <a href="javascript:void(0)" class="toollink" title="<?php _e('This lets you customize the error message displayed when this field is required and left blank.', 'custom-contact-forms'); ?>">(?)</a>
839
- <label for="field_error">
840
- <?php _e("Field Error:", 'custom-contact-forms'); ?>
841
- </label>
842
- <input type="text" class="ccf-width200" name="objects[<?php echo $i; ?>][values][field_error]" value="<?php echo $fields[$i]->field_error; ?>" />
843
- <br />
844
- <?php } ?>
845
- <div class="field_descrip"><?php echo $GLOBALS['ccf_fixed_fields'][$fields[$i]->field_slug]; ?></div></td>
846
- </tr>
847
- <?php
848
- }
849
- ?>
850
- </tbody>
851
-
852
- <tfoot>
853
- <tr>
854
- <th scope="col" class="manage-column check-col"><input type="checkbox" class="checkall" /></th>
855
- <th scope="col" class="manage-column field-slug"><?php _e("Slug", 'custom-contact-forms'); ?></th>
856
- <th scope="col" class="manage-column field-label"><?php _e("Label", 'custom-contact-forms'); ?></th>
857
- <th scope="col" class="manage-column field-type"><?php _e("Type", 'custom-contact-forms'); ?></th>
858
- <th scope="col" class="manage-column field-value"><?php _e("Initial Value", 'custom-contact-forms'); ?></th>
859
- <th scope="col" class="manage-column field-value"><?php _e("Required", 'custom-contact-forms'); ?></th>
860
- <th scope="col" class="manage-column field-maxlength"><?php _e("Maxlength", 'custom-contact-forms'); ?></th>
861
- <th scope="col" class="manage-column field-expand"></th>
862
- </tr>
863
- </tfoot>
864
- </table>
865
- <select class="bulk-dropdown" name="object_bulk_action">
866
- <option value="0"><?php _e('Bulk Actions', 'custom-contact-forms'); ?></option>
867
- <option value="edit"><?php _e('Save', 'custom-contact-forms'); ?></option>
868
- </select> <input type="submit" class="bulk-apply" name="object_bulk_apply" value="<?php _e('Apply', 'custom-contact-forms'); ?>" /> <img src="<?php echo plugins_url(); ?>/custom-contact-forms/images/wpspin_light.gif" width="16" height="16" class="loading-img" />
869
- </form>
870
- <a name="manage-field-options"></a>
871
- <div id="manage-field-options" class="postbox">
872
- <h3 class="hndle"><span>
873
- <?php _e("Manage Field Options", 'custom-contact-forms'); ?>
874
- </span></h3>
875
- <div class="inside">
876
- <form class="ccf-edit-ajax" method="post" action="<?php echo $_SERVER['REQUEST_URI']; ?>">
877
-
878
- <table cellpadding="0" cellspacing="0">
879
- <thead>
880
- <tr>
881
- <th><input class="checkall" type="checkbox" /></th>
882
- <th><?php _e("Slug", 'custom-contact-forms'); ?></th>
883
- <th><?php _e("Label", 'custom-contact-forms'); ?></th>
884
- <th><?php _e("Value", 'custom-contact-forms'); ?></th>
885
- <th><?php _e("Is Dead", 'custom-contact-forms'); ?></th>
886
- </tr>
887
- </thead>
888
- <tfoot>
889
- <tr>
890
- <th><input class="checkall" type="checkbox" /></th>
891
- <th><?php _e("Slug", 'custom-contact-forms'); ?></th>
892
- <th><?php _e("Label", 'custom-contact-forms'); ?></th>
893
- <th><?php _e("Value", 'custom-contact-forms'); ?></th>
894
- <th><?php _e("Is Dead", 'custom-contact-forms'); ?></th>
895
- </tr>
896
- </tfoot>
897
- <tbody>
898
- <?php
899
- $options = parent::selectAllFieldOptions(1);
900
- $option_count = count($options);
901
- $i = 0;
902
- foreach ($options as $option) {
903
- ?>
904
- <tr class="row-field_option-<?php echo $option->id; ?> <?php if ($i % 2 == 1) echo 'evenrow-field-options'; ?>">
905
- <td><input type="checkbox" class="object-check" name="objects[<?php echo $i; ?>][object_do]" value="1" /> </td>
906
- <td><input type="hidden" name="objects[<?php echo $i; ?>][object_type]" value="field_option" />
907
-
908
- <input class="object-id" type="hidden" name="objects[<?php echo $i; ?>][object_id]" value="<?php echo $option->id; ?>" />
909
-
910
- <input type="text" maxlength="20" name="<?php ?>objects[<?php echo $i; ?>][values][option_slug]" value="<?php echo $option->option_slug; ?>" class="ccf-width50" /></td>
911
- <td><input type="text" name="objects[<?php echo $i; ?>][values][option_label]" value="<?php echo $option->option_label; ?>" class="ccf-width100" /></td>
912
- <td><input type="text" name="objects[<?php echo $i; ?>][values][option_value]" value="<?php echo $option->option_value; ?>" class="ccf-width100" /></td>
913
- <td><select name="objects[<?php echo $i; ?>][values][option_dead]"><option value="0"><?php _e('No', 'custom-contact-forms'); ?></option><option <?php if ($option->option_dead == 1) echo 'selected="selected"'; ?> value="1"><?php _e('Yes', 'custom-contact-forms'); ?></option></select></td>
914
-
915
- </tr>
916
- <?php
917
- $i++;
918
- } if (empty($options)) {
919
- ?>
920
- <tr>
921
- <td class="ccf-center"><?php _e("No field options have been created.", 'custom-contact-forms'); ?></td>
922
- </tr>
923
- <?php
924
- }
925
- ?>
926
- </tbody>
927
- </table>
928
- <select class="bulk-dropdown" name="object_bulk_action">
929
- <option value="0"><?php _e('Bulk Actions', 'custom-contact-forms'); ?></option>
930
- <option value="edit"><?php _e('Save', 'custom-contact-forms'); ?></option>
931
- <option value="delete"><?php _e('Delete', 'custom-contact-forms'); ?></option></select>
932
- <input type="submit" class="bulk-apply" name="object_bulk_apply" value="<?php _e('Apply', 'custom-contact-forms'); ?>" /> <img src="<?php echo plugins_url(); ?>/custom-contact-forms/images/wpspin_light.gif" width="16" height="16" class="loading-img" />
933
- </form>
934
- </div>
935
- </div>
936
-
937
- <div id="create-field-options" class="postbox">
938
- <h3 class="hndle"><span>
939
- <?php _e("Create A Field Option", 'custom-contact-forms'); ?>
940
- </span></h3>
941
- <div class="inside">
942
- <form id="ccf-create-field-option" method="post" action="<?php echo $_SERVER['REQUEST_URI']?>">
943
- <ul>
944
- <li>
945
- <label for="object[option_slug]">*
946
- <?php _e("Option Slug:", 'custom-contact-forms'); ?>
947
- </label>
948
- <input maxlength="20" type="text" name="object[option_slug]" />
949
- <br />
950
- <?php _e("Used to identify this option, solely for admin purposes; must be unique, and contain only letters, numbers, and underscores. Example: 'slug_one'", 'custom-contact-forms'); ?>
951
- </li>
952
- <li>
953
- <label for="object[option_label]">*
954
- <?php _e("Option Label:", 'custom-contact-forms'); ?>
955
- </label>
956
- <input type="text" name="object[option_label]" />
957
- <br />
958
- <?php _e("This is what is shown to the user in the dropdown or radio field. Example: 'United States'", 'custom-contact-forms'); ?>
959
- </li>
960
- <li>
961
- <label for="object[option_value]">
962
- <?php _e("Option Value:", 'custom-contact-forms'); ?>
963
- </label>
964
- <input type="text" name="object[option_value]" /> <a href="javascript:void(0)" class="toollink" title="<?php _e("This is the actual value of the option which is not shown to the user. This can be the same thing as the label. An example pairing of label => value is: 'The color green' => 'green' or 'Yes' => '1'.", 'custom-contact-forms'); ?>">(?)</a>
965
- <br />
966
- <?php _e('This is the actual value of the option which is not shown to the user. This can be the same thing as the label. An example pairing of label => value is: "The color green" => "green" or "Yes" => "1".', 'custom-contact-forms'); ?>
967
- </li>
968
- <li>
969
- <label for="object[option_dead]"><?php _e("Is Dead Option:", 'custom-contact-forms'); ?></label>
970
- <select name="object[option_dead]"><option value="0"><?php _e('No', 'custom-contact-forms'); ?></option><option value="1"><?php _e('Yes', 'custom-contact-forms'); ?></option></select>
971
- <a href="javascript:void(0)" class="toollink" title="<?php _e("A dead option is something like 'Please Select One'. This is a useful tool for required dropdown fields. If a dead option is submitted by a user for a required dropdown field, then the user will have to go back and fill out the field again.", 'custom-contact-forms'); ?>">(?)</a>
972
- </li>
973
- <li>
974
- <input name="object_type" type="hidden" value="field_option" />
975
- <input type="submit" class="object-action" name="object_create" value="<?php _e("Create Field Option", 'custom-contact-forms'); ?>" />
976
-
977
- </li>
978
- </ul>
979
- </form>
980
- </div>
981
- </div>
982
- <form class="rate-me" action="https://www.paypal.com/cgi-bin/webscr" method="post">
983
- <input type="hidden" name="cmd" value="_s-xclick">
984
- <input type="hidden" name="hosted_button_id" value="TXYVDCH955V28">
985
- <a href="http://wordpress.org/extend/plugins/custom-contact-forms" title="<?php _e("Rate This Plugin", 'custom-contact-forms'); ?>">
986
- <?php _e("We need your help to continue development! Please <span>rate this plugin</span> to show your support.", 'custom-contact-forms'); ?></a>
987
- <input type="image" src="https://www.paypal.com/en_US/i/btn/btn_donate_SM.gif" border="0" name="submit" alt="PayPal - The safer, easier way to pay online!">
988
- <img alt="Donate to Custom Contact Forms plugin" border="0" src="https://www.paypal.com/en_US/i/scr/pixel.gif" width="1" height="1">
989
- </form>
990
-
991
- <a name="manage-forms"></a>
992
- <h3 class="manage-h3">
993
- <?php _e("Manage Forms", 'custom-contact-forms'); ?>
994
- </h3>
995
- <form class="ccf-edit-ajax" method="post" action="<?php echo $_SERVER['REQUEST_URI']; ?>">
996
- <table class="widefat post" id="manage-forms" cellspacing="0">
997
- <thead>
998
- <tr>
999
- <th scope="col" class="manage-column check-col"><input type="checkbox" class="checkall" /></th>
1000
- <th scope="col" class="manage-column form-code"><?php _e("Form Display Code", 'custom-contact-forms'); ?></th>
1001
- <th scope="col" class="manage-column form-slug"><?php _e("Slug", 'custom-contact-forms'); ?></th>
1002
- <th scope="col" class="manage-column form-slug"><?php _e("Destination Email", 'custom-contact-forms'); ?></th>
1003
- <th scope="col" class="manage-column form-title"><?php _e("Title", 'custom-contact-forms'); ?></th>
1004
- <th scope="col" class="manage-column form-button"><?php _e("Button Text", 'custom-contact-forms'); ?></th>
1005
- <th scope="col" class="manage-column form-style"><?php _e("Style", 'custom-contact-forms'); ?></th>
1006
- <th scope="col" class="manage-column form-expand"></th>
1007
- </tr>
1008
- </thead>
1009
- <tbody>
1010
- <?php
1011
- $forms = parent::selectAllForms();
1012
- for ($i = 0; $i < count($forms); $i++) {
1013
- $form_methods = '<option>Post</option><option>Get</option>';
1014
- $form_methods = str_replace('<option>'.$forms[$i]->form_method.'</option>', '<option selected="selected">'.$forms[$i]->form_method.'</option>', $form_methods);
1015
- $add_fields = $this->getFieldsForm();
1016
- $this_style = parent::selectStyle($forms[$i]->form_style, '');
1017
- $sty_opt = str_replace('<option value="'.$forms[$i]->form_style.'">'.$this_style->style_slug.'</option>', '<option value="'.$forms[$i]->form_style.'" selected="selected">'.$this_style->style_slug.'</option>', $style_options);
1018
- ?>
1019
- <tr class="row-form-<?php echo $forms[$i]->id; ?> <?php if ($i % 2 == 0) echo 'ccf-evenrow'; ?>">
1020
- <td><input type="checkbox" class="object-check" value="1" name="objects[<?php echo $i; ?>][object_do]" /></td>
1021
- <td><span class="ccf-bold">[customcontact form=<?php echo $forms[$i]->id ?>]</span></td>
1022
- <td><input type="text" class="ccf-width75" name="objects[<?php echo $i; ?>][values][form_slug]" value="<?php echo $forms[$i]->form_slug; ?>" /></td>
1023
- <td><input type="text" name="objects[<?php echo $i; ?>][values][form_email]" value="<?php echo $forms[$i]->form_email; ?>" /></td>
1024
- <td><input type="text" class="ccf-width125" name="objects[<?php echo $i; ?>][values][form_title]" value="<?php echo $forms[$i]->form_title; ?>" /></td>
1025
- <td><input class="ccf-width100" type="text" name="objects[<?php echo $i; ?>][values][submit_button_text]" value="<?php echo $forms[$i]->submit_button_text; ?>" /></td>
1026
- <td><select name="objects[<?php echo $i; ?>][values][form_style]" class="form_style_input">
1027
- <?php echo $sty_opt; ?>
1028
- </select></td>
1029
- <td><input class="object-id" type="hidden" name="objects[<?php echo $i; ?>][object_id]" value="<?php echo $forms[$i]->id; ?>" />
1030
- <input type="hidden" class="object-type" name="objects[<?php echo $i; ?>][object_type]" value="form" />
1031
- <span class="form-options-expand"></span>
1032
- </td>
1033
- </tr>
1034
- <tr class="row-form-<?php echo $forms[$i]->id; ?> <?php if ($i % 2 == 0) echo 'ccf-evenrow'; ?>">
1035
- <td class="form-extra-options ccf-center" colspan="8"><table class="form-extra-options-table">
1036
- <tbody>
1037
- <tr>
1038
- <td class="ccf-bold"><?php _e("Method", 'custom-contact-forms'); ?></td>
1039
- <td class="ccf-bold"><?php _e("Form Action", 'custom-contact-forms'); ?></td>
1040
- <td class="ccf-bold"><?php _e("Email Subject", 'custom-contact-forms'); ?></td>
1041
- <td class="ccf-bold"><?php _e("Email From Name", 'custom-contact-forms'); ?></td>
1042
- <td class="ccf-bold"><?php _e("Success Message Title", 'custom-contact-forms'); ?></td>
1043
- <td class="ccf-bold"><?php _e("Success Message", 'custom-contact-forms'); ?></td>
1044
- <td class="ccf-bold"><?php _e("Custom Success URL", 'custom-contact-forms'); ?></td>
1045
- </tr>
1046
- <tr>
1047
- <td><a href="javascript:void(0)" class="toollink" title="<?php _e("The Form Method is the method by which information is transfer through your form. If you aren't an expert with HTML and PHP, leave this as Post.", 'custom-contact-forms'); ?>">(?)</a>
1048
- <select name="objects[<?php echo $i; ?>][values][form_method]">
1049
- <?php echo $form_methods; ?>
1050
- </select></td>
1051
- <td><a href="javascript:void(0)" class="toollink" title="<?php _e("This lets you process your forms through alternate scripts. If you use a service like InfusionSoft or Aweber, set this to be the same form action as the code provided to you by that service, otherwise leave this blank.", 'custom-contact-forms'); ?>">(?)</a>
1052
- <input class="ccf-width100" type="text" name="objects[<?php echo $i; ?>][values][form_action]" value="<?php echo $forms[$i]->form_action; ?>" /></td>
1053
- <td><a href="javascript:void(0)" class="toollink" title="<?php _e("This is the form email subject sent to the destination email address. If left blank, the default from General Settings will be used.", 'custom-contact-forms'); ?>">(?)</a>
1054
- <input class="ccf-width100" type="text" name="objects[<?php echo $i; ?>][values][form_email_subject]" maxlength="250" value="<?php echo $forms[$i]->form_email_subject; ?>" /></td>
1055
- <td><a href="javascript:void(0)" class="toollink" title="<?php _e("This is the from name of the email sent on successful form submission. If left blank, the default from General Settings will be used.", 'custom-contact-forms'); ?>">(?)</a>
1056
- <input class="ccf-width100" type="text" name="objects[<?php echo $i; ?>][values][form_email_name]" maxlength="100" value="<?php echo $forms[$i]->form_email_name; ?>" /></td>
1057
- <td><a href="javascript:void(0)" class="toollink" title="<?php _e("This will be displayed as the header in a popover when the form is filled out successfully when no custom success page is specified; if left blank it will use the default specified in general settings.", 'custom-contact-forms'); ?>">(?)</a>
1058
- <input class="ccf-width100" type="text" name="objects[<?php echo $i; ?>][values][form_success_title]" value="<?php echo $forms[$i]->form_success_title; ?>" /></td>
1059
- <td><a href="javascript:void(0)" class="toollink" title="<?php _e("This will be displayed in a popover when the form is filled out successfully when no custom success page is specified; if left blank it will use the default specified in general settings.", 'custom-contact-forms'); ?>">(?)</a>
1060
- <input type="text" name="objects[<?php echo $i; ?>][values][form_success_message]" class="ccf-width100" value="<?php echo $forms[$i]->form_success_message; ?>" /></td>
1061
- <td><a href="javascript:void(0)" class="toollink" title="<?php _e("If this is filled out, users will be sent to this thank you page when they successfully fill out this form. If it is left blank, a popover showing the form's 'success message' will be displayed on form success.", 'custom-contact-forms'); ?>">(?)</a>
1062
- <input type="text" class="ccf-width100" name="objects[<?php echo $i; ?>][values][form_thank_you_page]" value="<?php echo $forms[$i]->form_thank_you_page; ?>" /></td>
1063
- </tr>
1064
- <tr>
1065
- <td colspan="7"><a href="javascript:void(0)" class="toollink" title="<?php _e("The form display code above ([customcontact form=x]) will only work in Wordpress pages and posts. If you want to display this form in a theme file such as page.php, header.php, index.php, category.php, etc, then insert this PHP snippet.", 'custom-contact-forms'); ?>">(?)</a>
1066
- <label for="theme_code_<?php echo $forms[$i]->id; ?>"><span><?php _e("Code to Display Form in Theme Files:", 'custom-contact-forms'); ?>
1067
- </span></label>
1068
- <input type="text" class="ccf-width225" value="&lt;?php if (function_exists('serveCustomContactForm')) { serveCustomContactForm(<?php echo $forms[$i]->id; ?>); } ?&gt;" name="theme_code_<?php echo $forms[$i]->id; ?>" />
1069
- <a href="javascript:void(0)" class="toollink" title="<?php _e("This field allows you to insert HTML directly after the starting <form> tag.", 'custom-contact-forms'); ?>">(?)</a>
1070
- <label for="objects[<?php echo $i; ?>][values][custom_code]"><?php _e("Custom Code:", 'custom-contact-forms'); ?></label>
1071
- <input name="objects[<?php echo $i; ?>][values][custom_code]" type="text" class="ccf-width100" value="<?php echo $forms[$i]->custom_code; ?>" />
1072
- <a href="javascript:void(0)" class="toollink" title="<?php _e("Insert the page id's that your form will be used on. This will make it so the plugin will only load JS and CSS files on these select pages. This will improve your site's load time.", 'custom-contact-forms'); ?>">(?)</a>
1073
- <label for="objects[<?php echo $i; ?>][values][form_pages]"><?php _e("Form Pages:", 'custom-contact-forms'); ?></label>
1074
- <input name="objects[<?php echo $i; ?>][values][form_pages]" type="text" class="ccf-width75" value="<?php echo $forms[$i]->form_pages; ?>" /></td>
1075
- <input name="objects[<?php echo $i; ?>][values][form_access_update]" type="hidden" value="1" /></td>
1076
- <a href="javascript:void(0)" class="toollink" title="<?php _e("If you want to show this form to only certain types of users, you can uncheck boxes accordingly. To show this form to anyone, check all the boxes. This will only take effect if 'Form Access Capabilities' is enabled in general settings.", 'custom-contact-forms'); ?>">(?)</a>
1077
- <label for="form_access">Can View Form:</label>
1078
-
1079
- <?php
1080
- $roles = parent::getRolesArray();
1081
- $access_array = parent::getFormAccessArray($forms[$i]->form_access);
1082
- foreach ($roles as $role) {
1083
- ?>
1084
- <input type="checkbox" <?php if (parent::formHasRole($access_array, $role)) { echo 'checked="checked"'; } ?> name="objects[<?php echo $i; ?>][values][form_access][]" value="<?php echo $role; ?>" />
1085
- <?php
1086
- echo $role;
1087
- }
1088
- ?>
1089
- </tr>
1090
- <tr>
1091
- <td colspan="7">
1092
- <div class="fattach">
1093
- <div class="form-detach">
1094
- <label for="detach_object_id"><span>
1095
- <?php _e("Attached Fields:", 'custom-contact-forms'); ?>
1096
- </span></label>
1097
- <?php
1098
- $attached_fields = parent::getAttachedFieldsArray($forms[$i]->id);
1099
- if (empty($attached_fields)) echo '<select class="onObject' . $forms[$i]->id . ' objectTypeForm detach-field detach-object" name="objects['.$i.'][detach]"><option value="-1">Nothing Attached!</option></select> ';
1100
- else {
1101
- echo '<select name="objects['.$i.'][detach]" class="onObject' . $forms[$i]->id . ' detach-object detach-field objectTypeForm">';
1102
- foreach($attached_fields as $attached_field) {
1103
- $this_field = parent::selectField($attached_field, '');
1104
- echo $this_field->field_slug . ' <option value="'.$this_field->id.'">'.$this_field->field_slug.'</option>';
1105
- }
1106
- echo '</select>';
1107
- }
1108
- ?>
1109
- <span class="form-detach-check">
1110
- <input type="checkbox" class="detach-check" value="1" name="objects[<?php echo $i; ?>][detach_confirm]" />
1111
- <span class="detach-lang">(Check to detach field)</span>
1112
- </span>
1113
- <br />
1114
- <span class="ccf-red ccf-bold">*</span>
1115
- <?php _e("Attach fields in the order you want them displayed.", 'custom-contact-forms'); ?>
1116
- </div>
1117
- <div class="form-attach">
1118
- <label for="field_id"><span>
1119
- <?php _e("Attach Field:", 'custom-contact-forms'); ?>
1120
- </span></label>
1121
- <select class="onObject<?php echo $forms[$i]->id; ?> attach-object attach-field objectTypeForm" name="objects[<?php echo $i; ?>][attach]">
1122
- <?php echo $add_fields; ?>
1123
- </select>
1124
- <span class="form-attach-check">
1125
- <input class="attach-check" type="checkbox" name="objects[<?php echo $i; ?>][attach_confirm]" value="1" />
1126
- <span class="attach-lang">((Check to attach field)</span>
1127
- </span>
1128
- <br />
1129
- <span class="ccf-red ccf-bold">*</span>
1130
- <?php _e("Attach fixed fields or ones you", 'custom-contact-forms'); ?>
1131
- <a href="#create-fields">
1132
- <?php _e("create", 'custom-contact-forms'); ?>
1133
- </a>. </div></div></td>
1134
- </tr>
1135
- </tbody>
1136
- </table></td>
1137
- </tr>
1138
- <?php
1139
- }
1140
- $remember_check = ($admin_options['remember_field_values'] == 0) ? 'selected="selected"' : '';
1141
- $remember_fields = '<option value="1">'.__('Yes', 'custom-contact-forms').'</option><option '.$remember_check.' value="0">'.__('No', 'custom-contact-forms').'</option>';
1142
- $border_style_options = '<option>solid</option><option>dashed</option>
1143
- <option>grooved</option><option>double</option><option>dotted</option><option>ridged</option><option>none</option>
1144
- <option>inset</option><option>outset</option>';
1145
- ?>
1146
- </tbody>
1147
-
1148
- <tfoot>
1149
- <tr>
1150
- <tr>
1151
- <th scope="col" class="manage-column check-col"><input type="checkbox" class="checkall" /></th>
1152
- <th scope="col" class="manage-column form-code"><?php _e("Form Code", 'custom-contact-forms'); ?></th>
1153
- <th scope="col" class="manage-column form-slug"><?php _e("Slug", 'custom-contact-forms'); ?></th>
1154
- <th scope="col" class="manage-column form-slug"><?php _e("Destination Email", 'custom-contact-forms'); ?></th>
1155
- <th scope="col" class="manage-column form-title"><?php _e("Title", 'custom-contact-forms'); ?></th>
1156
- <th scope="col" class="manage-column form-button"><?php _e("Button Text", 'custom-contact-forms'); ?></th>
1157
- <th scope="col" class="manage-column form-style"><?php _e("Style", 'custom-contact-forms'); ?></th>
1158
- <th scope="col" class="manage-column form-expand"></th>
1159
- </tr>
1160
- </tr>
1161
-
1162
- </tfoot>
1163
- </table>
1164
- <select class="bulk-dropdown" name="object_bulk_action">
1165
- <option value="0"><?php _e('Bulk Actions', 'custom-contact-forms'); ?></option>
1166
- <option value="edit"><?php _e('Save', 'custom-contact-forms'); ?></option>
1167
- <option value="delete"><?php _e('Delete', 'custom-contact-forms'); ?></option></select>
1168
- <input type="submit" name="object_bulk_apply" class="bulk-apply" value="<?php _e('Apply', 'custom-contact-forms'); ?>" /> <img src="<?php echo plugins_url(); ?>/custom-contact-forms/images/wpspin_light.gif" width="16" height="16" class="loading-img" />
1169
- </form>
1170
-
1171
- <a name="create-styles"></a>
1172
- <div id="create-styles" class="postbox">
1173
- <h3 class="hndle"><span>
1174
- <?php _e("Create A Style for Your Forms", 'custom-contact-forms'); ?>
1175
- </span></h3>
1176
- <div class="inside">
1177
- <p>
1178
- <?php _e("Use this manager to create styles for your forms. Each field is already filled out with nice look defaults. It is recommended you simply input a slug and click create to see the defaults before you start changing values.", 'custom-contact-forms'); ?>
1179
- </p>
1180
- <form id="ccf-create-style" method="post" action="<?php echo $_SERVER['REQUEST_URI']; ?>">
1181
- <ul class="style_left">
1182
- <li>
1183
- <label for="style_slug">*
1184
- <?php _e("Style Slug:", 'custom-contact-forms'); ?>
1185
- </label>
1186
- <input type="text" maxlength="30" class="ccf-width75" name="object[style_slug]" />
1187
- <?php _e("(Must be unique)", 'custom-contact-forms'); ?>
1188
- </li>
1189
- <li>
1190
- <label for="title_fontsize">
1191
- <?php _e("Title Font Size:", 'custom-contact-forms'); ?>
1192
- </label>
1193
- <input type="text" maxlength="20" value="1.2em" class="ccf-width75" name="object[title_fontsize]" />
1194
- <?php _e("(ex: 10pt, 10px, 1em)", 'custom-contact-forms'); ?>
1195
- </li>
1196
- <li>
1197
- <label for="title_fontcolor">
1198
- <?php _e("Title Font Color:", 'custom-contact-forms'); ?>
1199
- </label>
1200
- <input type="text" maxlength="20" value="333333" class="ccf-width75 colorfield" name="object[title_fontcolor]" />
1201
- <?php _e("(ex: FF0000)", 'custom-contact-forms'); ?>
1202
- </li>
1203
- <li>
1204
- <label for="label_width">
1205
- <?php _e("Label Width:", 'custom-contact-forms'); ?>
1206
- </label>
1207
- <input type="text" maxlength="20" value="200px" class="ccf-width75" name="object[label_width]" />
1208
- <?php _e("(ex: 100px or 20%)", 'custom-contact-forms'); ?>
1209
- </li>
1210
- <li>
1211
- <label for="label_fontsize">
1212
- <?php _e("Label Font Size:", 'custom-contact-forms'); ?>
1213
- </label>
1214
- <input type="text" maxlength="20" value="1em" class="ccf-width75" name="object[label_fontsize]" />
1215
- <?php _e("(ex: 10px, 10pt, 1em)", 'custom-contact-forms'); ?>
1216
- </li>
1217
- <li>
1218
- <label for="label_fontcolor">
1219
- <?php _e("Label Font Color:", 'custom-contact-forms'); ?>
1220
- </label>
1221
- <input type="text" maxlength="20" value="333333" class="ccf-width75 colorfield" name="object[label_fontcolor]" />
1222
- <?php _e("(ex: FF0000)", 'custom-contact-forms'); ?>
1223
- </li>
1224
- <li>
1225
- <label for="input_width">
1226
- <?php _e("Text Field Width:", 'custom-contact-forms'); ?>
1227
- </label>
1228
- <input type="text" maxlength="20" value="200px" class="ccf-width75" name="object[input_width]" />
1229
- <?php _e("(ex: 100px or 100%)", 'custom-contact-forms'); ?>
1230
- </li>
1231
- <li>
1232
- <label for="textarea_width">
1233
- <?php _e("Textarea Field Width:", 'custom-contact-forms'); ?>
1234
- </label>
1235
- <input type="text" maxlength="20" value="200px" class="ccf-width75" name="object[textarea_width]" />
1236
- <?php _e("(ex: 100px or 100%)", 'custom-contact-forms'); ?>
1237
- </li>
1238
- <li>
1239
- <label for="textarea_height">
1240
- <?php _e("Textarea Field Height:", 'custom-contact-forms'); ?>
1241
- </label>
1242
- <input type="text" maxlength="20" value="90px" class="ccf-width75" name="object[textarea_height]" />
1243
- <?php _e("(ex: 100px or 100%)", 'custom-contact-forms'); ?>
1244
- </li>
1245
- <li>
1246
- <label for="field_fontsize">
1247
- <?php _e("Field Font Size:", 'custom-contact-forms'); ?>
1248
- </label>
1249
- <input type="text" maxlength="20" value="1.3em" class="ccf-width75" name="object[field_fontsize]" />
1250
- <?php _e("(ex: 10px, 10pt, 1em", 'custom-contact-forms'); ?>
1251
- </li>
1252
- <li>
1253
- <label for="field_fontcolor">
1254
- <?php _e("Field Font Color:", 'custom-contact-forms'); ?>
1255
- </label>
1256
- <input type="text" maxlength="20" value="333333" class="ccf-width75 colorfield" name="object[field_fontcolor]" />
1257
- <?php _e("(ex: 333333)", 'custom-contact-forms'); ?>
1258
- </li>
1259
- <li>
1260
- <label for="field_borderstyle">
1261
- <?php _e("Field Border Style:", 'custom-contact-forms'); ?>
1262
- </label>
1263
- <select class="ccf-width75" name="object[field_borderstyle]">
1264
- <?php echo str_replace('<option>solid</option>', '<option selected="selected">solid</option>', $border_style_options); ?>
1265
- </select>
1266
- </li>
1267
- <li>
1268
- <label for="form_margin">
1269
- <?php _e("Form Margin:", 'custom-contact-forms'); ?>
1270
- </label>
1271
- <input type="text" maxlength="20" value="7px" class="ccf-width75" name="object[form_margin]" />
1272
- <?php _e("(ex: 5px or 1em)", 'custom-contact-forms'); ?>
1273
- </li>
1274
- <li>
1275
- <label for="label_margin">
1276
- <?php _e("Label Margin:", 'custom-contact-forms'); ?>
1277
- </label>
1278
- <input type="text" maxlength="20" value="5px" class="ccf-width75" name="object[label_margin]" />
1279
- <?php _e("(ex: 5px or 1em)", 'custom-contact-forms'); ?>
1280
- </li>
1281
- <li>
1282
- <label for="textarea_backgroundcolor">
1283
- <?php _e("Textarea Background Color:", 'custom-contact-forms'); ?>
1284
- </label>
1285
- <input type="text" maxlength="20" value="f5f5f5" class="ccf-width75 colorfield" name="object[textarea_backgroundcolor]" />
1286
- <?php _e("(ex: FF0000)", 'custom-contact-forms'); ?>
1287
- </li>
1288
- <li>
1289
- <label for="success_popover_fontcolor">
1290
- <?php _e("Success Popover Font Color:", 'custom-contact-forms'); ?>
1291
- </label>
1292
- <input type="text" maxlength="20" value="333333" class="ccf-width75 colorfield" name="object[success_popover_fontcolor]" />
1293
- <?php _e("(ex: 333333)", 'custom-contact-forms'); ?>
1294
- </li>
1295
- <li>
1296
- <label for="success_popover_title_fontsize">
1297
- <?php _e("Success Popover Title Font Size:", 'custom-contact-forms'); ?>
1298
- </label>
1299
- <input type="text" maxlength="20" value="15px" class="ccf-width75" name="object[success_popover_title_fontsize]" />
1300
- <?php _e("(ex: 12px, 1em, 100%)", 'custom-contact-forms'); ?>
1301
- </li>
1302
- <li>
1303
- <label for="form_backgroundcolor">
1304
- <?php _e("Form Background Color:", 'custom-contact-forms'); ?>
1305
- </label>
1306
- <input type="text" maxlength="20" value="ffffff" class="ccf-width75 colorfield" name="object[form_backgroundcolor]" />
1307
- <?php _e("(ex: 12px, 1em, 100%)", 'custom-contact-forms'); ?>
1308
- </li>
1309
- <li>
1310
- <label for="tooltip_backgroundcolor">
1311
- <?php _e("Tooltip Background Color:", 'custom-contact-forms'); ?>
1312
- </label>
1313
- <input type="text" maxlength="20" value="000000" class="ccf-width75 colorfield" name="object[tooltip_backgroundcolor]" />
1314
- <?php _e("(ex: 000000 or black)", 'custom-contact-forms'); ?>
1315
- </li>
1316
- </ul>
1317
- <ul class="style_right">
1318
- <li>
1319
- <label for="input_width">
1320
- <?php _e("Field Border Color:", 'custom-contact-forms'); ?>
1321
- </label>
1322
- <input type="text" maxlength="20" value="999999" class="ccf-width75 colorfield" name="object[field_bordercolor]" />
1323
- <?php _e("(ex: 100px or 100%)", 'custom-contact-forms'); ?>
1324
- </li>
1325
- <li>
1326
- <label for="form_borderstyle">
1327
- <?php _e("Form Border Style:", 'custom-contact-forms'); ?>
1328
- </label>
1329
- <select class="ccf-width75" name="object[form_borderstyle]">
1330
- <?php echo $border_style_options; ?>
1331
- </select>
1332
- </li>
1333
- <li>
1334
- <label for="form_bordercolor">
1335
- <?php _e("Form Border Color:", 'custom-contact-forms'); ?>
1336
- </label>
1337
- <input type="text" maxlength="20" value="ffffff" class="ccf-width75 colorfield" name="object[form_bordercolor]" />
1338
- <?php _e("(ex: 000000)", 'custom-contact-forms'); ?>
1339
- </li>
1340
- <li>
1341
- <label for="form_borderwidth">
1342
- <?php _e("Form Border Width:", 'custom-contact-forms'); ?>
1343
- </label>
1344
- <input type="text" maxlength="20" value="0px" class="ccf-width75" name="object[form_borderwidth]" />
1345
- <?php _e("(ex: 1px)", 'custom-contact-forms'); ?>
1346
- </li>
1347
- <li>
1348
- <label for="form_borderwidth">
1349
- <?php _e("Form Width:", 'custom-contact-forms'); ?>
1350
- </label>
1351
- <input type="text" maxlength="20" value="100%" class="ccf-width75" name="object[form_width]" />
1352
- <?php _e("(ex: 100px or 50%)", 'custom-contact-forms'); ?>
1353
- </li>
1354
- <li>
1355
- <label for="form_borderwidth">
1356
- <?php _e("Form Font Family:", 'custom-contact-forms'); ?>
1357
- </label>
1358
- <input type="text" maxlength="120" value="Verdana, tahoma, arial" class="ccf-width75" name="object[form_fontfamily]" />
1359
- <?php _e("(ex: Verdana, Tahoma, Arial)", 'custom-contact-forms'); ?>
1360
- </li>
1361
- <li>
1362
- <label for="submit_width">
1363
- <?php _e("Button Width:", 'custom-contact-forms'); ?>
1364
- </label>
1365
- <input type="text" maxlength="20" value="auto" class="ccf-width75" name="object[submit_width]" />
1366
- <?php _e("(ex: 100px, 30%, auto)", 'custom-contact-forms'); ?>
1367
- </li>
1368
- <li>
1369
- <label for="submit_height">
1370
- <?php _e("Button Height:", 'custom-contact-forms'); ?>
1371
- </label>
1372
- <input type="text" maxlength="20" value="30px" class="ccf-width75" name="object[submit_height]" />
1373
- <?php _e("(ex: 100px or 30%)", 'custom-contact-forms'); ?>
1374
- </li>
1375
- <li>
1376
- <label for="submit_fontsize">
1377
- <?php _e("Button Font Size:", 'custom-contact-forms'); ?>
1378
- </label>
1379
- <input type="text" maxlength="20" value="1.1em" class="ccf-width75" name="object[submit_fontsize]" />
1380
- <?php _e("(ex: 10px, 10pt, 1em)", 'custom-contact-forms'); ?>
1381
- </li>
1382
- <li>
1383
- <label for="submit_fontcolor">
1384
- <?php _e("Button Font Color:", 'custom-contact-forms'); ?>
1385
- </label>
1386
- <input type="text" maxlength="20" value="333333" class="ccf-width75 colorfield" name="object[submit_fontcolor]" />
1387
- <?php _e("(ex: FF0000)", 'custom-contact-forms'); ?>
1388
- </li>
1389
- <li>
1390
- <label for="field_backgroundcolor">
1391
- <?php _e("Field Background Color:", 'custom-contact-forms'); ?>
1392
- </label>
1393
- <input type="text" maxlength="20" value="f5f5f5" class="ccf-width75 colorfield" name="object[field_backgroundcolor]" />
1394
- <?php _e("(ex: FF0000)", 'custom-contact-forms'); ?>
1395
- </li>
1396
- <li>
1397
- <label for="form_padding">
1398
- <?php _e("Form Padding:", 'custom-contact-forms'); ?>
1399
- </label>
1400
- <input type="text" maxlength="20" value="8px" class="ccf-width75" name="object[form_padding]" />
1401
- <?php _e("(ex: 5px or 1em)", 'custom-contact-forms'); ?>
1402
- </li>
1403
- <li>
1404
- <label for="title_margin">
1405
- <?php _e("Title Margin:", 'custom-contact-forms'); ?>
1406
- </label>
1407
- <input type="text" maxlength="20" value="5px" class="ccf-width75" name="object[title_margin]" />
1408
- <?php _e("(ex: 5px or 1em)", 'custom-contact-forms'); ?>
1409
- </li>
1410
- <li>
1411
- <label for="title_margin">
1412
- <?php _e("Dropdown Width:", 'custom-contact-forms'); ?>
1413
- </label>
1414
- <input type="text" maxlength="20" value="auto" class="ccf-width75" name="object[dropdown_width]" />
1415
- <?php _e("(ex: 30px, 20%, or auto)", 'custom-contact-forms'); ?>
1416
- </li>
1417
- <li>
1418
- <label for="success_popover_bordercolor">
1419
- <?php _e("Success Popover Border Color:", 'custom-contact-forms'); ?>
1420
- </label>
1421
- <input type="text" maxlength="20" value="efefef" class="ccf-width75 colorfield" name="object[success_popover_bordercolor]" />
1422
- <?php _e("(ex: FF0000)", 'custom-contact-forms'); ?>
1423
- </li>
1424
- <li>
1425
- <label for="success_popover_fontsize">
1426
- <?php _e("Success Popover Font Size:", 'custom-contact-forms'); ?>
1427
- </label>
1428
- <input type="text" maxlength="20" value="12px" class="ccf-width75" name="object[success_popover_fontsize]" />
1429
- <?php _e("(ex: 12px, 1em, 100%)", 'custom-contact-forms'); ?>
1430
- </li>
1431
- <li>
1432
- <label for="success_popover_height">
1433
- <?php _e("Success Popover Height:", 'custom-contact-forms'); ?>
1434
- </label>
1435
- <input type="text" maxlength="20" value="200px" class="ccf-width75" name="object[success_popover_height]" />
1436
- <?php _e("(ex: 200px, 6em, 50%)", 'custom-contact-forms'); ?>
1437
- </li>
1438
- <li>
1439
- <label for="field_borderround">
1440
- <?php _e("Field Border Roundness:", 'custom-contact-forms'); ?>
1441
- </label>
1442
- <input type="text" maxlength="20" value="6px" class="ccf-width75" name="object[field_borderround]" />
1443
- <?php _e("(ex: 6px, or 0px)", 'custom-contact-forms'); ?>
1444
- </li>
1445
- <li>
1446
- <label for="tooltip_fontsize">
1447
- <?php _e("Tooltip", 'custom-contact-forms'); ?>
1448
- <a href="javascript:void(0)" class="toollink" title="<?php _e("A tooltip is the little box that fades in displaying 'Field Instructions' when a user selects a particular field.", 'custom-contact-forms'); ?>">(?)</a>
1449
- <?php _e("Font Size:", 'custom-contact-forms'); ?>
1450
- </label>
1451
- <input type="text" maxlength="20" value="12px" class="ccf-width75" name="object[tooltip_fontsize]" />
1452
- <?php _e("(ex: 12px, 1em, 100%)", 'custom-contact-forms'); ?>
1453
- </li>
1454
- <li>
1455
- <label for="tooltip_fontcolor">
1456
- <?php _e("Tooltip Font Color:", 'custom-contact-forms'); ?>
1457
- </label>
1458
- <input type="text" maxlength="20" value="ffffff" class="ccf-width75 colorfield" name="object[tooltip_fontcolor]" />
1459
- <?php _e("(ex: ffffff or white)", 'custom-contact-forms'); ?>
1460
- </li>
1461
- <li>
1462
- <input name="object_type" type="hidden" value="style" />
1463
- <input type="submit" value="<?php _e("Create Style", 'custom-contact-forms'); ?>" name="object_create" class="create-button" />
1464
- </li>
1465
- </ul>
1466
- </form>
1467
- </div>
1468
- </div>
1469
- <a name="manage-styles"></a>
1470
- <h3 class="manage-h3">
1471
- <?php _e("Manage Form Styles", 'custom-contact-forms'); ?>
1472
- </h3>
1473
- <form class="ccf-edit-ajax" method="post" action="<?php echo $_SERVER['REQUEST_URI']; ?>">
1474
- <table class="widefat post" id="manage-styles" cellspacing="0">
1475
- <thead>
1476
- <tr>
1477
- <th scope="col" class="manage-column"><input type="checkbox" class="checkall" /></th>
1478
- <th scope="col" class="manage-column"></th>
1479
- <th scope="col" class="manage-column"></th>
1480
- <th scope="col" class="manage-column"></th>
1481
- <th scope="col" class="manage-column"></th>
1482
- <th scope="col" class="manage-column"></th>
1483
- </tr>
1484
- </thead>
1485
- <tbody>
1486
- <?php
1487
- $styles = parent::selectAllStyles();
1488
- $i = 0;
1489
- foreach ($styles as $style) {
1490
- ?>
1491
- <tr class="row-style-<?php echo $style->id; ?> <?php if ($i % 2 == 0) echo 'ccf-evenrow'; ?>">
1492
- <td> <label><input type="checkbox" class="object-check" value="1" name="objects[<?php echo $i; ?>][object_do]" />
1493
- * <?php _e("Slug:", 'custom-contact-forms'); ?>
1494
- </label>
1495
- <input type="text" maxlength="30" value="<?php echo $style->style_slug; ?>" name="objects[<?php echo $i; ?>][values][style_slug]" />
1496
- <br />
1497
- <label>
1498
- <?php _e("Font Family:", 'custom-contact-forms'); ?>
1499
- </label>
1500
- <input type="text" maxlength="120" value="<?php echo $style->form_fontfamily; ?>" name="objects[<?php echo $i; ?>][values][form_fontfamily]" />
1501
- <br />
1502
- <label>
1503
- <?php _e("Textarea Background", 'custom-contact-forms'); ?>
1504
- <br />
1505
- <?php _e("Color:", 'custom-contact-forms'); ?>
1506
- </label>
1507
- <input class="colorfield" type="text" maxlength="20" value="<?php echo $style->textarea_backgroundcolor; ?>" name="objects[<?php echo $i; ?>][values][textarea_backgroundcolor]" />
1508
- <br />
1509
- <label>
1510
- <?php _e("Success Popover", 'custom-contact-forms'); ?>
1511
- <br />
1512
- <?php _e("Border Color:", 'custom-contact-forms'); ?>
1513
- </label>
1514
- <input class="colorfield" type="text" maxlength="20" value="<?php echo $style->success_popover_bordercolor; ?>" name="objects[<?php echo $i; ?>][values][success_popover_bordercolor]" />
1515
- <br />
1516
- <label>
1517
- <?php _e("Tooltip", 'custom-contact-forms'); ?>
1518
- <a href="javascript:void(0)" class="toollink" title="<?php _e("A tooltip is the little box that fades in displaying 'Field Instructions' when a user selects a particular field.", 'custom-contact-forms'); ?>">(?)</a>
1519
- <?php _e("Font Color:", 'custom-contact-forms'); ?>
1520
- </label>
1521
- <input class="colorfield" type="text" maxlength="20" value="<?php echo $style->tooltip_fontcolor; ?>" name="objects[<?php echo $i; ?>][values][tooltip_fontcolor]" />
1522
- </td>
1523
- <td><label>
1524
- <?php _e("Form Width:", 'custom-contact-forms'); ?>
1525
- </label>
1526
- <input type="text" maxlength="20" value="<?php echo $style->form_width; ?>" name="objects[<?php echo $i; ?>][values][form_width]" />
1527
- <br />
1528
- <label>
1529
- <?php _e("Text Field Width:", 'custom-contact-forms'); ?>
1530
- </label>
1531
- <input type="text" maxlength="20" value="<?php echo $style->input_width; ?>" name="objects[<?php echo $i; ?>][values][input_width]" />
1532
- <br />
1533
- <label>
1534
- <?php _e("Textarea Width:", 'custom-contact-forms'); ?>
1535
- </label>
1536
- <input type="text" maxlength="20" value="<?php echo $style->textarea_width; ?>" name="objects[<?php echo $i; ?>][values][textarea_width]" />
1537
- <br />
1538
- <label>
1539
- <?php _e("Textarea Height:", 'custom-contact-forms'); ?>
1540
- </label>
1541
- <input type="text" maxlength="20" value="<?php echo $style->textarea_height; ?>" name="objects[<?php echo $i; ?>][values][textarea_height]" />
1542
- <br />
1543
- <label>
1544
- <?php _e("Dropdown Width:", 'custom-contact-forms'); ?>
1545
- </label>
1546
- <input type="text" maxlength="20" value="<?php echo $style->dropdown_width; ?>" name="objects[<?php echo $i; ?>][values][dropdown_width]" />
1547
- <br />
1548
- <label>
1549
- <?php _e("Label Margin:", 'custom-contact-forms'); ?>
1550
- </label>
1551
- <input type="text" maxlength="20" value="<?php echo $style->label_margin; ?>" name="objects[<?php echo $i; ?>][values][label_margin]" />
1552
- <br />
1553
- <label>
1554
- <?php _e("Success Popover", 'custom-contact-forms'); ?>
1555
- <br />
1556
- <?php _e("Height:", 'custom-contact-forms'); ?>
1557
- </label>
1558
- <input type="text" maxlength="20" value="<?php echo $style->success_popover_height; ?>" name="objects[<?php echo $i; ?>][values][success_popover_height]" />
1559
- <br />
1560
- </td>
1561
- <td><label>
1562
- <?php _e("Label Width:", 'custom-contact-forms'); ?>
1563
- </label>
1564
- <input type="text" maxlength="20" value="<?php echo $style->label_width; ?>" name="objects[<?php echo $i; ?>][values][label_width]" />
1565
- <br />
1566
- <label>
1567
- <?php _e("Button Width:", 'custom-contact-forms'); ?>
1568
- </label>
1569
- <input type="text" maxlength="20" value="<?php echo $style->submit_width; ?>" name="objects[<?php echo $i; ?>][values][submit_width]" />
1570
- <br />
1571
- <label>
1572
- <?php _e("Button Height:", 'custom-contact-forms'); ?>
1573
- </label>
1574
- <input type="text" maxlength="20" value="<?php echo $style->submit_height; ?>" name="objects[<?php echo $i; ?>][values][submit_height]" />
1575
- <br />
1576
- <label>
1577
- <?php _e("Field Background Color:", 'custom-contact-forms'); ?>
1578
- </label>
1579
- <input class="colorfield" type="text" maxlength="20" value="<?php echo $style->field_backgroundcolor; ?>" name="objects[<?php echo $i; ?>][values][field_backgroundcolor]" />
1580
- <br />
1581
- <label>
1582
- <?php _e("Title Margin:", 'custom-contact-forms'); ?>
1583
- </label>
1584
- <input type="text" maxlength="20" value="<?php echo $style->title_margin; ?>" name="objects[<?php echo $i; ?>][values][title_margin]" />
1585
- <br />
1586
- <label>
1587
- <?php _e("Success Popover", 'custom-contact-forms'); ?>
1588
- <br />
1589
- <?php _e("Title Font Size:", 'custom-contact-forms'); ?>
1590
- </label>
1591
- <input type="text" maxlength="20" value="<?php echo $style->success_popover_title_fontsize; ?>" name="objects[<?php echo $i; ?>][values][success_popover_title_fontsize]" />
1592
- <label>
1593
- <?php _e("Form Background Color:", 'custom-contact-forms'); ?>
1594
- </label>
1595
- <input type="text" class="colorfield" maxlength="20" value="<?php echo $style->form_backgroundcolor; ?>" name="objects[<?php echo $i; ?>][values][form_backgroundcolor]" />
1596
- </td>
1597
- <td><label>
1598
- <?php _e("Title Font Size:", 'custom-contact-forms'); ?>
1599
- </label>
1600
- <input type="text" maxlength="20" value="<?php echo $style->title_fontsize; ?>" name="objects[<?php echo $i; ?>][values][title_fontsize]" />
1601
- <br />
1602
- <label>
1603
- <?php _e("Label Font Size:", 'custom-contact-forms'); ?>
1604
- </label>
1605
- <input type="text" maxlength="20" value="<?php echo $style->label_fontsize; ?>" name="objects[<?php echo $i; ?>][values][label_fontsize]" />
1606
- <br />
1607
- <label>
1608
- <?php _e("Field Font Size:", 'custom-contact-forms'); ?>
1609
- </label>
1610
- <input type="text" maxlength="20" value="<?php echo $style->field_fontsize; ?>" name="objects[<?php echo $i; ?>][values][field_fontsize]" />
1611
- <br />
1612
- <label>
1613
- <?php _e("Button Font Size:", 'custom-contact-forms'); ?>
1614
- </label>
1615
- <input type="text" maxlength="20" value="<?php echo $style->submit_fontsize; ?>" name="objects[<?php echo $i; ?>][values][submit_fontsize]" />
1616
- <br />
1617
- <label>
1618
- <?php _e("Form Padding:", 'custom-contact-forms'); ?>
1619
- </label>
1620
- <input type="text" maxlength="20" value="<?php echo $style->form_padding; ?>" name="objects[<?php echo $i; ?>][values][form_padding]" />
1621
- <br />
1622
- <label>
1623
- <?php _e("Success Popover", 'custom-contact-forms'); ?>
1624
- <br />
1625
- <?php _e("Font Size:", 'custom-contact-forms'); ?>
1626
- </label>
1627
- <input type="text" maxlength="20" value="<?php echo $style->success_popover_fontsize; ?>" name="objects[<?php echo $i; ?>][values][success_popover_fontsize]" />
1628
- <br />
1629
- <label>
1630
- <?php _e("Tooltip", 'custom-contact-forms'); ?>
1631
- <a href="javascript:void(0)" class="toollink" title="<?php _e("A tooltip is the little box that fades in displaying 'Field Instructions' when a user selects a particular field.", 'custom-contact-forms'); ?>">(?)</a>
1632
- <?php _e("Background Color:", 'custom-contact-forms'); ?>
1633
- </label>
1634
- <input class="colorfield" type="text" maxlength="20" value="<?php echo $style->tooltip_backgroundcolor; ?>" name="objects[<?php echo $i; ?>][values][tooltip_backgroundcolor]" />
1635
- </td>
1636
- <td><label>
1637
- <?php _e("Title Font Color:", 'custom-contact-forms'); ?>
1638
- </label>
1639
- <input class="colorfield" type="text" maxlength="20" value="<?php echo $style->title_fontcolor; ?>" name="objects[<?php echo $i; ?>][values][title_fontcolor]" />
1640
- <br />
1641
- <label>
1642
- <?php _e("Label Font Color:", 'custom-contact-forms'); ?>
1643
- </label>
1644
- <input class="colorfield" type="text" maxlength="20" value="<?php echo $style->label_fontcolor; ?>" name="objects[<?php echo $i; ?>][values][label_fontcolor]" />
1645
- <br />
1646
- <label>
1647
- <?php _e("Field Font Color:", 'custom-contact-forms'); ?>
1648
- </label>
1649
- <input class="colorfield" type="text" maxlength="20" value="<?php echo $style->field_fontcolor; ?>" name="objects[<?php echo $i; ?>][values][field_fontcolor]" />
1650
- <br />
1651
- <label>
1652
- <?php _e("Button Font Color:", 'custom-contact-forms'); ?>
1653
- </label>
1654
- <input class="colorfield" type="text" maxlength="20" value="<?php echo $style->submit_fontcolor; ?>" name="objects[<?php echo $i; ?>][values][submit_fontcolor]" />
1655
- <br />
1656
- <label>
1657
- <?php _e("Form Margin:", 'custom-contact-forms'); ?>
1658
- </label>
1659
- <input type="text" maxlength="20" value="<?php echo $style->form_margin; ?>" name="objects[<?php echo $i; ?>][values][form_margin]" />
1660
- <br />
1661
- <label>
1662
- <?php _e("Success Popover", 'custom-contact-forms'); ?>
1663
- <br />
1664
- <?php _e("Font Color:", 'custom-contact-forms'); ?>
1665
- </label>
1666
- <input class="colorfield" type="text" maxlength="20" value="<?php echo $style->success_popover_fontcolor; ?>" name="objects[<?php echo $i; ?>][values][success_popover_fontcolor]" />
1667
- <br />
1668
- <label>
1669
- <?php _e("Tooltip Font Size:", 'custom-contact-forms'); ?>
1670
- </label>
1671
- <input type="text" maxlength="20" value="<?php echo $style->tooltip_fontsize; ?>" name="objects[<?php echo $i; ?>][values][tooltip_fontsize]" />
1672
- </td>
1673
- <td><label>
1674
- <?php _e("Form Border Style:", 'custom-contact-forms'); ?>
1675
- </label>
1676
- <select name="object[form_borderstyle]">
1677
- <?php echo str_replace('<option>'.$style->form_borderstyle.'</option>', '<option selected="selected">'.$style->form_borderstyle.'</option>', $border_style_options); ?>
1678
- </select>
1679
- <br />
1680
- <label>
1681
- <?php _e("Form Border Width:", 'custom-contact-forms'); ?>
1682
- </label>
1683
- <input type="text" maxlength="20" value="<?php echo $style->form_borderwidth; ?>" name="objects[<?php echo $i; ?>][values][form_borderwidth]" />
1684
- <br />
1685
- <label>
1686
- <?php _e("Form Border Color:", 'custom-contact-forms'); ?>
1687
- </label>
1688
- <input class="colorfield" type="text" maxlength="20" value="<?php echo $style->form_bordercolor; ?>" name="objects[<?php echo $i; ?>][values][form_bordercolor]" />
1689
- <br />
1690
- <label>
1691
- <?php _e("Field Border Color:", 'custom-contact-forms'); ?>
1692
- </label>
1693
- <input class="colorfield" type="text" maxlength="20" value="<?php echo $style->field_bordercolor; ?>" name="objects[<?php echo $i; ?>][values][field_bordercolor]" />
1694
- <br />
1695
- <label>
1696
- <?php _e("Field Border Style:", 'custom-contact-forms'); ?>
1697
- </label>
1698
- <select name="objects[<?php echo $i; ?>][values][field_borderstyle]">
1699
- <?php echo str_replace('<option>'.$style->field_borderstyle.'</option>', '<option selected="selected">'.$style->field_borderstyle.'</option>', $border_style_options); ?>
1700
- </select>
1701
- <br />
1702
- <label>
1703
- <?php _e("Success Popover", 'custom-contact-forms'); ?>
1704
- <br />
1705
- <?php _e("Title Font Color:", 'custom-contact-forms'); ?>
1706
- </label>
1707
- <input class="colorfield" type="text" maxlength="20" value="<?php echo $style->success_popover_title_fontcolor; ?>" name="objects[<?php echo $i; ?>][values][success_popover_title_fontcolor]" />
1708
- <br />
1709
- <label>
1710
- <?php _e("Field Border Roundness:", 'custom-contact-forms'); ?>
1711
- </label>
1712
- <input name="objects[<?php echo $i; ?>][values][field_borderround]" value="<?php echo $style->field_borderround; ?>" type="text" maxlength="20" />
1713
- <br />
1714
- <input type="hidden" name="objects[<?php echo $i; ?>][object_type]" value="style" />
1715
- <input class="object-id" name="objects[<?php echo $i; ?>][object_id]" type="hidden" value="<?php echo $style->id; ?>" />
1716
- </td>
1717
- </tr>
1718
- <?php
1719
- $i++;
1720
- }
1721
- ?>
1722
- </tbody>
1723
- <tfoot>
1724
- <tr>
1725
- <th scope="col" class="manage-column"><input type="checkbox" class="checkall" /></th>
1726
- <th scope="col" class="manage-column"></th>
1727
- <th scope="col" class="manage-column"></th>
1728
- <th scope="col" class="manage-column"></th>
1729
- <th scope="col" class="manage-column"></th>
1730
- <th scope="col" class="manage-column"></th>
1731
- </tr>
1732
- </tfoot>
1733
- </table>
1734
- <select class="bulk-dropdown" name="object_bulk_action">
1735
- <option value="0"><?php _e('Bulk Actions', 'custom-contact-forms'); ?></option>
1736
- <option value="edit"><?php _e('Save', 'custom-contact-forms'); ?></option>
1737
- <option value="delete"><?php _e('Delete', 'custom-contact-forms'); ?></option></select>
1738
- <input type="submit" name="object_bulk_apply" class="bulk-apply" value="<?php _e('Apply', 'custom-contact-forms'); ?>" /> <img src="<?php echo plugins_url(); ?>/custom-contact-forms/images/wpspin_light.gif" width="16" height="16" class="loading-img" />
1739
- </form>
1740
- <a name="contact-author"></a>
1741
- <div id="contact-author" class="postbox">
1742
- <h3 class="hndle"><span>
1743
- <?php _e("Report a Bug/Suggest a Feature", 'custom-contact-forms'); ?>
1744
- </span></h3>
1745
- <div class="inside">
1746
- <form method="post" action="<?php echo $_SERVER['REQUEST_URI']; ?>">
1747
- <ul>
1748
- <li>
1749
- <label for="name">
1750
- <?php _e("Your Name:", 'custom-contact-forms'); ?>
1751
- </label>
1752
- <input id="name" type="text" name="name" maxlength="100" />
1753
- </li>
1754
- <li>
1755
- <label for="email">
1756
- <?php _e("Your Email:", 'custom-contact-forms'); ?>
1757
- </label>
1758
- <input id="email" type="text" value="<?php echo get_option('admin_email'); ?>" name="email" maxlength="100" />
1759
- </li>
1760
- <li>
1761
- <label for="host">
1762
- <?php _e("Who Hosts Your Website?", 'custom-contact-forms'); ?>
1763
- </label>
1764
- <input id="host" type="text" name="host" maxlength="150" />
1765
- </li>
1766
- <li>
1767
- <label for="message">*
1768
- <?php _e("Your Message:", 'custom-contact-forms'); ?>
1769
- </label>
1770
- <textarea id="message" name="message"></textarea>
1771
- </li>
1772
- <li>
1773
- <label for="type">*
1774
- <?php _e("Purpose of this message:", 'custom-contact-forms'); ?>
1775
- </label>
1776
- <select id="type" name="type">
1777
- <option>
1778
- <?php _e("Bug Report", 'custom-contact-forms'); ?>
1779
- </option>
1780
- <option>
1781
- <?php _e("Suggest a Feature", 'custom-contact-forms'); ?>
1782
- </option>
1783
- <option>
1784
- <?php _e("Plugin Question", 'custom-contact-forms'); ?>
1785
- </option>
1786
- </select>
1787
- </li>
1788
- <li>
1789
- <label for="ccf-version">
1790
- <?php _e("Version of Custom Contact Forms?", 'custom-contact-forms'); ?>
1791
- </label>
1792
- <input id="ccf-version" type="text" name="ccf-version" maxlength="50" />
1793
- </li>
1794
- <li>
1795
- <label for="wp-version">
1796
- <?php _e("Version of WordPress?", 'custom-contact-forms'); ?>
1797
- </label>
1798
- <input id="wp-version" type="text" name="wp-version" maxlength="50" />
1799
- </li>
1800
- </ul>
1801
- <p>
1802
- <input type="submit" name="contact_author" value="<?php _e("Send Message", 'custom-contact-forms'); ?>" />
1803
- </p>
1804
- </form>
1805
- </div>
1806
- </div>
1807
- <a name="custom-html"></a>
1808
- <div id="custom-html" class="postbox">
1809
- <h3 class="hndle"><span>
1810
- <?php _e("Custom HTML Forms (Advanced)", 'custom-contact-forms'); ?>
1811
- </span></h3>
1812
- <div class="inside">
1813
- <p>
1814
- <?php _e("If you know HTML and simply want to use this plugin to process form requests, this feature is for you.
1815
- The following HTML is a the framework to which you must adhere. In order for your form to work you MUST do the following: a) Keep the form action/method the same (yes the action is supposed to be empty), b) Include all the hidden fields shown below, c) provide a
1816
- hidden field with a success message or thank you page (both hidden fields are included below, you must choose one or the other and fill in the value part of the input field appropriately.", 'custom-contact-forms'); ?>
1817
- </p>
1818
- <textarea id="custom_html_textarea">
1819
- &lt;form method=&quot;post&quot; action=&quot;&quot;&gt;
1820
- &lt;input type=&quot;hidden&quot; name=&quot;ccf_customhtml&quot; value=&quot;1&quot; /&gt;
1821
- &lt;input type=&quot;hidden&quot; name=&quot;success_message&quot; value=&quot;<?php _e("Thank you for filling out our form!", 'custom-contact-forms'); ?>&quot; /&gt;
1822
- &lt;input type=&quot;hidden&quot; name=&quot;thank_you_page&quot; value=&quot;http://www.google.com&quot; /&gt;
1823
- &lt;input type=&quot;hidden&quot; name=&quot;destination_email&quot; value=&quot;<?php echo $admin_options['default_to_email']; ?>&quot; /&gt;
1824
- &lt;input type=&quot;hidden&quot; name=&quot;required_fields&quot; value=&quot;field_name1, field_name2&quot; /&gt;
1825
-
1826
- &lt;!-- <?php _e("Paste all this code into a page or post and edit it to your liking. It is recommended you only use this feature if you are experienced with HTML. The destination_email
1827
- field specifies where emails will be sent on successful submission; you can have the form send to multiple addresses by separating email's with semi-colons (i.e. email@google.com; email2@google.com).
1828
- The success_message field will add a popover containing the message when the form is completed successfully, the thank_you_page field will force
1829
- the user to be redirected to that specific page on successful form completion. The required_fields hidden field is optional; to use it seperate
1830
- the field names you want required by commas. Remember to use underscores instead of spaces in field names!", 'custom-contact-forms'); ?> --&gt;
1831
-
1832
- &lt;/form&gt;</textarea>
1833
- </div>
1834
- </div>
1835
- <a name="plugin-news"></a>
1836
- <div id="plugin-news" class="postbox">
1837
- <h3 class="hndle"><span>
1838
- <?php _e("Custom Contact Forms Plugin News", 'custom-contact-forms'); ?>
1839
- </span></h3>
1840
- <div class="inside">
1841
- <?php $this->displayPluginNewsFeed(); ?>
1842
- </div>
1843
- </div>
1844
- <?php $this->insertUsagePopover(); ?>
1845
- <?php $this->insertQuickStartPopover(); ?>
1846
- </div>
1847
- <?php
1848
- }
1849
-
1850
- function printFormSubmissionsPage() {
1851
- $this->handleAdminPostRequests();
1852
- if ($admin_options['show_install_popover'] == 1) {
1853
- $admin_options['show_install_popover'] = 0;
1854
- ?>
1855
- <script type="text/javascript" language="javascript">
1856
- $j(document).ready(function() {
1857
- showCCFUsagePopover();
1858
- });
1859
- </script>
1860
- <?php
1861
- update_option(parent::getAdminOptionsName(), $admin_options);
1862
- } /*if ($_POST['form_submission_delete']) {
1863
- if (parent::deleteUserData($_POST['uid']) != false)
1864
- $this->action_complete = __('A form submission has be successfully deleted!', 'custom-contact-forms');
1865
- }*/
1866
- ccf_utils::load_module('export/custom-contact-forms-user-data.php');
1867
- $user_data_array = parent::selectAllUserData();
1868
- ?>
1869
- <div id="customcontactforms-admin">
1870
- <div class="plugin-header">
1871
- <h2>
1872
- <?php _e("Custom Contact Forms", 'custom-contact-forms'); ?>
1873
- </h2>
1874
- <input type="button" class="quick-start-button" value="<?php _e("Quick Start Guide", 'custom-contact-forms'); ?>" />
1875
- <input type="button" class="usage-popover-button" value="<?php _e("Plugin Usage Manual", 'custom-contact-forms'); ?>" />
1876
- </div>
1877
- <a class="genesis" href="http://www.shareasale.com/r.cfm?b=241369&u=481196&m=28169&urllink=&afftrack=">Custom Contact Forms works best with any of the 20+ <span>Genesis</span> Wordpress child themes. The <span>Genesis Framework</span> empowers you to quickly and easily build incredible websites with WordPress.</a>
1878
-
1879
- <form class="blog-horizontal-form" method="post" action="http://www.aweber.com/scripts/addlead.pl">
1880
- <input type="hidden" name="meta_web_form_id" value="1578604781" />
1881
- <input type="hidden" name="meta_split_id" value="" />
1882
- <input type="hidden" name="listname" value="ccf-plugin" />
1883
- <input type="hidden" name="redirect" value="http://www.taylorlovett.com/wordpress-plugins/tutorials-offers-tips/" id="redirect_5832e41084448adb07da67a35dc83c27" />
1884
- <input type="hidden" name="meta_adtracking" value="CCF_-_Wordpress_Plugins_Horizontal" />
1885
- <input type="hidden" name="meta_message" value="1" />
1886
- <input type="hidden" name="meta_required" value="name,email" />
1887
- <span>WP Blogging Tips, Downloads, SEO Tricks & Exclusive Tutorials</span>
1888
- <input type="text" name="name" value="Your Name" onclick="value=''" />
1889
- <input type="text" name="email" value="Your Email" onclick="value=''" />
1890
- <input type="submit" value="Sign Up for Free" />
1891
- </form>
1892
- <?php if (!empty($this->action_complete)) { ?>
1893
- <div class="action-complete">
1894
- <?php echo $this->action_complete; ?>
1895
- </div>
1896
- <?php } ?>
1897
- <h3 class="hndle"><span>
1898
- <?php _e("Saved Form Submissions", 'custom-contact-forms'); ?>
1899
- </span></h3>
1900
- <form class="ccf-edit-ajax" method="post" action="<?php echo $_SERVER['REQUEST_URI']; ?>">
1901
- <table class="widefat post" id="form-submissions-table" cellspacing="0">
1902
- <thead>
1903
- <tr>
1904
- <th scope="col" class="manage-column ccf-width25"><input type="checkbox" class="checkall" /></th>
1905
- <th scope="col" class="manage-column ccf-width250"><?php _e("Date Submitted", 'custom-contact-forms'); ?></th>
1906
- <th scope="col" class="manage-column ccf-width150"><?php _e("Form Submitted", 'custom-contact-forms'); ?></th>
1907
- <th scope="col" class="manage-column ccf-width250"><?php _e("Form Page", 'custom-contact-forms'); ?></th>
1908
- <th scope="col" class="manage-column "></th>
1909
- </tr>
1910
- </thead>
1911
- <tbody>
1912
- <?php
1913
- $i = 0;
1914
- foreach ($user_data_array as $data_object) {
1915
- $data = new CustomContactFormsUserData(array('form_id' => $data_object->data_formid, 'data_time' => $data_object->data_time, 'form_page' => $data_object->data_formpage, 'encoded_data' => $data_object->data_value));
1916
- ?>
1917
- <tr class="row-form_submission-<?php echo $data_object->id; ?> submission-top <?php if ($i % 2 == 0) echo 'ccf-evenrow'; ?>">
1918
- <td><input type="checkbox" class="object-check" value="1" name="objects[<?php echo $i; ?>][object_do]" /></td>
1919
- <td><?php echo date('F d, Y h:i:s A', $data->getDataTime()); ?></td>
1920
- <td><?php
1921
- if ($data->getFormID() > 0) {
1922
- $data_form = parent::selectForm($data->getFormID());
1923
- $this_form = (!empty($data_form->form_slug)) ? $data_form->form_slug : '-';
1924
- echo $this_form;
1925
- } else
1926
- _e('Custom HTML Form', 'custom-contact-forms');
1927
- ?>
1928
- </td>
1929
- <td><?php echo $data->getFormPage(); ?> </td>
1930
- <td class="ccf-alignright">
1931
- <span class="submission-content-expand"></span>
1932
- <input type="hidden" name="objects[<?php echo $i; ?>][object_type]" value="form_submission" />
1933
- <input class="object-id" type="hidden" name="objects[<?php echo $i; ?>][object_id]" value="<?php echo $data_object->id; ?>" />
1934
- </td>
1935
- </tr>
1936
- <tr class="row-form_submission-<?php echo $data_object->id; ?> submission-content <?php if ($i % 2 == 0) echo 'ccf-evenrow'; ?>">
1937
- <td colspan="5"><ul>
1938
- <?php
1939
- $data_array = $data->getDataArray();
1940
- foreach ($data_array as $item_key => $item_value) {
1941
- ?>
1942
- <li>
1943
- <div><?php echo $item_key; ?></div>
1944
- <p><?php echo $item_value; ?></p>
1945
- </li>
1946
- <?php
1947
- }
1948
- ?>
1949
- </ul></td>
1950
- </tr>
1951
- <?php
1952
- $i++;
1953
- }
1954
- ?>
1955
- </tbody>
1956
- <tfoot>
1957
- <tr>
1958
- <th scope="col" class="manage-column25"><input type="checkbox" class="checkall" /></th>
1959
- <th scope="col" class="manage-column ccf-width250"><?php _e("Date Submitted", 'custom-contact-forms'); ?></th>
1960
- <th scope="col" class="manage-column ccf-width150"><?php _e("Form Submitted", 'custom-contact-forms'); ?></th>
1961
- <th scope="col" class="manage-column ccf-width250"><?php _e("Form Page", 'custom-contact-forms'); ?></th>
1962
- <th scope="col" class="manage-column"></th>
1963
- </tr>
1964
- </tfoot>
1965
- </table>
1966
-
1967
- <select class="bulk-dropdown" name="object_bulk_action">
1968
- <option value="0"><?php _e('Bulk Actions', 'custom-contact-forms'); ?></option>
1969
- <option value="delete"><?php _e('Delete', 'custom-contact-forms'); ?></option>
1970
- </select> <input type="submit" class="bulk-apply" name="object_bulk_apply" value="<?php _e('Apply', 'custom-contact-forms'); ?>" /> <img src="<?php echo plugins_url(); ?>/custom-contact-forms/images/wpspin_light.gif" class="loading-img" width="16" height="16" />
1971
-
1972
-
1973
-
1974
- </form>
1975
- <?php $this->insertUsagePopover(); ?>
1976
- <?php $this->insertQuickStartPopover(); ?>
1977
- </div>
1978
- <?php
1979
- }
1980
-
1981
- function printSettingsPage() {
1982
- $admin_options = parent::getAdminOptions();
1983
- if ($admin_options['show_install_popover'] == 1) {
1984
- $admin_options['show_install_popover'] = 0;
1985
- ?>
1986
- <script type="text/javascript" language="javascript">
1987
- $j(document).ready(function() {
1988
- showCCFUsagePopover();
1989
- });
1990
- </script>
1991
- <?php
1992
- update_option(parent::getAdminOptionsName(), $admin_options);
1993
- } if ($_POST['general_settings']) {
1994
- $_POST['settings'] = array_map(array('ccf_utils', 'encodeOption'), $_POST['settings']);
1995
- $admin_options = array_merge($admin_options, $_POST['settings']);
1996
- $admin_options[show_widget_categories] = $_POST['settings']['show_widget_categories'];
1997
- $admin_options[show_widget_singles] = $_POST['settings']['show_widget_singles'];
1998
- $admin_options[show_widget_pages] = $_POST['settings']['show_widget_pages'];
1999
- $admin_options[show_widget_archives] = $_POST['settings']['show_widget_archives'];
2000
- $admin_options[show_widget_home] = $_POST['settings']['show_widget_home'];
2001
- $this->action_complete = __('Your settings have been successfully saved!', 'custom-contact-forms');
2002
- update_option(parent::getAdminOptionsName(), $admin_options);
2003
- } elseif ($_POST['configure_mail']) {
2004
- $_POST['mail_config'] = array_map(array('ccf_utils', 'encodeOption'), $_POST['mail_config']);
2005
- $admin_options = array_merge($admin_options, $_POST['mail_config']);
2006
- $this->action_complete = __('Your mail settings have been successfully saved!', 'custom-contact-forms');
2007
- update_option(parent::getAdminOptionsName(), $admin_options);
2008
- }
2009
- ccf_utils::load_module('export/custom-contact-forms-export.php');
2010
- ?>
2011
- <div id="customcontactforms-admin">
2012
- <div class="plugin-header">
2013
- <h2>
2014
- <?php _e("Custom Contact Forms", 'custom-contact-forms'); ?>
2015
- </h2>
2016
- <input type="button" class="quick-start-button" value="<?php _e("Quick Start Guide", 'custom-contact-forms'); ?>" />
2017
- <input type="button" class="usage-popover-button" value="<?php _e("Plugin Usage Manual", 'custom-contact-forms'); ?>" />
2018
- </div>
2019
- <a class="genesis" href="http://www.shareasale.com/r.cfm?b=241369&u=481196&m=28169&urllink=&afftrack=">Custom Contact Forms works best with any of the 20+ <span>Genesis</span> Wordpress child themes. The <span>Genesis Framework</span> empowers you to quickly and easily build incredible websites with WordPress.</a>
2020
-
2021
- <form class="blog-horizontal-form" method="post" action="http://www.aweber.com/scripts/addlead.pl">
2022
- <input type="hidden" name="meta_web_form_id" value="1578604781" />
2023
- <input type="hidden" name="meta_split_id" value="" />
2024
- <input type="hidden" name="listname" value="ccf-plugin" />
2025
- <input type="hidden" name="redirect" value="http://www.taylorlovett.com/wordpress-plugins/tutorials-offers-tips/" id="redirect_5832e41084448adb07da67a35dc83c27" />
2026
- <input type="hidden" name="meta_adtracking" value="CCF_-_Wordpress_Plugins_Horizontal" />
2027
- <input type="hidden" name="meta_message" value="1" />
2028
- <input type="hidden" name="meta_required" value="name,email" />
2029
- <span>WP Blogging Tips, Downloads, SEO Tricks & Exclusive Tutorials</span>
2030
- <input type="text" name="name" value="Your Name" onclick="value=''" />
2031
- <input type="text" name="email" value="Your Email" onclick="value=''" />
2032
- <input type="submit" value="Sign Up for Free" />
2033
- </form>
2034
-
2035
- <?php if (!empty($this->action_complete)) { ?>
2036
- <div class="action-complete">
2037
- <?php echo $this->action_complete; ?>
2038
- </div>
2039
- <?php } ?>
2040
-
2041
- <div id="general-settings" class="postbox">
2042
- <h3 class="hndle"><span>
2043
- <?php _e("General Settings", 'custom-contact-forms'); ?>
2044
- </span></h3>
2045
- <div class="inside">
2046
- <form method="post" action="<?php echo $_SERVER['REQUEST_URI']; ?>">
2047
- <ul class="gleft">
2048
- <li>
2049
- <label for="email_form_submissions">
2050
- <?php _e("Email Form Submissions:", 'custom-contact-forms'); ?>
2051
- </label>
2052
- <select name="settings[email_form_submissions]">
2053
- <option value="1">
2054
- <?php _e("Yes", 'custom-contact-forms'); ?>
2055
- </option>
2056
- <option value="0" <?php if ($admin_options['email_form_submissions'] == 0) echo 'selected="selected"'; ?>>
2057
- <?php _e("No", 'custom-contact-forms'); ?>
2058
- </option>
2059
- </select>
2060
- </li>
2061
- <li class="descrip">
2062
- <?php _e("When a user fills out one of your forms, the info submitted is saved in the Saved Form Submission section of the admin panel for you to view. If this is enabled, you will also be sent an email containing the submission info.", 'custom-contact-forms'); ?>
2063
- </li>
2064
- <li>
2065
- <label for="default_to_email">
2066
- <?php _e("Default Email:", 'custom-contact-forms'); ?>
2067
- </label>
2068
- <input name="settings[default_to_email]" value="<?php echo $admin_options['default_to_email']; ?>" type="text" maxlength="100" />
2069
- </li>
2070
- <li class="descrip">
2071
- <?php _e("Form emails will be sent <span>to</span> this address, if no destination email is specified by the form.", 'custom-contact-forms'); ?>
2072
- </li>
2073
- <li>
2074
- <label for="enable_jquery">
2075
- <?php _e("Front End JQuery:", 'custom-contact-forms'); ?>
2076
- </label>
2077
- <select name="settings[enable_jquery]">
2078
- <option value="1">
2079
- <?php _e("Enabled", 'custom-contact-forms'); ?>
2080
- </option>
2081
- <option <?php if ($admin_options['enable_jquery'] != 1) echo 'selected="selected"'; ?> value="0">
2082
- <?php _e("Disabled", 'custom-contact-forms'); ?>
2083
- </option>
2084
- </select>
2085
- </li>
2086
- <li class="descrip">
2087
- <?php _e("Some plugins don't setup JQuery correctly, so when any other plugin uses JQuery (whether correctly or not), JQuery works for neither plugin. This plugin uses JQuery correctly. If another plugin isn't using JQuery correctly but is more important to you than this one: disable this option. 99% of this plugin's functionality will work without JQuery, just no field instruction tooltips.", 'custom-contact-forms'); ?>
2088
- </li>
2089
- <li>
2090
- <label for="default_from_email">
2091
- <?php _e("Default From Email:", 'custom-contact-forms'); ?>
2092
- </label>
2093
- <input name="settings[default_from_email]" value="<?php echo $admin_options['default_from_email']; ?>" type="text" maxlength="100" />
2094
- </li>
2095
- <li class="descrip">
2096
- <?php _e("Form emails will be sent <span>from</span> this address. It is recommended you provide a real email address that has been created through your host.", 'custom-contact-forms'); ?>
2097
- </li>
2098
- <li>
2099
- <label for="default_from_name">
2100
- <?php _e("Default From Name:", 'custom-contact-forms'); ?>
2101
- </label>
2102
- <input name="settings[default_from_name]" value="<?php echo $admin_options['default_from_name']; ?>" type="text" maxlength="100" />
2103
- </li>
2104
- <li class="descrip">
2105
- <?php _e("This setting allows you to specify the name under which form emails are sent. The default is 'Custom Contact Forms'.", 'custom-contact-forms'); ?>
2106
- </li>
2107
- <li>
2108
- <label for="default_form_subject">
2109
- <?php _e("Default Email Subject:", 'custom-contact-forms'); ?>
2110
- </label>
2111
- <input name="settings[default_form_subject]" value="<?php echo $admin_options['default_form_subject']; ?>" type="text" />
2112
- </li>
2113
- <li class="descrip">
2114
- <?php _e("Default subject to be included in all form emails.", 'custom-contact-forms'); ?>
2115
- </li>
2116
- <li>
2117
- <label for="enable_dashboard_widget">
2118
- <?php _e("Enable Dashboard Widget:", 'custom-contact-forms'); ?>
2119
- </label>
2120
- <select name="settings[enable_dashboard_widget]">
2121
- <option value="1">
2122
- <?php _e("Enabled", 'custom-contact-forms'); ?>
2123
- </option>
2124
- <option value="0" <?php if ($admin_options['enable_dashboard_widget'] == 0) echo 'selected="selected"'; ?>>
2125
- <?php _e("Disabled", 'custom-contact-forms'); ?>
2126
- </option></select>
2127
- </li>
2128
- <li class="descrip">
2129
- <?php _e("Enabling this will display a widget on your dashboard that shows the latest form submissions.", 'custom-contact-forms'); ?>
2130
- </li>
2131
- <li>
2132
- <label for="dashboard_access">
2133
- <?php _e("Dashboard Widget Accessibility:", 'custom-contact-forms'); ?>
2134
- </label>
2135
- <select name="settings[dashboard_access]">
2136
- <option value="2">
2137
- <?php _e("Only admins can view", 'custom-contact-forms'); ?>
2138
- </option>
2139
- <option value="1" <?php if ($admin_options['dashboard_access'] == 1) echo 'selected="selected"'; ?>>
2140
- <?php _e("All roles except subscribers can view", 'custom-contact-forms'); ?>
2141
- </option>
2142
- <option value="0" <?php if ($admin_options['dashboard_access'] == 0) echo 'selected="selected"'; ?>>
2143
- <?php _e("All roles can view", 'custom-contact-forms'); ?>
2144
- </option></select>
2145
- </li>
2146
- <li class="descrip">
2147
- <?php _e("If you are using the dashboard widget, this allows you to disallow certain users from viewing it.", 'custom-contact-forms'); ?>
2148
- </li>
2149
- <li>
2150
- <label for="code_type">
2151
- <?php _e("Use Code Type:", 'custom-contact-forms'); ?>
2152
- </label>
2153
- <select name="settings[code_type]">
2154
- <option>XHTML</option>
2155
- <option <?php if ($admin_options['code_type'] == 'HTML') echo 'selected="selected"'; ?>>HTML</option>
2156
- </select>
2157
- </li>
2158
- <li class="descrip">
2159
- <?php _e("This lets you switch the form code between HTML and XHTML.", 'custom-contact-forms'); ?>
2160
- </li>
2161
- <li>
2162
- <label for="form_page_inclusion_only">
2163
- <?php _e("Restrict Frontend JS and CSS to Form Pages Only:", 'custom-contact-forms'); ?>
2164
- </label>
2165
- <select name="settings[form_page_inclusion_only]">
2166
- <option value="1">
2167
- <?php _e("Yes", 'custom-contact-forms'); ?>
2168
- </option>
2169
- <option value="0" <?php if ($admin_options['form_page_inclusion_only'] == 0) echo 'selected="selected"'; ?>>
2170
- <?php _e("No", 'custom-contact-forms'); ?>
2171
- </option></select>
2172
- </li>
2173
- <li class="descrip">
2174
- <?php _e("Within each form in the form manager, you can specify the page id's on which that form will be used. If you set this to 'Yes', the plugin will only include CSS and JS files on pages/posts where a CCF form is inserted. If this is set to 'No', CSS and JS files for this plugin will be included on every page of your site except in the admin area.", 'custom-contact-forms'); ?>
2175
- </li>
2176
-
2177
- </ul>
2178
- <ul class="gright">
2179
- <li>
2180
- <label for="form_success_message_title">
2181
- <?php _e("Default Form Success Message Title:", 'custom-contact-forms'); ?>
2182
- </label>
2183
- <input name="settings[form_success_message_title]" value="<?php echo $admin_options['form_success_message_title']; ?>" type="text"/>
2184
- </li>
2185
- <li class="descrip">
2186
- <?php _e("If someone fills out a form for which a success message title is not provided and a custom success page is not provided, the plugin will show a popover using this field as the window title.", 'custom-contact-forms'); ?>
2187
- </li>
2188
-
2189
- <li>
2190
- <label for="form_success_message">
2191
- <?php _e("Default Form Success Message:", 'custom-contact-forms'); ?>
2192
- </label>
2193
- <input name="settings[form_success_message]" value="<?php echo $admin_options['form_success_message']; ?>" type="text"/>
2194
- </li>
2195
- <li class="descrip">
2196
- <?php _e("If someone fills out a form for which a success message is not provided and a custom success page is not provided, the plugin will show a popover containing this message.", 'custom-contact-forms'); ?>
2197
- </li>
2198
- <li>
2199
- <label for="default_form_error_header">
2200
- <?php _e("Default Form Error Header:", 'custom-contact-forms'); ?>
2201
- </label>
2202
- <input name="settings[default_form_error_header]" value="<?php echo $admin_options['default_form_error_header']; ?>" type="text" />
2203
- </li>
2204
- <li class="descrip">
2205
- <?php _e("When a form is filled out incorrectly, this message will be displayed followed by the individual field error messages.", 'custom-contact-forms'); ?>
2206
- </li>
2207
- <li>
2208
- <label for="remember_field_values">
2209
- <?php _e("Remember Field Values:", 'custom-contact-forms'); ?>
2210
- </label>
2211
- <select name="settings[remember_field_values]">
2212
- <option value="1">
2213
- <?php _e("Yes", 'custom-contact-forms'); ?>
2214
- </option>
2215
- <option <?php if ($admin_options['remember_field_values'] == 0) echo 'selected="selected"'; ?> value="0">
2216
- <?php _e("No", 'custom-contact-forms'); ?>
2217
- </option>
2218
- </select>
2219
- </li>
2220
- <li class="descrip">
2221
- <?php _e("Selecting yes will make form fields remember how they were last filled out.", 'custom-contact-forms'); ?>
2222
- </li>
2223
- <li>
2224
- <label for="enable_widget_tooltips">
2225
- <?php _e("Tooltips in Widget:", 'custom-contact-forms'); ?>
2226
- </label>
2227
- <select name="settings[enable_widget_tooltips]">
2228
- <option value="1">
2229
- <?php _e("Enabled", 'custom-contact-forms'); ?>
2230
- </option>
2231
- <option <?php if ($admin_options['enable_widget_tooltips'] == 0) echo 'selected="selected"'; ?> value="0">
2232
- <?php _e("Disabled", 'custom-contact-forms'); ?>
2233
- </option>
2234
- </select>
2235
- </li>
2236
- <li class="descrip">
2237
- <?php _e("Enabling this shows tooltips containing field instructions on forms in the widget.", 'custom-contact-forms'); ?>
2238
- </li>
2239
- <li>
2240
- <label for="author_link">
2241
- <?php _e("Hide Plugin Author Link in Code:", 'custom-contact-forms'); ?>
2242
- </label>
2243
- <select name="settings[author_link]">
2244
- <option value="1">
2245
- <?php _e("Yes", 'custom-contact-forms'); ?>
2246
- </option>
2247
- <option <?php if ($admin_options['author_link'] == 0) echo 'selected="selected"'; ?> value="0">
2248
- <?php _e("No", 'custom-contact-forms'); ?>
2249
- </option>
2250
- </select>
2251
- </li>
2252
- <li>
2253
- <label for="admin_ajax">
2254
- <?php _e("Fancy Admin AJAX Abilities:", 'custom-contact-forms'); ?>
2255
- </label>
2256
- <select name="settings[admin_ajax]">
2257
- <option value="1">
2258
- <?php _e("Enabled", 'custom-contact-forms'); ?>
2259
- </option>
2260
- <option value="0" <?php if ($admin_options['admin_ajax'] == 0) echo 'selected="selected"'; ?>>
2261
- <?php _e("Disabled", 'custom-contact-forms'); ?>
2262
- </option>
2263
- </select>
2264
- </li>
2265
- <li class="descrip">
2266
- <?php _e("If you enable this, creating, editing and modifying forms, fields, styles, etc in the admin panel will be done using AJAX. This means that clicking things like 'Edit' or 'Delete' will not cause the page to reload thus managing your forms will be much smoother and quicker. If you are having problems with things not saving, deleting, or inserting correctly, then disable this and fill out a bug report below.", 'custom-contact-forms'); ?>
2267
- </li>
2268
- <li>
2269
- <label for="default_form_bad_permissions">
2270
- <?php _e("Default Permissions Error:", 'custom-contact-forms'); ?>
2271
- </label>
2272
- <input name="settings[default_form_bad_permissions]" value="<?php echo $admin_options['default_form_bad_permissions']; ?>" type="text" />
2273
- </li>
2274
- <li class="descrip">
2275
- <?php _e("When someone doesn't have the proper permissions to use a form, this message is displayed in place of the form. You control who can view each form with the form access manager which is located inside the form manager.", 'custom-contact-forms'); ?>
2276
- </li>
2277
- <li>
2278
- <label for="enable_form_access_manager">
2279
- <?php _e("Form Access Capabilities:", 'custom-contact-forms'); ?>
2280
- </label>
2281
- <select name="settings[enable_form_access_manager]">
2282
- <option value="0">
2283
- <?php _e("Disabled", 'custom-contact-forms'); ?>
2284
- </option>
2285
- <option value="1" <?php if ($admin_options['enable_form_access_manager'] == 1) echo 'selected="selected"'; ?>>
2286
- <?php _e("Enabled", 'custom-contact-forms'); ?>
2287
- </option>
2288
- </select>
2289
- </li>
2290
- <li class="descrip">
2291
- <?php _e("The form access manager within each form allows you to control who can view your form. However, that will take effect on any of your forms unless this is enabled.", 'custom-contact-forms'); ?>
2292
- </li>
2293
- <li class="show-widget"><b>
2294
- <?php _e("Show Sidebar Widget:", 'custom-contact-forms'); ?>
2295
- </b></li>
2296
- <li>
2297
- <label>
2298
- <input value="1" type="checkbox" name="settings[show_widget_home]" <?php if ($admin_options['show_widget_home'] == 1) echo 'checked="checked"'; ?> />
2299
- <?php _e("On Homepage", 'custom-contact-forms'); ?>
2300
- </label>
2301
- <label>
2302
- <input value="1" type="checkbox" name="settings[show_widget_pages]" <?php if ($admin_options['show_widget_pages'] == 1) echo 'checked="checked"'; ?> />
2303
- <?php _e("On Pages", 'custom-contact-forms'); ?>
2304
- </label>
2305
- <label>
2306
- <input value="1" type="checkbox" name="settings[show_widget_singles]" <?php if ($admin_options['show_widget_singles'] == 1) echo 'checked="checked"'; ?> />
2307
- <?php _e("On Single Posts", 'custom-contact-forms'); ?>
2308
- </label>
2309
- <br />
2310
- <label>
2311
- <input value="1" type="checkbox" name="settings[show_widget_categories]" <?php if ($admin_options['show_widget_categories'] == 1) echo 'checked="checked"'; ?> />
2312
- <?php _e("On Categories", 'custom-contact-forms'); ?>
2313
- </label>
2314
- <label>
2315
- <input value="1" type="checkbox" name="settings[show_widget_archives]" <?php if ($admin_options['show_widget_archives'] == 1) echo 'checked="checked"'; ?> />
2316
- <?php _e("On Archives", 'custom-contact-forms'); ?>
2317
- </label>
2318
- </li>
2319
-
2320
- <li>
2321
- <input type="submit" value="<?php _e("Update", 'custom-contact-forms'); ?>" name="general_settings" />
2322
- </li>
2323
- </ul>
2324
- </form>
2325
- </div>
2326
- </div>
2327
- <div id="configure-mail" class="postbox">
2328
- <h3 class="hndle"><span>
2329
- <?php _e("Mail Settings", 'custom-contact-forms'); ?>
2330
- </span></h3>
2331
- <div class="inside">
2332
- <form method="post" action="<?php echo $_SERVER['REQUEST_URI']; ?>">
2333
- <p><?php _e("There are two ways you can send emails: using the PHP mail() function or using SMTP (secure/insecure). If you choose to use the PHP mail() function you can ignore all the other options. For some people Wordpress's default way of sending mail does not work; if for some reason your mail is being sent you should try the SMTP option.", 'custom-contact-forms'); ?></p>
2334
- <label for="mail_function"><?php _e("* Send My Emails Using the Following:", 'custom-contact-forms'); ?></label>
2335
- <select name="mail_config[mail_function]">
2336
- <option value="default"><?php _e("Wordpress Default", 'custom-contact-forms'); ?></option>
2337
- <option <?php if ($admin_options['mail_function'] == 'smtp') echo 'selected="selected"'; ?> value="smtp"><?php _e("SMTP", 'custom-contact-forms'); ?></option>
2338
- </select> <?php _e("(If mail isn't sending, try toggling this option.)", 'custom-contact-forms'); ?>
2339
- <div>
2340
- <ul class="left">
2341
- <li><label for="smtp_host"><?php _e("SMTP Host:", 'custom-contact-forms'); ?></label> <input class="ccf-width125" type="text" size="10" name="mail_config[smtp_host]" value="<?php echo $admin_options['smtp_host']; ?>" /></li>
2342
- <li><label for="smtp_port"><?php _e("SMTP Port:", 'custom-contact-forms'); ?></label> <input class="ccf-width125" type="text" size="10" name="mail_config[smtp_port]" value="<?php echo $admin_options['smtp_port']; ?>" /></li>
2343
- <li><label for="smtp_encryption"><?php _e("Encryption:", 'custom-contact-forms'); ?></label> <select name="mail_config[smtp_encryption]">
2344
- <option value="none"><?php _e("None", 'custom-contact-forms'); ?></option>
2345
- <option <?php if ($admin_options['smtp_encryption'] == 'ssl') echo 'selected="selected"'; ?> value="ssl"><?php _e("SSL", 'custom-contact-forms'); ?></option>
2346
- <option <?php if ($admin_options['smtp_encryption'] == 'tls') echo 'selected="selected"'; ?> value="tls"><?php _e("TLS", 'custom-contact-forms'); ?></option>
2347
- </select></li>
2348
- </ul>
2349
- <ul class="right">
2350
- <li><label for="smtp_authentication"><?php _e("SMTP Authentication:", 'custom-contact-forms'); ?></label> <select name="mail_config[smtp_authentication]"><option value="0"><?php _e("None Needed", 'custom-contact-forms'); ?></option><option <?php if ($admin_options['smtp_authentication'] == 1) echo 'selected="selected"'; ?> value="1"><?php _e("Use SMTP Username/Password", 'custom-contact-forms'); ?></option></select></li>
2351
- <li><label for="smtp_username"><?php _e("SMTP Username:", 'custom-contact-forms'); ?></label> <input class="ccf-width125" type="text" size="10" name="mail_config[smtp_username]" value="<?php echo $admin_options['smtp_username']; ?>" /></li>
2352
- <li><label for="smtp_password"><?php _e("SMTP Password:", 'custom-contact-forms'); ?></label> <input class="ccf-width125" type="text" size="10" name="mail_config[smtp_password]" value="<?php echo $admin_options['smtp_password']; ?>" /></li>
2353
- </ul>
2354
- </div>
2355
- <input type="submit" name="configure_mail" value="<?php _e("Save Mail Sending Options", 'custom-contact-forms'); ?>" />
2356
- </form>
2357
- </div>
2358
- </div>
2359
- <a name="import-export"></a>
2360
- <div id="export" class="postbox">
2361
- <h3 class="hndle"><span>
2362
- <?php _e("Export", 'custom-contact-forms'); ?>
2363
- </span></h3>
2364
- <div class="inside">
2365
- <form method="post" action="<?php echo $_SERVER['REQUEST_URI']; ?>">
2366
- <p>
2367
- <?php _e("Preforming a Custom Contact Forms export will create a file of the form
2368
- ccf-export-xxxx.sql on your web server. The file created contains SQL that
2369
- will recreate all the plugin data on any Wordpress installation. After Custom Contact Forms creates the export file, you will be prompted to download it. You can use this file as a backup in case your Wordpress database gets ruined.", 'custom-contact-forms'); ?>
2370
- </p>
2371
- <input type="submit" name="ccf_export" value="<?php _e("Export All CCF Plugin Content", 'custom-contact-forms'); ?>" />
2372
- </form>
2373
- </div>
2374
- </div>
2375
- <div id="import" class="postbox">
2376
- <h3 class="hndle"><span>
2377
- <?php _e("Import", 'custom-contact-forms'); ?>
2378
- </span></h3>
2379
- <div class="inside">
2380
- <form method="post" enctype="multipart/form-data" action="<?php echo $_SERVER['REQUEST_URI']; ?>">
2381
- <input type="hidden" name="MAX_FILE_SIZE" value="100000" />
2382
- <p>
2383
- <?php _e("Browse to a CCF .sql export file to import Custom Contact Form data from another Wordpress installation to this one. Pressing the 'Clear and Import' button deletes all current data and then imports the selected file; this will not work for merging to data!. Clearing all CCF data before importing prevents any conflicts from occuring. Before you attempt an import, you should always download a backup, by clicking the 'Export All' button.", 'custom-contact-forms'); ?>
2384
- </p>
2385
- <p class="choose_import">
2386
- <?php _e("Choose What You Want to Use from the Import File:", 'custom-contact-forms'); ?>
2387
- </p>
2388
- <ul>
2389
- <li>
2390
- <input type="checkbox" checked="checked" name="ccf_import_overwrite_settings" value="1" />
2391
- <label for="ccf_import_overwrite_settings">
2392
- <?php _e("Use General Settings", 'custom-contact-forms'); ?>
2393
- </label>
2394
- </li>
2395
- <li>
2396
- <input type="checkbox" checked="checked" name="ccf_import_forms" value="1" />
2397
- <label for="ccf_import_forms">
2398
- <?php _e("Forms", 'custom-contact-forms'); ?>
2399
- </label>
2400
- </li>
2401
- <li>
2402
- <input type="checkbox" checked="checked" name="ccf_import_saved_submissions" value="1" />
2403
- <label for="ccf_import_saved_submissions">
2404
- <?php _e("Form Submissions", 'custom-contact-forms'); ?>
2405
- </label>
2406
- </li>
2407
- <li>
2408
- <input type="checkbox" checked="checked" name="ccf_import_fields" value="1" />
2409
- <label for="ccf_import_fields">
2410
- <?php _e("Fields", 'custom-contact-forms'); ?>
2411
- </label>
2412
- </li>
2413
- <li>
2414
- <input type="checkbox" checked="checked" name="ccf_import_forms" value="1" />
2415
- <label for="ccf_import_forms">
2416
- <?php _e("Forms", 'custom-contact-forms'); ?>
2417
- </label>
2418
- </li>
2419
- <li>
2420
- <input type="checkbox" checked="checked" name="ccf_import_field_options" value="1" />
2421
- <label for="ccf_import_field_options">
2422
- <?php _e("Field Options", 'custom-contact-forms'); ?>
2423
- </label>
2424
- </li>
2425
- <li>
2426
- <input type="checkbox" checked="checked" name="ccf_import_styles" value="1" />
2427
- <label for="ccf_import_styles">
2428
- <?php _e("Styles", 'custom-contact-forms'); ?>
2429
- </label>
2430
- </li>
2431
- </ul>
2432
- <p class="choose_import">
2433
- <label for="import_file">
2434
- <?php _e("Choose an Import File:", 'custom-contact-forms'); ?>
2435
- </label>
2436
- <input type="file" name="import_file" />
2437
- </p>
2438
- <input name="ccf_clear_import" type="submit" value="<?php _e("Clear and Import", 'custom-contact-forms'); ?>" />
2439
- <input type="checkbox" name="ccf_import_confirm" value="1" />
2440
- <?php _e('Yes, I want to do this and have created a backup.', 'custom-contact-forms'); ?>
2441
- </form>
2442
- </div>
2443
- </div>
2444
- <?php $this->insertUsagePopover(); ?>
2445
- <?php $this->insertQuickStartPopover(); ?>
2446
- </div>
2447
- <?php
2448
- }
2449
- }
2450
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2451
  ?>
1
+ <?php
2
+ /*
3
+ Custom Contact Forms Plugin
4
+ By Taylor Lovett - http://www.taylorlovett.com
5
+ Plugin URL: http://www.taylorlovett.com/wordpress-plugins
6
+ */
7
+ if (!class_exists('CustomContactFormsAdmin')) {
8
+ class CustomContactFormsAdmin extends CustomContactForms {
9
+ var $action_complete = '';
10
+
11
+ function adminInit() {
12
+ $this->downloadExportFile();
13
+ $this->runImport();
14
+ }
15
+
16
+ function insertUsagePopover() {
17
+ ccf_utils::load_module('usage_popover/custom-contact-forms-usage-popover.php');
18
+ }
19
+
20
+ function insertQuickStartPopover() {
21
+ ccf_utils::load_module('usage_popover/custom-contact-forms-quick-start-popover.php');
22
+ }
23
+
24
+ function isPluginAdminPage() {
25
+ $pages = array('custom-contact-forms', 'ccf-settings', 'ccf-saved-form-submissions');
26
+ return (in_array($GLOBALS['ccf_current_page'], $pages));
27
+ }
28
+
29
+ function appendToActionLinks($action_links, $plugin_file) {
30
+ static $link_added = false;
31
+ if (!$link_added && basename($plugin_file) == 'custom-contact-forms.php') {
32
+ $new_link = '<a style="font-weight:bold;" href="admin.php?page=custom-contact-forms" title="' . __('Manage Custom Contact Forms', 'custom-contact-forms') . '">' . __('Settings', 'custom-contact-forms') . '</a>';
33
+ array_unshift($action_links, $new_link);
34
+ $link_added = true;
35
+ }
36
+ return $action_links;
37
+ }
38
+
39
+ function downloadExportFile() {
40
+ if ($_POST['ccf_export']) {
41
+ //chmod('modules/export/', 0777);
42
+ ccf_utils::load_module('export/custom-contact-forms-export.php');
43
+ $transit = new CustomContactFormsExport(parent::getAdminOptionsName());
44
+ $transit->exportAll();
45
+ $file = $transit->exportToFile();
46
+ ccf_utils::redirect(plugins_url() . '/custom-contact-forms/download.php?location=export/' . $file);
47
+ }
48
+ }
49
+
50
+ function runImport() {
51
+ if ($_POST['ccf_clear_import'] || $_POST['ccf_merge_import']) {
52
+ //chmod('modules/export/', 0777);
53
+ ccf_utils::load_module('export/custom-contact-forms-export.php');
54
+ $transit = new CustomContactFormsExport(parent::getAdminOptionsName());
55
+ $settings['import_general_settings'] = ($_POST['ccf_import_overwrite_settings'] == 1) ? true : false;
56
+ $settings['import_forms'] = ($_POST['ccf_import_forms'] == 1) ? true : false;
57
+ $settings['import_fields'] = ($_POST['ccf_import_fields'] == 1) ? true : false;
58
+ $settings['import_field_options'] = ($_POST['ccf_import_field_options'] == 1) ? true : false;
59
+ $settings['import_styles'] = ($_POST['ccf_import_styles'] == 1) ? true : false;
60
+ $settings['import_saved_submissions'] = ($_POST['ccf_import_saved_submissions'] == 1) ? true : false;
61
+ $settings['mode'] = ($_POST['ccf_clear_import']) ? 'clear_import' : 'merge_import';
62
+ print_r($_FILES);
63
+ $transit->importFromFile($_FILES['import_file'], $settings);
64
+ ccf_utils::redirect('options-general.php?page=custom-contact-forms');
65
+ }
66
+ }
67
+
68
+ function contactAuthor($name, $email, $website, $message, $type, $host, $ccf_version, $wp_version) {
69
+ if (empty($message)) return false;
70
+ if (!class_exists('PHPMailer'))
71
+ require_once(ABSPATH . "wp-includes/class-phpmailer.php");
72
+ $mail = new PHPMailer();
73
+ $body = "Name: $name<br />\n";
74
+ $body .= "Email: $email<br />\n";
75
+ $body .= "Website: $website<br />\n";
76
+ $body .= "CCF Version: $ccf_version<br />\n";
77
+ $body .= "WP Version: $wp_version<br />\n";
78
+ $body .= "Host: $host<br />\n";
79
+ $body .= "Message: $message<br />\n";
80
+ $body .= "Message Type: $type<br />\n";
81
+ $body .= 'Sender IP: ' . $_SERVER['REMOTE_ADDR'] . "<br />\n";
82
+ $admin_options = parent::getAdminOptions();
83
+ if ($admin_options['mail_function'] == 'smtp') {
84
+ $mail->IsSMTP();
85
+ $mail->Host = $admin_options['smtp_host'];
86
+ if ($admin_options['smtp_authentication'] == 1) {
87
+ $mail->SMTPAuth = true;
88
+ $mail->Username = $admin_options['smtp_username'];
89
+ $mail->Password = $admin_options['smtp_password'];
90
+ $mail->Port = $admin_options['smtp_port'];
91
+ } else
92
+ $mail->SMTPAuth = false;
93
+ }
94
+ $mail->From = $email;
95
+ $mail->FromName = 'Custom Contact Forms';
96
+ $mail->AddAddress('admin@taylorlovett.com');
97
+ $mail->Subject = "CCF Message: $type";
98
+ $mail->CharSet = "utf-8";
99
+ $mail->AltBody = "To view the message, please use an HTML compatible email viewer!"; // optional, comment out and test
100
+ $mail->MsgHTML($body);
101
+ $mail->Send();
102
+ return true;
103
+ }
104
+
105
+ function displayPluginNewsFeed() {
106
+ include_once(ABSPATH . WPINC . '/feed.php');
107
+ $rss = @fetch_feed('http://www.taylorlovett.com/category/custom-contact-forms/feed');
108
+ if (!is_wp_error($rss) ) {
109
+ $maxitems = $rss->get_item_quantity(5);
110
+ $rss_items = $rss->get_items(0, $maxitems);
111
+ }
112
+ ?>
113
+ <ul>
114
+ <?php if ($maxitems == 0) echo '<li>' . __('Nothing to show.', 'custom-contact-forms') . '</li>';
115
+ else
116
+ foreach ( $rss_items as $item ) : ?>
117
+ <li>
118
+ <div class="news-header">
119
+ <a href="<?php echo $item->get_permalink(); ?>"><?php echo $item->get_title(); ?></a> <span class="date"><?php echo $item->get_date('j F, Y'); ?></span>
120
+ </div>
121
+ <div class="news-content">
122
+ <?php echo $item->get_content(); ?>
123
+ </div>
124
+ </li>
125
+ <?php endforeach; ?>
126
+
127
+ </ul>
128
+ <?php
129
+ }
130
+
131
+
132
+ function getFieldsForm() {
133
+ $fields = parent::selectAllFields();
134
+ $out = '';
135
+ foreach ($fields as $field) {
136
+ $out .= '<option value="'.$field->id.'">'.$field->field_slug.'</option>' . "\n";
137
+ }
138
+ return $out;
139
+ }
140
+
141
+ function handleAJAX() {
142
+
143
+ if (!wp_verify_nonce($_POST['nonce'], 'ccf_nonce')) exit(__('Invalid request.', 'custom-contact-forms'));
144
+ $output = $this->handleAdminPostRequests();
145
+ $response = json_encode( $output );
146
+ header("Content-Type: application/json");
147
+ exit($response);
148
+ return true;
149
+ }
150
+
151
+
152
+ function getFieldOptionsForm() {
153
+ $options = parent::selectAllFieldOptions();
154
+ $out = '';
155
+ foreach ($options as $option) {
156
+ $out .= '<option value="'.$option->id.'">'.$option->option_slug.'</option>' . "\n";
157
+ }
158
+ return $out;
159
+ }
160
+
161
+ function insertBackEndStyles() {
162
+ wp_register_style('ccf-standards', plugins_url() . '/custom-contact-forms/css/custom-contact-forms-standards.css');
163
+ wp_register_style('ccf-jquery-ui', plugins_url() . '/custom-contact-forms/css/jquery-ui.css');
164
+ wp_register_style('ccf-admin', plugins_url() . '/custom-contact-forms/css/custom-contact-forms-admin.css');
165
+ wp_register_style('ccf-colorpicker', plugins_url() . '/custom-contact-forms/css/colorpicker.css');
166
+ wp_enqueue_style('ccf-jquery-ui');
167
+ wp_enqueue_style('ccf-standards');
168
+ wp_enqueue_style('ccf-admin');
169
+ wp_enqueue_style('ccf-colorpicker');
170
+ }
171
+
172
+ function insertAdminScripts() {
173
+ $js_version = '2.0.1';
174
+ $admin_options = parent::getAdminOptions();
175
+ $js_lang = array(
176
+ 'attaching' => __('Attaching', 'custom-contact-forms'),
177
+ 'detaching' => __('Detaching', 'custom-contact-forms'),
178
+ 'detach_button' => __('Detach', 'custom-contact-forms'),
179
+ 'attach_button' => __('Attach', 'custom-contact-forms'),
180
+ 'saving' => __('Saving', 'custom-contact-forms'),
181
+ 'more_options' => __('More Options', 'custom-contact-forms'),
182
+ 'expand' => __('Expand', 'custom-contact-forms'),
183
+ 'click_to_confirm' => __('Click to Confirm', 'custom-contact-forms'),
184
+ 'selected_tab' => ($_POST['selected_tab']) ? $_POST['selected_tab'] : 0,
185
+ 'delete_confirm' => __('Are you sure you want to delete this', 'custom-contact-forms'),
186
+ 'error' => __('An error has occured. Please try again later.', 'custom-contact-forms'),
187
+ 'nothing_to_show' => __('Nothing to show.', 'custom-contact-forms'),
188
+ 'nothing_attached' => __('Nothing Attached!', 'custom-contact-forms'),
189
+ 'nonce' => wp_create_nonce('ccf_nonce')
190
+ );
191
+ $js_ajax = array('plugin_dir' => plugins_url() . '/custom-contact-forms',
192
+ 'url' => admin_url('admin-ajax.php'),
193
+ 'nonce' => wp_create_nonce('ccf-ajax-nonce'));
194
+ wp_enqueue_script('jquery');
195
+ wp_deregister_script('jquery-form');
196
+ wp_register_script('jquery-form', plugins_url() . '/custom-contact-forms/js/jquery.form.js', $js_version);
197
+ wp_enqueue_script('jquery-ui-core');
198
+ wp_enqueue_script('jquery-ui-tabs');
199
+ wp_enqueue_script('jquery-ui-dialog');
200
+
201
+ wp_enqueue_script('jquery-tools', plugins_url() . '/custom-contact-forms/js/jquery.tools.min.js');
202
+ wp_enqueue_script('jquery-ui-widget', plugins_url() . '/custom-contact-forms/js/jquery.ui.widget.js');
203
+ //wp_enqueue_script('jquery-ui-dialog', plugins_url() . '/custom-contact-forms/js/jquery.ui.dialog.js', array('jquery', 'jquery-ui-core', 'jquery-ui-tabs'));
204
+ //wp_enqueue_script('ccf-pagination', plugins_url() . '/custom-contact-forms/js/jquery.pagination.js');
205
+ wp_enqueue_script('ccf-admin-inc', plugins_url() . '/custom-contact-forms/js/custom-contact-forms-admin-inc.js', $js_version);
206
+ wp_enqueue_script('ccf-admin', plugins_url() . '/custom-contact-forms/js/custom-contact-forms-admin.js', $js_version);
207
+ if ($admin_options['admin_ajax'] == 1) {
208
+ wp_enqueue_script('ccf-admin-ajax', plugins_url() . '/custom-contact-forms/js/custom-contact-forms-admin-ajax.js', array('jquery-form'), $js_version);
209
+ wp_localize_script('ccf-admin-ajax', 'ccfLang', $js_lang);
210
+ wp_localize_script('ccf-admin-ajax', 'ccfAjax', $js_ajax);
211
+ }
212
+ wp_enqueue_script('ccf-colorpicker', plugins_url() . '/custom-contact-forms/js/colorpicker.js');
213
+ wp_enqueue_script('ccf-eye', plugins_url() . '/custom-contact-forms/js/eye.js');
214
+ wp_enqueue_script('ccf-utils', plugins_url() . '/custom-contact-forms/js/utils.js');
215
+ wp_enqueue_script('ccf-layout', plugins_url() . '/custom-contact-forms/js/layout.js?ver=1.0.2');
216
+ wp_localize_script('ccf-admin-inc', 'ccfLang', $js_lang);
217
+ wp_localize_script('ccf-admin-inc', 'ccfAjax', $js_ajax);
218
+ wp_localize_script('ccf-admin', 'ccfLang', $js_lang);
219
+ }
220
+
221
+ function handleAdminPostRequests() {
222
+ $out = array('success' => true);
223
+ if ($_POST['object_create']) {
224
+ if ($_POST['object_type'] == 'form') {
225
+ if (parent::insertForm($_POST['object']) != false)
226
+ $this->action_complete = __('A new form was successfully created!', 'custom-contact-forms');
227
+ } elseif ($_POST['object_type'] == 'field') {
228
+ if (parent::insertField($_POST['object']) != false)
229
+ $this->action_complete = __('A new field was successful created!', 'custom-contact-forms');
230
+ } elseif ($_POST['object_type'] == 'field_option') {
231
+ if (parent::insertFieldOption($_POST['object']) != false)
232
+ $this->action_complete = __('A new field option was successful created!', 'custom-contact-forms');
233
+ } elseif ($_POST['object_type'] == 'style') {
234
+ if (parent::insertStyle($_POST['object']) != false)
235
+ $this->action_complete = __('A new style was successful created!', 'custom-contact-forms');
236
+ }
237
+ return $out;
238
+ }
239
+
240
+ if ($_POST['object_attach']) {
241
+ if ($_POST['object_type'] == 'form') {
242
+ if (parent::addFieldToForm($_POST['attach_object_id'], $_POST['object_id']) != false)
243
+ $this->action_complete = __('A field was successful attached!', 'custom-contact-forms');
244
+ } elseif ($_POST['object_type'] == 'field') {
245
+ if (parent::addFieldOptionToField($_POST['attach_object_id'], $_POST['object_id']) != false)
246
+ $this->action_complete = __('A field option was successful attached!', 'custom-contact-forms');
247
+ }
248
+ return $out;
249
+ }
250
+
251
+ if ($_POST['object_detach']) {
252
+ if ($_POST['object_type'] == 'form') {
253
+ if (parent::detachField($_POST['detach_object_id'], $_POST['object_id']) != false)
254
+ $this->action_complete = __('A field was successful detached!', 'custom-contact-forms');
255
+ } elseif ($_POST['object_type'] == 'field') {
256
+ if (parent::detachFieldOption($_POST['detach_object_id'], $_POST['object_id']) != false)
257
+ $this->action_complete = __('A field option was successful detached!', 'custom-contact-forms');
258
+ }
259
+ return $out;
260
+ }
261
+
262
+ if (isset($_POST['object_bulk_apply'])) {
263
+ $out['object_bulk_action'] = $_POST['object_bulk_action'];
264
+ if ($_POST['object_bulk_action'] == 'edit') {
265
+ foreach ($_POST['objects'] as $obj) {
266
+ if ($obj['object_do'] == 1) {
267
+ if ($obj['object_type'] == 'form') {
268
+ parent::updateForm($obj['values'], $obj['object_id']);
269
+ if ($obj['detach_confirm'] == 1 && $obj['detach'] > 0) {
270
+ parent::detachField($obj['detach'], $obj['object_id']);
271
+ } if ($obj['attach_confirm'] == 1 && $obj['attach'] > 0) {
272
+ parent::addFieldToForm($obj['attach'], $obj['object_id']);
273
+ }
274
+ } elseif ($obj['object_type'] == 'field') {
275
+ parent::updateField($obj['values'], $obj['object_id']);
276
+ if ($obj['detach_confirm'] == 1 && $obj['detach'] > 0) {
277
+ parent::detachFieldOption($obj['detach'], $obj['object_id']);
278
+ } if ($obj['attach_confirm'] == 1 && $obj['attach'] > 0) {
279
+ parent::addFieldOptionToField($obj['attach'], $obj['object_id']);
280
+ }
281
+ } elseif ($obj['object_type'] == 'field_option') parent::updateFieldOption($obj['values'], $obj['object_id']);
282
+ elseif ($obj['object_type'] == 'style') parent::updateStyle($obj['values'], $obj['object_id']);
283
+ $out['objects'][] = $obj;
284
+ }
285
+ }
286
+ $this->action_complete = __('Your bulk action has been completed!', 'custom-contact-forms');
287
+ }
288
+
289
+ elseif ($_POST['object_bulk_action'] == 'delete') {
290
+ foreach ($_POST['objects'] as $obj) {
291
+ if ($obj['object_do'] == 1) {
292
+ if ($obj['object_type'] == 'form') parent::deleteForm($obj['object_id']);
293
+ elseif ($obj['object_type'] == 'field') parent::deleteField($obj['object_id']);
294
+ elseif ($obj['object_type'] == 'field_option') parent::deleteFieldOption($obj['object_id']);
295
+ elseif ($obj['object_type'] == 'style') parent::deleteStyle($obj['object_id']);
296
+ elseif ($obj['object_type'] == 'form_submission') {
297
+ parent::deleteUserData($obj['object_id']);
298
+ }
299
+ $out['objects'][] = $obj;
300
+ }
301
+ }
302
+ $this->action_complete = __('Your bulk action has been completed!', 'custom-contact-forms');
303
+ }
304
+ }
305
+ return $out;
306
+ }
307
+
308
+ function rateMeForm() {
309
+ ?>
310
+ <form class="rate-me" action="https://www.paypal.com/cgi-bin/webscr" method="post">
311
+ <input type="hidden" name="cmd" value="_s-xclick">
312
+ <input type="hidden" name="hosted_button_id" value="TXYVDCH955V28">
313
+ <a href="http://wordpress.org/extend/plugins/custom-contact-forms" title="<?php _e("Rate This Plugin", 'custom-contact-forms'); ?>">
314
+ <?php _e("We need your help to continue development! Please <span>rate this plugin</span> to show your support.", 'custom-contact-forms'); ?></a>
315
+ <input type="image" src="https://www.paypal.com/en_US/i/btn/btn_donate_SM.gif" border="0" name="submit" alt="PayPal - The safer, easier way to pay online!">
316
+ <img alt="Donate to Custom Contact Forms plugin" border="0" src="https://www.paypal.com/en_US/i/scr/pixel.gif" width="1" height="1">
317
+ </form>
318
+ <?php
319
+ }
320
+
321
+ function printAdminPage() {
322
+ $admin_options = parent::getAdminOptions();
323
+ $show_checkbox_warning = false;
324
+ if ($admin_options['show_install_popover'] == 1) {
325
+ $admin_options['show_install_popover'] = 0;
326
+ $show_checkbox_warning = true;
327
+ ?>
328
+ <script type="text/javascript" language="javascript">
329
+ $j(document).ready(function() {
330
+ $j("#ccf-usage-popover").dialog('open');
331
+ });
332
+ </script>
333
+ <?php
334
+ update_option(parent::getAdminOptionsName(), $admin_options);
335
+ }
336
+ $this->handleAdminPostRequests();
337
+ if ($_POST['insert_default_content']) {
338
+ ccf_utils::load_module('db/custom-contact-forms-default-db.php');
339
+ $this->action_complete = __('Default content has been inserted!', 'custom-contact-forms');
340
+ new CustomContactFormsDefaultDB();
341
+ } elseif ($_POST['contact_author']) {
342
+ $this->action_complete = __('Your message has been sent!', 'custom-contact-forms');
343
+ $this_url = (!empty($_SERVER['HTTP_REFERER'])) ? $_SERVER['HTTP_REFERER'] : $_SERVER['SERVER_NAME'];
344
+ $this->contactAuthor($_POST['name'], $_POST['email'], $this_url, $_POST['message'], $_POST['type'], $_POST['host'], $_POST['ccf-version'], $_POST['wp-version']);
345
+ } elseif ($_GET['clear_tables'] == 1) {
346
+ parent::emptyAllTables();
347
+ }
348
+ $styles = parent::selectAllStyles();
349
+ $style_options = '<option value="0">Default</option>';
350
+ foreach ($styles as $style)
351
+ $style_options .= '<option value="'.$style->id.'">'.$style->style_slug.'</option>';
352
+ ?>
353
+ <div id="customcontactforms-admin">
354
+ <div class="plugin-header">
355
+ <h2>
356
+ <?php _e("Custom Contact Forms", 'custom-contact-forms'); ?>
357
+ </h2>
358
+ <div class="links">
359
+ <a href="javascript:void(0)" class="quick-start-button">Quick Start Guide</a> - <a href="javascript:void(0)" class="usage-popover-button">Plugin Usage Manual</a>
360
+ </div>
361
+ </div>
362
+ <div id="ccf-tabs">
363
+ <ul id="plugin-nav">
364
+ <li><a href="#forms"><?php _e("Forms", 'custom-contact-forms'); ?></a></li>
365
+ <li><a href="#fields"><?php _e("Fields", 'custom-contact-forms'); ?></a></li>
366
+ <li><a href="#field-options"><?php _e("Field Options", 'custom-contact-forms'); ?></a></li>
367
+ <li><a href="#styles"><?php _e("Styles", 'custom-contact-forms'); ?></a></li>
368
+ <li><a href="#support"><?php _e("Support", 'custom-contact-forms'); ?></a></li>
369
+ <li><a href="#advanced"><?php _e("Advanced", 'custom-contact-forms'); ?></a></li>
370
+ <li><a href="#news"><?php _e("News", 'custom-contact-forms'); ?></a></li>
371
+ </ul>
372
+ <a class="genesis" href="http://www.shareasale.com/r.cfm?b=241369&u=481196&m=28169&urllink=&afftrack="><?php _e('Custom Contact Forms works best with any of the 20+ ', 'custom-contact-forms'); ?><span><?php _e('Genesis', 'custom-contact-forms'); ?></span> <?php _e('Wordpress child themes. The', 'custom-contact-forms'); ?> <span><?php _e('Genesis Framework', 'custom-contact-forms'); ?></span> <?php _e('empowers you to quickly and easily build incredible websites with WordPress.', 'custom-contact-forms'); ?></a>
373
+
374
+ <form class="blog-horizontal-form" method="post" action="http://www.aweber.com/scripts/addlead.pl">
375
+ <input type="hidden" name="meta_web_form_id" value="1578604781" />
376
+ <input type="hidden" name="meta_split_id" value="" />
377
+ <input type="hidden" name="listname" value="ccf-plugin" />
378
+ <input type="hidden" name="redirect" value="http://www.taylorlovett.com/wordpress-plugins/tutorials-offers-tips/" id="redirect_5832e41084448adb07da67a35dc83c27" />
379
+ <input type="hidden" name="meta_adtracking" value="CCF_-_Wordpress_Plugins_Horizontal" />
380
+ <input type="hidden" name="meta_message" value="1" />
381
+ <input type="hidden" name="meta_required" value="name,email" />
382
+ <span><?php _e('WP Blogging Tips, Downloads, SEO Tricks & Exclusive Tutorials', 'custom-contact-forms'); ?></span>
383
+ <input type="text" name="name" value="Your Name" onclick="value=''" />
384
+ <input type="text" name="email" value="Your Email" onclick="value=''" />
385
+ <input type="submit" value="Sign Up for Free" />
386
+ </form>
387
+
388
+ <?php if ($show_checkbox_warning) { ?>
389
+ <div class="checkbox-warning">
390
+ <span>ATTENTION:</span> Custom Contact Forms 4.7 changes the way checkbox fields work. In order to make use of checkboxes, as of 4.7, you must attach field options to your checkbox fields. Upon upgrading to version 4.7, your old checkbox fields will not work until you create field options and attach them.
391
+ </div>
392
+ <?php } ?>
393
+
394
+ <?php if (!empty($this->action_complete)) { ?>
395
+ <div id="message" class="updated below-h2">
396
+ <p><?php echo $this->action_complete; ?></p>
397
+ </div>
398
+ <?php } ?>
399
+ <div id="forms">
400
+ <div id="create-forms" class="postbox">
401
+ <h3 class="hndle"><span>
402
+ <?php _e("Create A Form", 'custom-contact-forms'); ?>
403
+ </span></h3>
404
+ <div class="inside">
405
+ <form id="ccf-create-form" method="post" action="<?php echo $_SERVER['REQUEST_URI']; ?>">
406
+ <input value="forms" name="selected_tab" type="hidden" />
407
+ <ul class="left">
408
+ <li>
409
+ <label for="object[form_slug]">*
410
+ <?php _e("Form Slug:", 'custom-contact-forms'); ?>
411
+ </label>
412
+ <input type="text" maxlength="100" name="object[form_slug]" />
413
+ <br />
414
+ <?php _e("This is just a unique way for CCF to refer to your form. Must be unique from other slugs and contain only underscores and alphanumeric characters.", 'custom-contact-forms'); ?>
415
+ </li>
416
+ <li>
417
+ <label for="object[form_title]">
418
+ <?php _e("Form Title:", 'custom-contact-forms'); ?>
419
+ </label>
420
+ <input type="text" maxlength="200" name="object[form_title]" />
421
+ <?php _e("This text is displayed above the form as the heading.", 'custom-contact-forms'); ?>
422
+ </li>
423
+ <li>
424
+ <label for="object[form_action]">
425
+ <?php _e("Form Style:", 'custom-contact-forms'); ?>
426
+ </label>
427
+ <select name="object[form_style]" class="form_style_input">
428
+ <?php echo $style_options; ?>
429
+ </select></li>
430
+ <li>
431
+ <label for="object[submit_button_text]">
432
+ <?php _e("Submit Button Text:", 'custom-contact-forms'); ?>
433
+ </label>
434
+ <input type="text" maxlength="200" name="object[submit_button_text]" />
435
+ </li>
436
+ <li>
437
+ <label for="object[form_email]">
438
+ <?php _e("Form Destination Email:", 'custom-contact-forms'); ?>
439
+ </label>
440
+ <input type="text" name="object[form_email]" />
441
+ <br />
442
+ <?php _e("Will receive all submissions from this form; if left blank it will use the default specified in general settings.", 'custom-contact-forms'); ?>
443
+ </li>
444
+ <li>
445
+ <label for="object[form_email_subject]">
446
+ <?php _e("Form Email Subject:", 'custom-contact-forms'); ?>
447
+ </label>
448
+ <input type="text" name="object[form_email_subject]" />
449
+ <br />
450
+ <?php _e("When submitted and configured accordingly, the form will send an email with this subject.", 'custom-contact-forms'); ?>
451
+ </li>
452
+ <li>
453
+ <label for="object[form_email_name]">
454
+ <?php _e("Form Email Name:", 'custom-contact-forms'); ?>
455
+ </label>
456
+ <input type="text" name="object[form_email_name]" />
457
+ <br />
458
+ <?php _e("When submitted and configured accordingly, the form will send an email with this as the email 'from name'.", 'custom-contact-forms'); ?>
459
+ </li>
460
+ </ul>
461
+ <ul class="right">
462
+ <li>
463
+ <label for="object[form_success_message]">
464
+ <?php _e("Form Success Message:", 'custom-contact-forms'); ?>
465
+ </label>
466
+ <input type="text" name="object[form_success_message]" />
467
+ <br />
468
+ <?php _e("Will be displayed in a popover when the form is filled out successfully when no custom success page is specified; if left blank it will use the default specified in general settings.", 'custom-contact-forms'); ?>
469
+ </li>
470
+ <li>
471
+ <label for="object[form_success_title]">
472
+ <?php _e("Form Success Message Title:", 'custom-contact-forms'); ?>
473
+ </label>
474
+ <input type="text" name="object[form_success_title]" />
475
+ <br />
476
+ <?php _e("Will be displayed in a popover when the form is filled out successfully when no custom success page is specified; if left blank it will use the default specified in general settings.", 'custom-contact-forms'); ?>
477
+ </li>
478
+ <li>
479
+ <label for="object[form_thank_you_page]">
480
+ <?php _e("Custom Success URL:", 'custom-contact-forms'); ?>
481
+ </label>
482
+ <input type="text" name="object[form_thank_you_page]" />
483
+ <br />
484
+ <?php _e("If this is filled out, users will be sent to this page when they successfully fill out this form. If it is left blank, a popover showing the form's 'success message' will be displayed on form success.", 'custom-contact-forms'); ?>
485
+ </li>
486
+ <li>
487
+ <label for="form_access"><?php _e('Who Can View This Form:', ''); ?></label>
488
+
489
+ <?php
490
+ $roles = parent::getRolesArray();
491
+ $i = 0;
492
+ foreach ($roles as $role) {
493
+ if ($i == 3) echo '<br />';
494
+ ?>
495
+ <div class="role">
496
+ <input type="checkbox" checked="checked" name="object[form_access][]" value="<?php echo $role; ?>" />
497
+ <?php echo $role; ?>
498
+ </div>
499
+ <?php
500
+ $i++;
501
+ }
502
+ ?><br />
503
+ <?php _e('Choose which types of users should be able to view this form.', 'custom-contact-forms'); ?>
504
+ </li>
505
+ <li>
506
+ <input type="hidden" name="object_type" value="form" />
507
+ <input type="submit" class="create-button" value="<?php _e("Create Form", 'custom-contact-forms'); ?>" name="object_create" />
508
+ </li>
509
+ <li class="attach"><span class="ccf-red">*</span> <?php _e('You should go to the form manager to attach fields to this form after you create it.', 'custom-contact-forms'); ?></li>
510
+ </ul>
511
+ </form>
512
+ </div>
513
+ </div>
514
+
515
+ <h3 class="manage-h3">
516
+ <?php _e("Manage Forms", 'custom-contact-forms'); ?>
517
+ </h3>
518
+ <form class="ccf-edit-ajax" method="post" action="<?php echo $_SERVER['REQUEST_URI']; ?>">
519
+ <input type="hidden" name="selected_tab" value="forms" />
520
+ <table class="widefat post" id="manage-forms" cellspacing="0">
521
+ <thead>
522
+ <tr>
523
+ <th scope="col" class="manage-column check-col"><input type="checkbox" class="checkall" /></th>
524
+ <th scope="col" class="manage-column form-code"><?php _e("Form Display Code", 'custom-contact-forms'); ?></th>
525
+ <th scope="col" class="manage-column form-slug"><?php _e("Slug", 'custom-contact-forms'); ?></th>
526
+ <th scope="col" class="manage-column form-slug"><?php _e("Destination Email", 'custom-contact-forms'); ?></th>
527
+ <th scope="col" class="manage-column form-title"><?php _e("Title", 'custom-contact-forms'); ?></th>
528
+ <th scope="col" class="manage-column form-button"><?php _e("Button Text", 'custom-contact-forms'); ?></th>
529
+ <th scope="col" class="manage-column form-style"><?php _e("Style", 'custom-contact-forms'); ?></th>
530
+ <th scope="col" class="manage-column form-expand"></th>
531
+ </tr>
532
+ </thead>
533
+ <tbody>
534
+ <?php
535
+ $forms = parent::selectAllForms();
536
+ for ($i = 0; $i < count($forms); $i++) {
537
+ $form_methods = '<option>Post</option><option>Get</option>';
538
+ $form_methods = str_replace('<option>'.$forms[$i]->form_method.'</option>', '<option selected="selected">'.$forms[$i]->form_method.'</option>', $form_methods);
539
+ $add_fields = $this->getFieldsForm();
540
+ $this_style = parent::selectStyle($forms[$i]->form_style, '');
541
+ $sty_opt = str_replace('<option value="'.$forms[$i]->form_style.'">'.$this_style->style_slug.'</option>', '<option value="'.$forms[$i]->form_style.'" selected="selected">'.$this_style->style_slug.'</option>', $style_options);
542
+ ?>
543
+ <tr class="row-form-<?php echo $forms[$i]->id; ?> <?php if ($i % 2 == 0) echo 'ccf-evenrow'; ?>">
544
+ <td><input type="checkbox" class="object-check" value="1" name="objects[<?php echo $i; ?>][object_do]" /></td>
545
+ <td><span class="ccf-bold">[customcontact form=<?php echo $forms[$i]->id ?>]</span></td>
546
+ <td><input type="text" class="ccf-width75" name="objects[<?php echo $i; ?>][values][form_slug]" value="<?php echo $forms[$i]->form_slug; ?>" /></td>
547
+ <td><input type="text" name="objects[<?php echo $i; ?>][values][form_email]" value="<?php echo $forms[$i]->form_email; ?>" /></td>
548
+ <td><input type="text" class="ccf-width125" name="objects[<?php echo $i; ?>][values][form_title]" value="<?php echo $forms[$i]->form_title; ?>" /></td>
549
+ <td><input class="ccf-width100" type="text" name="objects[<?php echo $i; ?>][values][submit_button_text]" value="<?php echo $forms[$i]->submit_button_text; ?>" /></td>
550
+ <td><select name="objects[<?php echo $i; ?>][values][form_style]" class="form_style_input">
551
+ <?php echo $sty_opt; ?>
552
+ </select></td>
553
+ <td><input class="object-id" type="hidden" name="objects[<?php echo $i; ?>][object_id]" value="<?php echo $forms[$i]->id; ?>" />
554
+ <input type="hidden" class="object-type" name="objects[<?php echo $i; ?>][object_type]" value="form" />
555
+ <span class="form-options-expand"></span>
556
+ </td>
557
+ </tr>
558
+ <tr class="row-form-<?php echo $forms[$i]->id; ?> <?php if ($i % 2 == 0) echo 'ccf-evenrow'; ?>">
559
+ <td class="form-extra-options ccf-center" colspan="8"><table class="form-extra-options-table">
560
+ <tbody>
561
+ <tr>
562
+ <td class="ccf-bold"><?php _e("Method", 'custom-contact-forms'); ?></td>
563
+ <td class="ccf-bold"><?php _e("Form Action", 'custom-contact-forms'); ?></td>
564
+ <td class="ccf-bold"><?php _e("Email Subject", 'custom-contact-forms'); ?></td>
565
+ <td class="ccf-bold"><?php _e("Email From Name", 'custom-contact-forms'); ?></td>
566
+ <td class="ccf-bold"><?php _e("Success Message Title", 'custom-contact-forms'); ?></td>
567
+ <td class="ccf-bold"><?php _e("Success Message", 'custom-contact-forms'); ?></td>
568
+ <td class="ccf-bold"><?php _e("Custom Success URL", 'custom-contact-forms'); ?></td>
569
+ </tr>
570
+ <tr>
571
+ <td><a href="javascript:void(0)" class="toollink" title="<?php _e("The Form Method is the method by which information is transfer through your form. If you aren't an expert with HTML and PHP, leave this as Post.", 'custom-contact-forms'); ?>">(?)</a>
572
+ <select name="objects[<?php echo $i; ?>][values][form_method]">
573
+ <?php echo $form_methods; ?>
574
+ </select></td>
575
+ <td><a href="javascript:void(0)" class="toollink" title="<?php _e("This lets you process your forms through alternate scripts. If you use a service like InfusionSoft or Aweber, set this to be the same form action as the code provided to you by that service, otherwise leave this blank.", 'custom-contact-forms'); ?>">(?)</a>
576
+ <input class="ccf-width100" type="text" name="objects[<?php echo $i; ?>][values][form_action]" value="<?php echo $forms[$i]->form_action; ?>" /></td>
577
+ <td><a href="javascript:void(0)" class="toollink" title="<?php _e("This is the form email subject sent to the destination email address. If left blank, the default from General Settings will be used.", 'custom-contact-forms'); ?>">(?)</a>
578
+ <input class="ccf-width100" type="text" name="objects[<?php echo $i; ?>][values][form_email_subject]" maxlength="250" value="<?php echo $forms[$i]->form_email_subject; ?>" /></td>
579
+ <td><a href="javascript:void(0)" class="toollink" title="<?php _e("This is the from name of the email sent on successful form submission. If left blank, the default from General Settings will be used.", 'custom-contact-forms'); ?>">(?)</a>
580
+ <input class="ccf-width100" type="text" name="objects[<?php echo $i; ?>][values][form_email_name]" maxlength="100" value="<?php echo $forms[$i]->form_email_name; ?>" /></td>
581
+ <td><a href="javascript:void(0)" class="toollink" title="<?php _e("This will be displayed as the header in a popover when the form is filled out successfully when no custom success page is specified; if left blank it will use the default specified in general settings.", 'custom-contact-forms'); ?>">(?)</a>
582
+ <input class="ccf-width100" type="text" name="objects[<?php echo $i; ?>][values][form_success_title]" value="<?php echo $forms[$i]->form_success_title; ?>" /></td>
583
+ <td><a href="javascript:void(0)" class="toollink" title="<?php _e("This will be displayed in a popover when the form is filled out successfully when no custom success page is specified; if left blank it will use the default specified in general settings.", 'custom-contact-forms'); ?>">(?)</a>
584
+ <input type="text" name="objects[<?php echo $i; ?>][values][form_success_message]" class="ccf-width100" value="<?php echo $forms[$i]->form_success_message; ?>" /></td>
585
+ <td><a href="javascript:void(0)" class="toollink" title="<?php _e("If this is filled out, users will be sent to this thank you page when they successfully fill out this form. If it is left blank, a popover showing the form's 'success message' will be displayed on form success.", 'custom-contact-forms'); ?>">(?)</a>
586
+ <input type="text" class="ccf-width100" name="objects[<?php echo $i; ?>][values][form_thank_you_page]" value="<?php echo $forms[$i]->form_thank_you_page; ?>" /></td>
587
+ </tr>
588
+ <tr>
589
+ <td colspan="7"><a href="javascript:void(0)" class="toollink" title="<?php _e("The form display code above ([customcontact form=x]) will only work in Wordpress pages and posts. If you want to display this form in a theme file such as page.php, header.php, index.php, category.php, etc, then insert this PHP snippet.", 'custom-contact-forms'); ?>">(?)</a>
590
+ <label for="theme_code_<?php echo $forms[$i]->id; ?>"><span><?php _e("Code to Display Form in Theme Files:", 'custom-contact-forms'); ?>
591
+ </span></label>
592
+ <input type="text" class="ccf-width225" value="&lt;?php if (function_exists('serveCustomContactForm')) { serveCustomContactForm(<?php echo $forms[$i]->id; ?>); } ?&gt;" name="theme_code_<?php echo $forms[$i]->id; ?>" />
593
+ <a href="javascript:void(0)" class="toollink" title="<?php _e("This field allows you to insert HTML directly after the starting <form> tag.", 'custom-contact-forms'); ?>">(?)</a>
594
+ <label for="objects[<?php echo $i; ?>][values][custom_code]"><?php _e("Custom Code:", 'custom-contact-forms'); ?></label>
595
+ <input name="objects[<?php echo $i; ?>][values][custom_code]" type="text" class="ccf-width100" value="<?php echo $forms[$i]->custom_code; ?>" />
596
+ <a href="javascript:void(0)" class="toollink" title="<?php _e("Insert the page id's that your form will be used on. This will make it so the plugin will only load JS and CSS files on these select pages. This will improve your site's load time.", 'custom-contact-forms'); ?>">(?)</a>
597
+ <label for="objects[<?php echo $i; ?>][values][form_pages]"><?php _e("Form Pages:", 'custom-contact-forms'); ?></label>
598
+ <input name="objects[<?php echo $i; ?>][values][form_pages]" type="text" class="ccf-width75" value="<?php echo $forms[$i]->form_pages; ?>" /></td>
599
+ <input name="objects[<?php echo $i; ?>][values][form_access_update]" type="hidden" value="1" /></td>
600
+ <a href="javascript:void(0)" class="toollink" title="<?php _e("If you want to show this form to only certain types of users, you can uncheck boxes accordingly. To show this form to anyone, check all the boxes. This will only take effect if 'Form Access Capabilities' is enabled in general settings.", 'custom-contact-forms'); ?>">(?)</a>&nbsp;
601
+ <label for="form_access">Can View Form:</label>&nbsp;
602
+
603
+ <?php
604
+ $roles = parent::getRolesArray();
605
+ $access_array = parent::getFormAccessArray($forms[$i]->form_access);
606
+ foreach ($roles as $role) {
607
+ ?>
608
+ <input type="checkbox" <?php if (parent::formHasRole($access_array, $role)) { echo 'checked="checked"'; } ?> name="objects[<?php echo $i; ?>][values][form_access][]" value="<?php echo $role; ?>" />
609
+ <?php
610
+ echo $role;
611
+ }
612
+ ?>
613
+ </tr>
614
+ <tr>
615
+ <td colspan="7">
616
+ <div class="fattach">
617
+ <div class="form-detach">
618
+ <label for="detach_object_id"><span>
619
+ <?php _e("Attached Fields:", 'custom-contact-forms'); ?>
620
+ </span></label>
621
+ <?php
622
+ $attached_fields = parent::getAttachedFieldsArray($forms[$i]->id);
623
+ if (empty($attached_fields)) echo '<select class="onObject' . $forms[$i]->id . ' objectTypeForm detach-field detach-object" name="objects['.$i.'][detach]"><option value="-1">Nothing Attached!</option></select> ';
624
+ else {
625
+ echo '<select name="objects['.$i.'][detach]" class="onObject' . $forms[$i]->id . ' detach-object detach-field objectTypeForm">';
626
+ foreach($attached_fields as $attached_field) {
627
+ $this_field = parent::selectField($attached_field, '');
628
+ echo $this_field->field_slug . ' <option value="'.$this_field->id.'">'.$this_field->field_slug.'</option>';
629
+ }
630
+ echo '</select>';
631
+ }
632
+ ?>
633
+ <span class="form-detach-check">
634
+ <input type="checkbox" class="detach-check" value="1" name="objects[<?php echo $i; ?>][detach_confirm]" />
635
+ <span class="detach-lang">(Check to detach field)</span>
636
+ </span>
637
+ <br />
638
+ <span class="ccf-red ccf-bold">*</span>
639
+ <?php _e("Attach fields in the order you want them displayed.", 'custom-contact-forms'); ?>
640
+ </div>
641
+ <div class="form-attach">
642
+ <label for="field_id"><span>
643
+ <?php _e("Attach Field:", 'custom-contact-forms'); ?>
644
+ </span></label>
645
+ <select class="onObject<?php echo $forms[$i]->id; ?> attach-object attach-field objectTypeForm" name="objects[<?php echo $i; ?>][attach]">
646
+ <?php echo $add_fields; ?>
647
+ </select>
648
+ <span class="form-attach-check">
649
+ <input class="attach-check" type="checkbox" name="objects[<?php echo $i; ?>][attach_confirm]" value="1" />
650
+ <span class="attach-lang">((Check to attach field)</span>
651
+ </span>
652
+ <br />
653
+ <span class="ccf-red ccf-bold">*</span>
654
+ <?php _e("Attach fixed fields or ones you", 'custom-contact-forms'); ?>
655
+ <a href="#create-fields">
656
+ <?php _e("create", 'custom-contact-forms'); ?>
657
+ </a>. </div></div></td>
658
+ </tr>
659
+ </tbody>
660
+ </table></td>
661
+ </tr>
662
+ <?php
663
+ }
664
+ $remember_check = ($admin_options['remember_field_values'] == 0) ? 'selected="selected"' : '';
665
+ $remember_fields = '<option value="1">'.__('Yes', 'custom-contact-forms').'</option><option '.$remember_check.' value="0">'.__('No', 'custom-contact-forms').'</option>';
666
+ $border_style_options = '<option>solid</option><option>dashed</option>
667
+ <option>grooved</option><option>double</option><option>dotted</option><option>ridged</option><option>none</option>
668
+ <option>inset</option><option>outset</option>';
669
+ ?>
670
+ </tbody>
671
+
672
+ <tfoot>
673
+ <tr>
674
+ <tr>
675
+ <th scope="col" class="manage-column check-col"><input type="checkbox" class="checkall" /></th>
676
+ <th scope="col" class="manage-column form-code"><?php _e("Form Code", 'custom-contact-forms'); ?></th>
677
+ <th scope="col" class="manage-column form-slug"><?php _e("Slug", 'custom-contact-forms'); ?></th>
678
+ <th scope="col" class="manage-column form-slug"><?php _e("Destination Email", 'custom-contact-forms'); ?></th>
679
+ <th scope="col" class="manage-column form-title"><?php _e("Title", 'custom-contact-forms'); ?></th>
680
+ <th scope="col" class="manage-column form-button"><?php _e("Button Text", 'custom-contact-forms'); ?></th>
681
+ <th scope="col" class="manage-column form-style"><?php _e("Style", 'custom-contact-forms'); ?></th>
682
+ <th scope="col" class="manage-column form-expand"></th>
683
+ </tr>
684
+ </tr>
685
+
686
+ </tfoot>
687
+ </table>
688
+ <select class="bulk-dropdown" name="object_bulk_action">
689
+ <option value="0"><?php _e('Bulk Actions', 'custom-contact-forms'); ?></option>
690
+ <option value="edit"><?php _e('Save', 'custom-contact-forms'); ?></option>
691
+ <option value="delete"><?php _e('Delete', 'custom-contact-forms'); ?></option></select>
692
+ <input type="submit" name="object_bulk_apply" class="bulk-apply" value="<?php _e('Apply', 'custom-contact-forms'); ?>" /> <img src="<?php echo plugins_url(); ?>/custom-contact-forms/images/wpspin_light.gif" width="16" height="16" class="loading-img" />
693
+ </form>
694
+ </div>
695
+
696
+ <div id="fields">
697
+
698
+ <div id="create-fields" class="postbox">
699
+ <h3 class="hndle"><span>
700
+ <?php _e("Create A Form Field", 'custom-contact-forms'); ?>
701
+ </span></h3>
702
+ <div class="inside">
703
+ <form id="ccf-create-field" method="post" action="<?php echo $_SERVER['REQUEST_URI']; ?>">
704
+ <input type="hidden" name="selected_tab" value="fields" />
705
+ <ul class="left">
706
+ <li>
707
+ <label for="field_slug">*
708
+ <?php _e("Field Slug:", 'custom-contact-forms'); ?>
709
+ </label>
710
+ <input name="object[field_slug]" type="text" maxlength="40" />
711
+ <br />
712
+ <?php _e("This is just a unique way for CCF to refer to your field. Must be unique from other slugs and contain only underscores and alphanumeric characters.", 'custom-contact-forms'); ?>
713
+ </li>
714
+ <li>
715
+ <label for="field_label">
716
+ <?php _e("Field Label:", 'custom-contact-forms'); ?>
717
+ </label>
718
+ <input name="object[field_label]" type="text" maxlength="100" />
719
+ <br />
720
+ <?php _e("The field label is displayed next to the field and is visible to the user.", 'custom-contact-forms'); ?>
721
+ </li>
722
+ <li>
723
+ <label for="field_type">*
724
+ <?php _e("Field Type:", 'custom-contact-forms'); ?>
725
+ </label>
726
+ <select name="object[field_type]" class="field-type-selector">
727
+ <option>Text</option>
728
+ <option>Date</option>
729
+ <option>File</option>
730
+ <option>Textarea</option>
731
+ <option>Hidden</option>
732
+ <option>Checkbox</option>
733
+ <option>Radio</option>
734
+ <option>Dropdown</option>
735
+ </select>
736
+ </li>
737
+ <li>
738
+ <label for="field_value">
739
+ <?php _e("Initial Value:", 'custom-contact-forms'); ?>
740
+ </label>
741
+ <input name="object[field_value]" type="text" maxlength="50" />
742
+ <br />
743
+ (
744
+ <?php _e("This is the initial value of the field. If you set the type as checkbox, it is recommend you set this to what the checkbox is implying. For example if I were creating the checkbox
745
+ 'Are you human?', I would set the initial value to 'Yes'.", 'custom-contact-forms'); ?>
746
+ <?php _e("If you set the field type as 'Dropdown' or 'Radio', you should enter the slug of the", 'custom-contact-forms'); ?>
747
+ <a href="#manage-field-options" title="<?php _e("Create a Field Option", 'custom-contact-forms'); ?>"><?php _e("field option", 'custom-contact-forms'); ?></a>
748
+ <?php _e("you would like initially selected.", 'custom-contact-forms'); ?>
749
+ ) </li>
750
+ <li>
751
+ <label for="field_maxlength">
752
+ <?php _e("Max Length:", 'custom-contact-forms'); ?>
753
+ </label>
754
+ <input class="ccf-width50" size="10" name="object[field_maxlength]" type="text" maxlength="4" />
755
+ <br />
756
+ <?php _e("0 for no limit; only applies to Text fields", 'custom-contact-forms'); ?>
757
+ </li>
758
+ </ul>
759
+ <ul class="right">
760
+ <li>
761
+ <label for="field_required">*
762
+ <?php _e("Required Field:", 'custom-contact-forms'); ?>
763
+ </label>
764
+ <select name="object[field_required]">
765
+ <option value="0">
766
+ <?php _e("No", 'custom-contact-forms'); ?>
767
+ </option>
768
+ <option value="1">
769
+ <?php _e("Yes", 'custom-contact-forms'); ?>
770
+ </option>
771
+ </select>
772
+ <br />
773
+ <?php _e("If a field is required and a user leaves it blank, the plugin will display an error message (which you can customize using 'Field Error') explaining the problem.", 'custom-contact-forms'); ?>
774
+ </li>
775
+ <li>
776
+ <label for="field_instructions">
777
+ <?php _e("Field Instructions:", 'custom-contact-forms'); ?>
778
+ </label>
779
+ <input name="object[field_instructions]" type="text" />
780
+ <br />
781
+ <?php _e("If this is filled out, a tooltip popover displaying this text will show when the field is selected.", 'custom-contact-forms'); ?>
782
+ </li>
783
+ <li>
784
+ <label for="field_class">
785
+ <?php _e("Field Class:", 'custom-contact-forms'); ?>
786
+ </label>
787
+ <input name="object[field_class]" type="text" />
788
+ <br />
789
+ <?php _e("If you manage your own .css stylesheet, you can use this to attach a class to this field. Leaving this blank will do nothing.", 'custom-contact-forms'); ?>
790
+ </li>
791
+ <li>
792
+ <label for="field_error">
793
+ <?php _e("Field Error:", 'custom-contact-forms'); ?>
794
+ </label>
795
+ <input name="object[field_error]" type="text" />
796
+ <br />
797
+ <?php _e("If a user leaves this field blank and the field is required, this error message will be shown. A generic default will show if left blank.", 'custom-contact-forms'); ?>
798
+ </li>
799
+ <li class="file-fields">
800
+ <label for="field_max_upload_size">
801
+ <?php _e("Max File Size Allowed:", 'custom-contact-forms'); ?>
802
+ </label>
803
+ <input name="object[field_max_upload_size]" value="5000" type="text" /> <?php _e('KB', 'custom-contact-forms'); ?>
804
+ <br />
805
+ <?php _e("If a user tries to upload a file larger than the max upload size, an error message will be displayed.", 'custom-contact-forms'); ?>
806
+ </li>
807
+ <li class="file-fields">
808
+ <label for="field_allowed_file_extensions">
809
+ <?php _e("Allowed File Extensions for Upload:", 'custom-contact-forms'); ?>
810
+ </label>
811
+ <input name="object[field_allowed_file_extensions]" type="text" />
812
+ <br />
813
+ <?php _e("If a user tries to upload a file with an extension not in this list, an error will be shown. Separate file extensions with a comma. Ex: doc, jpg, jpeg, txt", 'custom-contact-forms'); ?>
814
+ </li>
815
+ <li>
816
+ <input type="hidden" name="object[user_field]" value="1" />
817
+ <input type="hidden" name="object_type" value="field" />
818
+ <input type="submit" value="<?php _e("Create Field", 'custom-contact-forms'); ?>" name="object_create" class="create-button" />
819
+ </li>
820
+ <li class="attach"><span class="ccf-red">*</span> <?php _e('If this is a dropdown or radio field, you should go to the field manager below to attach field options after you create it.', 'custom-contact-forms'); ?></li>
821
+
822
+ </ul>
823
+ </form>
824
+ </div>
825
+ </div>
826
+
827
+ <h3 class="manage-h3">
828
+ <?php _e("Manage User Fields", 'custom-contact-forms'); ?>
829
+ </h3>
830
+ <form class="ccf-edit-ajax" method="post" action="<?php echo $_SERVER['REQUEST_URI']; ?>">
831
+ <input type="hidden" name="selected_tab" value="fields" />
832
+ <table class="widefat post" id="manage-fields" cellspacing="0">
833
+ <thead>
834
+ <tr>
835
+ <th scope="col" class="manage-column check-col"><input type="checkbox" class="checkall" /></th>
836
+ <th scope="col" class="manage-column field-slug"><?php _e("Slug", 'custom-contact-forms'); ?></th>
837
+ <th scope="col" class="manage-column field-label"><?php _e("Label", 'custom-contact-forms'); ?></th>
838
+ <th scope="col" class="manage-column field-type"><?php _e("Type", 'custom-contact-forms'); ?></th>
839
+ <th scope="col" class="manage-column field-value"><?php _e("Initial Value", 'custom-contact-forms'); ?></th>
840
+ <th scope="col" class="manage-column field-required"><?php _e("Required", 'custom-contact-forms'); ?></th>
841
+ <th scope="col" class="manage-column field-maxlength"><?php _e("Maxlength", 'custom-contact-forms'); ?></th>
842
+ <th scope="col" class="manage-column field-expand"></th>
843
+ </tr>
844
+ </thead>
845
+ <tbody>
846
+ <?php
847
+ $fields = parent::selectAllFields();
848
+ for ($i = 0, $z = 0; $i < count($fields); $i++, $z++) {
849
+ if ($fields[$i]->user_field == 0) { $z--; continue; }
850
+ $attached_options = parent::getAttachedFieldOptionsArray($fields[$i]->id);
851
+ $field_types = '<option>Text</option><option>Date</option><option>File</option><option>Textarea</option><option>Hidden</option><option>Checkbox</option><option>Radio</option><option>Dropdown</option>';
852
+ $field_types = str_replace('<option>'.$fields[$i]->field_type.'</option>', '<option selected="selected">'.$fields[$i]->field_type.'</option>', $field_types);
853
+
854
+ ?>
855
+ <tr class="row-field-<?php echo $fields[$i]->id; ?> <?php if ($z % 2 == 1) echo ' ccf-evenrow'; ?>">
856
+ <td><input class="object-check" type="checkbox" value="1" name="objects[<?php echo $i; ?>][object_do]" /></td>
857
+ <td><input type="text" name="objects[<?php echo $i; ?>][values][field_slug]" class="ccf-width100" maxlength="50" value="<?php echo $fields[$i]->field_slug; ?>" /></td>
858
+ <td><input type="text" name="objects[<?php echo $i; ?>][values][field_label]" maxlength="100" value="<?php echo $fields[$i]->field_label; ?>" /></td>
859
+ <td><select name="objects[<?php echo $i; ?>][values][field_type]">
860
+ <?php echo $field_types; ?>
861
+ </select></td>
862
+ <td><input type="text" name="objects[<?php echo $i; ?>][values][field_value]" maxlength="50" class="ccf-width75" value="<?php echo $fields[$i]->field_value; ?>" /></td>
863
+ <td><select name="objects[<?php echo $i; ?>][values][field_required]">
864
+ <option value="1">
865
+ <?php _e("Yes", 'custom-contact-forms'); ?>
866
+ </option>
867
+ <option value="0" <?php if ($fields[$i]->field_required != 1) echo 'selected="selected"'; ?>>
868
+ <?php _e("No", 'custom-contact-forms'); ?>
869
+ </option>
870
+ </select></td>
871
+ <td><?php if ($fields[$i]->field_type == 'Dropdown' || $fields[$i]->field_type == 'Radio' || $fields[$i]->field_type == 'Checkbox') { ?>
872
+ <b>-</b>
873
+ <?php } else { ?>
874
+ <input type="text" class="ccf-width50" name="objects[<?php echo $i; ?>][values][field_maxlength]" value="<?php echo $fields[$i]->field_maxlength; ?>" />
875
+ <?php } ?>
876
+ </td>
877
+ <td><input type="hidden" class="object-type" name="objects[<?php echo $i; ?>][object_type]" value="field" />
878
+ <input type="hidden" class="object-id" name="objects[<?php echo $i; ?>][object_id]" value="<?php echo $fields[$i]->id; ?>" />
879
+ <span class="fields-options-expand"></span>
880
+ </tr>
881
+ <?php $show_field_options = ($fields[$i]->field_type == 'Radio' || $fields[$i]->field_type == 'Dropdown' || $fields[$i]->field_type == 'Checkbox') ? true : false; ?>
882
+ <tr class="row-field-<?php echo $fields[$i]->id; ?> <?php if ($z % 2 == 1) echo 'ccf-evenrow'; ?>">
883
+ <td class="fields-extra-options" colspan="8">
884
+ <div class="row-one">
885
+ <a href="javascript:void(0)" class="toollink" title="<?php _e('If this is filled out, a tooltip popover displaying this text will show when the field is selected.', 'custom-contact-forms'); ?>">(?)</a>
886
+ <label for="field_instructions">
887
+ <?php _e("Field Instructions:", 'custom-contact-forms'); ?>
888
+ </label>
889
+ <input type="text" class="ccf-width150" name="objects[<?php echo $i; ?>][values][field_instructions]" value="<?php echo $fields[$i]->field_instructions; ?>" />
890
+ <a href="javascript:void(0)" class="toollink" title="<?php _e('If you manage a .CSS file for your theme, you could create a class in that file and add it to this field. If the form attaching this field is using a "Form Style" other than the default, styles inherited from the "Field Class" might be overwritten.', 'custom-contact-forms'); ?>">(?)</a>
891
+ <label for="field_class">
892
+ <?php _e("Field Class:", 'custom-contact-forms'); ?>
893
+ </label>
894
+ <input type="text" class="ccf-width100" name="objects[<?php echo $i; ?>][values][field_class]" value="<?php echo $fields[$i]->field_class; ?>" />
895
+ <a href="javascript:void(0)" class="toollink" title="<?php _e('This lets you customize the error message displayed when this field is required and left blank.', 'custom-contact-forms'); ?>">(?)</a>
896
+ <label for="field_error">
897
+ <?php _e("Field Error:", 'custom-contact-forms'); ?>
898
+ </label>
899
+ <input type="text" class="ccf-width200" name="objects[<?php echo $i; ?>][values][field_error]" value="<?php echo $fields[$i]->field_error; ?>" />
900
+ </div>
901
+ <?php if ($fields[$i]->field_type == 'File') { ?>
902
+ <div class="row-two">
903
+ <a href="javascript:void(0)" class="toollink" title="<?php _e('If a user tries to upload a file greater than the value in this field, an error will be shown. Upload size is in KB. If this is left blank or set to 0, then there will be no maximum file size for this field.', 'custom-contact-forms'); ?>">(?)</a>
904
+ <label for="field_max_upload_size"><?php _e("Max Upload Size", 'custom-contact-forms'); ?></label>
905
+ <input type="text" class="ccf-width100" name="objects[<?php echo $i; ?>][values][field_max_upload_size]" value="<?php echo $fields[$i]->field_max_upload_size; ?>" /><?php _e('KB', 'custom-contact-forms'); ?>
906
+ <a href="javascript:void(0)" class="toollink" title="<?php _e('If a user tries to upload a file with an extension not in this list, an error will be shown. If this is left blank, then all file extensions will be accepted. Separate file extensions with a comma. Ex: doc, jpg, jpeg, bmp, gif, txt', 'custom-contact-forms'); ?>">(?)</a>
907
+ <label for="field_allowed_file_extensions"><?php _e("Allowed File Extensions", 'custom-contact-forms'); ?></label>
908
+ <input type="text" class="ccf-width200" name="objects[<?php echo $i; ?>][values][field_allowed_file_extensions]" value="<?php $exts = unserialize($fields[$i]->field_allowed_file_extensions); echo (!empty($exts)) ? @implode(', ', $exts) : ''; ?>" />
909
+ </div>
910
+ <?php } ?>
911
+ <?php
912
+ if ($show_field_options) { ?>
913
+ <div class="fattach">
914
+ <div class="field-detach">
915
+ <span class="ccf-bold">Detach Options:</span>
916
+ <?php if (empty($attached_options)) { ?>
917
+ <select class="onObject<?php echo $fields[$i]->id ?> detach-object detach-field-option objectTypeField" name="objects[<?php echo $i; ?>][detach]">
918
+ <option value="-1">Nothing Attached!</option>
919
+ </select>
920
+ <?php } else { ?>
921
+ <select name="objects[<?php echo $i; ?>][detach]" class="onObject<?php echo $fields[$i]->id ?> detach-object detach-field-option objectTypeField">
922
+ <?php
923
+ foreach ($attached_options as $option_id) {
924
+ $option = parent::selectFieldOption($option_id);
925
+ ?>
926
+ <option value="<?php echo $option_id; ?>"><?php echo $option->option_slug; ?></option>
927
+ <?php
928
+ }
929
+ ?>
930
+ </select>
931
+ <?php } ?>
932
+ <span class="field-detach-check">
933
+ <input class="detach-check" type="checkbox" name="objects[<?php echo $i; ?>][detach_confirm]" value="1" />
934
+ <span class="detach-lang">(Check to detach option)</span>
935
+ </span><br />
936
+ <span class="ccf-red ccf-bold">*</span>
937
+ <?php _e("Detach field options you", 'custom-contact-forms'); ?>
938
+ <a href="#create-field-options">
939
+ <?php _e("create", 'custom-contact-forms'); ?>
940
+ </a>. </div>
941
+ <?php $all_options = $this->getFieldOptionsForm(); ?>
942
+ <div class="field-attach">
943
+ <span class="ccf-bold">Attach Options:</span>
944
+ <?php if (empty($all_options)) { ?>
945
+ <b>No Field Options to Attach</b>
946
+ <?php } else { ?>
947
+ <select name="objects[<?php echo $i; ?>][attach]" class="onObject<?php echo $fields[$i]->id ?> attach-object attach-field-option objectTypeField">
948
+ <?php echo $all_options; ?>
949
+ </select>
950
+ <span class="field-attach-check">
951
+ <input type="checkbox" class="attach-check" name="objects[<?php echo $i; ?>][attach_confirm]" value="1" />
952
+ <?php } ?>
953
+ <span class="attach-lang">(Check to attach option)</span>
954
+ </span><br />
955
+ <span class="ccf-red ccf-bold">*</span>
956
+ <?php _e("Attach field options in the order you want them to display.", 'custom-contact-forms'); ?>
957
+ </div>
958
+ </div>
959
+ <?php } ?>
960
+ </td>
961
+ </tr>
962
+ <?php
963
+ }
964
+ ?>
965
+ </tbody>
966
+
967
+ <tfoot>
968
+ <tr>
969
+ <th scope="col" class="manage-column check-col"><input type="checkbox" class="checkall" /></th>
970
+ <th scope="col" class="manage-column field-slug"><?php _e("Slug", 'custom-contact-forms'); ?></th>
971
+ <th scope="col" class="manage-column field-label"><?php _e("Label", 'custom-contact-forms'); ?></th>
972
+ <th scope="col" class="manage-column field-type"><?php _e("Type", 'custom-contact-forms'); ?></th>
973
+ <th scope="col" class="manage-column field-value"><?php _e("Initial Value", 'custom-contact-forms'); ?></th>
974
+ <th scope="col" class="manage-column field-required"><?php _e("Required", 'custom-contact-forms'); ?></th>
975
+ <th scope="col" class="manage-column field-maxlength"><?php _e("Maxlength", 'custom-contact-forms'); ?></th>
976
+ <th scope="col" class="manage-column field-expand"></th>
977
+ </tr>
978
+ </tfoot>
979
+ </table>
980
+ <select class="bulk-dropdown" name="object_bulk_action">
981
+ <option value="0"><?php _e('Bulk Actions', 'custom-contact-forms'); ?></option>
982
+ <option value="edit"><?php _e('Save', 'custom-contact-forms'); ?></option>
983
+ <option value="delete"><?php _e('Delete', 'custom-contact-forms'); ?></option>
984
+ </select> <input type="submit" name="object_bulk_apply" class="bulk-apply" value="<?php _e('Apply', 'custom-contact-forms'); ?>" /> <img src="<?php echo plugins_url(); ?>/custom-contact-forms/images/wpspin_light.gif" width="16" height="16" class="loading-img" />
985
+ </form>
986
+
987
+ <h3 class="manage-h3">
988
+ <?php _e("Manage Fixed Fields", 'custom-contact-forms'); ?>
989
+ </h3>
990
+ <form class="ccf-edit-ajax" method="post" action="<?php echo $_SERVER['REQUEST_URI']; ?>">
991
+ <input type="hidden" name="selected_tab" value="fields" />
992
+ <table class="widefat post" id="manage-fixed-fields" cellspacing="0">
993
+ <thead>
994
+ <tr>
995
+ <th scope="col" class="manage-column check-col"><input type="checkbox" class="checkall" /></th>
996
+ <th scope="col" class="manage-column field-slug"><?php _e("Slug", 'custom-contact-forms'); ?></th>
997
+ <th scope="col" class="manage-column field-label"><?php _e("Label", 'custom-contact-forms'); ?></th>
998
+ <th scope="col" class="manage-column field-type"><?php _e("Type", 'custom-contact-forms'); ?></th>
999
+ <th scope="col" class="manage-column field-value"><?php _e("Initial Value", 'custom-contact-forms'); ?></th>
1000
+ <th scope="col" class="manage-column field-value"><?php _e("Required", 'custom-contact-forms'); ?></th>
1001
+ <th scope="col" class="manage-column field-maxlength"><?php _e("Maxlength", 'custom-contact-forms'); ?></th>
1002
+ <th scope="col" class="manage-column field-expand"></th>
1003
+ </tr>
1004
+ </thead>
1005
+ <tbody>
1006
+ <?php
1007
+ $fields = parent::selectAllFields();
1008
+ for ($i = 0, $z = 0; $i < count($fields); $i++, $z++) {
1009
+ if ($fields[$i]->user_field == 1) { $z--; continue;}
1010
+ $field_types = '<option>Text</option><option>Textarea</option><option>Hidden</option><option>Checkbox</option>';
1011
+ $field_types = str_replace('<option>'.$fields[$i]->field_type.'</option>', '<option selected="selected">'.$fields[$i]->field_type.'</option>', $field_types);
1012
+
1013
+ ?>
1014
+ <tr class="row-field-<?php echo $fields[$i]->id; ?> <?php if ($z % 2 == 0) echo 'ccf-evenrow'; ?>">
1015
+ <td><input class="object-check" type="checkbox" value="1" name="objects[<?php echo $i; ?>][object_do]" /></td>
1016
+ <td><?php echo $fields[$i]->field_slug; ?></td>
1017
+ <td><?php if ($fields[$i]->field_slug == 'resetButton') { _e('None', 'custom-contact-forms'); } else { ?>
1018
+ <input type="text" name="objects[<?php echo $i; ?>][values][field_label]" maxlength="100" value="<?php echo $fields[$i]->field_label; ?>" />
1019
+ <?php } ?></td>
1020
+ <td><?php echo $fields[$i]->field_type; ?>
1021
+ <td><?php if ($fields[$i]->field_type != 'Checkbox') { ?>
1022
+ <input type="text" name="objects[<?php echo $i; ?>][values][field_value]" class="ccf-width75" maxlength="50" value="<?php echo $fields[$i]->field_value; ?>" />
1023
+ <?php } else {
1024
+ echo $fields[$i]->field_value;
1025
+ ?>
1026
+ <?php } ?>
1027
+ </td>
1028
+ <td><?php if ($fields[$i]->field_slug == 'fixedEmail' || $fields[$i]->field_slug == 'emailSubject' || $fields[$i]->field_slug == 'fixedWebsite' || $fields[$i]->field_slug == 'usaStates' || $fields[$i]->field_slug == 'datePicker' || $fields[$i]->field_slug == 'allCountries') { ?>
1029
+ <select name="objects[<?php echo $i; ?>][values][field_required]">
1030
+ <option value="1">
1031
+ <?php _e("Yes", 'custom-contact-forms'); ?>
1032
+ </option>
1033
+ <option <?php if($fields[$i]->field_required != 1) echo 'selected="selected"'; ?> value="0">
1034
+ <?php _e("No", 'custom-contact-forms'); ?>
1035
+ </option>
1036
+ </select>
1037
+ <?php } else {
1038
+ if ($fields[$i]->field_slug == 'resetButton') {
1039
+ echo '-';
1040
+ } else {
1041
+ _e("Yes", 'custom-contact-forms');
1042
+ }
1043
+ }
1044
+ ?>
1045
+ </td>
1046
+ <td><?php if ($fields[$i]->field_type != 'Checkbox' && $fields[$i]->field_slug != 'resetButton' && $fields[$i]->field_slug != 'allCountries' && $fields[$i]->field_slug != 'usaStates') { ?>
1047
+ <input type="text" class="ccf-width50" name="objects[<?php echo $i; ?>][values][field_maxlength]" value="<?php echo $fields[$i]->field_maxlength; ?>" />
1048
+ <?php } else { _e('None', 'custom-contact-forms'); } ?>
1049
+ </td>
1050
+ <td><input type="hidden" name="objects[<?php echo $i; ?>][object_type]" value="field" />
1051
+ <input type="hidden" class="object-id" name="objects[<?php echo $i; ?>][object_id]" value="<?php echo $fields[$i]->id; ?>" />
1052
+ <span class="fixed-fields-options-expand"></span>
1053
+ </tr>
1054
+ <tr class="row-field-<?php echo $fields[$i]->id; ?> <?php if ($z % 2 == 0) echo 'ccf-evenrow'; ?>">
1055
+ <td class="fixed-fields-extra-options" colspan="8">
1056
+ <a href="javascript:void(0)" class="toollink" title="<?php _e('If you manage a .CSS file for your theme, you could create a class in that file and add it to this field. If the form attaching this field is using a "Form Style" other than the default, styles inherited from the "Field Class" might be overwritten.', 'custom-contact-forms'); ?>">(?)</a>
1057
+ <label for="field_class">
1058
+ <?php _e('Field Class:', 'custom-contact-forms'); ?>
1059
+ </label>
1060
+ <input type="text" value="<?php echo $fields[$i]->field_class; ?>" name="objects[<?php echo $i; ?>][values][field_class]" />
1061
+ <?php if ($fields[$i]->field_slug != 'resetButton') { ?>
1062
+ <a href="javascript:void(0)" class="toollink" title="<?php _e('If this is filled out, a tooltip popover displaying this text will show when the field is selected.', 'custom-contact-forms'); ?>">(?)</a>
1063
+ <label for="field_instructions">
1064
+ <?php _e("Field Instructions:", 'custom-contact-forms'); ?>
1065
+ </label>
1066
+ <input type="text" name="objects[<?php echo $i; ?>][values][field_instructions]" class="ccf-width200" value="<?php echo $fields[$i]->field_instructions; ?>" />
1067
+ <a href="javascript:void(0)" class="toollink" title="<?php _e('This lets you customize the error message displayed when this field is required and left blank.', 'custom-contact-forms'); ?>">(?)</a>
1068
+ <label for="field_error">
1069
+ <?php _e("Field Error:", 'custom-contact-forms'); ?>
1070
+ </label>
1071
+ <input type="text" class="ccf-width200" name="objects[<?php echo $i; ?>][values][field_error]" value="<?php echo $fields[$i]->field_error; ?>" />
1072
+ <br />
1073
+ <?php } ?>
1074
+ <div class="field_descrip"><?php echo $GLOBALS['ccf_fixed_fields'][$fields[$i]->field_slug]; ?></div></td>
1075
+ </tr>
1076
+ <?php
1077
+ }
1078
+ ?>
1079
+ </tbody>
1080
+
1081
+ <tfoot>
1082
+ <tr>
1083
+ <th scope="col" class="manage-column check-col"><input type="checkbox" class="checkall" /></th>
1084
+ <th scope="col" class="manage-column field-slug"><?php _e("Slug", 'custom-contact-forms'); ?></th>
1085
+ <th scope="col" class="manage-column field-label"><?php _e("Label", 'custom-contact-forms'); ?></th>
1086
+ <th scope="col" class="manage-column field-type"><?php _e("Type", 'custom-contact-forms'); ?></th>
1087
+ <th scope="col" class="manage-column field-value"><?php _e("Initial Value", 'custom-contact-forms'); ?></th>
1088
+ <th scope="col" class="manage-column field-value"><?php _e("Required", 'custom-contact-forms'); ?></th>
1089
+ <th scope="col" class="manage-column field-maxlength"><?php _e("Maxlength", 'custom-contact-forms'); ?></th>
1090
+ <th scope="col" class="manage-column field-expand"></th>
1091
+ </tr>
1092
+ </tfoot>
1093
+ </table>
1094
+ <select class="bulk-dropdown" name="object_bulk_action">
1095
+ <option value="0"><?php _e('Bulk Actions', 'custom-contact-forms'); ?></option>
1096
+ <option value="edit"><?php _e('Save', 'custom-contact-forms'); ?></option>
1097
+ </select> <input type="submit" class="bulk-apply" name="object_bulk_apply" value="<?php _e('Apply', 'custom-contact-forms'); ?>" /> <img src="<?php echo plugins_url(); ?>/custom-contact-forms/images/wpspin_light.gif" width="16" height="16" class="loading-img" />
1098
+ </form>
1099
+ </div>
1100
+
1101
+ <div id="field-options">
1102
+ <div id="manage-field-options" class="postbox">
1103
+ <h3 class="hndle"><span>
1104
+ <?php _e("Manage Field Options", 'custom-contact-forms'); ?>
1105
+ </span></h3>
1106
+ <div class="inside">
1107
+ <form class="ccf-edit-ajax" method="post" action="<?php echo $_SERVER['REQUEST_URI']; ?>">
1108
+ <input type="hidden" name="selected_tab" value="field-options" />
1109
+ <table cellpadding="0" cellspacing="0">
1110
+ <thead>
1111
+ <tr>
1112
+ <th><input class="checkall" type="checkbox" /></th>
1113
+ <th><?php _e("Slug", 'custom-contact-forms'); ?></th>
1114
+ <th><?php _e("Label", 'custom-contact-forms'); ?></th>
1115
+ <th><?php _e("Value", 'custom-contact-forms'); ?></th>
1116
+ <th><?php _e("Is Dead", 'custom-contact-forms'); ?></th>
1117
+ </tr>
1118
+ </thead>
1119
+ <tfoot>
1120
+ <tr>
1121
+ <th><input class="checkall" type="checkbox" /></th>
1122
+ <th><?php _e("Slug", 'custom-contact-forms'); ?></th>
1123
+ <th><?php _e("Label", 'custom-contact-forms'); ?></th>
1124
+ <th><?php _e("Value", 'custom-contact-forms'); ?></th>
1125
+ <th><?php _e("Is Dead", 'custom-contact-forms'); ?></th>
1126
+ </tr>
1127
+ </tfoot>
1128
+ <tbody>
1129
+ <?php
1130
+ $options = parent::selectAllFieldOptions(1);
1131
+ $option_count = count($options);
1132
+ $i = 0;
1133
+ foreach ($options as $option) {
1134
+ ?>
1135
+ <tr class="row-field_option-<?php echo $option->id; ?> <?php if ($i % 2 == 1) echo 'evenrow-field-options'; ?>">
1136
+ <td><input type="checkbox" class="object-check" name="objects[<?php echo $i; ?>][object_do]" value="1" /> </td>
1137
+ <td><input type="hidden" name="objects[<?php echo $i; ?>][object_type]" value="field_option" />
1138
+
1139
+ <input class="object-id" type="hidden" name="objects[<?php echo $i; ?>][object_id]" value="<?php echo $option->id; ?>" />
1140
+
1141
+ <input type="text" maxlength="20" name="<?php ?>objects[<?php echo $i; ?>][values][option_slug]" value="<?php echo $option->option_slug; ?>" class="ccf-width50" /></td>
1142
+ <td><input type="text" name="objects[<?php echo $i; ?>][values][option_label]" value="<?php echo $option->option_label; ?>" class="ccf-width100" /></td>
1143
+ <td><input type="text" name="objects[<?php echo $i; ?>][values][option_value]" value="<?php echo $option->option_value; ?>" class="ccf-width100" /></td>
1144
+ <td><select name="objects[<?php echo $i; ?>][values][option_dead]"><option value="0"><?php _e('No', 'custom-contact-forms'); ?></option><option <?php if ($option->option_dead == 1) echo 'selected="selected"'; ?> value="1"><?php _e('Yes', 'custom-contact-forms'); ?></option></select></td>
1145
+
1146
+ </tr>
1147
+ <?php
1148
+ $i++;
1149
+ } if (empty($options)) {
1150
+ ?>
1151
+ <tr>
1152
+ <td class="ccf-center"><?php _e("No field options have been created.", 'custom-contact-forms'); ?></td>
1153
+ </tr>
1154
+ <?php
1155
+ }
1156
+ ?>
1157
+ </tbody>
1158
+ </table>
1159
+ <select class="bulk-dropdown" name="object_bulk_action">
1160
+ <option value="0"><?php _e('Bulk Actions', 'custom-contact-forms'); ?></option>
1161
+ <option value="edit"><?php _e('Save', 'custom-contact-forms'); ?></option>
1162
+ <option value="delete"><?php _e('Delete', 'custom-contact-forms'); ?></option></select>
1163
+ <input type="submit" class="bulk-apply" name="object_bulk_apply" value="<?php _e('Apply', 'custom-contact-forms'); ?>" /> <img src="<?php echo plugins_url(); ?>/custom-contact-forms/images/wpspin_light.gif" width="16" height="16" class="loading-img" />
1164
+ </form>
1165
+ </div>
1166
+ </div>
1167
+
1168
+
1169
+ <div id="create-field-options" class="postbox">
1170
+ <h3 class="hndle"><span>
1171
+ <?php _e("Create A Field Option", 'custom-contact-forms'); ?>
1172
+ </span></h3>
1173
+ <div class="inside">
1174
+ <form id="ccf-create-field-option" method="post" action="<?php echo $_SERVER['REQUEST_URI']?>">
1175
+ <input type="hidden" name="selected_tab" value="field-options" />
1176
+ <ul>
1177
+ <li>
1178
+ <label for="object[option_slug]">*
1179
+ <?php _e("Option Slug:", 'custom-contact-forms'); ?>
1180
+ </label>
1181
+ <input maxlength="20" type="text" name="object[option_slug]" />
1182
+ <br />
1183
+ <?php _e("Used to identify this option, solely for admin purposes; must be unique, and contain only letters, numbers, and underscores. Example: 'slug_one'", 'custom-contact-forms'); ?>
1184
+ </li>
1185
+ <li>
1186
+ <label for="object[option_label]">*
1187
+ <?php _e("Option Label:", 'custom-contact-forms'); ?>
1188
+ </label>
1189
+ <input type="text" name="object[option_label]" />
1190
+ <br />
1191
+ <?php _e("This is what is shown to the user in the dropdown or radio field. Example: 'United States'", 'custom-contact-forms'); ?>
1192
+ </li>
1193
+ <li>
1194
+ <label for="object[option_value]">
1195
+ <?php _e("Option Value:", 'custom-contact-forms'); ?>
1196
+ </label>
1197
+ <input type="text" name="object[option_value]" /> <a href="javascript:void(0)" class="toollink" title="<?php _e("This is the actual value of the option which is not shown to the user. This can be the same thing as the label. An example pairing of label => value is: 'The color green' => 'green' or 'Yes' => '1'.", 'custom-contact-forms'); ?>">(?)</a>
1198
+ <br />
1199
+ <?php _e('This is the actual value of the option which is not shown to the user. This can be the same thing as the label. An example pairing of label => value is: "The color green" => "green" or "Yes" => "1".', 'custom-contact-forms'); ?>
1200
+ </li>
1201
+ <li>
1202
+ <label for="object[option_dead]"><?php _e("Is Dead Option:", 'custom-contact-forms'); ?></label>
1203
+ <select name="object[option_dead]"><option value="0"><?php _e('No', 'custom-contact-forms'); ?></option><option value="1"><?php _e('Yes', 'custom-contact-forms'); ?></option></select>
1204
+ <a href="javascript:void(0)" class="toollink" title="<?php _e("A dead option is something like 'Please Select One'. This is a useful tool for required dropdown fields. If a dead option is submitted by a user for a required dropdown field, then the user will have to go back and fill out the field again.", 'custom-contact-forms'); ?>">(?)</a>
1205
+ </li>
1206
+ <li>
1207
+ <input name="object_type" type="hidden" value="field_option" />
1208
+ <input type="submit" class="object-action" name="object_create" value="<?php _e("Create Field Option", 'custom-contact-forms'); ?>" />
1209
+
1210
+ </li>
1211
+ </ul>
1212
+ </form>
1213
+ </div>
1214
+ </div>
1215
+ </div>
1216
+
1217
+
1218
+ <div id="styles">
1219
+ <div id="create-styles" class="postbox">
1220
+ <h3 class="hndle"><span>
1221
+ <?php _e("Create A Style for Your Forms", 'custom-contact-forms'); ?>
1222
+ </span></h3>
1223
+ <div class="inside">
1224
+ <p>
1225
+ <?php _e("Use this manager to create styles for your forms. Each field is already filled out with nice look defaults. It is recommended you simply input a slug and click create to see the defaults before you start changing values.", 'custom-contact-forms'); ?>
1226
+ </p>
1227
+ <form id="ccf-create-style" method="post" action="<?php echo $_SERVER['REQUEST_URI']; ?>">
1228
+ <input type="hidden" name="selected_tab" value="styles" />
1229
+ <ul class="style_left">
1230
+ <li>
1231
+ <label for="style_slug">*
1232
+ <?php _e("Style Slug:", 'custom-contact-forms'); ?>
1233
+ </label>
1234
+ <input type="text" maxlength="30" class="ccf-width75" name="object[style_slug]" />
1235
+ <?php _e("(Must be unique)", 'custom-contact-forms'); ?>
1236
+ </li>
1237
+ <li>
1238
+ <label for="title_fontsize">
1239
+ <?php _e("Title Font Size:", 'custom-contact-forms'); ?>
1240
+ </label>
1241
+ <input type="text" maxlength="20" value="1.2em" class="ccf-width75" name="object[title_fontsize]" />
1242
+ <?php _e("(ex: 10pt, 10px, 1em)", 'custom-contact-forms'); ?>
1243
+ </li>
1244
+ <li>
1245
+ <label for="title_fontcolor">
1246
+ <?php _e("Title Font Color:", 'custom-contact-forms'); ?>
1247
+ </label>
1248
+ <input type="text" maxlength="20" value="333333" class="ccf-width75 colorfield" name="object[title_fontcolor]" />
1249
+ <?php _e("(ex: FF0000)", 'custom-contact-forms'); ?>
1250
+ </li>
1251
+ <li>
1252
+ <label for="label_width">
1253
+ <?php _e("Label Width:", 'custom-contact-forms'); ?>
1254
+ </label>
1255
+ <input type="text" maxlength="20" value="200px" class="ccf-width75" name="object[label_width]" />
1256
+ <?php _e("(ex: 100px or 20%)", 'custom-contact-forms'); ?>
1257
+ </li>
1258
+ <li>
1259
+ <label for="label_fontsize">
1260
+ <?php _e("Label Font Size:", 'custom-contact-forms'); ?>
1261
+ </label>
1262
+ <input type="text" maxlength="20" value="1em" class="ccf-width75" name="object[label_fontsize]" />
1263
+ <?php _e("(ex: 10px, 10pt, 1em)", 'custom-contact-forms'); ?>
1264
+ </li>
1265
+ <li>
1266
+ <label for="label_fontcolor">
1267
+ <?php _e("Label Font Color:", 'custom-contact-forms'); ?>
1268
+ </label>
1269
+ <input type="text" maxlength="20" value="333333" class="ccf-width75 colorfield" name="object[label_fontcolor]" />
1270
+ <?php _e("(ex: FF0000)", 'custom-contact-forms'); ?>
1271
+ </li>
1272
+ <li>
1273
+ <label for="input_width">
1274
+ <?php _e("Text Field Width:", 'custom-contact-forms'); ?>
1275
+ </label>
1276
+ <input type="text" maxlength="20" value="200px" class="ccf-width75" name="object[input_width]" />
1277
+ <?php _e("(ex: 100px or 100%)", 'custom-contact-forms'); ?>
1278
+ </li>
1279
+ <li>
1280
+ <label for="textarea_width">
1281
+ <?php _e("Textarea Field Width:", 'custom-contact-forms'); ?>
1282
+ </label>
1283
+ <input type="text" maxlength="20" value="200px" class="ccf-width75" name="object[textarea_width]" />
1284
+ <?php _e("(ex: 100px or 100%)", 'custom-contact-forms'); ?>
1285
+ </li>
1286
+ <li>
1287
+ <label for="textarea_height">
1288
+ <?php _e("Textarea Field Height:", 'custom-contact-forms'); ?>
1289
+ </label>
1290
+ <input type="text" maxlength="20" value="90px" class="ccf-width75" name="object[textarea_height]" />
1291
+ <?php _e("(ex: 100px or 100%)", 'custom-contact-forms'); ?>
1292
+ </li>
1293
+ <li>
1294
+ <label for="field_fontsize">
1295
+ <?php _e("Field Font Size:", 'custom-contact-forms'); ?>
1296
+ </label>
1297
+ <input type="text" maxlength="20" value="1.3em" class="ccf-width75" name="object[field_fontsize]" />
1298
+ <?php _e("(ex: 10px, 10pt, 1em", 'custom-contact-forms'); ?>
1299
+ </li>
1300
+ <li>
1301
+ <label for="field_fontcolor">
1302
+ <?php _e("Field Font Color:", 'custom-contact-forms'); ?>
1303
+ </label>
1304
+ <input type="text" maxlength="20" value="333333" class="ccf-width75 colorfield" name="object[field_fontcolor]" />
1305
+ <?php _e("(ex: 333333)", 'custom-contact-forms'); ?>
1306
+ </li>
1307
+ <li>
1308
+ <label for="field_borderstyle">
1309
+ <?php _e("Field Border Style:", 'custom-contact-forms'); ?>
1310
+ </label>
1311
+ <select class="ccf-width75" name="object[field_borderstyle]">
1312
+ <?php echo str_replace('<option>solid</option>', '<option selected="selected">solid</option>', $border_style_options); ?>
1313
+ </select>
1314
+ </li>
1315
+ <li>
1316
+ <label for="form_margin">
1317
+ <?php _e("Form Margin:", 'custom-contact-forms'); ?>
1318
+ </label>
1319
+ <input type="text" maxlength="20" value="7px" class="ccf-width75" name="object[form_margin]" />
1320
+ <?php _e("(ex: 5px or 1em)", 'custom-contact-forms'); ?>
1321
+ </li>
1322
+ <li>
1323
+ <label for="label_margin">
1324
+ <?php _e("Label Margin:", 'custom-contact-forms'); ?>
1325
+ </label>
1326
+ <input type="text" maxlength="20" value="5px" class="ccf-width75" name="object[label_margin]" />
1327
+ <?php _e("(ex: 5px or 1em)", 'custom-contact-forms'); ?>
1328
+ </li>
1329
+ <li>
1330
+ <label for="textarea_backgroundcolor">
1331
+ <?php _e("Textarea Background Color:", 'custom-contact-forms'); ?>
1332
+ </label>
1333
+ <input type="text" maxlength="20" value="f5f5f5" class="ccf-width75 colorfield" name="object[textarea_backgroundcolor]" />
1334
+ <?php _e("(ex: FF0000)", 'custom-contact-forms'); ?>
1335
+ </li>
1336
+ <li>
1337
+ <label for="success_popover_fontcolor">
1338
+ <?php _e("Success Popover Font Color:", 'custom-contact-forms'); ?>
1339
+ </label>
1340
+ <input type="text" maxlength="20" value="333333" class="ccf-width75 colorfield" name="object[success_popover_fontcolor]" />
1341
+ <?php _e("(ex: 333333)", 'custom-contact-forms'); ?>
1342
+ </li>
1343
+ <li>
1344
+ <label for="success_popover_title_fontsize">
1345
+ <?php _e("Success Popover Title Font Size:", 'custom-contact-forms'); ?>
1346
+ </label>
1347
+ <input type="text" maxlength="20" value="15px" class="ccf-width75" name="object[success_popover_title_fontsize]" />
1348
+ <?php _e("(ex: 12px, 1em, 100%)", 'custom-contact-forms'); ?>
1349
+ </li>
1350
+ <li>
1351
+ <label for="form_backgroundcolor">
1352
+ <?php _e("Form Background Color:", 'custom-contact-forms'); ?>
1353
+ </label>
1354
+ <input type="text" maxlength="20" value="ffffff" class="ccf-width75 colorfield" name="object[form_backgroundcolor]" />
1355
+ <?php _e("(ex: 12px, 1em, 100%)", 'custom-contact-forms'); ?>
1356
+ </li>
1357
+ <li>
1358
+ <label for="tooltip_backgroundcolor">
1359
+ <?php _e("Tooltip Background Color:", 'custom-contact-forms'); ?>
1360
+ </label>
1361
+ <input type="text" maxlength="20" value="000000" class="ccf-width75 colorfield" name="object[tooltip_backgroundcolor]" />
1362
+ <?php _e("(ex: 000000 or black)", 'custom-contact-forms'); ?>
1363
+ </li>
1364
+ </ul>
1365
+ <ul class="style_right">
1366
+ <li>
1367
+ <label for="input_width">
1368
+ <?php _e("Field Border Color:", 'custom-contact-forms'); ?>
1369
+ </label>
1370
+ <input type="text" maxlength="20" value="999999" class="ccf-width75 colorfield" name="object[field_bordercolor]" />
1371
+ <?php _e("(ex: 100px or 100%)", 'custom-contact-forms'); ?>
1372
+ </li>
1373
+ <li>
1374
+ <label for="form_borderstyle">
1375
+ <?php _e("Form Border Style:", 'custom-contact-forms'); ?>
1376
+ </label>
1377
+ <select class="ccf-width75" name="object[form_borderstyle]">
1378
+ <?php echo $border_style_options; ?>
1379
+ </select>
1380
+ </li>
1381
+ <li>
1382
+ <label for="form_bordercolor">
1383
+ <?php _e("Form Border Color:", 'custom-contact-forms'); ?>
1384
+ </label>
1385
+ <input type="text" maxlength="20" value="ffffff" class="ccf-width75 colorfield" name="object[form_bordercolor]" />
1386
+ <?php _e("(ex: 000000)", 'custom-contact-forms'); ?>
1387
+ </li>
1388
+ <li>
1389
+ <label for="form_borderwidth">
1390
+ <?php _e("Form Border Width:", 'custom-contact-forms'); ?>
1391
+ </label>
1392
+ <input type="text" maxlength="20" value="0px" class="ccf-width75" name="object[form_borderwidth]" />
1393
+ <?php _e("(ex: 1px)", 'custom-contact-forms'); ?>
1394
+ </li>
1395
+ <li>
1396
+ <label for="form_borderwidth">
1397
+ <?php _e("Form Width:", 'custom-contact-forms'); ?>
1398
+ </label>
1399
+ <input type="text" maxlength="20" value="100%" class="ccf-width75" name="object[form_width]" />
1400
+ <?php _e("(ex: 100px or 50%)", 'custom-contact-forms'); ?>
1401
+ </li>
1402
+ <li>
1403
+ <label for="form_borderwidth">
1404
+ <?php _e("Form Font Family:", 'custom-contact-forms'); ?>
1405
+ </label>
1406
+ <input type="text" maxlength="120" value="Verdana, tahoma, arial" class="ccf-width75" name="object[form_fontfamily]" />
1407
+ <?php _e("(ex: Verdana, Tahoma, Arial)", 'custom-contact-forms'); ?>
1408
+ </li>
1409
+ <li>
1410
+ <label for="submit_width">
1411
+ <?php _e("Button Width:", 'custom-contact-forms'); ?>
1412
+ </label>
1413
+ <input type="text" maxlength="20" value="auto" class="ccf-width75" name="object[submit_width]" />
1414
+ <?php _e("(ex: 100px, 30%, auto)", 'custom-contact-forms'); ?>
1415
+ </li>
1416
+ <li>
1417
+ <label for="submit_height">
1418
+ <?php _e("Button Height:", 'custom-contact-forms'); ?>
1419
+ </label>
1420
+ <input type="text" maxlength="20" value="30px" class="ccf-width75" name="object[submit_height]" />
1421
+ <?php _e("(ex: 100px or 30%)", 'custom-contact-forms'); ?>
1422
+ </li>
1423
+ <li>
1424
+ <label for="submit_fontsize">
1425
+ <?php _e("Button Font Size:", 'custom-contact-forms'); ?>
1426
+ </label>
1427
+ <input type="text" maxlength="20" value="1.1em" class="ccf-width75" name="object[submit_fontsize]" />
1428
+ <?php _e("(ex: 10px, 10pt, 1em)", 'custom-contact-forms'); ?>
1429
+ </li>
1430
+ <li>
1431
+ <label for="submit_fontcolor">
1432
+ <?php _e("Button Font Color:", 'custom-contact-forms'); ?>
1433
+ </label>
1434
+ <input type="text" maxlength="20" value="333333" class="ccf-width75 colorfield" name="object[submit_fontcolor]" />
1435
+ <?php _e("(ex: FF0000)", 'custom-contact-forms'); ?>
1436
+ </li>
1437
+ <li>
1438
+ <label for="field_backgroundcolor">
1439
+ <?php _e("Field Background Color:", 'custom-contact-forms'); ?>
1440
+ </label>
1441
+ <input type="text" maxlength="20" value="f5f5f5" class="ccf-width75 colorfield" name="object[field_backgroundcolor]" />
1442
+ <?php _e("(ex: FF0000)", 'custom-contact-forms'); ?>
1443
+ </li>
1444
+ <li>
1445
+ <label for="form_padding">
1446
+ <?php _e("Form Padding:", 'custom-contact-forms'); ?>
1447
+ </label>
1448
+ <input type="text" maxlength="20" value="8px" class="ccf-width75" name="object[form_padding]" />
1449
+ <?php _e("(ex: 5px or 1em)", 'custom-contact-forms'); ?>
1450
+ </li>
1451
+ <li>
1452
+ <label for="title_margin">
1453
+ <?php _e("Title Margin:", 'custom-contact-forms'); ?>
1454
+ </label>
1455
+ <input type="text" maxlength="20" value="5px" class="ccf-width75" name="object[title_margin]" />
1456
+ <?php _e("(ex: 5px or 1em)", 'custom-contact-forms'); ?>
1457
+ </li>
1458
+ <li>
1459
+ <label for="title_margin">
1460
+ <?php _e("Dropdown Width:", 'custom-contact-forms'); ?>
1461
+ </label>
1462
+ <input type="text" maxlength="20" value="auto" class="ccf-width75" name="object[dropdown_width]" />
1463
+ <?php _e("(ex: 30px, 20%, or auto)", 'custom-contact-forms'); ?>
1464
+ </li>
1465
+ <li>
1466
+ <label for="success_popover_bordercolor">
1467
+ <?php _e("Success Popover Border Color:", 'custom-contact-forms'); ?>
1468
+ </label>
1469
+ <input type="text" maxlength="20" value="efefef" class="ccf-width75 colorfield" name="object[success_popover_bordercolor]" />
1470
+ <?php _e("(ex: FF0000)", 'custom-contact-forms'); ?>
1471
+ </li>
1472
+ <li>
1473
+ <label for="success_popover_fontsize">
1474
+ <?php _e("Success Popover Font Size:", 'custom-contact-forms'); ?>
1475
+ </label>
1476
+ <input type="text" maxlength="20" value="12px" class="ccf-width75" name="object[success_popover_fontsize]" />
1477
+ <?php _e("(ex: 12px, 1em, 100%)", 'custom-contact-forms'); ?>
1478
+ </li>
1479
+ <li>
1480
+ <label for="success_popover_height">
1481
+ <?php _e("Success Popover Height:", 'custom-contact-forms'); ?>
1482
+ </label>
1483
+ <input type="text" maxlength="20" value="200px" class="ccf-width75" name="object[success_popover_height]" />
1484
+ <?php _e("(ex: 200px, 6em, 50%)", 'custom-contact-forms'); ?>
1485
+ </li>
1486
+ <li>
1487
+ <label for="field_borderround">
1488
+ <?php _e("Field Border Roundness:", 'custom-contact-forms'); ?>
1489
+ </label>
1490
+ <input type="text" maxlength="20" value="6px" class="ccf-width75" name="object[field_borderround]" />
1491
+ <?php _e("(ex: 6px, or 0px)", 'custom-contact-forms'); ?>
1492
+ </li>
1493
+ <li>
1494
+ <label for="tooltip_fontsize">
1495
+ <?php _e("Tooltip", 'custom-contact-forms'); ?>
1496
+ <a href="javascript:void(0)" class="toollink" title="<?php _e("A tooltip is the little box that fades in displaying 'Field Instructions' when a user selects a particular field.", 'custom-contact-forms'); ?>">(?)</a>
1497
+ <?php _e("Font Size:", 'custom-contact-forms'); ?>
1498
+ </label>
1499
+ <input type="text" maxlength="20" value="12px" class="ccf-width75" name="object[tooltip_fontsize]" />
1500
+ <?php _e("(ex: 12px, 1em, 100%)", 'custom-contact-forms'); ?>
1501
+ </li>
1502
+ <li>
1503
+ <label for="tooltip_fontcolor">
1504
+ <?php _e("Tooltip Font Color:", 'custom-contact-forms'); ?>
1505
+ </label>
1506
+ <input type="text" maxlength="20" value="ffffff" class="ccf-width75 colorfield" name="object[tooltip_fontcolor]" />
1507
+ <?php _e("(ex: ffffff or white)", 'custom-contact-forms'); ?>
1508
+ </li>
1509
+ <li>
1510
+ <input name="object_type" type="hidden" value="style" />
1511
+ <input type="submit" value="<?php _e("Create Style", 'custom-contact-forms'); ?>" name="object_create" class="create-button" />
1512
+ </li>
1513
+ </ul>
1514
+ </form>
1515
+ </div>
1516
+ </div>
1517
+ <a name="manage-styles"></a>
1518
+ <h3 class="manage-h3">
1519
+ <?php _e("Manage Form Styles", 'custom-contact-forms'); ?>
1520
+ </h3>
1521
+ <form class="ccf-edit-ajax" method="post" action="<?php echo $_SERVER['REQUEST_URI']; ?>">
1522
+ <input type="hidden" name="selected_tab" value="styles" />
1523
+ <table class="widefat post" id="manage-styles" cellspacing="0">
1524
+ <thead>
1525
+ <tr>
1526
+ <th scope="col" class="manage-column"><input type="checkbox" class="checkall" /></th>
1527
+ <th scope="col" class="manage-column"></th>
1528
+ <th scope="col" class="manage-column"></th>
1529
+ <th scope="col" class="manage-column"></th>
1530
+ <th scope="col" class="manage-column"></th>
1531
+ <th scope="col" class="manage-column"></th>
1532
+ </tr>
1533
+ </thead>
1534
+ <tbody>
1535
+ <?php
1536
+ $styles = parent::selectAllStyles();
1537
+ $i = 0;
1538
+ foreach ($styles as $style) {
1539
+ ?>
1540
+ <tr class="row-style-<?php echo $style->id; ?> <?php if ($i % 2 == 0) echo 'ccf-evenrow'; ?>">
1541
+ <td> <label><input type="checkbox" class="object-check" value="1" name="objects[<?php echo $i; ?>][object_do]" />
1542
+ * <?php _e("Slug:", 'custom-contact-forms'); ?>
1543
+ </label>
1544
+ <input type="text" maxlength="30" value="<?php echo $style->style_slug; ?>" name="objects[<?php echo $i; ?>][values][style_slug]" />
1545
+ <br />
1546
+ <label>
1547
+ <?php _e("Font Family:", 'custom-contact-forms'); ?>
1548
+ </label>
1549
+ <input type="text" maxlength="120" value="<?php echo $style->form_fontfamily; ?>" name="objects[<?php echo $i; ?>][values][form_fontfamily]" />
1550
+ <br />
1551
+ <label>
1552
+ <?php _e("Textarea Background", 'custom-contact-forms'); ?>
1553
+ <br />
1554
+ <?php _e("Color:", 'custom-contact-forms'); ?>
1555
+ </label>
1556
+ <input class="colorfield" type="text" maxlength="20" value="<?php echo $style->textarea_backgroundcolor; ?>" name="objects[<?php echo $i; ?>][values][textarea_backgroundcolor]" />
1557
+ <br />
1558
+ <label>
1559
+ <?php _e("Success Popover", 'custom-contact-forms'); ?>
1560
+ <br />
1561
+ <?php _e("Border Color:", 'custom-contact-forms'); ?>
1562
+ </label>
1563
+ <input class="colorfield" type="text" maxlength="20" value="<?php echo $style->success_popover_bordercolor; ?>" name="objects[<?php echo $i; ?>][values][success_popover_bordercolor]" />
1564
+ <br />
1565
+ <label>
1566
+ <?php _e("Tooltip", 'custom-contact-forms'); ?>
1567
+ <a href="javascript:void(0)" class="toollink" title="<?php _e("A tooltip is the little box that fades in displaying 'Field Instructions' when a user selects a particular field.", 'custom-contact-forms'); ?>">(?)</a>
1568
+ <?php _e("Font Color:", 'custom-contact-forms'); ?>
1569
+ </label>
1570
+ <input class="colorfield" type="text" maxlength="20" value="<?php echo $style->tooltip_fontcolor; ?>" name="objects[<?php echo $i; ?>][values][tooltip_fontcolor]" />
1571
+ </td>
1572
+ <td><label>
1573
+ <?php _e("Form Width:", 'custom-contact-forms'); ?>
1574
+ </label>
1575
+ <input type="text" maxlength="20" value="<?php echo $style->form_width; ?>" name="objects[<?php echo $i; ?>][values][form_width]" />
1576
+ <br />
1577
+ <label>
1578
+ <?php _e("Text Field Width:", 'custom-contact-forms'); ?>
1579
+ </label>
1580
+ <input type="text" maxlength="20" value="<?php echo $style->input_width; ?>" name="objects[<?php echo $i; ?>][values][input_width]" />
1581
+ <br />
1582
+ <label>
1583
+ <?php _e("Textarea Width:", 'custom-contact-forms'); ?>
1584
+ </label>
1585
+ <input type="text" maxlength="20" value="<?php echo $style->textarea_width; ?>" name="objects[<?php echo $i; ?>][values][textarea_width]" />
1586
+ <br />
1587
+ <label>
1588
+ <?php _e("Textarea Height:", 'custom-contact-forms'); ?>
1589
+ </label>
1590
+ <input type="text" maxlength="20" value="<?php echo $style->textarea_height; ?>" name="objects[<?php echo $i; ?>][values][textarea_height]" />
1591
+ <br />
1592
+ <label>
1593
+ <?php _e("Dropdown Width:", 'custom-contact-forms'); ?>
1594
+ </label>
1595
+ <input type="text" maxlength="20" value="<?php echo $style->dropdown_width; ?>" name="objects[<?php echo $i; ?>][values][dropdown_width]" />
1596
+ <br />
1597
+ <label>
1598
+ <?php _e("Label Margin:", 'custom-contact-forms'); ?>
1599
+ </label>
1600
+ <input type="text" maxlength="20" value="<?php echo $style->label_margin; ?>" name="objects[<?php echo $i; ?>][values][label_margin]" />
1601
+ <br />
1602
+ <label>
1603
+ <?php _e("Success Popover", 'custom-contact-forms'); ?>
1604
+ <br />
1605
+ <?php _e("Height:", 'custom-contact-forms'); ?>
1606
+ </label>
1607
+ <input type="text" maxlength="20" value="<?php echo $style->success_popover_height; ?>" name="objects[<?php echo $i; ?>][values][success_popover_height]" />
1608
+ <br />
1609
+ </td>
1610
+ <td><label>
1611
+ <?php _e("Label Width:", 'custom-contact-forms'); ?>
1612
+ </label>
1613
+ <input type="text" maxlength="20" value="<?php echo $style->label_width; ?>" name="objects[<?php echo $i; ?>][values][label_width]" />
1614
+ <br />
1615
+ <label>
1616
+ <?php _e("Button Width:", 'custom-contact-forms'); ?>
1617
+ </label>
1618
+ <input type="text" maxlength="20" value="<?php echo $style->submit_width; ?>" name="objects[<?php echo $i; ?>][values][submit_width]" />
1619
+ <br />
1620
+ <label>
1621
+ <?php _e("Button Height:", 'custom-contact-forms'); ?>
1622
+ </label>
1623
+ <input type="text" maxlength="20" value="<?php echo $style->submit_height; ?>" name="objects[<?php echo $i; ?>][values][submit_height]" />
1624
+ <br />
1625
+ <label>
1626
+ <?php _e("Field Background Color:", 'custom-contact-forms'); ?>
1627
+ </label>
1628
+ <input class="colorfield" type="text" maxlength="20" value="<?php echo $style->field_backgroundcolor; ?>" name="objects[<?php echo $i; ?>][values][field_backgroundcolor]" />
1629
+ <br />
1630
+ <label>
1631
+ <?php _e("Title Margin:", 'custom-contact-forms'); ?>
1632
+ </label>
1633
+ <input type="text" maxlength="20" value="<?php echo $style->title_margin; ?>" name="objects[<?php echo $i; ?>][values][title_margin]" />
1634
+ <br />
1635
+ <label>
1636
+ <?php _e("Success Popover", 'custom-contact-forms'); ?>
1637
+ <br />
1638
+ <?php _e("Title Font Size:", 'custom-contact-forms'); ?>
1639
+ </label>
1640
+ <input type="text" maxlength="20" value="<?php echo $style->success_popover_title_fontsize; ?>" name="objects[<?php echo $i; ?>][values][success_popover_title_fontsize]" />
1641
+ <label>
1642
+ <?php _e("Form Background Color:", 'custom-contact-forms'); ?>
1643
+ </label>
1644
+ <input type="text" class="colorfield" maxlength="20" value="<?php echo $style->form_backgroundcolor; ?>" name="objects[<?php echo $i; ?>][values][form_backgroundcolor]" />
1645
+ </td>
1646
+ <td><label>
1647
+ <?php _e("Title Font Size:", 'custom-contact-forms'); ?>
1648
+ </label>
1649
+ <input type="text" maxlength="20" value="<?php echo $style->title_fontsize; ?>" name="objects[<?php echo $i; ?>][values][title_fontsize]" />
1650
+ <br />
1651
+ <label>
1652
+ <?php _e("Label Font Size:", 'custom-contact-forms'); ?>
1653
+ </label>
1654
+ <input type="text" maxlength="20" value="<?php echo $style->label_fontsize; ?>" name="objects[<?php echo $i; ?>][values][label_fontsize]" />
1655
+ <br />
1656
+ <label>
1657
+ <?php _e("Field Font Size:", 'custom-contact-forms'); ?>
1658
+ </label>
1659
+ <input type="text" maxlength="20" value="<?php echo $style->field_fontsize; ?>" name="objects[<?php echo $i; ?>][values][field_fontsize]" />
1660
+ <br />
1661
+ <label>
1662
+ <?php _e("Button Font Size:", 'custom-contact-forms'); ?>
1663
+ </label>
1664
+ <input type="text" maxlength="20" value="<?php echo $style->submit_fontsize; ?>" name="objects[<?php echo $i; ?>][values][submit_fontsize]" />
1665
+ <br />
1666
+ <label>
1667
+ <?php _e("Form Padding:", 'custom-contact-forms'); ?>
1668
+ </label>
1669
+ <input type="text" maxlength="20" value="<?php echo $style->form_padding; ?>" name="objects[<?php echo $i; ?>][values][form_padding]" />
1670
+ <br />
1671
+ <label>
1672
+ <?php _e("Success Popover", 'custom-contact-forms'); ?>
1673
+ <br />
1674
+ <?php _e("Font Size:", 'custom-contact-forms'); ?>
1675
+ </label>
1676
+ <input type="text" maxlength="20" value="<?php echo $style->success_popover_fontsize; ?>" name="objects[<?php echo $i; ?>][values][success_popover_fontsize]" />
1677
+ <br />
1678
+ <label>
1679
+ <?php _e("Tooltip", 'custom-contact-forms'); ?>
1680
+ <a href="javascript:void(0)" class="toollink" title="<?php _e("A tooltip is the little box that fades in displaying 'Field Instructions' when a user selects a particular field.", 'custom-contact-forms'); ?>">(?)</a>
1681
+ <?php _e("Background Color:", 'custom-contact-forms'); ?>
1682
+ </label>
1683
+ <input class="colorfield" type="text" maxlength="20" value="<?php echo $style->tooltip_backgroundcolor; ?>" name="objects[<?php echo $i; ?>][values][tooltip_backgroundcolor]" />
1684
+ </td>
1685
+ <td><label>
1686
+ <?php _e("Title Font Color:", 'custom-contact-forms'); ?>
1687
+ </label>
1688
+ <input class="colorfield" type="text" maxlength="20" value="<?php echo $style->title_fontcolor; ?>" name="objects[<?php echo $i; ?>][values][title_fontcolor]" />
1689
+ <br />
1690
+ <label>
1691
+ <?php _e("Label Font Color:", 'custom-contact-forms'); ?>
1692
+ </label>
1693
+ <input class="colorfield" type="text" maxlength="20" value="<?php echo $style->label_fontcolor; ?>" name="objects[<?php echo $i; ?>][values][label_fontcolor]" />
1694
+ <br />
1695
+ <label>
1696
+ <?php _e("Field Font Color:", 'custom-contact-forms'); ?>
1697
+ </label>
1698
+ <input class="colorfield" type="text" maxlength="20" value="<?php echo $style->field_fontcolor; ?>" name="objects[<?php echo $i; ?>][values][field_fontcolor]" />
1699
+ <br />
1700
+ <label>
1701
+ <?php _e("Button Font Color:", 'custom-contact-forms'); ?>
1702
+ </label>
1703
+ <input class="colorfield" type="text" maxlength="20" value="<?php echo $style->submit_fontcolor; ?>" name="objects[<?php echo $i; ?>][values][submit_fontcolor]" />
1704
+ <br />
1705
+ <label>
1706
+ <?php _e("Form Margin:", 'custom-contact-forms'); ?>
1707
+ </label>
1708
+ <input type="text" maxlength="20" value="<?php echo $style->form_margin; ?>" name="objects[<?php echo $i; ?>][values][form_margin]" />
1709
+ <br />
1710
+ <label>
1711
+ <?php _e("Success Popover", 'custom-contact-forms'); ?>
1712
+ <br />
1713
+ <?php _e("Font Color:", 'custom-contact-forms'); ?>
1714
+ </label>
1715
+ <input class="colorfield" type="text" maxlength="20" value="<?php echo $style->success_popover_fontcolor; ?>" name="objects[<?php echo $i; ?>][values][success_popover_fontcolor]" />
1716
+ <br />
1717
+ <label>
1718
+ <?php _e("Tooltip Font Size:", 'custom-contact-forms'); ?>
1719
+ </label>
1720
+ <input type="text" maxlength="20" value="<?php echo $style->tooltip_fontsize; ?>" name="objects[<?php echo $i; ?>][values][tooltip_fontsize]" />
1721
+ </td>
1722
+ <td><label>
1723
+ <?php _e("Form Border Style:", 'custom-contact-forms'); ?>
1724
+ </label>
1725
+ <select name="object[form_borderstyle]">
1726
+ <?php echo str_replace('<option>'.$style->form_borderstyle.'</option>', '<option selected="selected">'.$style->form_borderstyle.'</option>', $border_style_options); ?>
1727
+ </select>
1728
+ <br />
1729
+ <label>
1730
+ <?php _e("Form Border Width:", 'custom-contact-forms'); ?>
1731
+ </label>
1732
+ <input type="text" maxlength="20" value="<?php echo $style->form_borderwidth; ?>" name="objects[<?php echo $i; ?>][values][form_borderwidth]" />
1733
+ <br />
1734
+ <label>
1735
+ <?php _e("Form Border Color:", 'custom-contact-forms'); ?>
1736
+ </label>
1737
+ <input class="colorfield" type="text" maxlength="20" value="<?php echo $style->form_bordercolor; ?>" name="objects[<?php echo $i; ?>][values][form_bordercolor]" />
1738
+ <br />
1739
+ <label>
1740
+ <?php _e("Field Border Color:", 'custom-contact-forms'); ?>
1741
+ </label>
1742
+ <input class="colorfield" type="text" maxlength="20" value="<?php echo $style->field_bordercolor; ?>" name="objects[<?php echo $i; ?>][values][field_bordercolor]" />
1743
+ <br />
1744
+ <label>
1745
+ <?php _e("Field Border Style:", 'custom-contact-forms'); ?>
1746
+ </label>
1747
+ <select name="objects[<?php echo $i; ?>][values][field_borderstyle]">
1748
+ <?php echo str_replace('<option>'.$style->field_borderstyle.'</option>', '<option selected="selected">'.$style->field_borderstyle.'</option>', $border_style_options); ?>
1749
+ </select>
1750
+ <br />
1751
+ <label>
1752
+ <?php _e("Success Popover", 'custom-contact-forms'); ?>
1753
+ <br />
1754
+ <?php _e("Title Font Color:", 'custom-contact-forms'); ?>
1755
+ </label>
1756
+ <input class="colorfield" type="text" maxlength="20" value="<?php echo $style->success_popover_title_fontcolor; ?>" name="objects[<?php echo $i; ?>][values][success_popover_title_fontcolor]" />
1757
+ <br />
1758
+ <label>
1759
+ <?php _e("Field Border Roundness:", 'custom-contact-forms'); ?>
1760
+ </label>
1761
+ <input name="objects[<?php echo $i; ?>][values][field_borderround]" value="<?php echo $style->field_borderround; ?>" type="text" maxlength="20" />
1762
+ <br />
1763
+ <input type="hidden" name="objects[<?php echo $i; ?>][object_type]" value="style" />
1764
+ <input class="object-id" name="objects[<?php echo $i; ?>][object_id]" type="hidden" value="<?php echo $style->id; ?>" />
1765
+ </td>
1766
+ </tr>
1767
+ <?php
1768
+ $i++;
1769
+ }
1770
+ ?>
1771
+ </tbody>
1772
+ <tfoot>
1773
+ <tr>
1774
+ <th scope="col" class="manage-column"><input type="checkbox" class="checkall" /></th>
1775
+ <th scope="col" class="manage-column"></th>
1776
+ <th scope="col" class="manage-column"></th>
1777
+ <th scope="col" class="manage-column"></th>
1778
+ <th scope="col" class="manage-column"></th>
1779
+ <th scope="col" class="manage-column"></th>
1780
+ </tr>
1781
+ </tfoot>
1782
+ </table>
1783
+ <select class="bulk-dropdown" name="object_bulk_action">
1784
+ <option value="0"><?php _e('Bulk Actions', 'custom-contact-forms'); ?></option>
1785
+ <option value="edit"><?php _e('Save', 'custom-contact-forms'); ?></option>
1786
+ <option value="delete"><?php _e('Delete', 'custom-contact-forms'); ?></option></select>
1787
+ <input type="submit" name="object_bulk_apply" class="bulk-apply" value="<?php _e('Apply', 'custom-contact-forms'); ?>" /> <img src="<?php echo plugins_url(); ?>/custom-contact-forms/images/wpspin_light.gif" width="16" height="16" class="loading-img" />
1788
+ </form>
1789
+ </div>
1790
+ <div id="support">
1791
+ <div id="contact-author" class="postbox">
1792
+ <h3 class="hndle"><span>
1793
+ <?php _e("Report a Bug/Suggest a Feature", 'custom-contact-forms'); ?>
1794
+ </span></h3>
1795
+ <div class="inside">
1796
+ <form method="post" action="<?php echo $_SERVER['REQUEST_URI']; ?>">
1797
+ <input type="hidden" name="selected_tab" value="support" />
1798
+ <ul>
1799
+ <li>
1800
+ <label for="name">
1801
+ <?php _e("Your Name:", 'custom-contact-forms'); ?>
1802
+ </label>
1803
+ <input id="name" type="text" name="name" maxlength="100" />
1804
+ </li>
1805
+ <li>
1806
+ <label for="email">
1807
+ <?php _e("Your Email:", 'custom-contact-forms'); ?>
1808
+ </label>
1809
+ <input id="email" type="text" value="<?php echo get_option('admin_email'); ?>" name="email" maxlength="100" />
1810
+ </li>
1811
+ </ul>
1812
+ <ul>
1813
+ <li>
1814
+ <label for="host">
1815
+ <?php _e("Who Hosts Your Website?", 'custom-contact-forms'); ?>
1816
+ </label>
1817
+ <input id="host" type="text" name="host" maxlength="150" />
1818
+ </li>
1819
+ <li>
1820
+ <label for="type">*
1821
+ <?php _e("Purpose of this message:", 'custom-contact-forms'); ?>
1822
+ </label>
1823
+ <select id="type" name="type">
1824
+ <option>
1825
+ <?php _e("Bug Report", 'custom-contact-forms'); ?>
1826
+ </option>
1827
+ <option>
1828
+ <?php _e("Suggest a Feature", 'custom-contact-forms'); ?>
1829
+ </option>
1830
+ <option>
1831
+ <?php _e("Plugin Question", 'custom-contact-forms'); ?>
1832
+ </option>
1833
+ </select>
1834
+ </li>
1835
+ </ul>
1836
+ <ul>
1837
+ <li>
1838
+ <label for="ccf-version">
1839
+ <?php _e("Version of Custom Contact Forms?", 'custom-contact-forms'); ?>
1840
+ </label>
1841
+ <input id="ccf-version" type="text" name="ccf-version" maxlength="50" />
1842
+ </li>
1843
+ <li>
1844
+ <label for="wp-version">
1845
+ <?php _e("Version of WordPress?", 'custom-contact-forms'); ?>
1846
+ </label>
1847
+ <input id="wp-version" type="text" name="wp-version" maxlength="50" />
1848
+ </li>
1849
+ </ul>
1850
+ <ul class="message">
1851
+ <li>
1852
+ <label for="message">*
1853
+ <?php _e("Your Message:", 'custom-contact-forms'); ?>
1854
+ </label>
1855
+ <textarea id="message-textarea" name="message"></textarea>
1856
+ </li>
1857
+ </ul>
1858
+ <p>
1859
+ <input type="submit" name="contact_author" value="<?php _e("Send Message", 'custom-contact-forms'); ?>" />
1860
+ </p>
1861
+ </form>
1862
+ </div>
1863
+ </div>
1864
+ </div>
1865
+
1866
+ <div id="advanced">
1867
+ <div id="custom-html" class="postbox">
1868
+ <h3 class="hndle"><span>
1869
+ <?php _e("Custom HTML Forms (Advanced)", 'custom-contact-forms'); ?>
1870
+ </span></h3>
1871
+ <div class="inside">
1872
+ <p>
1873
+ <?php _e("If you know HTML and simply want to use this plugin to process form requests, this feature is for you.
1874
+ The following HTML is a the framework to which you must adhere. In order for your form to work you MUST do the following: a) Keep the form action/method the same (yes the action is supposed to be empty), b) Include all the hidden fields shown below, c) provide a
1875
+ hidden field with a success message or thank you page (both hidden fields are included below, you must choose one or the other and fill in the value part of the input field appropriately.", 'custom-contact-forms'); ?>
1876
+ </p>
1877
+ <textarea id="custom_html_textarea">
1878
+ &lt;form method=&quot;post&quot; action=&quot;&quot;&gt;
1879
+ &lt;input type=&quot;hidden&quot; name=&quot;ccf_customhtml&quot; value=&quot;1&quot; /&gt;
1880
+ &lt;input type=&quot;hidden&quot; name=&quot;success_message&quot; value=&quot;<?php _e("Thank you for filling out our form!", 'custom-contact-forms'); ?>&quot; /&gt;
1881
+ &lt;input type=&quot;hidden&quot; name=&quot;thank_you_page&quot; value=&quot;http://www.google.com&quot; /&gt;
1882
+ &lt;input type=&quot;hidden&quot; name=&quot;destination_email&quot; value=&quot;<?php echo $admin_options['default_to_email']; ?>&quot; /&gt;
1883
+ &lt;input type=&quot;hidden&quot; name=&quot;required_fields&quot; value=&quot;field_name1, field_name2&quot; /&gt;
1884
+
1885
+ &lt;!-- <?php _e("Paste all this code into a page or post and edit it to your liking. It is recommended you only use this feature if you are experienced with HTML. The destination_email field specifies where emails will be sent on successful submission; you can have the form send to multiple addresses by separating email's with semi-colons (i.e. email@google.com; email2@google.com). The success_message field will add a popover containing the message when the form is completed successfully, the thank_you_page field will force the user to be redirected to that specific page on successful form completion. The required_fields hidden field is optional; to use it separate the field names you want required by commas. Remember to use underscores instead of spaces in field names!", 'custom-contact-forms'); ?> --&gt;
1886
+
1887
+ &lt;/form&gt;</textarea>
1888
+ </div>
1889
+ </div>
1890
+ </div>
1891
+
1892
+ <div id="news">
1893
+ <div id="plugin-news" class="postbox">
1894
+ <h3 class="hndle"><span>
1895
+ <?php _e("Custom Contact Forms Plugin News", 'custom-contact-forms'); ?>
1896
+ </span></h3>
1897
+ <div class="inside">
1898
+ <?php $this->displayPluginNewsFeed(); ?>
1899
+ </div>
1900
+ </div>
1901
+ </div>
1902
+ <?php $this->rateMeForm(); ?>
1903
+ <?php $this->insertUsagePopover(); ?>
1904
+ <?php $this->insertQuickStartPopover(); ?>
1905
+ </div>
1906
+ </div>
1907
+ <?php
1908
+ }
1909
+
1910
+ function printFormSubmissionsPage() {
1911
+ $this->handleAdminPostRequests();
1912
+ if ($admin_options['show_install_popover'] == 1) {
1913
+ $admin_options['show_install_popover'] = 0;
1914
+ ?>
1915
+ <script type="text/javascript" language="javascript">
1916
+ $j(document).ready(function() {
1917
+ showCCFUsagePopover();
1918
+ });
1919
+ </script>
1920
+ <?php
1921
+ update_option(parent::getAdminOptionsName(), $admin_options);
1922
+ } /*if ($_POST['form_submission_delete']) {
1923
+ if (parent::deleteUserData($_POST['uid']) != false)
1924
+ $this->action_complete = __('A form submission has be successfully deleted!', 'custom-contact-forms');
1925
+ }*/
1926
+ ccf_utils::load_module('export/custom-contact-forms-user-data.php');
1927
+ $user_data_array = parent::selectAllUserData();
1928
+ ?>
1929
+ <div id="customcontactforms-admin">
1930
+ <div class="plugin-header">
1931
+ <h2>
1932
+ <?php _e("Custom Contact Forms", 'custom-contact-forms'); ?>
1933
+ </h2>
1934
+ <div class="links">
1935
+ <a href="javascript:void(0)" class="quick-start-button">Quick Start Guide</a> - <a href="javascript:void(0)" class="usage-popover-button">Plugin Usage Manual</a>
1936
+ </div>
1937
+ </div>
1938
+ <a class="genesis" href="http://www.shareasale.com/r.cfm?b=241369&u=481196&m=28169&urllink=&afftrack=">Custom Contact Forms works best with any of the 20+ <span>Genesis</span> Wordpress child themes. The <span>Genesis Framework</span> empowers you to quickly and easily build incredible websites with WordPress.</a>
1939
+
1940
+ <form class="blog-horizontal-form" method="post" action="http://www.aweber.com/scripts/addlead.pl">
1941
+ <input type="hidden" name="meta_web_form_id" value="1578604781" />
1942
+ <input type="hidden" name="meta_split_id" value="" />
1943
+ <input type="hidden" name="listname" value="ccf-plugin" />
1944
+ <input type="hidden" name="redirect" value="http://www.taylorlovett.com/wordpress-plugins/tutorials-offers-tips/" id="redirect_5832e41084448adb07da67a35dc83c27" />
1945
+ <input type="hidden" name="meta_adtracking" value="CCF_-_Wordpress_Plugins_Horizontal" />
1946
+ <input type="hidden" name="meta_message" value="1" />
1947
+ <input type="hidden" name="meta_required" value="name,email" />
1948
+ <span>WP Blogging Tips, Downloads, SEO Tricks & Exclusive Tutorials</span>
1949
+ <input type="text" name="name" value="Your Name" onclick="value=''" />
1950
+ <input type="text" name="email" value="Your Email" onclick="value=''" />
1951
+ <input type="submit" value="Sign Up for Free" />
1952
+ </form>
1953
+ <?php if (!empty($this->action_complete)) { ?>
1954
+ <div id="message" class="updated below-h2">
1955
+ <p><?php echo $this->action_complete; ?></p>
1956
+ </div>
1957
+ <?php } ?>
1958
+ <h3 class="hndle"><span>
1959
+ <?php _e("Saved Form Submissions", 'custom-contact-forms'); ?>
1960
+ </span></h3>
1961
+ <form class="ccf-edit-ajax" method="post" action="<?php echo $_SERVER['REQUEST_URI']; ?>">
1962
+ <table class="widefat post" id="form-submissions-table" cellspacing="0">
1963
+ <thead>
1964
+ <tr>
1965
+ <th scope="col" class="manage-column ccf-width25"><input type="checkbox" class="checkall" /></th>
1966
+ <th scope="col" class="manage-column ccf-width250"><?php _e("Date Submitted", 'custom-contact-forms'); ?></th>
1967
+ <th scope="col" class="manage-column ccf-width150"><?php _e("Form Submitted", 'custom-contact-forms'); ?></th>
1968
+ <th scope="col" class="manage-column ccf-width250"><?php _e("Form Page", 'custom-contact-forms'); ?></th>
1969
+ <th scope="col" class="manage-column "></th>
1970
+ </tr>
1971
+ </thead>
1972
+ <tbody>
1973
+ <?php
1974
+ $i = 0;
1975
+ foreach ($user_data_array as $data_object) {
1976
+ $data = new CustomContactFormsUserData(array('form_id' => $data_object->data_formid, 'data_time' => $data_object->data_time, 'form_page' => $data_object->data_formpage, 'encoded_data' => $data_object->data_value));
1977
+ ?>
1978
+ <tr class="row-form_submission-<?php echo $data_object->id; ?> submission-top <?php if ($i % 2 == 0) echo 'ccf-evenrow'; ?>">
1979
+ <td><input type="checkbox" class="object-check" value="1" name="objects[<?php echo $i; ?>][object_do]" /></td>
1980
+ <td><?php echo date('F d, Y h:i:s A', $data->getDataTime()); ?></td>
1981
+ <td><?php
1982
+ if ($data->getFormID() > 0) {
1983
+ $data_form = parent::selectForm($data->getFormID());
1984
+ $this_form = (!empty($data_form->form_slug)) ? $data_form->form_slug : '-';
1985
+ echo $this_form;
1986
+ } else
1987
+ _e('Custom HTML Form', 'custom-contact-forms');
1988
+ ?>
1989
+ </td>
1990
+ <td><?php echo $data->getFormPage(); ?> </td>
1991
+ <td class="ccf-alignright">
1992
+ <span class="submission-content-expand"></span>
1993
+ <input type="hidden" name="objects[<?php echo $i; ?>][object_type]" value="form_submission" />
1994
+ <input class="object-id" type="hidden" name="objects[<?php echo $i; ?>][object_id]" value="<?php echo $data_object->id; ?>" />
1995
+ </td>
1996
+ </tr>
1997
+ <tr class="row-form_submission-<?php echo $data_object->id; ?> submission-content <?php if ($i % 2 == 0) echo 'ccf-evenrow'; ?>">
1998
+ <td colspan="5"><ul>
1999
+ <?php
2000
+ $data_array = $data->getDataArray();
2001
+ foreach ($data_array as $item_key => $item_value) {
2002
+ ?>
2003
+ <li>
2004
+ <div><?php echo $item_key; ?></div>
2005
+ <p><?php echo $data->parseUserData($item_value); ?></p>
2006
+ </li>
2007
+ <?php
2008
+ }
2009
+ ?>
2010
+ </ul></td>
2011
+ </tr>
2012
+ <?php
2013
+ $i++;
2014
+ }
2015
+ ?>
2016
+ </tbody>
2017
+ <tfoot>
2018
+ <tr>
2019
+ <th scope="col" class="manage-column25"><input type="checkbox" class="checkall" /></th>
2020
+ <th scope="col" class="manage-column ccf-width250"><?php _e("Date Submitted", 'custom-contact-forms'); ?></th>
2021
+ <th scope="col" class="manage-column ccf-width150"><?php _e("Form Submitted", 'custom-contact-forms'); ?></th>
2022
+ <th scope="col" class="manage-column ccf-width250"><?php _e("Form Page", 'custom-contact-forms'); ?></th>
2023
+ <th scope="col" class="manage-column"></th>
2024
+ </tr>
2025
+ </tfoot>
2026
+ </table>
2027
+
2028
+ <select class="bulk-dropdown" name="object_bulk_action">
2029
+ <option value="0"><?php _e('Bulk Actions', 'custom-contact-forms'); ?></option>
2030
+ <option value="delete"><?php _e('Delete', 'custom-contact-forms'); ?></option>
2031
+ </select> <input type="submit" class="bulk-apply" name="object_bulk_apply" value="<?php _e('Apply', 'custom-contact-forms'); ?>" /> <img src="<?php echo plugins_url(); ?>/custom-contact-forms/images/wpspin_light.gif" class="loading-img" width="16" height="16" />
2032
+
2033
+
2034
+
2035
+ </form>
2036
+ <?php $this->insertUsagePopover(); ?>
2037
+ <?php $this->insertQuickStartPopover(); ?>
2038
+ </div>
2039
+ <?php
2040
+ }
2041
+
2042
+ function printSettingsPage() {
2043
+ $admin_options = parent::getAdminOptions();
2044
+ if ($admin_options['show_install_popover'] == 1) {
2045
+ $admin_options['show_install_popover'] = 0;
2046
+ ?>
2047
+ <script type="text/javascript" language="javascript">
2048
+ $j(document).ready(function() {
2049
+ showCCFUsagePopover();
2050
+ });
2051
+ </script>
2052
+ <?php
2053
+ update_option(parent::getAdminOptionsName(), $admin_options);
2054
+ } if ($_POST['general_settings']) {
2055
+ $_POST['settings'] = array_map(array('ccf_utils', 'encodeOption'), $_POST['settings']);
2056
+ $admin_options = array_merge($admin_options, $_POST['settings']);
2057
+ $admin_options[show_widget_categories] = $_POST['settings']['show_widget_categories'];
2058
+ $admin_options[show_widget_singles] = $_POST['settings']['show_widget_singles'];
2059
+ $admin_options[show_widget_pages] = $_POST['settings']['show_widget_pages'];
2060
+ $admin_options[show_widget_archives] = $_POST['settings']['show_widget_archives'];
2061
+ $admin_options[show_widget_home] = $_POST['settings']['show_widget_home'];
2062
+ $this->action_complete = __('Your settings have been successfully saved!', 'custom-contact-forms');
2063
+ update_option(parent::getAdminOptionsName(), $admin_options);
2064
+ } elseif ($_POST['configure_mail']) {
2065
+ $_POST['mail_config'] = array_map(array('ccf_utils', 'encodeOption'), $_POST['mail_config']);
2066
+ $admin_options = array_merge($admin_options, $_POST['mail_config']);
2067
+ $this->action_complete = __('Your mail settings have been successfully saved!', 'custom-contact-forms');
2068
+ update_option(parent::getAdminOptionsName(), $admin_options);
2069
+ }
2070
+ ccf_utils::load_module('export/custom-contact-forms-export.php');
2071
+ ?>
2072
+ <div id="customcontactforms-admin">
2073
+ <div class="plugin-header">
2074
+ <h2>
2075
+ <?php _e("Custom Contact Forms", 'custom-contact-forms'); ?>
2076
+ </h2>
2077
+ <div class="links">
2078
+ <a href="javascript:void(0)" class="quick-start-button">Quick Start Guide</a> - <a href="javascript:void(0)" class="usage-popover-button">Plugin Usage Manual</a>
2079
+ </div>
2080
+ </div>
2081
+ <a class="genesis" href="http://www.shareasale.com/r.cfm?b=241369&u=481196&m=28169&urllink=&afftrack=">Custom Contact Forms works best with any of the 20+ <span>Genesis</span> Wordpress child themes. The <span>Genesis Framework</span> empowers you to quickly and easily build incredible websites with WordPress.</a>
2082
+
2083
+ <form class="blog-horizontal-form" method="post" action="http://www.aweber.com/scripts/addlead.pl">
2084
+ <input type="hidden" name="meta_web_form_id" value="1578604781" />
2085
+ <input type="hidden" name="meta_split_id" value="" />
2086
+ <input type="hidden" name="listname" value="ccf-plugin" />
2087
+ <input type="hidden" name="redirect" value="http://www.taylorlovett.com/wordpress-plugins/tutorials-offers-tips/" id="redirect_5832e41084448adb07da67a35dc83c27" />
2088
+ <input type="hidden" name="meta_adtracking" value="CCF_-_Wordpress_Plugins_Horizontal" />
2089
+ <input type="hidden" name="meta_message" value="1" />
2090
+ <input type="hidden" name="meta_required" value="name,email" />
2091
+ <span>WP Blogging Tips, Downloads, SEO Tricks & Exclusive Tutorials</span>
2092
+ <input type="text" name="name" value="Your Name" onclick="value=''" />
2093
+ <input type="text" name="email" value="Your Email" onclick="value=''" />
2094
+ <input type="submit" value="Sign Up for Free" />
2095
+ </form>
2096
+
2097
+ <?php if (!empty($this->action_complete)) { ?>
2098
+ <div id="message" class="updated below-h2">
2099
+ <p><?php echo $this->action_complete; ?></p>
2100
+ </div>
2101
+ <?php } ?>
2102
+
2103
+ <div id="general-settings" class="postbox">
2104
+ <h3 class="hndle"><span>
2105
+ <?php _e("General Settings", 'custom-contact-forms'); ?>
2106
+ </span></h3>
2107
+ <div class="inside">
2108
+ <form method="post" action="<?php echo $_SERVER['REQUEST_URI']; ?>">
2109
+ <ul class="gleft">
2110
+ <li>
2111
+ <label for="email_form_submissions">
2112
+ <?php _e("Email Form Submissions:", 'custom-contact-forms'); ?>
2113
+ </label>
2114
+ <select name="settings[email_form_submissions]">
2115
+ <option value="1">
2116
+ <?php _e("Yes", 'custom-contact-forms'); ?>
2117
+ </option>
2118
+ <option value="0" <?php if ($admin_options['email_form_submissions'] == 0) echo 'selected="selected"'; ?>>
2119
+ <?php _e("No", 'custom-contact-forms'); ?>
2120
+ </option>
2121
+ </select>
2122
+ </li>
2123
+ <li class="descrip">
2124
+ <?php _e("When a user fills out one of your forms, the info submitted is saved in the Saved Form Submission section of the admin panel for you to view. If this is enabled, you will also be sent an email containing the submission info.", 'custom-contact-forms'); ?>
2125
+ </li>
2126
+ <li>
2127
+ <label for="default_to_email">
2128
+ <?php _e("Default Email:", 'custom-contact-forms'); ?>
2129
+ </label>
2130
+ <input name="settings[default_to_email]" value="<?php echo $admin_options['default_to_email']; ?>" type="text" maxlength="100" />
2131
+ </li>
2132
+ <li class="descrip">
2133
+ <?php _e("Form emails will be sent <span>to</span> this address, if no destination email is specified by the form.", 'custom-contact-forms'); ?>
2134
+ </li>
2135
+ <li>
2136
+ <label for="enable_jquery">
2137
+ <?php _e("Front End JQuery:", 'custom-contact-forms'); ?>
2138
+ </label>
2139
+ <select name="settings[enable_jquery]">
2140
+ <option value="1">
2141
+ <?php _e("Enabled", 'custom-contact-forms'); ?>
2142
+ </option>
2143
+ <option <?php if ($admin_options['enable_jquery'] != 1) echo 'selected="selected"'; ?> value="0">
2144
+ <?php _e("Disabled", 'custom-contact-forms'); ?>
2145
+ </option>
2146
+ </select>
2147
+ </li>
2148
+ <li class="descrip">
2149
+ <?php _e("Some plugins don't setup JQuery correctly, so when any other plugin uses JQuery (whether correctly or not), JQuery works for neither plugin. This plugin uses JQuery correctly. If another plugin isn't using JQuery correctly but is more important to you than this one: disable this option. 99% of this plugin's functionality will work without JQuery, just no field instruction tooltips.", 'custom-contact-forms'); ?>
2150
+ </li>
2151
+ <li>
2152
+ <label for="default_from_email">
2153
+ <?php _e("Default From Email:", 'custom-contact-forms'); ?>
2154
+ </label>
2155
+ <input name="settings[default_from_email]" value="<?php echo $admin_options['default_from_email']; ?>" type="text" maxlength="100" />
2156
+ </li>
2157
+ <li class="descrip">
2158
+ <?php _e("Form emails will be sent <span>from</span> this address. It is recommended you provide a real email address that has been created through your host.", 'custom-contact-forms'); ?>
2159
+ </li>
2160
+ <li>
2161
+ <label for="default_from_name">
2162
+ <?php _e("Default From Name:", 'custom-contact-forms'); ?>
2163
+ </label>
2164
+ <input name="settings[default_from_name]" value="<?php echo $admin_options['default_from_name']; ?>" type="text" maxlength="100" />
2165
+ </li>
2166
+ <li class="descrip">
2167
+ <?php _e("This setting allows you to specify the name under which form emails are sent. The default is 'Custom Contact Forms'.", 'custom-contact-forms'); ?>
2168
+ </li>
2169
+ <li>
2170
+ <label for="default_form_subject">
2171
+ <?php _e("Default Email Subject:", 'custom-contact-forms'); ?>
2172
+ </label>
2173
+ <input name="settings[default_form_subject]" value="<?php echo $admin_options['default_form_subject']; ?>" type="text" />
2174
+ </li>
2175
+ <li class="descrip">
2176
+ <?php _e("Default subject to be included in all form emails.", 'custom-contact-forms'); ?>
2177
+ </li>
2178
+ <li>
2179
+ <label for="enable_dashboard_widget">
2180
+ <?php _e("Enable Dashboard Widget:", 'custom-contact-forms'); ?>
2181
+ </label>
2182
+ <select name="settings[enable_dashboard_widget]">
2183
+ <option value="1">
2184
+ <?php _e("Enabled", 'custom-contact-forms'); ?>
2185
+ </option>
2186
+ <option value="0" <?php if ($admin_options['enable_dashboard_widget'] == 0) echo 'selected="selected"'; ?>>
2187
+ <?php _e("Disabled", 'custom-contact-forms'); ?>
2188
+ </option></select>
2189
+ </li>
2190
+ <li class="descrip">
2191
+ <?php _e("Enabling this will display a widget on your dashboard that shows the latest form submissions.", 'custom-contact-forms'); ?>
2192
+ </li>
2193
+ <li>
2194
+ <label for="dashboard_access">
2195
+ <?php _e("Dashboard Widget Accessibility:", 'custom-contact-forms'); ?>
2196
+ </label>
2197
+ <select name="settings[dashboard_access]">
2198
+ <option value="2">
2199
+ <?php _e("Only admins can view", 'custom-contact-forms'); ?>
2200
+ </option>
2201
+ <option value="1" <?php if ($admin_options['dashboard_access'] == 1) echo 'selected="selected"'; ?>>
2202
+ <?php _e("All roles except subscribers can view", 'custom-contact-forms'); ?>
2203
+ </option>
2204
+ <option value="0" <?php if ($admin_options['dashboard_access'] == 0) echo 'selected="selected"'; ?>>
2205
+ <?php _e("All roles can view", 'custom-contact-forms'); ?>
2206
+ </option></select>
2207
+ </li>
2208
+ <li class="descrip">
2209
+ <?php _e("If you are using the dashboard widget, this allows you to disallow certain users from viewing it.", 'custom-contact-forms'); ?>
2210
+ </li>
2211
+ <li>
2212
+ <label for="code_type">
2213
+ <?php _e("Use Code Type:", 'custom-contact-forms'); ?>
2214
+ </label>
2215
+ <select name="settings[code_type]">
2216
+ <option>XHTML</option>
2217
+ <option <?php if ($admin_options['code_type'] == 'HTML') echo 'selected="selected"'; ?>>HTML</option>
2218
+ </select>
2219
+ </li>
2220
+ <li class="descrip">
2221
+ <?php _e("This lets you switch the form code between HTML and XHTML.", 'custom-contact-forms'); ?>
2222
+ </li>
2223
+ <li>
2224
+ <label for="form_page_inclusion_only">
2225
+ <?php _e("Restrict Frontend JS and CSS to Form Pages Only:", 'custom-contact-forms'); ?>
2226
+ </label>
2227
+ <select name="settings[form_page_inclusion_only]">
2228
+ <option value="1">
2229
+ <?php _e("Yes", 'custom-contact-forms'); ?>
2230
+ </option>
2231
+ <option value="0" <?php if ($admin_options['form_page_inclusion_only'] == 0) echo 'selected="selected"'; ?>>
2232
+ <?php _e("No", 'custom-contact-forms'); ?>
2233
+ </option></select>
2234
+ </li>
2235
+ <li class="descrip">
2236
+ <?php _e("Within each form in the form manager, you can specify the page id's on which that form will be used. If you set this to 'Yes', the plugin will only include CSS and JS files on pages/posts where a CCF form is inserted. If this is set to 'No', CSS and JS files for this plugin will be included on every page of your site except in the admin area.", 'custom-contact-forms'); ?>
2237
+ </li>
2238
+ </ul>
2239
+ <ul class="gright">
2240
+ <li>
2241
+ <label for="form_success_message_title">
2242
+ <?php _e("Default Form Success Message Title:", 'custom-contact-forms'); ?>
2243
+ </label>
2244
+ <input name="settings[form_success_message_title]" value="<?php echo $admin_options['form_success_message_title']; ?>" type="text"/>
2245
+ </li>
2246
+ <li class="descrip">
2247
+ <?php _e("If someone fills out a form for which a success message title is not provided and a custom success page is not provided, the plugin will show a popover using this field as the window title.", 'custom-contact-forms'); ?>
2248
+ </li>
2249
+
2250
+ <li>
2251
+ <label for="form_success_message">
2252
+ <?php _e("Default Form Success Message:", 'custom-contact-forms'); ?>
2253
+ </label>
2254
+ <input name="settings[form_success_message]" value="<?php echo $admin_options['form_success_message']; ?>" type="text"/>
2255
+ </li>
2256
+ <li class="descrip">
2257
+ <?php _e("If someone fills out a form for which a success message is not provided and a custom success page is not provided, the plugin will show a popover containing this message.", 'custom-contact-forms'); ?>
2258
+ </li>
2259
+ <li>
2260
+ <label for="default_form_error_header">
2261
+ <?php _e("Default Form Error Header:", 'custom-contact-forms'); ?>
2262
+ </label>
2263
+ <input name="settings[default_form_error_header]" value="<?php echo $admin_options['default_form_error_header']; ?>" type="text" />
2264
+ </li>
2265
+ <li class="descrip">
2266
+ <?php _e("When a form is filled out incorrectly, this message will be displayed followed by the individual field error messages.", 'custom-contact-forms'); ?>
2267
+ </li>
2268
+ <li>
2269
+ <label for="remember_field_values">
2270
+ <?php _e("Remember Field Values:", 'custom-contact-forms'); ?>
2271
+ </label>
2272
+ <select name="settings[remember_field_values]">
2273
+ <option value="1">
2274
+ <?php _e("Yes", 'custom-contact-forms'); ?>
2275
+ </option>
2276
+ <option <?php if ($admin_options['remember_field_values'] == 0) echo 'selected="selected"'; ?> value="0">
2277
+ <?php _e("No", 'custom-contact-forms'); ?>
2278
+ </option>
2279
+ </select>
2280
+ </li>
2281
+ <li class="descrip">
2282
+ <?php _e("Selecting yes will make form fields remember how they were last filled out.", 'custom-contact-forms'); ?>
2283
+ </li>
2284
+ <li>
2285
+ <label for="enable_widget_tooltips">
2286
+ <?php _e("Tooltips in Widget:", 'custom-contact-forms'); ?>
2287
+ </label>
2288
+ <select name="settings[enable_widget_tooltips]">
2289
+ <option value="1">
2290
+ <?php _e("Enabled", 'custom-contact-forms'); ?>
2291
+ </option>
2292
+ <option <?php if ($admin_options['enable_widget_tooltips'] == 0) echo 'selected="selected"'; ?> value="0">
2293
+ <?php _e("Disabled", 'custom-contact-forms'); ?>
2294
+ </option>
2295
+ </select>
2296
+ </li>
2297
+ <li class="descrip">
2298
+ <?php _e("Enabling this shows tooltips containing field instructions on forms in the widget.", 'custom-contact-forms'); ?>
2299
+ </li>
2300
+ <li>
2301
+ <label for="admin_ajax">
2302
+ <?php _e("Fancy Admin AJAX Abilities:", 'custom-contact-forms'); ?>
2303
+ </label>
2304
+ <select name="settings[admin_ajax]">
2305
+ <option value="1">
2306
+ <?php _e("Enabled", 'custom-contact-forms'); ?>
2307
+ </option>
2308
+ <option value="0" <?php if ($admin_options['admin_ajax'] == 0) echo 'selected="selected"'; ?>>
2309
+ <?php _e("Disabled", 'custom-contact-forms'); ?>
2310
+ </option>
2311
+ </select>
2312
+ </li>
2313
+ <li class="descrip">
2314
+ <?php _e("If you enable this, creating, editing and modifying forms, fields, styles, etc in the admin panel will be done using AJAX. This means that clicking things like 'Edit' or 'Delete' will not cause the page to reload thus managing your forms will be much smoother and quicker. If you are having problems with things not saving, deleting, or inserting correctly, then disable this and fill out a bug report below.", 'custom-contact-forms'); ?>
2315
+ </li>
2316
+ <li>
2317
+ <label for="default_form_bad_permissions">
2318
+ <?php _e("Default Permissions Error:", 'custom-contact-forms'); ?>
2319
+ </label>
2320
+ <input name="settings[default_form_bad_permissions]" value="<?php echo $admin_options['default_form_bad_permissions']; ?>" type="text" />
2321
+ </li>
2322
+ <li class="descrip">
2323
+ <?php _e("When someone doesn't have the proper permissions to use a form, this message is displayed in place of the form. You control who can view each form with the form access manager which is located inside the form manager.", 'custom-contact-forms'); ?>
2324
+ </li>
2325
+ <li>
2326
+ <label for="enable_form_access_manager">
2327
+ <?php _e("Form Access Capabilities:", 'custom-contact-forms'); ?>
2328
+ </label>
2329
+ <select name="settings[enable_form_access_manager]">
2330
+ <option value="0">
2331
+ <?php _e("Disabled", 'custom-contact-forms'); ?>
2332
+ </option>
2333
+ <option value="1" <?php if ($admin_options['enable_form_access_manager'] == 1) echo 'selected="selected"'; ?>>
2334
+ <?php _e("Enabled", 'custom-contact-forms'); ?>
2335
+ </option>
2336
+ </select>
2337
+ </li>
2338
+ <li class="descrip">
2339
+ <?php _e("The form access manager within each form allows you to control who can view your form. However, that will take effect on any of your forms unless this is enabled.", 'custom-contact-forms'); ?>
2340
+ </li>
2341
+ <li>
2342
+ <label for="max_file_upload_size">
2343
+ <?php _e("Maximum File Upload Size:", 'custom-contact-forms'); ?>
2344
+ </label>
2345
+ <input name="settings[max_file_upload_size]" class="ccf-width75" type="text" value="<?php echo $admin_options['max_file_upload_size']; ?>" /> <?php _e("MB"); ?>
2346
+
2347
+ </li>
2348
+ <li class="descrip">
2349
+ <?php _e("When creating file fields, you can specify maximum upload sizes for each individual field. This setting lets you set an overall cap for security reasons. It is recommended you leave this at 10 MB.", 'custom-contact-forms'); ?>
2350
+ </li>
2351
+ <li class="show-widget"><b>
2352
+ <?php _e("Show Sidebar Widget:", 'custom-contact-forms'); ?>
2353
+ </b></li>
2354
+ <li>
2355
+ <label>
2356
+ <input value="1" type="checkbox" name="settings[show_widget_home]" <?php if ($admin_options['show_widget_home'] == 1) echo 'checked="checked"'; ?> />
2357
+ <?php _e("On Homepage", 'custom-contact-forms'); ?>
2358
+ </label>
2359
+ <label>
2360
+ <input value="1" type="checkbox" name="settings[show_widget_pages]" <?php if ($admin_options['show_widget_pages'] == 1) echo 'checked="checked"'; ?> />
2361
+ <?php _e("On Pages", 'custom-contact-forms'); ?>
2362
+ </label>
2363
+ <label>
2364
+ <input value="1" type="checkbox" name="settings[show_widget_singles]" <?php if ($admin_options['show_widget_singles'] == 1) echo 'checked="checked"'; ?> />
2365
+ <?php _e("On Single Posts", 'custom-contact-forms'); ?>
2366
+ </label>
2367
+ <br />
2368
+ <label>
2369
+ <input value="1" type="checkbox" name="settings[show_widget_categories]" <?php if ($admin_options['show_widget_categories'] == 1) echo 'checked="checked"'; ?> />
2370
+ <?php _e("On Categories", 'custom-contact-forms'); ?>
2371
+ </label>
2372
+ <label>
2373
+ <input value="1" type="checkbox" name="settings[show_widget_archives]" <?php if ($admin_options['show_widget_archives'] == 1) echo 'checked="checked"'; ?> />
2374
+ <?php _e("On Archives", 'custom-contact-forms'); ?>
2375
+ </label>
2376
+ </li>
2377
+
2378
+ <li>
2379
+ <input type="submit" value="<?php _e("Update", 'custom-contact-forms'); ?>" name="general_settings" />
2380
+ </li>
2381
+ </ul>
2382
+ </form>
2383
+ </div>
2384
+ </div>
2385
+ <div id="configure-mail" class="postbox">
2386
+ <h3 class="hndle"><span>
2387
+ <?php _e("Mail Settings", 'custom-contact-forms'); ?>
2388
+ </span></h3>
2389
+ <div class="inside">
2390
+ <form method="post" action="<?php echo $_SERVER['REQUEST_URI']; ?>">
2391
+ <p><?php _e("There are two ways you can send emails: using the PHP mail() function or using SMTP (secure/insecure). If you choose to use the PHP mail() function you can ignore all the other options. For some people Wordpress's default way of sending mail does not work; if for some reason your mail is being sent you should try the SMTP option.", 'custom-contact-forms'); ?></p>
2392
+ <label for="mail_function"><?php _e("* Send My Emails Using the Following:", 'custom-contact-forms'); ?></label>
2393
+ <select name="mail_config[mail_function]">
2394
+ <option value="default"><?php _e("Wordpress Default", 'custom-contact-forms'); ?></option>
2395
+ <option <?php if ($admin_options['mail_function'] == 'smtp') echo 'selected="selected"'; ?> value="smtp"><?php _e("SMTP", 'custom-contact-forms'); ?></option>
2396
+ </select> <?php _e("(If mail isn't sending, try toggling this option.)", 'custom-contact-forms'); ?>
2397
+ <div>
2398
+ <ul class="left">
2399
+ <li><label for="smtp_host"><?php _e("SMTP Host:", 'custom-contact-forms'); ?></label> <input class="ccf-width125" type="text" size="10" name="mail_config[smtp_host]" value="<?php echo $admin_options['smtp_host']; ?>" /></li>
2400
+ <li><label for="smtp_port"><?php _e("SMTP Port:", 'custom-contact-forms'); ?></label> <input class="ccf-width125" type="text" size="10" name="mail_config[smtp_port]" value="<?php echo $admin_options['smtp_port']; ?>" /></li>
2401
+ <li><label for="smtp_encryption"><?php _e("Encryption:", 'custom-contact-forms'); ?></label> <select name="mail_config[smtp_encryption]">
2402
+ <option value="none"><?php _e("None", 'custom-contact-forms'); ?></option>
2403
+ <option <?php if ($admin_options['smtp_encryption'] == 'ssl') echo 'selected="selected"'; ?> value="ssl"><?php _e("SSL", 'custom-contact-forms'); ?></option>
2404
+ <option <?php if ($admin_options['smtp_encryption'] == 'tls') echo 'selected="selected"'; ?> value="tls"><?php _e("TLS", 'custom-contact-forms'); ?></option>
2405
+ </select></li>
2406
+ </ul>
2407
+ <ul class="right">
2408
+ <li><label for="smtp_authentication"><?php _e("SMTP Authentication:", 'custom-contact-forms'); ?></label> <select name="mail_config[smtp_authentication]"><option value="0"><?php _e("None Needed", 'custom-contact-forms'); ?></option><option <?php if ($admin_options['smtp_authentication'] == 1) echo 'selected="selected"'; ?> value="1"><?php _e("Use SMTP Username/Password", 'custom-contact-forms'); ?></option></select></li>
2409
+ <li><label for="smtp_username"><?php _e("SMTP Username:", 'custom-contact-forms'); ?></label> <input class="ccf-width125" type="text" size="10" name="mail_config[smtp_username]" value="<?php echo $admin_options['smtp_username']; ?>" /></li>
2410
+ <li><label for="smtp_password"><?php _e("SMTP Password:", 'custom-contact-forms'); ?></label> <input class="ccf-width125" type="text" size="10" name="mail_config[smtp_password]" value="<?php echo $admin_options['smtp_password']; ?>" /></li>
2411
+ </ul>
2412
+ </div>
2413
+ <input type="submit" name="configure_mail" value="<?php _e("Save Mail Sending Options", 'custom-contact-forms'); ?>" />
2414
+ </form>
2415
+ </div>
2416
+ </div>
2417
+ <div id="export" class="postbox">
2418
+ <h3 class="hndle"><span>
2419
+ <?php _e("Export", 'custom-contact-forms'); ?>
2420
+ </span></h3>
2421
+ <div class="inside">
2422
+ <form method="post" action="<?php echo $_SERVER['REQUEST_URI']; ?>">
2423
+ <p>
2424
+ <?php _e("Preforming a Custom Contact Forms export will create a file of the form
2425
+ ccf-export-xxxx.sql on your web server. The file created contains SQL that
2426
+ will recreate all the plugin data on any Wordpress installation. After Custom Contact Forms creates the export file, you will be prompted to download it. You can use this file as a backup in case your Wordpress database gets ruined.", 'custom-contact-forms'); ?>
2427
+ </p>
2428
+ <input type="submit" name="ccf_export" value="<?php _e("Export All CCF Plugin Content", 'custom-contact-forms'); ?>" />
2429
+ </form>
2430
+ </div>
2431
+ </div>
2432
+ <div id="import" class="postbox">
2433
+ <h3 class="hndle"><span>
2434
+ <?php _e("Import", 'custom-contact-forms'); ?>
2435
+ </span></h3>
2436
+ <div class="inside">
2437
+ <form method="post" enctype="multipart/form-data" action="<?php echo $_SERVER['REQUEST_URI']; ?>">
2438
+
2439
+ <p>
2440
+ <?php _e("Browse to a CCF .sql export file to import Custom Contact Form data from another Wordpress installation to this one. Pressing the 'Clear and Import' button deletes all current data and then imports the selected file; this will not work for merging to data!. Clearing all CCF data before importing prevents any conflicts from occuring. Before you attempt an import, you should always download a backup, by clicking the 'Export All' button.", 'custom-contact-forms'); ?>
2441
+ </p>
2442
+ <p class="choose_import">
2443
+ <?php _e("Choose What You Want to Use from the Import File:", 'custom-contact-forms'); ?>
2444
+ </p>
2445
+ <ul>
2446
+ <li>
2447
+ <input type="checkbox" checked="checked" name="ccf_import_overwrite_settings" value="1" />
2448
+ <label for="ccf_import_overwrite_settings">
2449
+ <?php _e("Use General Settings", 'custom-contact-forms'); ?>
2450
+ </label>
2451
+ </li>
2452
+ <li>
2453
+ <input type="checkbox" checked="checked" name="ccf_import_forms" value="1" />
2454
+ <label for="ccf_import_forms">
2455
+ <?php _e("Forms", 'custom-contact-forms'); ?>
2456
+ </label>
2457
+ </li>
2458
+ <li>
2459
+ <input type="checkbox" checked="checked" name="ccf_import_saved_submissions" value="1" />
2460
+ <label for="ccf_import_saved_submissions">
2461
+ <?php _e("Form Submissions", 'custom-contact-forms'); ?>
2462
+ </label>
2463
+ </li>
2464
+ <li>
2465
+ <input type="checkbox" checked="checked" name="ccf_import_fields" value="1" />
2466
+ <label for="ccf_import_fields">
2467
+ <?php _e("Fields", 'custom-contact-forms'); ?>
2468
+ </label>
2469
+ </li>
2470
+ <li>
2471
+ <input type="checkbox" checked="checked" name="ccf_import_forms" value="1" />
2472
+ <label for="ccf_import_forms">
2473
+ <?php _e("Forms", 'custom-contact-forms'); ?>
2474
+ </label>
2475
+ </li>
2476
+ <li>
2477
+ <input type="checkbox" checked="checked" name="ccf_import_field_options" value="1" />
2478
+ <label for="ccf_import_field_options">
2479
+ <?php _e("Field Options", 'custom-contact-forms'); ?>
2480
+ </label>
2481
+ </li>
2482
+ <li>
2483
+ <input type="checkbox" checked="checked" name="ccf_import_styles" value="1" />
2484
+ <label for="ccf_import_styles">
2485
+ <?php _e("Styles", 'custom-contact-forms'); ?>
2486
+ </label>
2487
+ </li>
2488
+ </ul>
2489
+ <p class="choose_import">
2490
+ <label for="import_file">
2491
+ <?php _e("Choose an Import File:", 'custom-contact-forms'); ?>
2492
+ </label>
2493
+ <input type="file" name="import_file" />
2494
+ </p>
2495
+ <input name="ccf_clear_import" type="submit" value="<?php _e("Clear and Import", 'custom-contact-forms'); ?>" />
2496
+ <input type="checkbox" name="ccf_import_confirm" value="1" />
2497
+ <?php _e('Yes, I want to do this and have created a backup.', 'custom-contact-forms'); ?>
2498
+ </form>
2499
+ </div>
2500
+ </div>
2501
+ <?php $this->insertUsagePopover(); ?>
2502
+ <?php $this->insertQuickStartPopover(); ?>
2503
+ </div>
2504
+ <?php
2505
+ }
2506
+ }
2507
+ }
2508
  ?>
custom-contact-forms-front.php CHANGED
@@ -1,586 +1,652 @@
1
- <?php
2
- /*
3
- Custom Contact Forms Plugin
4
- By Taylor Lovett - http://www.taylorlovett.com
5
- Plugin URL: http://www.taylorlovett.com/wordpress-plugins
6
- */
7
- if (!class_exists('CustomContactFormsFront')) {
8
- class CustomContactFormsFront extends CustomContactForms {
9
- var $form_errors = array();
10
- var $error_return;
11
- var $current_form;
12
- var $current_thank_you_message;
13
-
14
- function frontInit() {
15
- ccf_utils::startSession();
16
- $this->processForms();
17
- }
18
-
19
- function includeDependencies() {
20
- $admin_options = parent::getAdminOptions();
21
- $include_defaults = false;
22
- $include_datepicker = false;
23
- // faster algorithm? this is in O(m*n) n = # of forms and m = # of posts
24
- if ($admin_options['form_page_inclusion_only'] == 1) {
25
- global $posts;
26
- $forms = parent::selectAllForms();
27
- $active_forms = array();
28
- foreach ($forms as $form) {
29
- $form_pages = parent::unserializeFormPageIds($form);
30
- foreach ($posts as $i => $p) {
31
- if (in_array($p->ID, $form_pages)) {
32
- $active_forms[] = $form;
33
- break;
34
- }
35
- }
36
- }
37
-
38
- if (!empty($active_forms)) {
39
- $include_defaults = true;
40
- if ($admin_options['enable_jquery'] == 1) {
41
- foreach ($active_forms as $form) {
42
- $fields = parent::getAttachedFieldsArray($form->id);
43
- foreach ($fields as $fid) {
44
- $field = parent::selectField($fid);
45
- if ($field->field_type == 'Date') {
46
- $include_datepicker = true;
47
- break;
48
- }
49
- }
50
- }
51
- }
52
- }
53
- } else {
54
- $include_defaults = true;
55
- $include_datepicker = true;
56
- }
57
-
58
- if ($include_defaults) {
59
- if ($admin_options['enable_jquery'] == 1) {
60
- if ($include_datepicker) {
61
- add_action('wp_print_styles', array(&$this, 'insertDatePickerStyles'), 1);
62
- add_action('wp_enqueue_scripts', array(&$this, 'insertDatePickerScripts'), 1);
63
- }
64
- add_action('wp_enqueue_scripts', array(&$this, 'insertFrontEndScripts'), 1);
65
- }
66
- add_action('wp_print_styles', array(&$this, 'insertFrontEndStyles'), 1);
67
- }
68
- }
69
-
70
- function insertFrontEndStyles() {
71
- wp_register_style('CCFStandardsCSS', plugins_url() . '/custom-contact-forms/css/custom-contact-forms-standards.css');
72
- wp_register_style('CCFFormsCSS', plugins_url() . '/custom-contact-forms/css/custom-contact-forms.css');
73
- wp_enqueue_style('CCFStandardsCSS');
74
- wp_enqueue_style('CCFFormsCSS');
75
- }
76
-
77
- function insertFrontEndScripts() {
78
- //wp_enqueue_script('jquery');
79
- wp_enqueue_script('jquery-tools', plugins_url() . '/custom-contact-forms/js/jquery.tools.min.js');
80
- wp_enqueue_script('ccf-main', plugins_url() . '/custom-contact-forms/js/custom-contact-forms.js', '1.0');
81
- }
82
-
83
- function insertDatePickerScripts() {
84
- //wp_enqueue_script('jquery-ui-widget'); //, plugins_url() . '/custom-contact-forms/js/jquery.ui.widget.js');
85
- wp_enqueue_script('jquery-ui-datepicker', plugins_url() . '/custom-contact-forms/js/jquery.ui.datepicker.js', array('jquery-ui-core', 'jquery-ui-widget'));
86
- wp_enqueue_script('ccf-datepicker', plugins_url() . '/custom-contact-forms/js/custom-contact-forms-datepicker.js', '1.0');
87
- }
88
-
89
- function insertDatePickerStyles() {
90
- wp_register_style('ccf-jquery-ui', plugins_url() . '/custom-contact-forms/css/jquery-ui.css');
91
- wp_enqueue_style('ccf-jquery-ui');
92
- }
93
-
94
- function setFormError($key, $message) {
95
- $this->form_errors[$key] = $message;
96
- }
97
-
98
- function getFormError($key) {
99
- return $this->form_errors[$key];
100
- }
101
-
102
- function getAllFormErrors() {
103
- return $this->form_errors;
104
- }
105
-
106
- function shortCodeToForm($atts) {
107
- extract(shortcode_atts(array(
108
- 'form' => 0,
109
- ), $atts));
110
- $this_form = parent::selectForm($form);
111
- if (empty($this_form)) return '';
112
- $admin_options = parent::getAdminOptions();
113
- if ($admin_options['enable_form_access_manager'] == 1 && !$this->userCanViewForm($this_form))
114
- return $admin_options['default_form_bad_permissions'];
115
-
116
- return $this->getFormCode($this_form);
117
- }
118
-
119
- function emptyFormErrors() {
120
- $this->form_errors = array();
121
- }
122
-
123
- function contentFilter($content) {
124
- // THIS NEEDS TO REPLACE THE SHORTCODE ONLY ONCE
125
- $errors = $this->getAllFormErrors();
126
- if (!empty($errors)) {
127
- $admin_options = parent::getAdminOptions();
128
- $out = '<div id="custom-contact-forms-errors"><p>'.$admin_options['default_form_error_header'].'</p><ul>' . "\n";
129
- //$errors = $this->getAllFormErrors();
130
- foreach ($errors as $error) {
131
- $out .= '<li>'.$error.'</li>' . "\n";
132
- }
133
- $err_link = (!empty($this->error_return)) ? '<p><a href="'.$this->error_return.'" title="Go Back">&lt; ' . __('Go Back to Form.', 'custom-contact-forms') . '</a></p>' : '';
134
- $this->emptyFormErrors();
135
- return $out . '</ul>' . "\n" . $err_link . '</div>';
136
- }
137
- return $content;
138
- /*
139
- $matches = array();
140
- preg_match_all('/\[customcontact form=([0-9]+)\]/si', $content, $matches);
141
- $matches_count = count($matches[0]);
142
- for ($i = 0; $i < $matches_count; $i++) {
143
- $this_form = parent::selectForm($matches[1][$i]);
144
- if ($this_form == false)
145
- $form_replace = '';
146
- if (!$this->userCanViewForm($this_form))
147
- $form_replace = __("You don't have the proper permissions to view this form.", 'custom-contact-forms');
148
- else
149
- $form_replace = $this->getFormCode($this_form);
150
- $content = str_replace($matches[0][$i], $form_replace, $content);
151
- }
152
- return $content;*/
153
- }
154
-
155
- function insertFormSuccessCode() {
156
- $admin_options = parent::getAdminOptions();
157
- if ($this->current_form !== 0) {
158
- $form = parent::selectForm($this->current_form);
159
- $success_message = (!empty($form->form_success_message)) ? $form->form_success_message : $admin_options['form_success_message'];
160
- $success_title = (!empty($form->form_success_title)) ? $form->form_success_title : $admin_options['form_success_message_title'];
161
- } else {
162
- $success_title = $admin_options['form_success_message_title'];
163
- $success_message = (empty($this->current_thank_you_message)) ? $admin_options['form_success_message'] : $this->current_thank_you_message;
164
- } if ($form->form_style != 0) {
165
- $style = parent::selectStyle($form->form_style);
166
- ?>
167
- <style type="text/css">
168
- <!--
169
- #ccf-form-success { z-index:10000; border-color:#<?php echo parent::formatStyle($style->success_popover_bordercolor); ?>; height:<?php $style->success_popover_height; ?>; }
170
- #ccf-form-success div { background-color:#<?php echo parent::formatStyle($style->success_popover_bordercolor); ?>; }
171
- #ccf-form-success div h5 { color:#<?php echo parent::formatStyle($style->success_popover_title_fontcolor); ?>; font-size:<?php echo $style->success_popover_title_fontsize; ?>; }
172
- #ccf-form-success div a { color:#<?php echo parent::formatStyle($style->success_popover_title_fontcolor); ?>; }
173
- #ccf-form-success p { font-size:<?php echo $style->success_popover_fontsize; ?>; color:#<?php echo parent::formatStyle($style->success_popover_fontcolor); ?>; }
174
- -->
175
- </style>
176
- <?php
177
- }
178
- ?>
179
- <div id="ccf-form-success">
180
- <div>
181
- <h5><?php echo $success_title; ?></h5>
182
- <a href="javascript:void(0)" class="close">&times;</a>
183
- </div>
184
- <p><?php echo $success_message; ?></p>
185
-
186
- </div>
187
-
188
- <?php
189
- }
190
-
191
- function validEmail($email) {
192
- if (!@preg_match("/^[^@]{1,64}@[^@]{1,255}$/", $email)) return false;
193
- $email_array = explode("@", $email);
194
- $local_array = explode(".", $email_array[0]);
195
- for ($i = 0; $i < sizeof($local_array); $i++) {
196
- if (!@preg_match("/^(([A-Za-z0-9!#$%&'*+\/=?^_`{|}~-][A-Za-z0-9!#$%&'*+\/=?^_`{|}~\.-]{0,63})|(\"[^(\\|\")]{0,62}\"))$/", $local_array[$i])) {
197
- return false;
198
- }
199
- } if (!@preg_match("/^\[?[0-9\.]+\]?$/", $email_array[1])) {
200
- $domain_array = explode(".", $email_array[1]);
201
- if (sizeof($domain_array) < 2) return false;
202
- for ($i = 0; $i < sizeof($domain_array); $i++) {
203
- if (!@preg_match("/^(([A-Za-z0-9][A-Za-z0-9-]{0,61}[A-Za-z0-9])|([A-Za-z0-9]+))$/", $domain_array[$i])) {
204
- return false;
205
- }
206
- }
207
- }
208
- return true;
209
- }
210
-
211
- function validWebsite($website) {
212
- return preg_match('|^http(s)?://[a-z0-9-]+(.[a-z0-9-]+)*(:[0-9]+)?(/.*)?$|i', $website);
213
- }
214
-
215
- function getFormCode($form, $is_widget_form = false) {
216
- if (empty($form)) return '';
217
- $admin_options = parent::getAdminOptions();
218
- $form_key = time();
219
- $out = '';
220
- $form_styles = '';
221
- $style_class = (!$is_widget_form) ? ' customcontactform' : ' customcontactform-sidebar';
222
- $form_id = 'form-' . $form->id . '-'.$form_key;
223
- if ($form->form_style != 0) {
224
- $style = parent::selectStyle($form->form_style, '');
225
- $style_class = $style->style_slug;
226
- }
227
- $form_method = (empty($form->form_method)) ? 'post' : strtolower($form->form_method);
228
- $form_title = ccf_utils::decodeOption($form->form_title, 1, 1);
229
- $action = (!empty($form->form_action)) ? $form->form_action : $_SERVER['REQUEST_URI'];
230
- $out .= '<form id="'.$form_id.'" method="'.$form_method.'" action="'.$action.'" class="'.$style_class.'">' . "\n";
231
- $out .= ccf_utils::decodeOption($form->custom_code, 1, 1) . "\n";
232
- if (!empty($form_title) && !$is_widget_form) $out .= '<h4 id="h4-' . $form->id . '-' . $form_key . '">' . $form_title . '</h4>' . "\n";
233
- $fields = parent::getAttachedFieldsArray($form->id);
234
- $hiddens = '';
235
- $code_type = ($admin_options['code_type'] == 'XHTML') ? ' /' : '';
236
- $add_reset = '';
237
- foreach ($fields as $field_id) {
238
- $field = parent::selectField($field_id, '');
239
- $req = ($field->field_required == 1 or $field->field_slug == 'ishuman') ? '* ' : '';
240
- $req_long = ($field->field_required == 1) ? ' ' . __('(required)', 'custom-contact-forms') : '';
241
- $input_id = 'id="'.ccf_utils::decodeOption($field->field_slug, 1, 1).'-'.$form_key.'"';
242
- $field_value = ccf_utils::decodeOption($field->field_value, 1, 1);
243
- $instructions = (empty($field->field_instructions)) ? '' : 'title="' . $field->field_instructions . $req_long . '" ';
244
- $tooltip_class = (empty($field->field_instructions)) ? '' : 'ccf-tooltip-field';
245
- if ($admin_options['enable_widget_tooltips'] == 0 && $is_widget_form) $instructions = '';
246
- if ($_SESSION['fields'][$field->field_slug]) {
247
- if ($admin_options['remember_field_values'] == 1)
248
- $field_value = $_SESSION['fields'][$field->field_slug];
249
- } if ($field->field_slug == 'captcha') {
250
- $out .= '<div>' . "\n" . $this->getCaptchaCode($field, $form->id) . "\n" . '</div>' . "\n";
251
- } elseif ($field->field_slug == 'usaStates') {
252
- $out .= '<div>' . "\n" . $this->getStatesCode($field, $form->id) . "\n" . '</div>' . "\n";
253
- } elseif ($field->field_slug == 'allCountries') {
254
- $out .= '<div>' . "\n" . $this->getCountriesCode($field, $form->id) . "\n" . '</div>' . "\n";
255
- } elseif ($field->field_slug == 'resetButton') {
256
- $add_reset = ' <input type="reset" '.$instructions.' class="reset-button '.$field->field_class.' '.$tooltip_class.'" value="' . $field->field_value . '" />';
257
- } elseif ($field->field_type == 'Text') {
258
- $maxlength = (empty($field->field_maxlength) or $field->field_maxlength <= 0) ? '' : ' maxlength="'.$field->field_maxlength.'"';
259
- $out .= '<div>'."\n".'<label for="'.ccf_utils::decodeOption($field->field_slug, 1, 1).'">'. $req .ccf_utils::decodeOption($field->field_label, 1, 1).'</label>'."\n".'<input class="'.$field->field_class.' '.$tooltip_class.'" '.$instructions.' '.$input_id.' type="text" name="'.ccf_utils::decodeOption($field->field_slug, 1, 1).'" value="'.$field_value.'"'.$maxlength.''.$code_type.'>'."\n".'</div>' . "\n";
260
- } elseif ($field->field_type == 'Date') {
261
- $maxlength = (empty($field->field_maxlength) or $field->field_maxlength <= 0) ? '' : ' maxlength="'.$field->field_maxlength.'"';
262
- $out .= '<div>'."\n".'<label for="'.ccf_utils::decodeOption($field->field_slug, 1, 1).'">'. $req .ccf_utils::decodeOption($field->field_label, 1, 1).'</label>'."\n".'<input class="'.$field->field_class.' ccf-datepicker '.$tooltip_class.'" '.$instructions.' '.$input_id.' type="text" name="'.ccf_utils::decodeOption($field->field_slug, 1, 1).'" value="'.$field_value.'"'.$maxlength.''.$code_type.'>'."\n".'</div>' . "\n";
263
- } elseif ($field->field_type == 'Hidden') {
264
- $hiddens .= '<input type="hidden" name="'.ccf_utils::decodeOption($field->field_slug, 1, 1).'" value="'.$field_value.'" '.$input_id.''.$code_type.'>' . "\n";
265
- } elseif ($field->field_type == 'Checkbox') {
266
- $out .= '<div>'."\n".'<input class="'.$field->field_class.' '.$tooltip_class.'" '.$instructions.' type="checkbox" name="'.ccf_utils::decodeOption($field->field_slug, 1, 1).'" value="'.ccf_utils::decodeOption($field->field_value, 1, 1).'" '.$input_id.''.$code_type.'> '."\n".'<label class="checkbox" for="'.ccf_utils::decodeOption($field->field_slug, 1, 1).'">' . $req .ccf_utils::decodeOption($field->field_label, 1, 1).'</label>'."\n".'</div>' . "\n";
267
- } elseif ($field->field_type == 'Textarea') {
268
- $out .= '<div>'."\n".'<label for="'.ccf_utils::decodeOption($field->field_slug, 1, 1).'">'. $req .ccf_utils::decodeOption($field->field_label, 1, 1).'</label>'."\n".'<textarea class="'.$field->field_class.' '.$tooltip_class.'" '.$instructions.' '.$input_id.' rows="5" cols="40" name="'.ccf_utils::decodeOption($field->field_slug, 1, 1).'">'.$field_value.'</textarea>'."\n".'</div>' . "\n";
269
- } elseif ($field->field_type == 'Dropdown') {
270
- $field_options = '';
271
- $options = parent::getAttachedFieldOptionsArray($field->id);
272
- foreach ($options as $option_id) {
273
- $option = parent::selectFieldOption($option_id);
274
- $option_sel = ($field->field_value == $option->option_slug) ? ' selected="selected"' : '';
275
- $option_value = (!empty($option->option_value)) ? ' value="' . $option->option_value . '"' : '';
276
- // Weird way of marking a state dead. TODO: Find another way.
277
- $option_value = ($option->option_dead == 1) ? ' value="' . CCF_DEAD_STATE_VALUE . '"' : $option_value;
278
- $field_options .= '<option'.$option_sel.''.$option_value.'>' . $option->option_label . '</option>' . "\n";
279
- }
280
- if (!empty($options)) {
281
- if (!$is_widget_form) $out .= '<div>'."\n".'<label class="select" for="'.ccf_utils::decodeOption($field->field_slug, 1, 1).'">'. $req .ccf_utils::decodeOption($field->field_label, 1, 1).'</label>'."\n".'<select '.$instructions.' '.$input_id.' name="'.ccf_utils::decodeOption($field->field_slug, 1, 1).'" class="'.$field->field_class.' '.$tooltip_class.'">'."\n".$field_options.'</select>'."\n".'</div>' . "\n";
282
- else $out .= '<div>'."\n".'<label for="'.ccf_utils::decodeOption($field->field_slug, 1, 1).'">'. $req .ccf_utils::decodeOption($field->field_label, 1, 1).'</label>'."\n".'<select class="'.$field->field_class.' '.$tooltip_class.'" '.$instructions.' '.$input_id.' name="'.ccf_utils::decodeOption($field->field_slug, 1, 1).'">'."\n".$field_options.'</select>'."\n".'</div>' . "\n";
283
- }
284
- } elseif ($field->field_type == 'Radio') {
285
- $field_options = '';
286
- $options = parent::getAttachedFieldOptionsArray($field->id);
287
- foreach ($options as $option_id) {
288
- $option = parent::selectFieldOption($option_id);
289
- $option_sel = ($field->field_value == $option->option_slug) ? ' checked="checked"' : '';
290
- $field_options .= '<div><input'.$option_sel.' class="'.$field->field_class.' '.$tooltip_class.'" type="radio" '.$instructions.' name="'.ccf_utils::decodeOption($field->field_slug, 1, 1).'" value="'.ccf_utils::decodeOption($option->option_value, 1, 1).'"'.$code_type.'> <label class="select" for="'.ccf_utils::decodeOption($field->field_slug, 1, 1).'">' . ccf_utils::decodeOption($option->option_label, 1, 1) . '</label></div>' . "\n";
291
- }
292
- $field_label = (!empty($field->field_label)) ? '<label for="'.ccf_utils::decodeOption($field->field_slug, 1, 1).'">'. $req .ccf_utils::decodeOption($field->field_label, 1, 1).'</label>' : '';
293
- if (!empty($options)) $out .= '<div>'."\n".$field_label."\n".$field_options."\n".'</div>' . "\n";
294
- }
295
- }
296
- $submit_text = (!empty($form->submit_button_text)) ? ccf_utils::decodeOption($form->submit_button_text, 1, 0) : 'Submit';
297
- $out .= '<input name="form_page" value="'.$_SERVER['REQUEST_URI'].'" type="hidden"'.$code_type.'>'."\n".'<input type="hidden" name="fid" value="'.$form->id.'"'.$code_type.'>'."\n".$hiddens."\n".'<input type="submit" id="submit-' . $form->id . '-'.$form_key.'" class="submit" value="' . $submit_text . '" name="customcontactforms_submit"'.$code_type.'>';
298
- if (!empty($add_reset)) $out .= $add_reset;
299
- $out .= "\n" . '</form>';
300
- if ($admin_options['author_link'] == 1) $out .= "\n".'<a style="display:none;" href="http://www.taylorlovett.com" title="Rockville Web Developer, Wordpress Plugins">Wordpress plugin expert and Maryland Web Developer Taylor Lovett</a>';
301
-
302
- if ($form->form_style != 0) {
303
- $no_border = array('', '0', '0px', '0%', '0pt', '0em');
304
- $round_border = (!in_array($style->field_borderround, $no_border)) ? '-moz-border-radius:'.$style->field_borderround.'; -khtml-border-radius:'.$style->field_borderround.'; -webkit-border-radius:'.$style->field_borderround.'; ' : '';
305
- $round_border_none = '-moz-border-radius:0px; -khtml-border-radius:0px; -webkit-border-radius:0px; ';
306
- $form_styles .= '<style type="text/css">' . "\n";
307
- $form_styles .= '#' . $form_id . " { width: ".$style->form_width."; text-align:left; padding:".$style->form_padding."; margin:".$style->form_margin."; border:".$style->form_borderwidth." ".$style->form_borderstyle." #".parent::formatStyle($style->form_bordercolor)."; background-color:#".parent::formatStyle($style->form_backgroundcolor)."; font-family:".$style->form_fontfamily."; } \n";
308
- $form_styles .= '#' . $form_id . " div { margin-bottom:6px; background-color:inherit; }\n";
309
- $form_styles .= '#' . $form_id . " div div { margin:0; background-color:inherit; padding:0; }\n";
310
- $form_styles .= '#' . $form_id . " h4 { padding:0; background-color:inherit; margin:".$style->title_margin." ".$style->title_margin." ".$style->title_margin." 0; color:#".parent::formatStyle($style->title_fontcolor)."; font-size:".$style->title_fontsize."; } \n";
311
- $form_styles .= '#' . $form_id . " label { padding:0; background-color:inherit; margin:".$style->label_margin." ".$style->label_margin." ".$style->label_margin." 0; display:block; color:#".parent::formatStyle($style->label_fontcolor)."; width:".$style->label_width."; font-size:".$style->label_fontsize."; } \n";
312
- $form_styles .= '#' . $form_id . " div div input { margin-bottom:2px; line-height:normal; }\n";
313
- $form_styles .= '#' . $form_id . " input[type=checkbox] { margin:0; }\n";
314
- $form_styles .= '#' . $form_id . " label.checkbox, #" . $form_id . " label.radio, #" . $form_id . " label.select { display:inline; } \n";
315
- $form_styles .= '#' . $form_id . " input[type=text], #" . $form_id . " select { ".$round_border." color:#".parent::formatStyle($style->field_fontcolor)."; margin:0; width:".$style->input_width."; font-size:".$style->field_fontsize."; background-color:#".parent::formatStyle($style->field_backgroundcolor)."; border:1px ".$style->field_borderstyle." #".parent::formatStyle($style->field_bordercolor)."; } \n";
316
- $form_styles .= '#' . $form_id . " select { ".$round_border_none." width:".$style->dropdown_width."; }\n";
317
- $form_styles .= '#' . $form_id . " .submit { color:#".parent::formatStyle($style->submit_fontcolor)."; width:".$style->submit_width."; height:".$style->submit_height."; font-size:".$style->submit_fontsize."; } \n";
318
- $form_styles .= '#' . $form_id . " .reset-button { color:#".parent::formatStyle($style->submit_fontcolor)."; width:".$style->submit_width."; height:".$style->submit_height."; font-size:".$style->submit_fontsize."; } \n";
319
- $form_styles .= '#' . $form_id . " textarea { ".$round_border." color:#".parent::formatStyle($style->field_fontcolor)."; width:".$style->textarea_width."; margin:0; background-color:#".parent::formatStyle($style->textarea_backgroundcolor)."; font-family:".$style->form_fontfamily."; height:".$style->textarea_height."; font-size:".$style->field_fontsize."; border:1px ".$style->field_borderstyle." #".parent::formatStyle($style->field_bordercolor)."; } \n";
320
- $form_styles .= '.ccf-tooltip { background-color:#'.parent::formatStyle($style->tooltip_backgroundcolor).'; font-family:'.$style->form_fontfamily.'; font-color:#'.parent::formatStyle($style->tooltip_fontcolor).'; font-size:'.$style->tooltip_fontsize.'; }' . "\n";
321
- $form_styles .= '</style>' . "\n";
322
- }
323
-
324
- return $form_styles . $out;
325
- }
326
-
327
- function requiredFieldsArrayFromList($list) {
328
- if (empty($list)) return array();
329
- $list = str_replace(' ', '', $list);
330
- $array = explode(',', $list);
331
- foreach ($array as $k => $v) {
332
- if (empty($array[$k])) unset($array[$k]);
333
- }
334
- return $array;
335
- }
336
-
337
- function processForms() {
338
- if ($_POST['ccf_customhtml'] || $_POST['customcontactforms_submit']) {
339
- // BEGIN define common language vars
340
- $lang = array();
341
- $lang['field_blank'] = __('You left this field blank: ', 'custom-contact-forms');
342
- $lang['form_page'] = __('Form Displayed on Page: ', 'custom-contact-forms');
343
- $lang['sender_ip'] = __('Sender IP: ', 'custom-contact-forms');
344
- // END define common language vars
345
- } if ($_POST['ccf_customhtml']) {
346
- $admin_options = parent::getAdminOptions();
347
- $fixed_customhtml_fields = array('required_fields', 'success_message', 'thank_you_page', 'destination_email', 'ccf_customhtml');
348
- $req_fields = $this->requiredFieldsArrayFromList($_POST['required_fields']);
349
- $req_fields = array_map('trim', $req_fields);
350
- $body = '';
351
- foreach ($_POST as $key => $value) {
352
- if (!in_array($key, $fixed_customhtml_fields)) {
353
- if (in_array($key, $req_fields) && !empty($value)) {
354
- unset($req_fields[array_search($key, $req_fields)]);
355
- }
356
- $body .= ucwords(str_replace('_', ' ', htmlspecialchars($key))) . ': ' . htmlspecialchars($value) . "<br /><br />\n";
357
- $data_array[$key] = $value;
358
- }
359
- } foreach($req_fields as $err)
360
- $this->setFormError($err, $lang['field_blank'] . '"' . $err . '"');
361
- $errors = $this->getAllFormErrors();
362
- if (empty($errors)) {
363
- ccf_utils::load_module('export/custom-contact-forms-user-data.php');
364
- $data_object = new CustomContactFormsUserData(array('data_array' => $data_array, 'form_page' => $_SERVER['SERVER_NAME']. $_SERVER['REQUEST_URI'], 'form_id' => 0, 'data_time' => time()));
365
- parent::insertUserData($data_object);
366
- $body .= "<br />\n" . htmlspecialchars($lang['form_page']) . $_SERVER['SERVER_NAME']. $_SERVER['REQUEST_URI'] . "<br />\n" . $lang['sender_ip'] . $_SERVER['REMOTE_ADDR'] . "<br />\n";
367
- if ($admin_options['email_form_submissions'] == 1) {
368
- if (!class_exists('PHPMailer'))
369
- require_once(ABSPATH . "wp-includes/class-phpmailer.php");
370
- $mail = new PHPMailer();
371
- if ($admin_options['mail_function'] == 'smtp') {
372
- $mail->IsSMTP();
373
- $mail->Host = $admin_options['smtp_host'];
374
- if ($admin_options['smtp_authentication'] == 1) {
375
- $mail->SMTPAuth = true;
376
- $mail->Username = $admin_options['smtp_username'];
377
- $mail->Password = $admin_options['smtp_password'];
378
- $mail->Port = $admin_options['smtp_port'];
379
- } else
380
- $mail->SMTPAuth = false;
381
- }
382
- $mail->From = $admin_options['default_from_email'];
383
- $mail->FromName = 'Custom Contact Forms';
384
- $dest_email_array = $this->getDestinationEmailArray($_POST['destination_email']);
385
- if (empty($dest_email_array)) $mail->AddAddress($admin_options['default_to_email']);
386
- else {
387
- foreach ($dest_email_array as $em)
388
- $mail->AddAddress($em);
389
- }
390
- $mail->Subject = $admin_options['default_form_subject'];
391
- $mail->AltBody = "To view the message, please use an HTML compatible email viewer!";
392
- $mail->MsgHTML(stripslashes($body));
393
- $mail->Send();
394
- } if ($_POST['thank_you_page']) {
395
- ccf_utils::redirect($_POST['thank_you_page']);
396
- }
397
- $this->current_thank_you_message = (!empty($_POST['success_message'])) ? $_POST['success_message'] : $admin_options['form_success_message'];
398
- $this->current_form = 0;
399
- add_action('wp_footer', array(&$this, 'insertFormSuccessCode'), 1);
400
- }
401
- unset($_POST);
402
- } elseif ($_POST['customcontactforms_submit']) {
403
- ccf_utils::startSession();
404
- $this->error_return = $_POST['form_page'];
405
- $admin_options = parent::getAdminOptions();
406
- $fields = parent::getAttachedFieldsArray($_POST['fid']);
407
- $form = parent::selectForm($_POST['fid']);
408
- $checks = array();
409
- $reply = ($_POST['fixedEmail']) ? $_POST['fixedEmail'] : NULL;
410
- $fixed_subject = ($_POST['emailSubject']) ? $_POST['emailSubject'] : NULL;
411
- $cap_name = 'captcha_' . $_POST['fid'];
412
- foreach ($fields as $field_id) {
413
- $field = parent::selectField($field_id, '');
414
- if ($field->field_slug == 'ishuman') {
415
- if ($_POST['ishuman'] != 1) {
416
- if (empty($field->field_error))
417
- $this->setFormError('ishuman', __('Only humans can use this form.', 'custom-contact-forms'));
418
- else $this->setFormError('ishuman', $field->field_error);
419
- }
420
- } elseif ($field->field_slug == 'captcha') {
421
- if ($_POST['captcha'] != $_SESSION[$cap_name]) {
422
- if (empty($field->field_error))
423
- $this->setFormError('captcha', __('You copied the number from the captcha field incorrectly.', 'custom-contact-forms'));
424
- else $this->setFormError('captcha', $field->field_error);
425
- }
426
- } elseif ($field->field_slug == 'fixedEmail' && $field->field_required == 1 && !empty($_POST['fixedEmail'])) {
427
- if (!$this->validEmail($_POST['fixedEmail'])) {
428
- if (empty($field->field_error))
429
- $this->setFormError('fixedEmail', __('The email address you provided is not valid.', 'custom-contact-forms'));
430
- else $this->setFormError('fixedEmail', $field->field_error);
431
- }
432
- } elseif ($field->field_slug == 'fixedWebsite' && $field->field_required == 1 && !empty($_POST['fixedWebsite'])) {
433
- if (!$this->validWebsite($_POST['fixedWebsite'])) {
434
- if (empty($field->field_error))
435
- $this->setFormError('fixedWebsite', __('The website address you provided is not valid.', 'custom-contact-forms'));
436
- else $this->setFormError('fixedWebsite', $field->field_error);
437
- }
438
- } else {
439
- $field_error_label = (empty($field->field_label)) ? $field->field_slug : $field->field_label;
440
- if ($field->field_required == 1 && !empty($_POST[$field->field_slug])) {
441
- if ($field->field_type == 'Dropdown' || $field->field_type == 'Radio') {
442
- // TODO: find better way to check for a dead state
443
- if ($_POST[$field->field_slug] == CCF_DEAD_STATE_VALUE) {
444
- if (empty($field->field_error))
445
- $this->setFormError($field->field_slug, $lang['field_blank'] . '"'.$field_error_label.'"');
446
- else $this->setFormError($field->field_slug, $field->field_error);
447
- }
448
- }
449
- } elseif ($field->field_required == 1 && empty($_POST[$field->field_slug])) {
450
- if (empty($field->field_error))
451
- $this->setFormError($field->field_slug, $lang['field_blank'] . '"'.$field_error_label.'"');
452
- else $this->setFormError($field->field_slug, $field->field_error);
453
- }
454
- } if ($field->field_type == 'Checkbox')
455
- $checks[] = $field->field_slug;
456
- }
457
- $body = '';
458
- $data_array = array();
459
- foreach ($_POST as $key => $value) {
460
- $_SESSION['fields'][$key] = $value;
461
- $field = parent::selectField('', $key);
462
- if (!array_key_exists($key, $GLOBALS['ccf_fixed_fields']) || $key == 'fixedEmail' || $key == 'usaStates' || $key == 'fixedWebsite'|| $key == 'emailSubject' || $key == 'allCountries') {
463
- $mail_field_label = (empty($field->field_label)) ? $field->field_slug : $field->field_label;
464
- $body .= htmlspecialchars($mail_field_label) . ': ' . htmlspecialchars($value) . "<br />\n";
465
- $data_array[$key] = $value;
466
- } if (in_array($key, $checks)) {
467
- $checks_key = array_search($key, $checks);
468
- unset($checks[$checks_key]);
469
- }
470
- } foreach ($checks as $check_key) {
471
- $field = parent::selectField('', $check_key);
472
- $lang['not_checked'] = __('Not Checked', 'custom-contact-forms');
473
- $data_array[$check_key] = $lang['not_checked'];
474
- $body .= ucwords(str_replace('_', ' ', htmlspecialchars($field->field_label))) . ': ' . $lang['not_checked'] . "\n";
475
- }
476
- $errors = $this->getAllFormErrors();
477
- if (empty($errors)) {
478
- ccf_utils::load_module('export/custom-contact-forms-user-data.php');
479
- unset($_SESSION['captcha_' . $_POST['fid']]);
480
- unset($_SESSION['fields']);
481
- $data_object = new CustomContactFormsUserData(array('data_array' => $data_array, 'form_page' => $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI'], 'form_id' => $form->id, 'data_time' => time()));
482
- parent::insertUserData($data_object);
483
- if ($admin_options['email_form_submissions'] == '1') {
484
- $body .= "<br />\n" . htmlspecialchars($lang['form_page']) . $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI'] . "<br />\n" . $lang['sender_ip'] . $_SERVER['REMOTE_ADDR'] . "<br />\n";
485
- if (!class_exists('PHPMailer'))
486
- require_once(ABSPATH . "wp-includes/class-phpmailer.php");
487
- $mail = new PHPMailer(false);
488
- if ($admin_options['mail_function'] == 'smtp') {
489
- $mail->IsSMTP();
490
- $mail->Host = $admin_options['smtp_host'];
491
- if ($admin_options['smtp_authentication'] == 1) {
492
- $mail->SMTPAuth = true;
493
- $mail->Username = $admin_options['smtp_username'];
494
- $mail->Password = $admin_options['smtp_password'];
495
- $mail->Port = $admin_options['smtp_port'];
496
- } else
497
- $mail->SMTPAuth = false;
498
- }
499
- $dest_email_array = $this->getDestinationEmailArray($form->form_email);
500
- $from_name = (empty($admin_options['default_from_name'])) ? __('Custom Contact Forms', 'custom-contact-forms') : $admin_options['default_from_name'];
501
- if (!empty($form->form_email_name)) $from_name = $form->form_email_name;
502
- if (empty($dest_email_array)) $mail->AddAddress($admin_options['default_to_email']);
503
- else {
504
- foreach ($dest_email_array as $em)
505
- $mail->AddAddress($em);
506
- }
507
- if ($reply != NULL && $this->validEmail($reply))
508
- $mail->From = $reply;
509
- else
510
- $mail->From = $admin_options['default_from_email'];
511
- $mail->FromName = $from_name;
512
- $mail->Subject = (!empty($form->form_email_subject)) ? $form->form_email_subject : $admin_options['default_form_subject'];
513
- if ($fixed_subject != NULL) $mail->Subject = $fixed_subject;
514
- $mail->AltBody = __("To view the message, please use an HTML compatible email viewer.", 'custom-contact-forms');
515
- $mail->CharSet = 'utf-8';
516
- $mail->MsgHTML(stripslashes($body));
517
- $mail->Send();
518
- } if (!empty($form->form_thank_you_page)) {
519
- ccf_utils::redirect($form->form_thank_you_page);
520
- }
521
- $this->current_form = $form->id;
522
- add_action('wp_footer', array(&$this, 'insertFormSuccessCode'), 1);
523
- }
524
- unset($_POST);
525
- }
526
- }
527
-
528
- function getCaptchaCode($field_object, $form_id) {
529
- $admin_options = parent::getAdminOptions();
530
- $code_type = ($admin_options['code_type'] == 'XHTML') ? ' /' : '';
531
- if (empty($field_object->field_instructions)) {
532
- $instructions = '';
533
- $tooltip_class = '';
534
- } else {
535
- $instructions = 'title="'.$field_object->field_instructions.'"';
536
- $tooltip_class = 'ccf-tooltip-field';
537
- }
538
- $out = '<img width="96" height="24" alt="' . __('Captcha image for Custom Contact Forms plugin. You must type the numbers shown in the image', 'custom-contact-forms') . '" id="captcha-image" src="' . get_bloginfo('wpurl') . '/wp-content/plugins/custom-contact-forms/image.php?fid='.$form_id.'"'.$code_type.'>
539
- <div><label for="captcha'.$form_id.'">* '.$field_object->field_label.'</label> <input class="'.$field_object->field_class.' '.$tooltip_class.'" type="text" '.$instructions.' name="captcha" id="captcha'.$form_id.'" maxlength="20"'.$code_type.'></div>';
540
- return $out;
541
- }
542
-
543
- function userCanViewForm($form_object) {
544
- if (is_user_logged_in()) {
545
- global $current_user;
546
- $user_roles = $current_user->roles;
547
- $user_role = array_shift($user_roles);
548
- } else
549
- $user_role = 'Non-Registered User';
550
- $form_access_array = parent::getFormAccessArray($form_object->form_access);
551
- return parent::formHasRole($form_access_array, $user_role);
552
- }
553
-
554
- function getStatesCode($field_object, $form_id) {
555
- ccf_utils::load_module('extra_fields/states_field.php');
556
- $req = ($field_object->field_required == 1) ? '* ' : '';
557
- $states_field = new ccf_states_field($field_object->field_class, $form_id, $field_object->field_value, $field_object->field_instructions);
558
- return "\n".'<label class="select" for="'.ccf_utils::decodeOption($field_object->field_slug, 1, 1).'">'. $req .ccf_utils::decodeOption($field_object->field_label, 1, 1).'</label>'.$states_field->getCode();
559
- }
560
-
561
- function getDatePickerCode($field_object, $form_id, $xhtml_code) {
562
- ccf_utils::load_module('extra_fields/date_field.php');
563
- $req = ($field_object->field_required == 1) ? '* ' : '';
564
- $date_field = new ccf_date_field($field_object->field_class, $form_id, $field_object->field_value, $field_object->field_instructions, $xhtml_code);
565
- return "\n".'<label for="'.ccf_utils::decodeOption($field_object->field_slug, 1, 1).'">'. $req .ccf_utils::decodeOption($field_object->field_label, 1, 1).'</label>'.$date_field->getCode();
566
- }
567
-
568
- function getCountriesCode($field_object, $form_id) {
569
- ccf_utils::load_module('extra_fields/countries_field.php');
570
- $req = ($field_object->field_required == 1) ? '* ' : '';
571
- $countries_field = new ccf_countries_field($field_object->field_class, $form_id, $field_object->field_value, $field_object->field_instructions);
572
- return '<label class="select" for="'.ccf_utils::decodeOption($field_object->field_slug, 1, 1).'">'. $req .ccf_utils::decodeOption($field_object->field_label, 1, 1).'</label>' . "\n" . $countries_field->getCode();
573
- }
574
-
575
- function getDestinationEmailArray($str) {
576
- $str = str_replace(',', ';', $str);
577
- $email_array = explode(';', $str);
578
- $email_array2 = array();
579
- foreach ($email_array as $k => $v) {
580
- if (!empty($email_array[$k])) $email_array2[] = trim($v);
581
- }
582
- return $email_array2;
583
- }
584
- }
585
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
586
  ?>
1
+ <?php
2
+ /*
3
+ Custom Contact Forms Plugin
4
+ By Taylor Lovett - http://www.taylorlovett.com
5
+ Plugin URL: http://www.taylorlovett.com/wordpress-plugins
6
+ */
7
+ if (!class_exists('CustomContactFormsFront')) {
8
+ class CustomContactFormsFront extends CustomContactForms {
9
+ var $form_errors = array();
10
+ var $error_return;
11
+ var $form_uploads = array();
12
+ var $current_form;
13
+ var $current_thank_you_message;
14
+
15
+ function frontInit() {
16
+ ccf_utils::startSession();
17
+ //print_r($_SESSION);
18
+ $this->processForms();
19
+ }
20
+
21
+ function includeDependencies() {
22
+ $admin_options = parent::getAdminOptions();
23
+ $include_defaults = false;
24
+ $include_datepicker = false;
25
+ // faster algorithm? this is in O(m*n) n = # of forms and m = # of posts
26
+ if ($admin_options['form_page_inclusion_only'] == 1) {
27
+ global $posts;
28
+ $forms = parent::selectAllForms();
29
+ $active_forms = array();
30
+ foreach ($forms as $form) {
31
+ $form_pages = parent::unserializeFormPageIds($form);
32
+ foreach ($posts as $i => $p) {
33
+ if (in_array($p->ID, $form_pages)) {
34
+ $active_forms[] = $form;
35
+ break;
36
+ }
37
+ }
38
+ }
39
+
40
+ if (!empty($active_forms)) {
41
+ $include_defaults = true;
42
+ if ($admin_options['enable_jquery'] == 1) {
43
+ foreach ($active_forms as $form) {
44
+ $fields = parent::getAttachedFieldsArray($form->id);
45
+ foreach ($fields as $fid) {
46
+ $field = parent::selectField($fid);
47
+ if ($field->field_type == 'Date') {
48
+ $include_datepicker = true;
49
+ break;
50
+ }
51
+ }
52
+ }
53
+ }
54
+ }
55
+ } else {
56
+ $include_defaults = true;
57
+ $include_datepicker = true;
58
+ }
59
+
60
+ if ($include_defaults) {
61
+ if ($admin_options['enable_jquery'] == 1) {
62
+ if ($include_datepicker) {
63
+ add_action('wp_print_styles', array(&$this, 'insertDatePickerStyles'), 1);
64
+ add_action('wp_enqueue_scripts', array(&$this, 'insertDatePickerScripts'), 1);
65
+ }
66
+ add_action('wp_enqueue_scripts', array(&$this, 'insertFrontEndScripts'), 1);
67
+ }
68
+ add_action('wp_print_styles', array(&$this, 'insertFrontEndStyles'), 1);
69
+ }
70
+ }
71
+
72
+ function insertFrontEndStyles() {
73
+ wp_register_style('CCFStandardsCSS', plugins_url() . '/custom-contact-forms/css/custom-contact-forms-standards.css');
74
+ wp_register_style('CCFFormsCSS', plugins_url() . '/custom-contact-forms/css/custom-contact-forms.css');
75
+ wp_enqueue_style('CCFStandardsCSS');
76
+ wp_enqueue_style('CCFFormsCSS');
77
+ }
78
+
79
+ function insertFrontEndScripts() {
80
+ //wp_enqueue_script('jquery');
81
+ wp_enqueue_script('jquery-tools', plugins_url() . '/custom-contact-forms/js/jquery.tools.min.js');
82
+ wp_enqueue_script('ccf-main', plugins_url() . '/custom-contact-forms/js/custom-contact-forms.js', '1.0');
83
+ }
84
+
85
+ function insertDatePickerScripts() {
86
+ wp_enqueue_script('jquery-ui-datepicker', plugins_url() . '/custom-contact-forms/js/jquery.ui.datepicker.js', array('jquery-ui-core', 'jquery-ui-widget'));
87
+ wp_enqueue_script('ccf-datepicker', plugins_url() . '/custom-contact-forms/js/custom-contact-forms-datepicker.js', '1.2');
88
+ }
89
+
90
+ function insertDatePickerStyles() {
91
+ wp_register_style('ccf-jquery-ui', plugins_url() . '/custom-contact-forms/css/jquery-ui.css');
92
+ wp_enqueue_style('ccf-jquery-ui');
93
+ }
94
+
95
+ function setFormError($key, $message) {
96
+ $this->form_errors[$key] = $message;
97
+ }
98
+
99
+ function getFormError($key) {
100
+ return $this->form_errors[$key];
101
+ }
102
+
103
+ function getAllFormErrors() {
104
+ return $this->form_errors;
105
+ }
106
+
107
+ function shortCodeToForm($atts) {
108
+ extract(shortcode_atts(array(
109
+ 'form' => 0,
110
+ ), $atts));
111
+ $this_form = parent::selectForm($form);
112
+ if (empty($this_form)) return '';
113
+ $admin_options = parent::getAdminOptions();
114
+ if ($admin_options['enable_form_access_manager'] == 1 && !$this->userCanViewForm($this_form))
115
+ return $admin_options['default_form_bad_permissions'];
116
+
117
+ return $this->getFormCode($this_form);
118
+ }
119
+
120
+ function emptyFormErrors() {
121
+ $this->form_errors = array();
122
+ }
123
+
124
+ function contentFilter($content) {
125
+ // THIS NEEDS TO REPLACE THE SHORTCODE ONLY ONCE
126
+ $errors = $this->getAllFormErrors();
127
+ if (!empty($errors)) {
128
+ $admin_options = parent::getAdminOptions();
129
+ $out = '<div id="custom-contact-forms-errors"><p>'.$admin_options['default_form_error_header'].'</p><ul>' . "\n";
130
+ //$errors = $this->getAllFormErrors();
131
+ foreach ($errors as $error) {
132
+ $out .= '<li>'.$error.'</li>' . "\n";
133
+ }
134
+ $err_link = (!empty($this->error_return)) ? '<p><a href="'.$this->error_return.'" title="Go Back">&lt; ' . __('Go Back to Form.', 'custom-contact-forms') . '</a></p>' : '';
135
+ $this->emptyFormErrors();
136
+ return $out . '</ul>' . "\n" . $err_link . '</div>';
137
+ }
138
+ return $content;
139
+ }
140
+
141
+ function insertFormSuccessCode() {
142
+ $admin_options = parent::getAdminOptions();
143
+ if ($this->current_form !== 0) {
144
+ $form = parent::selectForm($this->current_form);
145
+ $success_message = (!empty($form->form_success_message)) ? $form->form_success_message : $admin_options['form_success_message'];
146
+ $success_title = (!empty($form->form_success_title)) ? $form->form_success_title : $admin_options['form_success_message_title'];
147
+ } else {
148
+ $success_title = $admin_options['form_success_message_title'];
149
+ $success_message = (empty($this->current_thank_you_message)) ? $admin_options['form_success_message'] : $this->current_thank_you_message;
150
+ } if ($form->form_style != 0) {
151
+ $style = parent::selectStyle($form->form_style);
152
+ ?>
153
+ <style type="text/css">
154
+ <!--
155
+ #ccf-form-success { z-index:10000; border-color:#<?php echo parent::formatStyle($style->success_popover_bordercolor); ?>; height:<?php $style->success_popover_height; ?>; }
156
+ #ccf-form-success div { background-color:#<?php echo parent::formatStyle($style->success_popover_bordercolor); ?>; }
157
+ #ccf-form-success div h5 { color:#<?php echo parent::formatStyle($style->success_popover_title_fontcolor); ?>; font-size:<?php echo $style->success_popover_title_fontsize; ?>; }
158
+ #ccf-form-success div a { color:#<?php echo parent::formatStyle($style->success_popover_title_fontcolor); ?>; }
159
+ #ccf-form-success p { font-size:<?php echo $style->success_popover_fontsize; ?>; color:#<?php echo parent::formatStyle($style->success_popover_fontcolor); ?>; }
160
+ -->
161
+ </style>
162
+ <?php
163
+ }
164
+ ?>
165
+ <div id="ccf-form-success">
166
+ <div>
167
+ <h5><?php echo $success_title; ?></h5>
168
+ <a href="javascript:void(0)" class="close">&times;</a>
169
+ </div>
170
+ <p><?php echo $success_message; ?></p>
171
+
172
+ </div>
173
+
174
+ <?php
175
+ }
176
+
177
+ function validEmail($email) {
178
+ if (!@preg_match("/^[^@]{1,64}@[^@]{1,255}$/", $email)) return false;
179
+ $email_array = explode("@", $email);
180
+ $local_array = explode(".", $email_array[0]);
181
+ for ($i = 0; $i < sizeof($local_array); $i++) {
182
+ if (!@preg_match("/^(([A-Za-z0-9!#$%&'*+\/=?^_`{|}~-][A-Za-z0-9!#$%&'*+\/=?^_`{|}~\.-]{0,63})|(\"[^(\\|\")]{0,62}\"))$/", $local_array[$i])) {
183
+ return false;
184
+ }
185
+ } if (!@preg_match("/^\[?[0-9\.]+\]?$/", $email_array[1])) {
186
+ $domain_array = explode(".", $email_array[1]);
187
+ if (sizeof($domain_array) < 2) return false;
188
+ for ($i = 0; $i < sizeof($domain_array); $i++) {
189
+ if (!@preg_match("/^(([A-Za-z0-9][A-Za-z0-9-]{0,61}[A-Za-z0-9])|([A-Za-z0-9]+))$/", $domain_array[$i])) {
190
+ return false;
191
+ }
192
+ }
193
+ }
194
+ return true;
195
+ }
196
+
197
+ function validWebsite($website) {
198
+ return preg_match('|^http(s)?://[a-z0-9-]+(.[a-z0-9-]+)*(:[0-9]+)?(/.*)?$|i', $website);
199
+ }
200
+
201
+ function getFormCode($form, $is_widget_form = false) {
202
+ if (empty($form)) return '';
203
+ $admin_options = parent::getAdminOptions();
204
+ $form_key = time();
205
+ $out = '';
206
+ $form_styles = '';
207
+ $style_class = (!$is_widget_form) ? ' customcontactform' : ' customcontactform-sidebar';
208
+ $form_id = 'form-' . $form->id . '-'.$form_key;
209
+ if ($form->form_style != 0) {
210
+ $style = parent::selectStyle($form->form_style, '');
211
+ $style_class = $style->style_slug;
212
+ }
213
+ $form_method = (empty($form->form_method)) ? 'post' : strtolower($form->form_method);
214
+ $form_title = ccf_utils::decodeOption($form->form_title, 1, 1);
215
+ $action = (!empty($form->form_action)) ? $form->form_action : $_SERVER['REQUEST_URI'];
216
+ $file_upload_form = '';
217
+ //$out .= '<form id="'.$form_id.'" method="'.$form_method.'" action="'.$action.'" class="'.$style_class.'">' . "\n";
218
+ $out .= ccf_utils::decodeOption($form->custom_code, 1, 1) . "\n";
219
+ if (!empty($form_title) && !$is_widget_form) $out .= '<h4 id="h4-' . $form->id . '-' . $form_key . '">' . $form_title . '</h4>' . "\n";
220
+ $fields = parent::getAttachedFieldsArray($form->id);
221
+ $hiddens = '';
222
+ $code_type = ($admin_options['code_type'] == 'XHTML') ? ' /' : '';
223
+ $add_reset = '';
224
+ foreach ($fields as $field_id) {
225
+ $field = parent::selectField($field_id, '');
226
+ $req = ($field->field_required == 1 or $field->field_slug == 'ishuman') ? '* ' : '';
227
+ $req_long = ($field->field_required == 1) ? ' ' . __('(required)', 'custom-contact-forms') : '';
228
+ $input_id = 'id="'.ccf_utils::decodeOption($field->field_slug, 1, 1).'-'.$form_key.'"';
229
+ $field_value = ccf_utils::decodeOption($field->field_value, 1, 1);
230
+ $instructions = (empty($field->field_instructions)) ? '' : 'title="' . $field->field_instructions . $req_long . '" ';
231
+ $tooltip_class = (empty($field->field_instructions)) ? '' : 'ccf-tooltip-field';
232
+ if ($admin_options['enable_widget_tooltips'] == 0 && $is_widget_form) $instructions = '';
233
+ if ($_SESSION['ccf_fields'][$field->field_slug]) {
234
+ if ($admin_options['remember_field_values'] == 1)
235
+ $field_value = $_SESSION['ccf_fields'][$field->field_slug];
236
+ } if ($field->field_slug == 'captcha') {
237
+ $out .= '<div>' . "\n" . $this->getCaptchaCode($field, $form->id) . "\n" . '</div>' . "\n";
238
+ } elseif ($field->field_slug == 'usaStates') {
239
+ $field->field_value = $field_value;
240
+ $out .= '<div>' . "\n" . $this->getStatesCode($field, $form->id) . "\n" . '</div>' . "\n";
241
+ } elseif ($field->field_slug == 'allCountries') {
242
+ $field->field_value = $field_value;
243
+ $out .= '<div>' . "\n" . $this->getCountriesCode($field, $form->id) . "\n" . '</div>' . "\n";
244
+ } elseif ($field->field_slug == 'resetButton') {
245
+ $add_reset = ' <input type="reset" '.$instructions.' class="reset-button '.$field->field_class.' '.$tooltip_class.'" value="' . $field->field_value . '" />';
246
+ } elseif ($field->field_type == 'Text') {
247
+ $maxlength = (empty($field->field_maxlength) or $field->field_maxlength <= 0) ? '' : ' maxlength="'.$field->field_maxlength.'"';
248
+ $out .= '<div>'."\n".'<label for="'.ccf_utils::decodeOption($field->field_slug, 1, 1).'">'. $req .ccf_utils::decodeOption($field->field_label, 1, 1).'</label>'."\n".'<input class="'.$field->field_class.' '.$tooltip_class.'" '.$instructions.' '.$input_id.' type="text" name="'.ccf_utils::decodeOption($field->field_slug, 1, 1).'" value="'.$field_value.'"'.$maxlength.''.$code_type.'>'."\n".'</div>' . "\n";
249
+ } elseif ($field->field_type == 'File') {
250
+ $file_upload_form = ' enctype="multipart/form-data" ';
251
+ $out .= '<div>'."\n".'<label for="'.ccf_utils::decodeOption($field->field_slug, 1, 1).'">'. $req .ccf_utils::decodeOption($field->field_label, 1, 1).'</label>'."\n".'<input class="'.$field->field_class.' '.$tooltip_class.'" '.$instructions.' '.$input_id.' type="file" name="'.ccf_utils::decodeOption($field->field_slug, 1, 1).'" value="'.$field_value.'"'.$code_type.'>'."\n".'</div>' . "\n";
252
+ } elseif ($field->field_type == 'Date') {
253
+ $maxlength = (empty($field->field_maxlength) or $field->field_maxlength <= 0) ? '' : ' maxlength="'.$field->field_maxlength.'"';
254
+ $out .= '<div>'."\n".'<label for="'.ccf_utils::decodeOption($field->field_slug, 1, 1).'">'. $req .ccf_utils::decodeOption($field->field_label, 1, 1).'</label>'."\n".'<input class="'.$field->field_class.' ccf-datepicker '.$tooltip_class.'" '.$instructions.' '.$input_id.' type="text" name="'.ccf_utils::decodeOption($field->field_slug, 1, 1).'" value="'.$field_value.'"'.$maxlength.''.$code_type.'>'."\n".'</div>' . "\n";
255
+ } elseif ($field->field_type == 'Hidden') {
256
+ $hiddens .= '<input type="hidden" name="'.ccf_utils::decodeOption($field->field_slug, 1, 1).'" value="'.$field_value.'" '.$input_id.''.$code_type.'>' . "\n";
257
+ } /*elseif ($field->field_type == 'Checkbox') {
258
+ $out .= '<div>'."\n".'<input class="'.$field->field_class.' '.$tooltip_class.'" '.$instructions.' type="checkbox" name="'.ccf_utils::decodeOption($field->field_slug, 1, 1).'" value="'.ccf_utils::decodeOption($field->field_value, 1, 1).'" '.$input_id.''.$code_type.'> '."\n".'<label class="checkbox" for="'.ccf_utils::decodeOption($field->field_slug, 1, 1).'">' . $req .ccf_utils::decodeOption($field->field_label, 1, 1).'</label>'."\n".'</div>' . "\n";
259
+ }*/ elseif ($field->field_type == 'Textarea') {
260
+ $out .= '<div>'."\n".'<label for="'.ccf_utils::decodeOption($field->field_slug, 1, 1).'">'. $req .ccf_utils::decodeOption($field->field_label, 1, 1).'</label>'."\n".'<textarea class="'.$field->field_class.' '.$tooltip_class.'" '.$instructions.' '.$input_id.' rows="5" cols="40" name="'.ccf_utils::decodeOption($field->field_slug, 1, 1).'">'.$field_value.'</textarea>'."\n".'</div>' . "\n";
261
+ } elseif ($field->field_type == 'Dropdown') {
262
+ $field_options = '';
263
+ $options = parent::getAttachedFieldOptionsArray($field->id);
264
+ foreach ($options as $option_id) {
265
+ $option = parent::selectFieldOption($option_id);
266
+ $option_sel = (($field_value == $option->option_label || $field_value == $option->option_value) && !empty($field_value)) ? ' selected="selected"' : '';
267
+ $option_value = (!empty($option->option_value)) ? ' value="' . $option->option_value . '"' : '';
268
+ // Weird way of marking a state dead. TODO: Find another way.
269
+ $option_value = ($option->option_dead == 1) ? ' value="' . CCF_DEAD_STATE_VALUE . '"' : $option_value;
270
+ $field_options .= '<option'.$option_sel.''.$option_value.'>' . $option->option_label . '</option>' . "\n";
271
+ }
272
+ if (!empty($options)) {
273
+ if (!$is_widget_form) $out .= '<div>'."\n".'<label class="select" for="'.ccf_utils::decodeOption($field->field_slug, 1, 1).'">'. $req .ccf_utils::decodeOption($field->field_label, 1, 1).'</label>'."\n".'<select '.$instructions.' '.$input_id.' name="'.ccf_utils::decodeOption($field->field_slug, 1, 1).'" class="'.$field->field_class.' '.$tooltip_class.'">'."\n".$field_options.'</select>'."\n".'</div>' . "\n";
274
+ else $out .= '<div>'."\n".'<label for="'.ccf_utils::decodeOption($field->field_slug, 1, 1).'">'. $req .ccf_utils::decodeOption($field->field_label, 1, 1).'</label>'."\n".'<select class="'.$field->field_class.' '.$tooltip_class.'" '.$instructions.' '.$input_id.' name="'.ccf_utils::decodeOption($field->field_slug, 1, 1).'">'."\n".$field_options.'</select>'."\n".'</div>' . "\n";
275
+ }
276
+ } elseif ($field->field_type == 'Radio') {
277
+ $field_options = '';
278
+ $options = parent::getAttachedFieldOptionsArray($field->id);
279
+ foreach ($options as $option_id) {
280
+ $option = parent::selectFieldOption($option_id);
281
+ $option_sel = (($field_value == $option->option_label || $field_value == $option->option_value) && !empty($field_value)) ? ' checked="checked"' : '';
282
+ $field_options .= '<div><input'.$option_sel.' class="'.$field->field_class.' '.$tooltip_class.'" type="radio" '.$instructions.' name="'.ccf_utils::decodeOption($field->field_slug, 1, 1).'" value="'.ccf_utils::decodeOption($option->option_value, 1, 1).'"'.$code_type.'> <label class="select" for="'.ccf_utils::decodeOption($field->field_slug, 1, 1).'">' . ccf_utils::decodeOption($option->option_label, 1, 1) . '</label></div>' . "\n";
283
+ }
284
+ $field_label = (!empty($field->field_label)) ? '<label for="'.ccf_utils::decodeOption($field->field_slug, 1, 1).'">'. $req .ccf_utils::decodeOption($field->field_label, 1, 1).'</label>' : '';
285
+ if (!empty($options)) $out .= '<div>'."\n".$field_label."\n".$field_options."\n".'</div>' . "\n";
286
+ } elseif ($field->field_type == 'Checkbox') {
287
+ $field_options = '';
288
+ $options = parent::getAttachedFieldOptionsArray($field->id);
289
+ $z = 0;
290
+ foreach ($options as $option_id) {
291
+ $option = parent::selectFieldOption($option_id);
292
+ $field_value_array = (!is_array($field_value)) ? array() : $field_value;
293
+ $option_sel = (in_array($option->option_label, $field_value_array) || in_array($option->option_value, $field_value_array)) ? ' checked="checked"' : '';
294
+ $check_value = (empty($option->option_value)) ? $option->option_label : ccf_utils::decodeOption($option->option_value, 1, 1);
295
+ $field_options .= '<div><input'.$option_sel.' class="'.$field->field_class.' '.$tooltip_class.'" type="checkbox" '.$instructions.' name="'.ccf_utils::decodeOption($field->field_slug, 1, 1).'['.$z.']" value="'.$check_value.'"'.$code_type.'> <label class="select" for="'.ccf_utils::decodeOption($field->field_slug, 1, 1).'">' . ccf_utils::decodeOption($option->option_label, 1, 1) . '</label></div>' . "\n";
296
+ $z++;
297
+ }
298
+ $field_label = (!empty($field->field_label)) ? '<label for="'.ccf_utils::decodeOption($field->field_slug, 1, 1).'">'. $req .ccf_utils::decodeOption($field->field_label, 1, 1).'</label>' : '';
299
+ if (!empty($options)) $out .= '<div>'."\n".$field_label."\n".$field_options."\n".'</div>' . "\n";
300
+ }
301
+ }
302
+ if (!empty($file_upload_form))
303
+ $out = '<input type="hidden" name="MAX_FILE_SIZE" value="'.($admin_options['max_file_upload_size'] * 1000 * 1000).'" />' . "\n" . $out;
304
+ $out = '<form id="'.$form_id.'" method="'.$form_method.'" action="'.$action.'" class="'.$style_class.'"'.$file_upload_form.'>' . "\n" . $out;
305
+ $submit_text = (!empty($form->submit_button_text)) ? ccf_utils::decodeOption($form->submit_button_text, 1, 0) : 'Submit';
306
+ $out .= '<input name="form_page" value="'.$_SERVER['REQUEST_URI'].'" type="hidden"'.$code_type.'>'."\n".'<input type="hidden" name="fid" value="'.$form->id.'"'.$code_type.'>'."\n".$hiddens."\n".'<input type="submit" id="submit-' . $form->id . '-'.$form_key.'" class="submit" value="' . $submit_text . '" name="customcontactforms_submit"'.$code_type.'>';
307
+ if (!empty($add_reset)) $out .= $add_reset;
308
+ $out .= "\n" . '</form>';
309
+ if ($admin_options['author_link'] == 1) $out .= "\n".'<a style="display:none;" href="http://www.taylorlovett.com" title="Rockville Web Developer, Wordpress Plugins">Wordpress plugin expert and Maryland Web Developer Taylor Lovett</a>';
310
+
311
+ if ($form->form_style != 0) {
312
+ $no_border = array('', '0', '0px', '0%', '0pt', '0em');
313
+ $round_border = (!in_array($style->field_borderround, $no_border)) ? '-moz-border-radius:'.$style->field_borderround.'; -khtml-border-radius:'.$style->field_borderround.'; -webkit-border-radius:'.$style->field_borderround.'; ' : '';
314
+ $round_border_none = '-moz-border-radius:0px; -khtml-border-radius:0px; -webkit-border-radius:0px; ';
315
+ $form_styles .= '<style type="text/css">' . "\n";
316
+ $form_styles .= '#' . $form_id . " { width: ".$style->form_width."; text-align:left; padding:".$style->form_padding."; margin:".$style->form_margin."; border:".$style->form_borderwidth." ".$style->form_borderstyle." #".parent::formatStyle($style->form_bordercolor)."; background-color:#".parent::formatStyle($style->form_backgroundcolor)."; font-family:".$style->form_fontfamily."; } \n";
317
+ $form_styles .= '#' . $form_id . " div { margin-bottom:6px; background-color:inherit; }\n";
318
+ $form_styles .= '#' . $form_id . " div div { margin:0; background-color:inherit; padding:0; }\n";
319
+ $form_styles .= '#' . $form_id . " h4 { padding:0; background-color:inherit; margin:".$style->title_margin." ".$style->title_margin." ".$style->title_margin." 0; color:#".parent::formatStyle($style->title_fontcolor)."; font-size:".$style->title_fontsize."; } \n";
320
+ $form_styles .= '#' . $form_id . " label { padding:0; background-color:inherit; margin:".$style->label_margin." ".$style->label_margin." ".$style->label_margin." 0; display:block; color:#".parent::formatStyle($style->label_fontcolor)."; width:".$style->label_width."; font-size:".$style->label_fontsize."; } \n";
321
+ $form_styles .= '#' . $form_id . " div div input { margin-bottom:2px; line-height:normal; }\n";
322
+ $form_styles .= '#' . $form_id . " input[type=checkbox] { margin:0; }\n";
323
+ $form_styles .= '#' . $form_id . " label.checkbox, #" . $form_id . " label.radio, #" . $form_id . " label.select { display:inline; } \n";
324
+ $form_styles .= '#' . $form_id . " input[type=text], #" . $form_id . " select { ".$round_border." color:#".parent::formatStyle($style->field_fontcolor)."; margin:0; width:".$style->input_width."; font-size:".$style->field_fontsize."; background-color:#".parent::formatStyle($style->field_backgroundcolor)."; border:1px ".$style->field_borderstyle." #".parent::formatStyle($style->field_bordercolor)."; } \n";
325
+ $form_styles .= '#' . $form_id . " select { ".$round_border_none." width:".$style->dropdown_width."; }\n";
326
+ $form_styles .= '#' . $form_id . " .submit { color:#".parent::formatStyle($style->submit_fontcolor)."; width:".$style->submit_width."; height:".$style->submit_height."; font-size:".$style->submit_fontsize."; } \n";
327
+ $form_styles .= '#' . $form_id . " .reset-button { color:#".parent::formatStyle($style->submit_fontcolor)."; width:".$style->submit_width."; height:".$style->submit_height."; font-size:".$style->submit_fontsize."; } \n";
328
+ $form_styles .= '#' . $form_id . " textarea { ".$round_border." color:#".parent::formatStyle($style->field_fontcolor)."; width:".$style->textarea_width."; margin:0; background-color:#".parent::formatStyle($style->textarea_backgroundcolor)."; font-family:".$style->form_fontfamily."; height:".$style->textarea_height."; font-size:".$style->field_fontsize."; border:1px ".$style->field_borderstyle." #".parent::formatStyle($style->field_bordercolor)."; } \n";
329
+ $form_styles .= '.ccf-tooltip { background-color:#'.parent::formatStyle($style->tooltip_backgroundcolor).'; font-family:'.$style->form_fontfamily.'; font-color:#'.parent::formatStyle($style->tooltip_fontcolor).'; font-size:'.$style->tooltip_fontsize.'; }' . "\n";
330
+ $form_styles .= '</style>' . "\n";
331
+ }
332
+ return $form_styles . $out;
333
+ }
334
+
335
+ function requiredFieldsArrayFromList($list) {
336
+ if (empty($list)) return array();
337
+ $list = str_replace(' ', '', $list);
338
+ $array = explode(',', $list);
339
+ foreach ($array as $k => $v) {
340
+ if (empty($array[$k])) unset($array[$k]);
341
+ }
342
+ return $array;
343
+ }
344
+
345
+ function processFileUpload($field) {
346
+ $errors = array();
347
+ if (empty($_FILES[$field->field_slug])) $errors[] = __('Any error occured while uploading ' . $field->field_slug . '.', 'custom-contact-forms');
348
+ $admin_options = parent::getAdminOptions();
349
+ if ($field->field_max_upload_size > 0 && $_FILES[$field->field_slug]['size'] > ($field->field_max_upload_size * 1000)) $errors[] = __(basename($_FILES[$field->field_slug]['name']) . ' is too large of a file. The maximum file size for that field is ' . $field->field_max_upload_size . ' KB.', 'custom-contact-forms');
350
+ $allowed_exts = unserialize($field->field_allowed_file_extensions);
351
+ $ext = preg_replace('/.*\.(.*)/i', '$1', basename($_FILES[$field->field_slug]['name']));
352
+ if (!in_array($ext, $allowed_exts)) $errors[] = __($ext . ' is an invalid file extension.', 'custom-contact-forms');
353
+ if (!empty($errors)) return $errors;
354
+
355
+ // create necessary directories
356
+ if (!is_dir(ABSPATH."wp-content/plugins/custom-contact-forms/uploads/".date("Y")))
357
+ mkdir(ABSPATH."wp-content/plugins/custom-contact-forms/uploads/".date("Y"));
358
+ if (!is_dir(ABSPATH . "wp-content/plugins/custom-contact-forms/uploads/".date("Y")."/".date("m")))
359
+ mkdir(ABSPATH . "wp-content/plugins/custom-contact-forms/uploads/".date("Y")."/".date("m"));
360
+
361
+ // check if file already exists
362
+ $file_name = preg_replace('/(.*)\..*/i', '$1', basename($_FILES[$field->field_slug]['name']));
363
+ $file_name_addon = ".";
364
+ $i = 1;
365
+ while (file_exists( ABSPATH . "wp-content/plugins/custom-contact-forms/uploads/".date("Y")."/".date("m")."/" . $file_name . $file_name_addon . $ext)) {
366
+ $file_name_addon = ' ('.$i.').';
367
+ $i++;
368
+ }
369
+ $target_path = ABSPATH . "wp-content/plugins/custom-contact-forms/uploads/".date("Y")."/".date("m")."/" . $file_name . $file_name_addon . $ext;
370
+ $this->form_uploads[$field->field_slug] = ABSPATH . "wp-content/plugins/custom-contact-forms/uploads/".date("Y")."/".date("m")."/" . $file_name . $file_name_addon . $ext;
371
+ if(!move_uploaded_file($_FILES[$field->field_slug]['tmp_name'], $target_path)) {
372
+ // Error!
373
+ $errors[] = __('Any error occured while uploading ' . $field->field_slug . '.', 'custom-contact-forms');
374
+ }
375
+ return $errors;
376
+ }
377
+
378
+ function processForms() {
379
+ if ($_POST['ccf_customhtml'] || $_POST['customcontactforms_submit']) {
380
+ // BEGIN define common language vars
381
+ $lang = array();
382
+ $lang['field_blank'] = __('You left this field blank: ', 'custom-contact-forms');
383
+ $lang['form_page'] = __('Form Displayed on Page: ', 'custom-contact-forms');
384
+ $lang['sender_ip'] = __('Sender IP: ', 'custom-contact-forms');
385
+ // END define common language vars
386
+ } if ($_POST['ccf_customhtml']) {
387
+ $admin_options = parent::getAdminOptions();
388
+ $fixed_customhtml_fields = array('required_fields', 'success_message', 'thank_you_page', 'destination_email', 'ccf_customhtml');
389
+ $req_fields = $this->requiredFieldsArrayFromList($_POST['required_fields']);
390
+ $req_fields = array_map('trim', $req_fields);
391
+ $body = '';
392
+ foreach ($_POST as $key => $value) {
393
+ if (!in_array($key, $fixed_customhtml_fields)) {
394
+ if (in_array($key, $req_fields) && !empty($value)) {
395
+ unset($req_fields[array_search($key, $req_fields)]);
396
+ }
397
+ $body .= ucwords(str_replace('_', ' ', htmlspecialchars($key))) . ': ' . htmlspecialchars($value) . "<br /><br />\n";
398
+ $data_array[$key] = $value;
399
+ }
400
+ } foreach($req_fields as $err)
401
+ $this->setFormError($err, $lang['field_blank'] . '"' . $err . '"');
402
+ $errors = $this->getAllFormErrors();
403
+ if (empty($errors)) {
404
+ ccf_utils::load_module('export/custom-contact-forms-user-data.php');
405
+ $data_object = new CustomContactFormsUserData(array('data_array' => $data_array, 'form_page' => $_SERVER['SERVER_NAME']. $_SERVER['REQUEST_URI'], 'form_id' => 0, 'data_time' => time()));
406
+ parent::insertUserData($data_object);
407
+ $body .= "<br />\n" . htmlspecialchars($lang['form_page']) . $_SERVER['SERVER_NAME']. $_SERVER['REQUEST_URI'] . "<br />\n" . $lang['sender_ip'] . $_SERVER['REMOTE_ADDR'] . "<br />\n";
408
+ if ($admin_options['email_form_submissions'] == 1) {
409
+ if (!class_exists('PHPMailer'))
410
+ require_once(ABSPATH . "wp-includes/class-phpmailer.php");
411
+ $mail = new PHPMailer();
412
+ if ($admin_options['mail_function'] == 'smtp') {
413
+ $mail->IsSMTP();
414
+ $mail->Host = $admin_options['smtp_host'];
415
+ if ($admin_options['smtp_authentication'] == 1) {
416
+ $mail->SMTPAuth = true;
417
+ $mail->Username = $admin_options['smtp_username'];
418
+ $mail->Password = $admin_options['smtp_password'];
419
+ $mail->Port = $admin_options['smtp_port'];
420
+ } else
421
+ $mail->SMTPAuth = false;
422
+ }
423
+ $mail->From = $admin_options['default_from_email'];
424
+ $mail->FromName = 'Custom Contact Forms';
425
+ $dest_email_array = $this->getDestinationEmailArray($_POST['destination_email']);
426
+ if (empty($dest_email_array)) $mail->AddAddress($admin_options['default_to_email']);
427
+ else {
428
+ foreach ($dest_email_array as $em)
429
+ $mail->AddAddress($em);
430
+ }
431
+ $mail->Subject = $admin_options['default_form_subject'];
432
+ $mail->AltBody = "To view the message, please use an HTML compatible email viewer!";
433
+ $mail->MsgHTML(stripslashes($body));
434
+ $mail->Send();
435
+ } if ($_POST['thank_you_page']) {
436
+ ccf_utils::redirect($_POST['thank_you_page']);
437
+ }
438
+ $this->current_thank_you_message = (!empty($_POST['success_message'])) ? $_POST['success_message'] : $admin_options['form_success_message'];
439
+ $this->current_form = 0;
440
+ add_action('wp_footer', array(&$this, 'insertFormSuccessCode'), 1);
441
+ }
442
+ unset($_POST);
443
+ } elseif ($_POST['customcontactforms_submit']) {
444
+ ccf_utils::startSession();
445
+ $this->error_return = $_POST['form_page'];
446
+ $admin_options = parent::getAdminOptions();
447
+ $fields = parent::getAttachedFieldsArray($_POST['fid']);
448
+ $post_time = time();
449
+ $form = parent::selectForm($_POST['fid']);
450
+ $checks = array();
451
+ $reply = ($_POST['fixedEmail']) ? $_POST['fixedEmail'] : NULL;
452
+ $fixed_subject = ($_POST['emailSubject']) ? $_POST['emailSubject'] : NULL;
453
+ $cap_name = 'ccf_captcha_' . $_POST['fid'];
454
+ foreach ($fields as $field_id) {
455
+ $field = parent::selectField($field_id, '');
456
+ if ($field->field_slug == 'ishuman') {
457
+ if ($_POST['ishuman'] != 1) {
458
+ if (empty($field->field_error))
459
+ $this->setFormError('ishuman', __('Only humans can use this form.', 'custom-contact-forms'));
460
+ else $this->setFormError('ishuman', $field->field_error);
461
+ }
462
+ } elseif ($field->field_slug == 'captcha') {
463
+ if ($_POST['captcha'] != $_SESSION[$cap_name]) {
464
+ if (empty($field->field_error))
465
+ $this->setFormError('captcha', __('You copied the number from the captcha field incorrectly.', 'custom-contact-forms'));
466
+ else $this->setFormError('captcha', $field->field_error);
467
+ }
468
+ } elseif ($field->field_slug == 'fixedEmail' && $field->field_required == 1 && !empty($_POST['fixedEmail'])) {
469
+ if (!$this->validEmail($_POST['fixedEmail'])) {
470
+ if (empty($field->field_error))
471
+ $this->setFormError('fixedEmail', __('The email address you provided is not valid.', 'custom-contact-forms'));
472
+ else $this->setFormError('fixedEmail', $field->field_error);
473
+ }
474
+ } elseif ($field->field_slug == 'fixedWebsite' && $field->field_required == 1 && !empty($_POST['fixedWebsite'])) {
475
+ if (!$this->validWebsite($_POST['fixedWebsite'])) {
476
+ if (empty($field->field_error))
477
+ $this->setFormError('fixedWebsite', __('The website address you provided is not valid.', 'custom-contact-forms'));
478
+ else $this->setFormError('fixedWebsite', $field->field_error);
479
+ }
480
+ } else {
481
+ $field_error_label = (empty($field->field_label)) ? $field->field_slug : $field->field_label;
482
+ if ($field->field_required == 1 && $field->field_type != 'File' && !empty($_POST[$field->field_slug])) {
483
+ if ($field->field_type == 'Dropdown' || $field->field_type == 'Radio' || $field->field_type == 'Checkbox') {
484
+ // TODO: find better way to check for a dead state
485
+ if ($_POST[$field->field_slug] == CCF_DEAD_STATE_VALUE) {
486
+ if (empty($field->field_error))
487
+ $this->setFormError($field->field_slug, $lang['field_blank'] . '"'.$field_error_label.'"');
488
+ else $this->setFormError($field->field_slug, $field->field_error);
489
+ }
490
+ }
491
+ } elseif ($field->field_required == 1 && $field->field_type != 'File' && empty($_POST[$field->field_slug])) {
492
+ if (empty($field->field_error))
493
+ $this->setFormError($field->field_slug, $lang['field_blank'] . '"'.$field_error_label.'"');
494
+ else $this->setFormError($field->field_slug, $field->field_error);
495
+ } else {
496
+ // file field required and not found
497
+ if ($field->field_required == 1 && $field->field_type == 'File' && empty($_FILES[$field->field_slug]['name'])) {
498
+ if (empty($field->field_error))
499
+ $this->setFormError($field->field_slug, $lang['field_blank'] . '"'.$field_error_label.'"');
500
+ else $this->setFormError($field->field_slug, $field->field_error);
501
+ }
502
+ //file field found
503
+ elseif ($field->field_type == 'File' && !empty($_FILES[$field->field_slug]['name'])) {
504
+ $upload_result = $this->processFileUpload($field, $post_time);
505
+ foreach ($upload_result as $err) {
506
+ $this->setFormError($field->field_slug, $err);
507
+ }
508
+ }
509
+ }
510
+ } if ($field->field_type == 'Checkbox')
511
+ $checks[] = $field->field_slug;
512
+ }
513
+ $body = '';
514
+ $data_array = array();
515
+ foreach ($_POST as $key => $value) {
516
+ $_SESSION['ccf_fields'][$key] = $value;
517
+ //if (is_array($value)) $value = implode(', ', $value);
518
+ $val2 = (is_array($value)) ? implode(', ', $value) : $value;
519
+ $field = parent::selectField('', $key);
520
+ if (!array_key_exists($key, $GLOBALS['ccf_fixed_fields']) || $key == 'fixedEmail' || $key == 'usaStates' || $key == 'fixedWebsite'|| $key == 'emailSubject' || $key == 'allCountries') {
521
+ $mail_field_label = (empty($field->field_label)) ? $field->field_slug : $field->field_label;
522
+ $body .= htmlspecialchars($mail_field_label) . ' - ' . htmlspecialchars($val2) . "<br />\n";
523
+ $data_array[$key] = $value;
524
+
525
+ } if (in_array($key, $checks)) {
526
+ $checks_key = array_search($key, $checks);
527
+ unset($checks[$checks_key]);
528
+ }
529
+ } foreach ($this->form_uploads as $name => $upload) {
530
+ $file_url = preg_replace('/^.*(\/custom-contact-forms\/.*)$/i', plugins_url() . '$1', $upload);
531
+ if (!array_key_exists($name, $GLOBALS['ccf_fixed_fields'])) $data_array[$name] = '[file link="'.$file_url.'"]'.basename($upload).'[/file]';
532
+ } foreach ($checks as $check_key) {
533
+ $field = parent::selectField('', $check_key);
534
+ $lang['not_checked'] = __('Not Checked', 'custom-contact-forms');
535
+ $data_array[$check_key] = $lang['not_checked'];
536
+ $body .= ucwords(str_replace('_', ' ', htmlspecialchars($field->field_label))) . ' - ' . $lang['not_checked'] . "<br />\n";
537
+ }
538
+ $errors = $this->getAllFormErrors();
539
+ if (empty($errors)) {
540
+ ccf_utils::load_module('export/custom-contact-forms-user-data.php');
541
+ unset($_SESSION['ccf_captcha_' . $_POST['fid']]);
542
+ unset($_SESSION['ccf_fields']);
543
+ $data_object = new CustomContactFormsUserData(array('data_array' => $data_array, 'form_page' => $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI'], 'form_id' => $form->id, 'data_time' => $post_time));
544
+ parent::insertUserData($data_object);
545
+ if ($admin_options['email_form_submissions'] == '1') {
546
+ $body .= "<br />\n" . htmlspecialchars($lang['form_page']) . $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI'] . "<br />\n" . $lang['sender_ip'] . $_SERVER['REMOTE_ADDR'] . "<br />\n";
547
+ if (!class_exists('PHPMailer'))
548
+ require_once(ABSPATH . "wp-includes/class-phpmailer.php");
549
+ $mail = new PHPMailer(false);
550
+ if ($admin_options['mail_function'] == 'smtp') {
551
+ $mail->IsSMTP();
552
+ $mail->Host = $admin_options['smtp_host'];
553
+ if ($admin_options['smtp_authentication'] == 1) {
554
+ $mail->SMTPAuth = true;
555
+ $mail->Username = $admin_options['smtp_username'];
556
+ $mail->Password = $admin_options['smtp_password'];
557
+ $mail->Port = $admin_options['smtp_port'];
558
+ } else
559
+ $mail->SMTPAuth = false;
560
+ }
561
+ $dest_email_array = $this->getDestinationEmailArray($form->form_email);
562
+ $from_name = (empty($admin_options['default_from_name'])) ? __('Custom Contact Forms', 'custom-contact-forms') : $admin_options['default_from_name'];
563
+ if (!empty($form->form_email_name)) $from_name = $form->form_email_name;
564
+ if (empty($dest_email_array)) $mail->AddAddress($admin_options['default_to_email']);
565
+ else {
566
+ foreach ($dest_email_array as $em)
567
+ $mail->AddAddress($em);
568
+ }
569
+ foreach ($this->form_uploads as $file_upload) {
570
+ $mail->AddAttachment($file_upload);
571
+ }
572
+ if ($reply != NULL && $this->validEmail($reply))
573
+ $mail->From = $reply;
574
+ else
575
+ $mail->From = $admin_options['default_from_email'];
576
+ $mail->FromName = $from_name;
577
+ $mail->Subject = (!empty($form->form_email_subject)) ? $form->form_email_subject : $admin_options['default_form_subject'];
578
+ if ($fixed_subject != NULL) $mail->Subject = $fixed_subject;
579
+ $mail->AltBody = __("To view the message, please use an HTML compatible email viewer.", 'custom-contact-forms');
580
+ $mail->CharSet = 'utf-8';
581
+ $mail->MsgHTML(stripslashes($body));
582
+ $mail->Send();
583
+ } if (!empty($form->form_thank_you_page)) {
584
+ ccf_utils::redirect($form->form_thank_you_page);
585
+ }
586
+ $this->current_form = $form->id;
587
+ add_action('wp_footer', array(&$this, 'insertFormSuccessCode'), 1);
588
+ }
589
+ unset($_POST);
590
+ $_POST = array();
591
+ }
592
+ }
593
+
594
+ function getCaptchaCode($field_object, $form_id) {
595
+ $admin_options = parent::getAdminOptions();
596
+ $code_type = ($admin_options['code_type'] == 'XHTML') ? ' /' : '';
597
+ if (empty($field_object->field_instructions)) {
598
+ $instructions = '';
599
+ $tooltip_class = '';
600
+ } else {
601
+ $instructions = 'title="'.$field_object->field_instructions.'"';
602
+ $tooltip_class = 'ccf-tooltip-field';
603
+ }
604
+ $out = '<img width="96" height="24" alt="' . __('Captcha image for Custom Contact Forms plugin. You must type the numbers shown in the image', 'custom-contact-forms') . '" id="captcha-image" src="' . get_bloginfo('wpurl') . '/wp-content/plugins/custom-contact-forms/image.php?fid='.$form_id.'"'.$code_type.'>
605
+ <div><label for="captcha'.$form_id.'">* '.$field_object->field_label.'</label> <input class="'.$field_object->field_class.' '.$tooltip_class.'" type="text" '.$instructions.' name="captcha" id="captcha'.$form_id.'" maxlength="20"'.$code_type.'></div>';
606
+ return $out;
607
+ }
608
+
609
+ function userCanViewForm($form_object) {
610
+ if (is_user_logged_in()) {
611
+ global $current_user;
612
+ $user_roles = $current_user->roles;
613
+ $user_role = array_shift($user_roles);
614
+ } else
615
+ $user_role = 'Non-Registered User';
616
+ $form_access_array = parent::getFormAccessArray($form_object->form_access);
617
+ return parent::formHasRole($form_access_array, $user_role);
618
+ }
619
+
620
+ function getStatesCode($field_object, $form_id) {
621
+ ccf_utils::load_module('extra_fields/states_field.php');
622
+ $req = ($field_object->field_required == 1) ? '* ' : '';
623
+ $states_field = new ccf_states_field($field_object->field_class, $form_id, $field_object->field_value, $field_object->field_instructions);
624
+ return "\n".'<label class="select" for="'.ccf_utils::decodeOption($field_object->field_slug, 1, 1).'">'. $req .ccf_utils::decodeOption($field_object->field_label, 1, 1).'</label>'.$states_field->getCode();
625
+ }
626
+
627
+ function getDatePickerCode($field_object, $form_id, $xhtml_code) {
628
+ ccf_utils::load_module('extra_fields/date_field.php');
629
+ $req = ($field_object->field_required == 1) ? '* ' : '';
630
+ $date_field = new ccf_date_field($field_object->field_class, $form_id, $field_object->field_value, $field_object->field_instructions, $xhtml_code);
631
+ return "\n".'<label for="'.ccf_utils::decodeOption($field_object->field_slug, 1, 1).'">'. $req .ccf_utils::decodeOption($field_object->field_label, 1, 1).'</label>'.$date_field->getCode();
632
+ }
633
+
634
+ function getCountriesCode($field_object, $form_id) {
635
+ ccf_utils::load_module('extra_fields/countries_field.php');
636
+ $req = ($field_object->field_required == 1) ? '* ' : '';
637
+ $countries_field = new ccf_countries_field($field_object->field_class, $form_id, $field_object->field_value, $field_object->field_instructions);
638
+ return '<label class="select" for="'.ccf_utils::decodeOption($field_object->field_slug, 1, 1).'">'. $req .ccf_utils::decodeOption($field_object->field_label, 1, 1).'</label>' . "\n" . $countries_field->getCode();
639
+ }
640
+
641
+ function getDestinationEmailArray($str) {
642
+ $str = str_replace(',', ';', $str);
643
+ $email_array = explode(';', $str);
644
+ $email_array2 = array();
645
+ foreach ($email_array as $k => $v) {
646
+ if (!empty($email_array[$k])) $email_array2[] = trim($v);
647
+ }
648
+ return $email_array2;
649
+ }
650
+ }
651
+ }
652
  ?>
custom-contact-forms-utils.php CHANGED
@@ -1,83 +1,84 @@
1
- <?php
2
- /*
3
- Custom Contact Forms Plugin
4
- By Taylor Lovett - http://www.taylorlovett.com
5
- Plugin URL: http://www.taylorlovett.com/wordpress-plugins
6
- */
7
- if (!class_exists('ccf_utils')) {
8
- class ccf_utils {
9
- function ccf_utils() {
10
- $this->defineConstants();
11
- }
12
-
13
- function redirect($location) {
14
- if (!empty($location)) {
15
- wp_redirect($location);
16
- exit();
17
- }
18
- }
19
-
20
- function load_module($path, $required = true) {
21
- if (empty($path)) return false;
22
- if ($required) require_once('modules/' . $path);
23
- else include_once('modules/' . $path);
24
- return true;
25
- }
26
-
27
- function encodeOption($option) {
28
- return htmlspecialchars(stripslashes($option), ENT_QUOTES);
29
- }
30
-
31
- function startSession() {
32
- if (!@session_id()) @session_start();
33
- }
34
-
35
- function getWPTablePrefix() {
36
- global $wpdb;
37
- return $wpdb->prefix;
38
- }
39
-
40
- function encodeOptionArray($option_array) {
41
- foreach ($option_array as $option) {
42
- if (is_array($option))
43
- $option = ccf_utils::encodeOptionArray($option);
44
- else
45
- $option = ccf_utils::encodeOption($option);
46
- }
47
- return $option_array;
48
- }
49
-
50
- function decodeOption($option, $strip_slashes = 1, $decode_html_chars = 1) {
51
- if ($strip_slashes == 1) $option = stripslashes($option);
52
- if ($decode_html_chars == 1) $option = html_entity_decode($option);
53
- return $option;
54
- }
55
-
56
- function defineConstants() {
57
- $prefix = ccf_utils::getWPTablePrefix();
58
- define('CCF_AJAX_URL', admin_url('admin-ajax.php'));
59
- define('CCF_FORMS_TABLE', $prefix . 'customcontactforms_forms');
60
- define('CCF_FIELDS_TABLE', $prefix . 'customcontactforms_fields');
61
- define('CCF_STYLES_TABLE', $prefix . 'customcontactforms_styles');
62
- define('CCF_USER_DATA_TABLE', $prefix . 'customcontactforms_user_data');
63
- define('CCF_FIELD_OPTIONS_TABLE', $prefix . 'customcontactforms_field_options');
64
- define('CCF_BASE_PATH', ABSPATH . 'wp-content/plugins/custom-contact-forms/');
65
- define('CCF_DEAD_STATE_VALUE', 'ccf-dead-state');
66
- $GLOBALS['ccf_tables_array'] = array(CCF_FORMS_TABLE, CCF_FIELDS_TABLE, CCF_STYLES_TABLE, CCF_USER_DATA_TABLE, CCF_FIELD_OPTIONS_TABLE);
67
- $GLOBALS['ccf_fixed_fields'] = array('customcontactforms_submit' => '',
68
- 'fid' => '',
69
- 'fixedEmail' => __("Use this field if you want the plugin to throw an error on fake emails.", 'custom-contact-forms'),
70
- 'fixedWebsite' => __("This field will throw an error on invalid website addresses.", 'custom-contact-forms'),
71
- 'emailSubject' => __("This field lets users specify the subject of the email sent to you on submission.", 'custom-contact-forms'),
72
- 'form_page' => '',
73
- 'captcha' => __("This field requires users to type numbers in an image preventing spam.", 'custom-contact-forms'),
74
- 'ishuman' => __("This field requires users to check a box to prove they aren't a spam bot.", 'custom-contact-forms'),
75
- 'usaStates' => __("This is a dropdown field showing each state in the US. If you want a state initially selected, enter it in 'Initial Value.'", 'custom-contact-forms'),
76
- 'datePicker' => __("This field displays a text box that when clicked pops up an interactive calender.'", 'custom-contact-forms'),
77
- 'allCountries' => __("This is a dropdown field showing countries. If you want a country initially selected, enter it in 'Initial Value.'", 'custom-contact-forms'),
78
- 'resetButton' => __("This field lets users reset all form fields to their initial values. This will be inserted next to the submit button.", 'custom-contact-forms')
79
- );
80
- }
81
- }
82
- }
 
83
  ?>
1
+ <?php
2
+ /*
3
+ Custom Contact Forms Plugin
4
+ By Taylor Lovett - http://www.taylorlovett.com
5
+ Plugin URL: http://www.taylorlovett.com/wordpress-plugins
6
+ */
7
+ if (!class_exists('ccf_utils')) {
8
+ class ccf_utils {
9
+ function ccf_utils() {
10
+ $this->defineConstants();
11
+ }
12
+
13
+ function redirect($location) {
14
+ if (!empty($location)) {
15
+ wp_redirect($location);
16
+ exit();
17
+ }
18
+ }
19
+
20
+ function load_module($path, $required = true) {
21
+ if (empty($path)) return false;
22
+ if ($required) require_once('modules/' . $path);
23
+ else include_once('modules/' . $path);
24
+ return true;
25
+ }
26
+
27
+ function encodeOption($option) {
28
+ return htmlspecialchars(stripslashes($option), ENT_QUOTES);
29
+ }
30
+
31
+ function startSession() {
32
+ if (!@session_id()) @session_start();
33
+ }
34
+
35
+ function getWPTablePrefix() {
36
+ global $wpdb;
37
+ return $wpdb->prefix;
38
+ }
39
+
40
+ function encodeOptionArray($option_array) {
41
+ foreach ($option_array as $option) {
42
+ if (is_array($option))
43
+ $option = ccf_utils::encodeOptionArray($option);
44
+ else
45
+ $option = ccf_utils::encodeOption($option);
46
+ }
47
+ return $option_array;
48
+ }
49
+
50
+ function decodeOption($option, $strip_slashes = 1, $decode_html_chars = 1) {
51
+ if ($strip_slashes == 1) $option = stripslashes($option);
52
+ if ($decode_html_chars == 1) $option = html_entity_decode($option);
53
+ return $option;
54
+ }
55
+
56
+ function defineConstants() {
57
+ $prefix = ccf_utils::getWPTablePrefix();
58
+ define('CCF_AJAX_URL', admin_url('admin-ajax.php'));
59
+ define('CCF_FORMS_TABLE', $prefix . 'customcontactforms_forms');
60
+ define('CCF_FIELDS_TABLE', $prefix . 'customcontactforms_fields');
61
+ define('CCF_STYLES_TABLE', $prefix . 'customcontactforms_styles');
62
+ define('CCF_USER_DATA_TABLE', $prefix . 'customcontactforms_user_data');
63
+ define('CCF_FIELD_OPTIONS_TABLE', $prefix . 'customcontactforms_field_options');
64
+ define('CCF_BASE_PATH', ABSPATH . 'wp-content/plugins/custom-contact-forms/');
65
+ define('CCF_DEAD_STATE_VALUE', 'ccf-dead-state');
66
+ $GLOBALS['ccf_tables_array'] = array(CCF_FORMS_TABLE, CCF_FIELDS_TABLE, CCF_STYLES_TABLE, CCF_USER_DATA_TABLE, CCF_FIELD_OPTIONS_TABLE);
67
+ $GLOBALS['ccf_fixed_fields'] = array('customcontactforms_submit' => '',
68
+ 'fid' => '',
69
+ 'fixedEmail' => __("Use this field if you want the plugin to throw an error on fake emails.", 'custom-contact-forms'),
70
+ 'fixedWebsite' => __("This field will throw an error on invalid website addresses.", 'custom-contact-forms'),
71
+ 'emailSubject' => __("This field lets users specify the subject of the email sent to you on submission.", 'custom-contact-forms'),
72
+ 'form_page' => '',
73
+ 'captcha' => __("This field requires users to type numbers in an image preventing spam.", 'custom-contact-forms'),
74
+ 'ishuman' => __("This field requires users to check a box to prove they aren't a spam bot.", 'custom-contact-forms'),
75
+ 'usaStates' => __("This is a dropdown field showing each state in the US. If you want a state initially selected, enter it in 'Initial Value.'", 'custom-contact-forms'),
76
+ 'datePicker' => __("This field displays a text box that when clicked pops up an interactive calender.'", 'custom-contact-forms'),
77
+ 'allCountries' => __("This is a dropdown field showing countries. If you want a country initially selected, enter it in 'Initial Value.'", 'custom-contact-forms'),
78
+ 'resetButton' => __("This field lets users reset all form fields to their initial values. This will be inserted next to the submit button.", 'custom-contact-forms'),
79
+ 'MAX_FILE_SIZE' => ''
80
+ );
81
+ }
82
+ }
83
+ }
84
  ?>
custom-contact-forms.php CHANGED
@@ -1,136 +1,136 @@
1
- <?php
2
- /*
3
- Plugin Name: Custom Contact Forms
4
- Plugin URI: http://taylorlovett.com/wordpress-plugins
5
- Description: Guaranteed to be 1000X more customizable and intuitive than Fast Secure Contact Forms or Contact Form 7. Customize every aspect of your forms without any knowledge of CSS: borders, padding, sizes, colors. Ton's of great features. Required fields, form submissions saved to database, captchas, tooltip popovers, unlimited fields/forms/form styles, import/export, use a custom thank you page or built-in popover with a custom success message set for each form.
6
- Version: 4.6.0.1
7
- Author: Taylor Lovett
8
- Author URI: http://www.taylorlovett.com
9
- */
10
-
11
- /*
12
- If you have time to translate this plugin in to your native language, please contact me at
13
- admin@taylorlovett.com and I will add you as a contributer with your name and website to the
14
- Wordpress plugin page.
15
-
16
- Languages: English
17
-
18
- Copyright (C) 2010-2011 Taylor Lovett, taylorlovett.com (admin@taylorlovett.com)
19
- This program is free software; you can redistribute it and/or modify
20
- it under the terms of the GNU General Public License as published by
21
- the Free Software Foundation; either version 3 of the License, or
22
- (at your option) any later version.
23
- This program is distributed in the hope that it will be useful,
24
- but WITHOUT ANY WARRANTY; without even the implied warranty of
25
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
26
- GNU General Public License for more details.
27
- You should have received a copy of the GNU General Public License
28
- along with this program. If not, see <http://www.gnu.org/licenses/>.
29
- */
30
- $old_error_settings = error_reporting();
31
- //error_reporting(E_ALL ^ E_NOTICE ^ E_DEPRECATED ^ E_USER_DEPRECATED);
32
- require_once('custom-contact-forms-utils.php');
33
- new ccf_utils();
34
- ccf_utils::load_module('db/custom-contact-forms-db.php');
35
- if (!class_exists('CustomContactForms')) {
36
- class CustomContactForms extends CustomContactFormsDB {
37
- var $adminOptionsName = 'customContactFormsAdminOptions';
38
-
39
- function activatePlugin() {
40
- $admin_options = $this->getAdminOptions();
41
- $admin_options['show_install_popover'] = 1;
42
- update_option($this->getAdminOptionsName(), $admin_options);
43
- ccf_utils::load_module('db/custom-contact-forms-activate-db.php');
44
- new CustomContactFormsActivateDB();
45
- }
46
-
47
- function getAdminOptionsName() {
48
- return $this->adminOptionsName;
49
- }
50
-
51
- function getAdminOptions() {
52
- $admin_email = get_option('admin_email');
53
- $customcontactAdminOptions = array('show_widget_home' => 1, 'show_widget_pages' => 1, 'show_widget_singles' => 1, 'show_widget_categories' => 1, 'show_widget_archives' => 1, 'default_to_email' => $admin_email, 'default_from_email' => $admin_email, 'default_from_name' => 'Custom Contact Forms', 'default_form_subject' => __('Someone Filled Out Your Contact Form!', 'custom-contact-forms'),
54
- 'remember_field_values' => 0, 'author_link' => 1, 'enable_widget_tooltips' => 1, 'mail_function' => 'default', 'form_success_message_title' => __('Successful Form Submission', 'custom-contact-forms'), 'form_success_message' => __('Thank you for filling out our web form. We will get back to you ASAP.', 'custom-contact-forms'), 'enable_jquery' => 1, 'code_type' => 'XHTML',
55
- 'show_install_popover' => 0, 'email_form_submissions' => 1, 'enable_dashboard_widget' => 1, 'admin_ajax' => 1, 'smtp_host' => '', 'smtp_encryption' => 'none', 'smtp_authentication' => 0, 'smtp_username' => '', 'smtp_password' => '', 'smtp_port' => '', 'default_form_error_header' => __('You filled out the form incorrectly.', 'custom-contact-forms'),
56
- 'default_form_bad_permissions' => __("You don't have the proper permissions to view this form.", 'custom-contact-forms'), 'enable_form_access_manager' => 0, 'dashboard_access' => 2, 'form_page_inclusion_only' => 0); // default general settings
57
- $customcontactOptions = get_option($this->getAdminOptionsName());
58
- if (!empty($customcontactOptions)) {
59
- foreach ($customcontactOptions as $key => $option)
60
- $customcontactAdminOptions[$key] = $option;
61
- }
62
- update_option($this->getAdminOptionsName, $customcontactAdminOptions);
63
- return $customcontactAdminOptions;
64
- }
65
- }
66
- }
67
- $custom_contact_forms = new CustomContactForms();
68
-
69
- /* general plugin stuff */
70
- if (isset($custom_contact_forms)) {
71
- register_activation_hook(__FILE__, array(&$custom_contact_forms, 'activatePlugin'));
72
- }
73
-
74
- if (!is_admin()) { /* is front */
75
- require_once('custom-contact-forms-front.php');
76
- $custom_contact_front = new CustomContactFormsFront();
77
- if (!function_exists('serveCustomContactForm')) {
78
- function serveCustomContactForm($fid) {
79
- global $custom_contact_front;
80
- echo $custom_contact_front->getFormCode($custom_contact_front->selectForm($fid));
81
- }
82
- }
83
- add_action('init', array(&$custom_contact_front, 'frontInit'), 1);
84
- add_action('template_redirect', array(&$custom_contact_front, 'includeDependencies'), 1);
85
- //add_action('wp_enqueue_scripts', array(&$custom_contact_front, 'insertFrontEndScripts'), 1);
86
- //add_action('wp_print_styles', array(&$custom_contact_front, 'insertFrontEndStyles'), 1);
87
- add_shortcode('customcontact', array(&$custom_contact_front, 'shortCodeToForm'));
88
-
89
- add_filter('the_content', array(&$custom_contact_front, 'contentFilter'));
90
- } else { /* is admin */
91
- $GLOBALS['ccf_current_page'] = ($_GET['page']) ? $_GET['page'] : '';
92
- require_once('custom-contact-forms-admin.php');
93
- $custom_contact_admin = new CustomContactFormsAdmin();
94
- if (!function_exists('CustomContactForms_ap')) {
95
- function CustomContactForms_ap() {
96
- global $custom_contact_admin;
97
- if (!isset($custom_contact_admin)) return;
98
- if (function_exists('add_menu_page')) {
99
- add_menu_page(__('Custom Contact Forms', 'custom-contact-forms'), __('Custom Contact Forms', 'custom-contact-forms'), 'manage_options', 'custom-contact-forms', array(&$custom_contact_admin, 'printAdminPage'));
100
- add_submenu_page('custom-contact-forms', __('Custom Contact Forms', 'custom-contact-forms'), __('Custom Contact Forms', 'custom-contact-forms'), 'manage_options', 'custom-contact-forms', array(&$custom_contact_admin, 'printAdminPage'));
101
- add_submenu_page('custom-contact-forms', __('Saved Form Submissions', 'custom-contact-forms'), __('Saved Form Submissions', 'custom-contact-forms'), 'manage_options', 'ccf-saved-form-submissions', array(&$custom_contact_admin, 'printFormSubmissionsPage'));
102
- add_submenu_page('custom-contact-forms', __('General Settings', 'custom-contact-forms'), __('General Settings', 'custom-contact-forms'), 'manage_options', 'ccf-settings', array(&$custom_contact_admin, 'printSettingsPage'));
103
- }
104
- }
105
- }
106
- $admin_options = $custom_contact_admin->getAdminOptions();
107
- if ($admin_options['enable_dashboard_widget'] == 1) {
108
- ccf_utils::load_module('widget/custom-contact-forms-dashboard.php');
109
- $ccf_dashboard = new CustomContactFormsDashboard();
110
- if ($ccf_dashboard->isDashboardPage()) {
111
- add_action('admin_print_styles', array(&$ccf_dashboard, 'insertDashboardStyles'), 1);
112
- add_action('admin_enqueue_scripts', array(&$ccf_dashboard, 'insertDashboardScripts'), 1);
113
- }
114
- add_action('wp_dashboard_setup', array(&$ccf_dashboard, 'install'));
115
- }
116
- add_action('init', array(&$custom_contact_admin, 'adminInit'), 1);
117
- if ($custom_contact_admin->isPluginAdminPage()) {
118
- add_action('admin_print_styles', array(&$custom_contact_admin, 'insertBackEndStyles'), 1);
119
- add_action('admin_enqueue_scripts', array(&$custom_contact_admin, 'insertAdminScripts'), 1);
120
- }
121
- add_action('wp_ajax_ccf-ajax', array(&$custom_contact_admin, 'handleAJAX'));
122
- add_action('wp_ajax_nopriv_ccf-ajax', array(&$custom_contact_admin, 'handleAJAX'));
123
- add_filter('plugin_action_links', array(&$custom_contact_admin,'appendToActionLinks'), 10, 2);
124
- add_action('admin_menu', 'CustomContactForms_ap');
125
- }
126
-
127
- /* widget stuff */
128
- ccf_utils::load_module('widget/custom-contact-forms-widget.php');
129
- if (!function_exists('CCFWidgetInit')) {
130
- function CCFWidgetInit() {
131
- register_widget('CustomContactFormsWidget');
132
- }
133
- }
134
- add_action('widgets_init', 'CCFWidgetInit');
135
- error_reporting($old_error_settings);
136
  ?>
1
+ <?php
2
+ /*
3
+ Plugin Name: Custom Contact Forms
4
+ Plugin URI: http://taylorlovett.com/wordpress-plugins
5
+ Description: Guaranteed to be 1000X more customizable and intuitive than Fast Secure Contact Forms or Contact Form 7. Customize every aspect of your forms without any knowledge of CSS: borders, padding, sizes, colors. Ton's of great features. Required fields, form submissions saved to database, captchas, tooltip popovers, unlimited fields/forms/form styles, import/export, use a custom thank you page or built-in popover with a custom success message set for each form.
6
+ Version: 4.7.0.0
7
+ Author: Taylor Lovett
8
+ Author URI: http://www.taylorlovett.com
9
+ */
10
+
11
+ /*
12
+ If you have time to translate this plugin in to your native language, please contact me at
13
+ admin@taylorlovett.com and I will add you as a contributer with your name and website to the
14
+ Wordpress plugin page.
15
+
16
+ Languages: English
17
+
18
+ Copyright (C) 2010-2011 Taylor Lovett, taylorlovett.com (admin@taylorlovett.com)
19
+ This program is free software; you can redistribute it and/or modify
20
+ it under the terms of the GNU General Public License as published by
21
+ the Free Software Foundation; either version 3 of the License, or
22
+ (at your option) any later version.
23
+ This program is distributed in the hope that it will be useful,
24
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
25
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
26
+ GNU General Public License for more details.
27
+ You should have received a copy of the GNU General Public License
28
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
29
+ */
30
+ $old_error_settings = error_reporting();
31
+ //error_reporting(E_ALL ^ E_NOTICE ^ E_DEPRECATED ^ E_USER_DEPRECATED);
32
+ require_once('custom-contact-forms-utils.php');
33
+ new ccf_utils();
34
+ ccf_utils::load_module('db/custom-contact-forms-db.php');
35
+ if (!class_exists('CustomContactForms')) {
36
+ class CustomContactForms extends CustomContactFormsDB {
37
+ var $adminOptionsName = 'customContactFormsAdminOptions';
38
+
39
+ function activatePlugin() {
40
+ $admin_options = $this->getAdminOptions();
41
+ $admin_options['show_install_popover'] = 1;
42
+ update_option($this->getAdminOptionsName(), $admin_options);
43
+ ccf_utils::load_module('db/custom-contact-forms-activate-db.php');
44
+ new CustomContactFormsActivateDB();
45
+ }
46
+
47
+ function getAdminOptionsName() {
48
+ return $this->adminOptionsName;
49
+ }
50
+
51
+ function getAdminOptions() {
52
+ $admin_email = get_option('admin_email');
53
+ $customcontactAdminOptions = array('show_widget_home' => 1, 'show_widget_pages' => 1, 'show_widget_singles' => 1, 'show_widget_categories' => 1, 'show_widget_archives' => 1, 'default_to_email' => $admin_email, 'default_from_email' => $admin_email, 'default_from_name' => 'Custom Contact Forms', 'default_form_subject' => __('Someone Filled Out Your Contact Form!', 'custom-contact-forms'),
54
+ 'remember_field_values' => 0, 'enable_widget_tooltips' => 1, 'mail_function' => 'default', 'form_success_message_title' => __('Successful Form Submission', 'custom-contact-forms'), 'form_success_message' => __('Thank you for filling out our web form. We will get back to you ASAP.', 'custom-contact-forms'), 'enable_jquery' => 1, 'code_type' => 'XHTML',
55
+ 'show_install_popover' => 0, 'email_form_submissions' => 1, 'enable_dashboard_widget' => 1, 'admin_ajax' => 1, 'smtp_host' => '', 'smtp_encryption' => 'none', 'smtp_authentication' => 0, 'smtp_username' => '', 'smtp_password' => '', 'smtp_port' => '', 'default_form_error_header' => __('You filled out the form incorrectly.', 'custom-contact-forms'),
56
+ 'default_form_bad_permissions' => __("You don't have the proper permissions to view this form.", 'custom-contact-forms'), 'enable_form_access_manager' => 0, 'dashboard_access' => 2, 'form_page_inclusion_only' => 0, 'max_file_upload_size' => 10); // default general settings
57
+ $customcontactOptions = get_option($this->getAdminOptionsName());
58
+ if (!empty($customcontactOptions)) {
59
+ foreach ($customcontactOptions as $key => $option)
60
+ $customcontactAdminOptions[$key] = $option;
61
+ }
62
+ update_option($this->getAdminOptionsName, $customcontactAdminOptions);
63
+ return $customcontactAdminOptions;
64
+ }
65
+ }
66
+ }
67
+ $custom_contact_forms = new CustomContactForms();
68
+
69
+ /* general plugin stuff */
70
+ if (isset($custom_contact_forms)) {
71
+ register_activation_hook(__FILE__, array(&$custom_contact_forms, 'activatePlugin'));
72
+ }
73
+
74
+ if (!is_admin()) { /* is front */
75
+ require_once('custom-contact-forms-front.php');
76
+ $custom_contact_front = new CustomContactFormsFront();
77
+ if (!function_exists('serveCustomContactForm')) {
78
+ function serveCustomContactForm($fid) {
79
+ global $custom_contact_front;
80
+ echo $custom_contact_front->getFormCode($custom_contact_front->selectForm($fid));
81
+ }
82
+ }
83
+ add_action('init', array(&$custom_contact_front, 'frontInit'), 1);
84
+ add_action('template_redirect', array(&$custom_contact_front, 'includeDependencies'), 1);
85
+ //add_action('wp_enqueue_scripts', array(&$custom_contact_front, 'insertFrontEndScripts'), 1);
86
+ //add_action('wp_print_styles', array(&$custom_contact_front, 'insertFrontEndStyles'), 1);
87
+ add_shortcode('customcontact', array(&$custom_contact_front, 'shortCodeToForm'));
88
+
89
+ add_filter('the_content', array(&$custom_contact_front, 'contentFilter'));
90
+ } else { /* is admin */
91
+ $GLOBALS['ccf_current_page'] = ($_GET['page']) ? $_GET['page'] : '';
92
+ require_once('custom-contact-forms-admin.php');
93
+ $custom_contact_admin = new CustomContactFormsAdmin();
94
+ if (!function_exists('CustomContactForms_ap')) {
95
+ function CustomContactForms_ap() {
96
+ global $custom_contact_admin;
97
+ if (!isset($custom_contact_admin)) return;
98
+ if (function_exists('add_menu_page')) {
99
+ add_menu_page(__('Custom Contact Forms', 'custom-contact-forms'), __('Custom Contact Forms', 'custom-contact-forms'), 'manage_options', 'custom-contact-forms', array(&$custom_contact_admin, 'printAdminPage'));
100
+ add_submenu_page('custom-contact-forms', __('Custom Contact Forms', 'custom-contact-forms'), __('Custom Contact Forms', 'custom-contact-forms'), 'manage_options', 'custom-contact-forms', array(&$custom_contact_admin, 'printAdminPage'));
101
+ add_submenu_page('custom-contact-forms', __('Saved Form Submissions', 'custom-contact-forms'), __('Saved Form Submissions', 'custom-contact-forms'), 'manage_options', 'ccf-saved-form-submissions', array(&$custom_contact_admin, 'printFormSubmissionsPage'));
102
+ add_submenu_page('custom-contact-forms', __('General Settings', 'custom-contact-forms'), __('General Settings', 'custom-contact-forms'), 'manage_options', 'ccf-settings', array(&$custom_contact_admin, 'printSettingsPage'));
103
+ }
104
+ }
105
+ }
106
+ $admin_options = $custom_contact_admin->getAdminOptions();
107
+ if ($admin_options['enable_dashboard_widget'] == 1) {
108
+ ccf_utils::load_module('widget/custom-contact-forms-dashboard.php');
109
+ $ccf_dashboard = new CustomContactFormsDashboard();
110
+ if ($ccf_dashboard->isDashboardPage()) {
111
+ add_action('admin_print_styles', array(&$ccf_dashboard, 'insertDashboardStyles'), 1);
112
+ add_action('admin_enqueue_scripts', array(&$ccf_dashboard, 'insertDashboardScripts'), 1);
113
+ }
114
+ add_action('wp_dashboard_setup', array(&$ccf_dashboard, 'install'));
115
+ }
116
+ add_action('init', array(&$custom_contact_admin, 'adminInit'), 1);
117
+ if ($custom_contact_admin->isPluginAdminPage()) {
118
+ add_action('admin_print_styles', array(&$custom_contact_admin, 'insertBackEndStyles'), 1);
119
+ add_action('admin_enqueue_scripts', array(&$custom_contact_admin, 'insertAdminScripts'), 1);
120
+ }
121
+ add_action('wp_ajax_ccf-ajax', array(&$custom_contact_admin, 'handleAJAX'));
122
+ add_action('wp_ajax_nopriv_ccf-ajax', array(&$custom_contact_admin, 'handleAJAX'));
123
+ add_filter('plugin_action_links', array(&$custom_contact_admin,'appendToActionLinks'), 10, 2);
124
+ add_action('admin_menu', 'CustomContactForms_ap');
125
+ }
126
+
127
+ /* widget stuff */
128
+ ccf_utils::load_module('widget/custom-contact-forms-widget.php');
129
+ if (!function_exists('CCFWidgetInit')) {
130
+ function CCFWidgetInit() {
131
+ register_widget('CustomContactFormsWidget');
132
+ }
133
+ }
134
+ add_action('widgets_init', 'CCFWidgetInit');
135
+ error_reporting($old_error_settings);
136
  ?>
download.php CHANGED
@@ -1,22 +1,22 @@
1
- <?php
2
- /*
3
- Custom Contact Forms Plugin
4
- By Taylor Lovett - http://www.taylorlovett.com
5
- Plugin URL: http://www.taylorlovett.com/wordpress-plugins
6
- */
7
- error_reporting(0);
8
- if (!empty($_GET['location']) && preg_match('/^export\/ccf[^\/^\.]+\.sql$/i', $_GET['location'])) {
9
- header('Content-Description: File Transfer');
10
- header('Content-Type: application/octet-stream');
11
- header('Content-Disposition: attachment; filename=' . basename($_GET['location']));
12
- header('Content-Transfer-Encoding: binary');
13
- header('Expires: 0');
14
- header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
15
- header('Pragma: public');
16
- header('Content-Length: ' . filesize($_GET['location']));
17
- ob_clean();
18
- flush();
19
- echo file_get_contents($_GET['location']);
20
- }
21
- exit();
22
  ?>
1
+ <?php
2
+ /*
3
+ Custom Contact Forms Plugin
4
+ By Taylor Lovett - http://www.taylorlovett.com
5
+ Plugin URL: http://www.taylorlovett.com/wordpress-plugins
6
+ */
7
+ error_reporting(0);
8
+ if (!empty($_GET['location']) && preg_match('/^export\/ccf[^\/^\.]+\.sql$/i', $_GET['location'])) {
9
+ header('Content-Description: File Transfer');
10
+ header('Content-Type: application/octet-stream');
11
+ header('Content-Disposition: attachment; filename=' . basename($_GET['location']));
12
+ header('Content-Transfer-Encoding: binary');
13
+ header('Expires: 0');
14
+ header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
15
+ header('Pragma: public');
16
+ header('Content-Length: ' . filesize($_GET['location']));
17
+ ob_clean();
18
+ flush();
19
+ echo file_get_contents($_GET['location']);
20
+ }
21
+ exit();
22
  ?>
image.php CHANGED
@@ -1,21 +1,21 @@
1
- <?php
2
- /*
3
- Custom Contact Forms Plugin
4
- By Taylor Lovett - http://www.taylorlovett.com
5
- Plugin URL: http://www.taylorlovett.com/wordpress-plugins
6
- */
7
- error_reporting(0);
8
- //header("Content-type: image/png");
9
- require_once('custom-contact-forms-utils.php');
10
- ccf_utils::load_module('images/custom-contact-forms-images.php');
11
- $image = new CustomContactFormsImages();
12
- $str = rand(10000, 99999);
13
- if (!session_id())
14
- session_start();
15
- $captcha_name = 'captcha_' . $_GET['fid'];
16
- if (!$_SESSION[$captcha_name])
17
- $_SESSION[$captcha_name] = $str;
18
- else
19
- $str = $_SESSION[$captcha_name];
20
- $image->createImageWithText($str);
21
  ?>
1
+ <?php
2
+ /*
3
+ Custom Contact Forms Plugin
4
+ By Taylor Lovett - http://www.taylorlovett.com
5
+ Plugin URL: http://www.taylorlovett.com/wordpress-plugins
6
+ */
7
+ error_reporting(0);
8
+ //header("Content-type: image/png");
9
+ require_once('custom-contact-forms-utils.php');
10
+ ccf_utils::load_module('images/custom-contact-forms-images.php');
11
+ $image = new CustomContactFormsImages();
12
+ $str = rand(10000, 99999);
13
+ if (!session_id())
14
+ session_start();
15
+ $captcha_name = 'ccf_captcha_' . $_GET['fid'];
16
+ if (!$_SESSION[$captcha_name])
17
+ $_SESSION[$captcha_name] = $str;
18
+ else
19
+ $str = $_SESSION[$captcha_name];
20
+ $image->createImageWithText($str);
21
  ?>
js/colorpicker.js CHANGED
@@ -1,484 +1,484 @@
1
- /**
2
- *
3
- * Color picker
4
- * Author: Stefan Petre www.eyecon.ro
5
- *
6
- * Dual licensed under the MIT and GPL licenses
7
- *
8
- */
9
- (function ($) {
10
- var ColorPicker = function () {
11
- var
12
- ids = {},
13
- inAction,
14
- charMin = 65,
15
- visible,
16
- tpl = '<div class="colorpicker"><div class="colorpicker_color"><div><div></div></div></div><div class="colorpicker_hue"><div></div></div><div class="colorpicker_new_color"></div><div class="colorpicker_current_color"></div><div class="colorpicker_hex"><input type="text" maxlength="6" size="6" /></div><div class="colorpicker_rgb_r colorpicker_field"><input type="text" maxlength="3" size="3" /><span></span></div><div class="colorpicker_rgb_g colorpicker_field"><input type="text" maxlength="3" size="3" /><span></span></div><div class="colorpicker_rgb_b colorpicker_field"><input type="text" maxlength="3" size="3" /><span></span></div><div class="colorpicker_hsb_h colorpicker_field"><input type="text" maxlength="3" size="3" /><span></span></div><div class="colorpicker_hsb_s colorpicker_field"><input type="text" maxlength="3" size="3" /><span></span></div><div class="colorpicker_hsb_b colorpicker_field"><input type="text" maxlength="3" size="3" /><span></span></div><div class="colorpicker_submit"></div></div>',
17
- defaults = {
18
- eventName: 'click',
19
- onShow: function () {},
20
- onBeforeShow: function(){},
21
- onHide: function () {},
22
- onChange: function () {},
23
- onSubmit: function () {},
24
- color: 'ff0000',
25
- livePreview: true,
26
- flat: false
27
- },
28
- fillRGBFields = function (hsb, cal) {
29
- var rgb = HSBToRGB(hsb);
30
- $(cal).data('colorpicker').fields
31
- .eq(1).val(rgb.r).end()
32
- .eq(2).val(rgb.g).end()
33
- .eq(3).val(rgb.b).end();
34
- },
35
- fillHSBFields = function (hsb, cal) {
36
- $(cal).data('colorpicker').fields
37
- .eq(4).val(hsb.h).end()
38
- .eq(5).val(hsb.s).end()
39
- .eq(6).val(hsb.b).end();
40
- },
41
- fillHexFields = function (hsb, cal) {
42
- $(cal).data('colorpicker').fields
43
- .eq(0).val(HSBToHex(hsb)).end();
44
- },
45
- setSelector = function (hsb, cal) {
46
- $(cal).data('colorpicker').selector.css('backgroundColor', '#' + HSBToHex({h: hsb.h, s: 100, b: 100}));
47
- $(cal).data('colorpicker').selectorIndic.css({
48
- left: parseInt(150 * hsb.s/100, 10),
49
- top: parseInt(150 * (100-hsb.b)/100, 10)
50
- });
51
- },
52
- setHue = function (hsb, cal) {
53
- $(cal).data('colorpicker').hue.css('top', parseInt(150 - 150 * hsb.h/360, 10));
54
- },
55
- setCurrentColor = function (hsb, cal) {
56
- $(cal).data('colorpicker').currentColor.css('backgroundColor', '#' + HSBToHex(hsb));
57
- },
58
- setNewColor = function (hsb, cal) {
59
- $(cal).data('colorpicker').newColor.css('backgroundColor', '#' + HSBToHex(hsb));
60
- },
61
- keyDown = function (ev) {
62
- var pressedKey = ev.charCode || ev.keyCode || -1;
63
- if ((pressedKey > charMin && pressedKey <= 90) || pressedKey == 32) {
64
- return false;
65
- }
66
- var cal = $(this).parent().parent();
67
- if (cal.data('colorpicker').livePreview === true) {
68
- change.apply(this);
69
- }
70
- },
71
- change = function (ev) {
72
- var cal = $(this).parent().parent(), col;
73
- if (this.parentNode.className.indexOf('_hex') > 0) {
74
- cal.data('colorpicker').color = col = HexToHSB(fixHex(this.value));
75
- } else if (this.parentNode.className.indexOf('_hsb') > 0) {
76
- cal.data('colorpicker').color = col = fixHSB({
77
- h: parseInt(cal.data('colorpicker').fields.eq(4).val(), 10),
78
- s: parseInt(cal.data('colorpicker').fields.eq(5).val(), 10),
79
- b: parseInt(cal.data('colorpicker').fields.eq(6).val(), 10)
80
- });
81
- } else {
82
- cal.data('colorpicker').color = col = RGBToHSB(fixRGB({
83
- r: parseInt(cal.data('colorpicker').fields.eq(1).val(), 10),
84
- g: parseInt(cal.data('colorpicker').fields.eq(2).val(), 10),
85
- b: parseInt(cal.data('colorpicker').fields.eq(3).val(), 10)
86
- }));
87
- }
88
- if (ev) {
89
- fillRGBFields(col, cal.get(0));
90
- fillHexFields(col, cal.get(0));
91
- fillHSBFields(col, cal.get(0));
92
- }
93
- setSelector(col, cal.get(0));
94
- setHue(col, cal.get(0));
95
- setNewColor(col, cal.get(0));
96
- cal.data('colorpicker').onChange.apply(cal, [col, HSBToHex(col), HSBToRGB(col)]);
97
- },
98
- blur = function (ev) {
99
- var cal = $(this).parent().parent();
100
- cal.data('colorpicker').fields.parent().removeClass('colorpicker_focus');
101
- },
102
- focus = function () {
103
- charMin = this.parentNode.className.indexOf('_hex') > 0 ? 70 : 65;
104
- $(this).parent().parent().data('colorpicker').fields.parent().removeClass('colorpicker_focus');
105
- $(this).parent().addClass('colorpicker_focus');
106
- },
107
- downIncrement = function (ev) {
108
- var field = $(this).parent().find('input').focus();
109
- var current = {
110
- el: $(this).parent().addClass('colorpicker_slider'),
111
- max: this.parentNode.className.indexOf('_hsb_h') > 0 ? 360 : (this.parentNode.className.indexOf('_hsb') > 0 ? 100 : 255),
112
- y: ev.pageY,
113
- field: field,
114
- val: parseInt(field.val(), 10),
115
- preview: $(this).parent().parent().data('colorpicker').livePreview
116
- };
117
- $(document).bind('mouseup', current, upIncrement);
118
- $(document).bind('mousemove', current, moveIncrement);
119
- },
120
- moveIncrement = function (ev) {
121
- ev.data.field.val(Math.max(0, Math.min(ev.data.max, parseInt(ev.data.val + ev.pageY - ev.data.y, 10))));
122
- if (ev.data.preview) {
123
- change.apply(ev.data.field.get(0), [true]);
124
- }
125
- return false;
126
- },
127
- upIncrement = function (ev) {
128
- change.apply(ev.data.field.get(0), [true]);
129
- ev.data.el.removeClass('colorpicker_slider').find('input').focus();
130
- $(document).unbind('mouseup', upIncrement);
131
- $(document).unbind('mousemove', moveIncrement);
132
- return false;
133
- },
134
- downHue = function (ev) {
135
- var current = {
136
- cal: $(this).parent(),
137
- y: $(this).offset().top
138
- };
139
- current.preview = current.cal.data('colorpicker').livePreview;
140
- $(document).bind('mouseup', current, upHue);
141
- $(document).bind('mousemove', current, moveHue);
142
- },
143
- moveHue = function (ev) {
144
- change.apply(
145
- ev.data.cal.data('colorpicker')
146
- .fields
147
- .eq(4)
148
- .val(parseInt(360*(150 - Math.max(0,Math.min(150,(ev.pageY - ev.data.y))))/150, 10))
149
- .get(0),
150
- [ev.data.preview]
151
- );
152
- return false;
153
- },
154
- upHue = function (ev) {
155
- fillRGBFields(ev.data.cal.data('colorpicker').color, ev.data.cal.get(0));
156
- fillHexFields(ev.data.cal.data('colorpicker').color, ev.data.cal.get(0));
157
- $(document).unbind('mouseup', upHue);
158
- $(document).unbind('mousemove', moveHue);
159
- return false;
160
- },
161
- downSelector = function (ev) {
162
- var current = {
163
- cal: $(this).parent(),
164
- pos: $(this).offset()
165
- };
166
- current.preview = current.cal.data('colorpicker').livePreview;
167
- $(document).bind('mouseup', current, upSelector);
168
- $(document).bind('mousemove', current, moveSelector);
169
- },
170
- moveSelector = function (ev) {
171
- change.apply(
172
- ev.data.cal.data('colorpicker')
173
- .fields
174
- .eq(6)
175
- .val(parseInt(100*(150 - Math.max(0,Math.min(150,(ev.pageY - ev.data.pos.top))))/150, 10))
176
- .end()
177
- .eq(5)
178
- .val(parseInt(100*(Math.max(0,Math.min(150,(ev.pageX - ev.data.pos.left))))/150, 10))
179
- .get(0),
180
- [ev.data.preview]
181
- );
182
- return false;
183
- },
184
- upSelector = function (ev) {
185
- fillRGBFields(ev.data.cal.data('colorpicker').color, ev.data.cal.get(0));
186
- fillHexFields(ev.data.cal.data('colorpicker').color, ev.data.cal.get(0));
187
- $(document).unbind('mouseup', upSelector);
188
- $(document).unbind('mousemove', moveSelector);
189
- return false;
190
- },
191
- enterSubmit = function (ev) {
192
- $(this).addClass('colorpicker_focus');
193
- },
194
- leaveSubmit = function (ev) {
195
- $(this).removeClass('colorpicker_focus');
196
- },
197
- clickSubmit = function (ev) {
198
- var cal = $(this).parent();
199
- var col = cal.data('colorpicker').color;
200
- cal.data('colorpicker').origColor = col;
201
- setCurrentColor(col, cal.get(0));
202
- cal.data('colorpicker').onSubmit(col, HSBToHex(col), HSBToRGB(col), cal.data('colorpicker').el);
203
- },
204
- show = function (ev) {
205
- var cal = $('#' + $(this).data('colorpickerId'));
206
- cal.data('colorpicker').onBeforeShow.apply(this, [cal.get(0)]);
207
- var pos = $(this).offset();
208
- var viewPort = getViewport();
209
- var top = pos.top + this.offsetHeight;
210
- var left = pos.left;
211
- if (top + 176 > viewPort.t + viewPort.h) {
212
- top -= this.offsetHeight + 176;
213
- }
214
- if (left + 356 > viewPort.l + viewPort.w) {
215
- left -= 356;
216
- }
217
- cal.css({left: left + 'px', top: top + 'px'});
218
- if (cal.data('colorpicker').onShow.apply(this, [cal.get(0)]) != false) {
219
- cal.show();
220
- }
221
- $(document).bind('mousedown', {cal: cal}, hide);
222
- return false;
223
- },
224
- hide = function (ev) {
225
- if (!isChildOf(ev.data.cal.get(0), ev.target, ev.data.cal.get(0))) {
226
- if (ev.data.cal.data('colorpicker').onHide.apply(this, [ev.data.cal.get(0)]) != false) {
227
- ev.data.cal.hide();
228
- }
229
- $(document).unbind('mousedown', hide);
230
- }
231
- },
232
- isChildOf = function(parentEl, el, container) {
233
- if (parentEl == el) {
234
- return true;
235
- }
236
- if (parentEl.contains) {
237
- return parentEl.contains(el);
238
- }
239
- if ( parentEl.compareDocumentPosition ) {
240
- return !!(parentEl.compareDocumentPosition(el) & 16);
241
- }
242
- var prEl = el.parentNode;
243
- while(prEl && prEl != container) {
244
- if (prEl == parentEl)
245
- return true;
246
- prEl = prEl.parentNode;
247
- }
248
- return false;
249
- },
250
- getViewport = function () {
251
- var m = document.compatMode == 'CSS1Compat';
252
- return {
253
- l : window.pageXOffset || (m ? document.documentElement.scrollLeft : document.body.scrollLeft),
254
- t : window.pageYOffset || (m ? document.documentElement.scrollTop : document.body.scrollTop),
255
- w : window.innerWidth || (m ? document.documentElement.clientWidth : document.body.clientWidth),
256
- h : window.innerHeight || (m ? document.documentElement.clientHeight : document.body.clientHeight)
257
- };
258
- },
259
- fixHSB = function (hsb) {
260
- return {
261
- h: Math.min(360, Math.max(0, hsb.h)),
262
- s: Math.min(100, Math.max(0, hsb.s)),
263
- b: Math.min(100, Math.max(0, hsb.b))
264
- };
265
- },
266
- fixRGB = function (rgb) {
267
- return {
268
- r: Math.min(255, Math.max(0, rgb.r)),
269
- g: Math.min(255, Math.max(0, rgb.g)),
270
- b: Math.min(255, Math.max(0, rgb.b))
271
- };
272
- },
273
- fixHex = function (hex) {
274
- var len = 6 - hex.length;
275
- if (len > 0) {
276
- var o = [];
277
- for (var i=0; i<len; i++) {
278
- o.push('0');
279
- }
280
- o.push(hex);
281
- hex = o.join('');
282
- }
283
- return hex;
284
- },
285
- HexToRGB = function (hex) {
286
- var hex = parseInt(((hex.indexOf('#') > -1) ? hex.substring(1) : hex), 16);
287
- return {r: hex >> 16, g: (hex & 0x00FF00) >> 8, b: (hex & 0x0000FF)};
288
- },
289
- HexToHSB = function (hex) {
290
- return RGBToHSB(HexToRGB(hex));
291
- },
292
- RGBToHSB = function (rgb) {
293
- var hsb = {
294
- h: 0,
295
- s: 0,
296
- b: 0
297
- };
298
- var min = Math.min(rgb.r, rgb.g, rgb.b);
299
- var max = Math.max(rgb.r, rgb.g, rgb.b);
300
- var delta = max - min;
301
- hsb.b = max;
302
- if (max != 0) {
303
-
304
- }
305
- hsb.s = max != 0 ? 255 * delta / max : 0;
306
- if (hsb.s != 0) {
307
- if (rgb.r == max) {
308
- hsb.h = (rgb.g - rgb.b) / delta;
309
- } else if (rgb.g == max) {
310
- hsb.h = 2 + (rgb.b - rgb.r) / delta;
311
- } else {
312
- hsb.h = 4 + (rgb.r - rgb.g) / delta;
313
- }
314
- } else {
315
- hsb.h = -1;
316
- }
317
- hsb.h *= 60;
318
- if (hsb.h < 0) {
319
- hsb.h += 360;
320
- }
321
- hsb.s *= 100/255;
322
- hsb.b *= 100/255;
323
- return hsb;
324
- },
325
- HSBToRGB = function (hsb) {
326
- var rgb = {};
327
- var h = Math.round(hsb.h);
328
- var s = Math.round(hsb.s*255/100);
329
- var v = Math.round(hsb.b*255/100);
330
- if(s == 0) {
331
- rgb.r = rgb.g = rgb.b = v;
332
- } else {
333
- var t1 = v;
334
- var t2 = (255-s)*v/255;
335
- var t3 = (t1-t2)*(h%60)/60;
336
- if(h==360) h = 0;
337
- if(h<60) {rgb.r=t1; rgb.b=t2; rgb.g=t2+t3}
338
- else if(h<120) {rgb.g=t1; rgb.b=t2; rgb.r=t1-t3}
339
- else if(h<180) {rgb.g=t1; rgb.r=t2; rgb.b=t2+t3}
340
- else if(h<240) {rgb.b=t1; rgb.r=t2; rgb.g=t1-t3}
341
- else if(h<300) {rgb.b=t1; rgb.g=t2; rgb.r=t2+t3}
342
- else if(h<360) {rgb.r=t1; rgb.g=t2; rgb.b=t1-t3}
343
- else {rgb.r=0; rgb.g=0; rgb.b=0}
344
- }
345
- return {r:Math.round(rgb.r), g:Math.round(rgb.g), b:Math.round(rgb.b)};
346
- },
347
- RGBToHex = function (rgb) {
348
- var hex = [
349
- rgb.r.toString(16),
350
- rgb.g.toString(16),
351
- rgb.b.toString(16)
352
- ];
353
- $.each(hex, function (nr, val) {
354
- if (val.length == 1) {
355
- hex[nr] = '0' + val;
356
- }
357
- });
358
- return hex.join('');
359
- },
360
- HSBToHex = function (hsb) {
361
- return RGBToHex(HSBToRGB(hsb));
362
- },
363
- restoreOriginal = function () {
364
- var cal = $(this).parent();
365
- var col = cal.data('colorpicker').origColor;
366
- cal.data('colorpicker').color = col;
367
- fillRGBFields(col, cal.get(0));
368
- fillHexFields(col, cal.get(0));
369
- fillHSBFields(col, cal.get(0));
370
- setSelector(col, cal.get(0));
371
- setHue(col, cal.get(0));
372
- setNewColor(col, cal.get(0));
373
- };
374
- return {
375
- init: function (opt) {
376
- opt = $.extend({}, defaults, opt||{});
377
- if (typeof opt.color == 'string') {
378
- opt.color = HexToHSB(opt.color);
379
- } else if (opt.color.r != undefined && opt.color.g != undefined && opt.color.b != undefined) {
380
- opt.color = RGBToHSB(opt.color);
381
- } else if (opt.color.h != undefined && opt.color.s != undefined && opt.color.b != undefined) {
382
- opt.color = fixHSB(opt.color);
383
- } else {
384
- return this;
385
- }
386
- return this.each(function () {
387
- if (!$(this).data('colorpickerId')) {
388
- var options = $.extend({}, opt);
389
- options.origColor = opt.color;
390
- var id = 'collorpicker_' + parseInt(Math.random() * 1000);
391
- $(this).data('colorpickerId', id);
392
- var cal = $(tpl).attr('id', id);
393
- if (options.flat) {
394
- cal.appendTo(this).show();
395
- } else {
396
- cal.appendTo(document.body);
397
- }
398
- options.fields = cal
399
- .find('input')
400
- .bind('keyup', keyDown)
401
- .bind('change', change)
402
- .bind('blur', blur)
403
- .bind('focus', focus);
404
- cal
405
- .find('span').bind('mousedown', downIncrement).end()
406
- .find('>div.colorpicker_current_color').bind('click', restoreOriginal);
407
- options.selector = cal.find('div.colorpicker_color').bind('mousedown', downSelector);
408
- options.selectorIndic = options.selector.find('div div');
409
- options.el = this;
410
- options.hue = cal.find('div.colorpicker_hue div');
411
- cal.find('div.colorpicker_hue').bind('mousedown', downHue);
412
- options.newColor = cal.find('div.colorpicker_new_color');
413
- options.currentColor = cal.find('div.colorpicker_current_color');
414
- cal.data('colorpicker', options);
415
- cal.find('div.colorpicker_submit')
416
- .bind('mouseenter', enterSubmit)
417
- .bind('mouseleave', leaveSubmit)
418
- .bind('click', clickSubmit);
419
- fillRGBFields(options.color, cal.get(0));
420
- fillHSBFields(options.color, cal.get(0));
421
- fillHexFields(options.color, cal.get(0));
422
- setHue(options.color, cal.get(0));
423
- setSelector(options.color, cal.get(0));
424
- setCurrentColor(options.color, cal.get(0));
425
- setNewColor(options.color, cal.get(0));
426
- if (options.flat) {
427
- cal.css({
428
- position: 'relative',
429
- display: 'block'
430
- });
431
- } else {
432
- $(this).bind(options.eventName, show);
433
- }
434
- }
435
- });
436
- },
437
- showPicker: function() {
438
- return this.each( function () {
439
- if ($(this).data('colorpickerId')) {
440
- show.apply(this);
441
- }
442
- });
443
- },
444
- hidePicker: function() {
445
- return this.each( function () {
446
- if ($(this).data('colorpickerId')) {
447
- $('#' + $(this).data('colorpickerId')).hide();
448
- }
449
- });
450
- },
451
- setColor: function(col) {
452
- if (typeof col == 'string') {
453
- col = HexToHSB(col);
454
- } else if (col.r != undefined && col.g != undefined && col.b != undefined) {
455
- col = RGBToHSB(col);
456
- } else if (col.h != undefined && col.s != undefined && col.b != undefined) {
457
- col = fixHSB(col);
458
- } else {
459
- return this;
460
- }
461
- return this.each(function(){
462
- if ($(this).data('colorpickerId')) {
463
- var cal = $('#' + $(this).data('colorpickerId'));
464
- cal.data('colorpicker').color = col;
465
- cal.data('colorpicker').origColor = col;
466
- fillRGBFields(col, cal.get(0));
467
- fillHSBFields(col, cal.get(0));
468
- fillHexFields(col, cal.get(0));
469
- setHue(col, cal.get(0));
470
- setSelector(col, cal.get(0));
471
- setCurrentColor(col, cal.get(0));
472
- setNewColor(col, cal.get(0));
473
- }
474
- });
475
- }
476
- };
477
- }();
478
- $.fn.extend({
479
- ColorPicker: ColorPicker.init,
480
- ColorPickerHide: ColorPicker.hidePicker,
481
- ColorPickerShow: ColorPicker.showPicker,
482
- ColorPickerSetColor: ColorPicker.setColor
483
- });
484
  })(jQuery)
1
+ /**
2
+ *
3
+ * Color picker
4
+ * Author: Stefan Petre www.eyecon.ro
5
+ *
6
+ * Dual licensed under the MIT and GPL licenses
7
+ *
8
+ */
9
+ (function ($) {
10
+ var ColorPicker = function () {
11
+ var
12
+ ids = {},
13
+ inAction,
14
+ charMin = 65,
15
+ visible,
16
+ tpl = '<div class="colorpicker"><div class="colorpicker_color"><div><div></div></div></div><div class="colorpicker_hue"><div></div></div><div class="colorpicker_new_color"></div><div class="colorpicker_current_color"></div><div class="colorpicker_hex"><input type="text" maxlength="6" size="6" /></div><div class="colorpicker_rgb_r colorpicker_field"><input type="text" maxlength="3" size="3" /><span></span></div><div class="colorpicker_rgb_g colorpicker_field"><input type="text" maxlength="3" size="3" /><span></span></div><div class="colorpicker_rgb_b colorpicker_field"><input type="text" maxlength="3" size="3" /><span></span></div><div class="colorpicker_hsb_h colorpicker_field"><input type="text" maxlength="3" size="3" /><span></span></div><div class="colorpicker_hsb_s colorpicker_field"><input type="text" maxlength="3" size="3" /><span></span></div><div class="colorpicker_hsb_b colorpicker_field"><input type="text" maxlength="3" size="3" /><span></span></div><div class="colorpicker_submit"></div></div>',
17
+ defaults = {
18
+ eventName: 'click',
19
+ onShow: function () {},
20
+ onBeforeShow: function(){},
21
+ onHide: function () {},
22
+ onChange: function () {},
23
+ onSubmit: function () {},
24
+ color: 'ff0000',
25
+ livePreview: true,
26
+ flat: false
27
+ },
28
+ fillRGBFields = function (hsb, cal) {
29
+ var rgb = HSBToRGB(hsb);
30
+ $(cal).data('colorpicker').fields
31
+ .eq(1).val(rgb.r).end()
32
+ .eq(2).val(rgb.g).end()
33
+ .eq(3).val(rgb.b).end();
34
+ },
35
+ fillHSBFields = function (hsb, cal) {
36
+ $(cal).data('colorpicker').fields
37
+ .eq(4).val(hsb.h).end()
38
+ .eq(5).val(hsb.s).end()
39
+ .eq(6).val(hsb.b).end();
40
+ },
41
+ fillHexFields = function (hsb, cal) {
42
+ $(cal).data('colorpicker').fields
43
+ .eq(0).val(HSBToHex(hsb)).end();
44
+ },
45
+ setSelector = function (hsb, cal) {
46
+ $(cal).data('colorpicker').selector.css('backgroundColor', '#' + HSBToHex({h: hsb.h, s: 100, b: 100}));
47
+ $(cal).data('colorpicker').selectorIndic.css({
48
+ left: parseInt(150 * hsb.s/100, 10),
49
+ top: parseInt(150 * (100-hsb.b)/100, 10)
50
+ });
51
+ },
52
+ setHue = function (hsb, cal) {
53
+ $(cal).data('colorpicker').hue.css('top', parseInt(150 - 150 * hsb.h/360, 10));
54
+ },
55
+ setCurrentColor = function (hsb, cal) {
56
+ $(cal).data('colorpicker').currentColor.css('backgroundColor', '#' + HSBToHex(hsb));
57
+ },
58
+ setNewColor = function (hsb, cal) {
59
+ $(cal).data('colorpicker').newColor.css('backgroundColor', '#' + HSBToHex(hsb));
60
+ },
61
+ keyDown = function (ev) {
62
+ var pressedKey = ev.charCode || ev.keyCode || -1;
63
+ if ((pressedKey > charMin && pressedKey <= 90) || pressedKey == 32) {
64
+ return false;
65
+ }
66
+ var cal = $(this).parent().parent();
67
+ if (cal.data('colorpicker').livePreview === true) {
68
+ change.apply(this);
69
+ }
70
+ },
71
+ change = function (ev) {
72
+ var cal = $(this).parent().parent(), col;
73
+ if (this.parentNode.className.indexOf('_hex') > 0) {
74
+ cal.data('colorpicker').color = col = HexToHSB(fixHex(this.value));
75
+ } else if (this.parentNode.className.indexOf('_hsb') > 0) {
76
+ cal.data('colorpicker').color = col = fixHSB({
77
+ h: parseInt(cal.data('colorpicker').fields.eq(4).val(), 10),
78
+ s: parseInt(cal.data('colorpicker').fields.eq(5).val(), 10),
79
+ b: parseInt(cal.data('colorpicker').fields.eq(6).val(), 10)
80
+ });
81
+ } else {
82
+ cal.data('colorpicker').color = col = RGBToHSB(fixRGB({
83
+ r: parseInt(cal.data('colorpicker').fields.eq(1).val(), 10),
84
+ g: parseInt(cal.data('colorpicker').fields.eq(2).val(), 10),
85
+ b: parseInt(cal.data('colorpicker').fields.eq(3).val(), 10)
86
+ }));
87
+ }
88
+ if (ev) {
89
+ fillRGBFields(col, cal.get(0));
90
+ fillHexFields(col, cal.get(0));
91
+ fillHSBFields(col, cal.get(0));
92
+ }
93
+ setSelector(col, cal.get(0));
94
+ setHue(col, cal.get(0));
95
+ setNewColor(col, cal.get(0));
96
+ cal.data('colorpicker').onChange.apply(cal, [col, HSBToHex(col), HSBToRGB(col)]);
97
+ },
98
+ blur = function (ev) {
99
+ var cal = $(this).parent().parent();
100
+ cal.data('colorpicker').fields.parent().removeClass('colorpicker_focus');
101
+ },
102
+ focus = function () {
103
+ charMin = this.parentNode.className.indexOf('_hex') > 0 ? 70 : 65;
104
+ $(this).parent().parent().data('colorpicker').fields.parent().removeClass('colorpicker_focus');
105
+ $(this).parent().addClass('colorpicker_focus');
106
+ },
107
+ downIncrement = function (ev) {
108
+ var field = $(this).parent().find('input').focus();
109
+ var current = {
110
+ el: $(this).parent().addClass('colorpicker_slider'),
111
+ max: this.parentNode.className.indexOf('_hsb_h') > 0 ? 360 : (this.parentNode.className.indexOf('_hsb') > 0 ? 100 : 255),
112
+ y: ev.pageY,
113
+ field: field,
114
+ val: parseInt(field.val(), 10),
115
+ preview: $(this).parent().parent().data('colorpicker').livePreview
116
+ };
117
+ $(document).bind('mouseup', current, upIncrement);
118
+ $(document).bind('mousemove', current, moveIncrement);
119
+ },
120
+ moveIncrement = function (ev) {
121
+ ev.data.field.val(Math.max(0, Math.min(ev.data.max, parseInt(ev.data.val + ev.pageY - ev.data.y, 10))));
122
+ if (ev.data.preview) {
123
+ change.apply(ev.data.field.get(0), [true]);
124
+ }
125
+ return false;
126
+ },
127
+ upIncrement = function (ev) {
128
+ change.apply(ev.data.field.get(0), [true]);
129
+ ev.data.el.removeClass('colorpicker_slider').find('input').focus();
130
+ $(document).unbind('mouseup', upIncrement);
131
+ $(document).unbind('mousemove', moveIncrement);
132
+ return false;
133
+ },
134
+ downHue = function (ev) {
135
+ var current = {
136
+ cal: $(this).parent(),
137
+ y: $(this).offset().top
138
+ };
139
+ current.preview = current.cal.data('colorpicker').livePreview;
140
+ $(document).bind('mouseup', current, upHue);
141
+ $(document).bind('mousemove', current, moveHue);
142
+ },
143
+ moveHue = function (ev) {
144
+ change.apply(
145
+ ev.data.cal.data('colorpicker')
146
+ .fields
147
+ .eq(4)
148
+ .val(parseInt(360*(150 - Math.max(0,Math.min(150,(ev.pageY - ev.data.y))))/150, 10))
149
+ .get(0),
150
+ [ev.data.preview]
151
+ );
152
+ return false;
153
+ },
154
+ upHue = function (ev) {
155
+ fillRGBFields(ev.data.cal.data('colorpicker').color, ev.data.cal.get(0));
156
+ fillHexFields(ev.data.cal.data('colorpicker').color, ev.data.cal.get(0));
157
+ $(document).unbind('mouseup', upHue);
158
+ $(document).unbind('mousemove', moveHue);
159
+ return false;
160
+ },
161
+ downSelector = function (ev) {
162
+ var current = {
163
+ cal: $(this).parent(),
164
+ pos: $(this).offset()
165
+ };
166
+ current.preview = current.cal.data('colorpicker').livePreview;
167
+ $(document).bind('mouseup', current, upSelector);
168
+ $(document).bind('mousemove', current, moveSelector);
169
+ },
170
+ moveSelector = function (ev) {
171
+ change.apply(
172
+ ev.data.cal.data('colorpicker')
173
+ .fields
174
+ .eq(6)
175
+ .val(parseInt(100*(150 - Math.max(0,Math.min(150,(ev.pageY - ev.data.pos.top))))/150, 10))
176
+ .end()
177
+ .eq(5)
178
+ .val(parseInt(100*(Math.max(0,Math.min(150,(ev.pageX - ev.data.pos.left))))/150, 10))
179
+ .get(0),
180
+ [ev.data.preview]
181
+ );
182
+ return false;
183
+ },
184
+ upSelector = function (ev) {
185
+ fillRGBFields(ev.data.cal.data('colorpicker').color, ev.data.cal.get(0));
186
+ fillHexFields(ev.data.cal.data('colorpicker').color, ev.data.cal.get(0));
187
+ $(document).unbind('mouseup', upSelector);
188
+ $(document).unbind('mousemove', moveSelector);
189
+ return false;
190
+ },
191
+ enterSubmit = function (ev) {
192
+ $(this).addClass('colorpicker_focus');
193
+ },
194
+ leaveSubmit = function (ev) {
195
+ $(this).removeClass('colorpicker_focus');
196
+ },
197
+ clickSubmit = function (ev) {
198
+ var cal = $(this).parent();
199
+ var col = cal.data('colorpicker').color;
200
+ cal.data('colorpicker').origColor = col;
201
+ setCurrentColor(col, cal.get(0));
202
+ cal.data('colorpicker').onSubmit(col, HSBToHex(col), HSBToRGB(col), cal.data('colorpicker').el);
203
+ },
204
+ show = function (ev) {
205
+ var cal = $('#' + $(this).data('colorpickerId'));
206
+ cal.data('colorpicker').onBeforeShow.apply(this, [cal.get(0)]);
207
+ var pos = $(this).offset();
208
+ var viewPort = getViewport();
209
+ var top = pos.top + this.offsetHeight;
210
+ var left = pos.left;
211
+ if (top + 176 > viewPort.t + viewPort.h) {
212
+ top -= this.offsetHeight + 176;
213
+ }
214
+ if (left + 356 > viewPort.l + viewPort.w) {
215
+ left -= 356;
216
+ }
217
+ cal.css({left: left + 'px', top: top + 'px'});
218
+ if (cal.data('colorpicker').onShow.apply(this, [cal.get(0)]) != false) {
219
+ cal.show();
220
+ }
221
+ $(document).bind('mousedown', {cal: cal}, hide);
222
+ return false;
223
+ },
224
+ hide = function (ev) {
225
+ if (!isChildOf(ev.data.cal.get(0), ev.target, ev.data.cal.get(0))) {
226
+ if (ev.data.cal.data('colorpicker').onHide.apply(this, [ev.data.cal.get(0)]) != false) {
227
+ ev.data.cal.hide();
228
+ }
229
+ $(document).unbind('mousedown', hide);
230
+ }
231
+ },
232
+ isChildOf = function(parentEl, el, container) {
233
+ if (parentEl == el) {
234
+ return true;
235
+ }
236
+ if (parentEl.contains) {
237
+ return parentEl.contains(el);
238
+ }
239
+ if ( parentEl.compareDocumentPosition ) {
240
+ return !!(parentEl.compareDocumentPosition(el) & 16);
241
+ }
242
+ var prEl = el.parentNode;
243
+ while(prEl && prEl != container) {
244
+ if (prEl == parentEl)
245
+ return true;
246
+ prEl = prEl.parentNode;
247
+ }
248
+ return false;
249
+ },
250
+ getViewport = function () {
251
+ var m = document.compatMode == 'CSS1Compat';
252
+ return {
253
+ l : window.pageXOffset || (m ? document.documentElement.scrollLeft : document.body.scrollLeft),
254
+ t : window.pageYOffset || (m ? document.documentElement.scrollTop : document.body.scrollTop),
255
+ w : window.innerWidth || (m ? document.documentElement.clientWidth : document.body.clientWidth),
256
+ h : window.innerHeight || (m ? document.documentElement.clientHeight : document.body.clientHeight)
257
+ };
258
+ },
259
+ fixHSB = function (hsb) {
260
+ return {
261
+ h: Math.min(360, Math.max(0, hsb.h)),
262
+ s: Math.min(100, Math.max(0, hsb.s)),
263
+ b: Math.min(100, Math.max(0, hsb.b))
264
+ };
265
+ },
266
+ fixRGB = function (rgb) {
267
+ return {
268
+ r: Math.min(255, Math.max(0, rgb.r)),
269
+ g: Math.min(255, Math.max(0, rgb.g)),
270
+ b: Math.min(255, Math.max(0, rgb.b))
271
+ };
272
+ },
273
+ fixHex = function (hex) {
274
+ var len = 6 - hex.length;
275
+ if (len > 0) {
276
+ var o = [];
277
+ for (var i=0; i<len; i++) {
278
+ o.push('0');
279
+ }
280
+ o.push(hex);
281
+ hex = o.join('');
282
+ }
283
+ return hex;
284
+ },
285
+ HexToRGB = function (hex) {
286
+ var hex = parseInt(((hex.indexOf('#') > -1) ? hex.substring(1) : hex), 16);
287
+ return {r: hex >> 16, g: (hex & 0x00FF00) >> 8, b: (hex & 0x0000FF)};
288
+ },
289
+ HexToHSB = function (hex) {
290
+ return RGBToHSB(HexToRGB(hex));
291
+ },
292
+ RGBToHSB = function (rgb) {
293
+ var hsb = {
294
+ h: 0,
295
+ s: 0,
296
+ b: 0
297
+ };
298
+ var min = Math.min(rgb.r, rgb.g, rgb.b);
299
+ var max = Math.max(rgb.r, rgb.g, rgb.b);
300
+ var delta = max - min;
301
+ hsb.b = max;
302
+ if (max != 0) {
303
+
304
+ }
305
+ hsb.s = max != 0 ? 255 * delta / max : 0;
306
+ if (hsb.s != 0) {
307
+ if (rgb.r == max) {
308
+ hsb.h = (rgb.g - rgb.b) / delta;
309
+ } else if (rgb.g == max) {
310
+ hsb.h = 2 + (rgb.b - rgb.r) / delta;
311
+ } else {
312
+ hsb.h = 4 + (rgb.r - rgb.g) / delta;
313
+ }
314
+ } else {
315
+ hsb.h = -1;
316
+ }
317
+ hsb.h *= 60;
318
+ if (hsb.h < 0) {
319
+ hsb.h += 360;
320
+ }
321
+ hsb.s *= 100/255;
322
+ hsb.b *= 100/255;
323
+ return hsb;
324
+ },
325
+ HSBToRGB = function (hsb) {
326
+ var rgb = {};
327
+ var h = Math.round(hsb.h);
328
+ var s = Math.round(hsb.s*255/100);
329
+ var v = Math.round(hsb.b*255/100);
330
+ if(s == 0) {
331
+ rgb.r = rgb.g = rgb.b = v;
332
+ } else {
333
+ var t1 = v;
334
+ var t2 = (255-s)*v/255;
335
+ var t3 = (t1-t2)*(h%60)/60;
336
+ if(h==360) h = 0;
337
+ if(h<60) {rgb.r=t1; rgb.b=t2; rgb.g=t2+t3}
338
+ else if(h<120) {rgb.g=t1; rgb.b=t2; rgb.r=t1-t3}
339
+ else if(h<180) {rgb.g=t1; rgb.r=t2; rgb.b=t2+t3}
340
+ else if(h<240) {rgb.b=t1; rgb.r=t2; rgb.g=t1-t3}
341
+ else if(h<300) {rgb.b=t1; rgb.g=t2; rgb.r=t2+t3}
342
+ else if(h<360) {rgb.r=t1; rgb.g=t2; rgb.b=t1-t3}
343
+ else {rgb.r=0; rgb.g=0; rgb.b=0}
344
+ }
345
+ return {r:Math.round(rgb.r), g:Math.round(rgb.g), b:Math.round(rgb.b)};
346
+ },
347
+ RGBToHex = function (rgb) {
348
+ var hex = [
349
+ rgb.r.toString(16),
350
+ rgb.g.toString(16),
351
+ rgb.b.toString(16)
352
+ ];
353
+ $.each(hex, function (nr, val) {
354
+ if (val.length == 1) {
355
+ hex[nr] = '0' + val;
356
+ }
357
+ });
358
+ return hex.join('');
359
+ },
360
+ HSBToHex = function (hsb) {
361
+ return RGBToHex(HSBToRGB(hsb));
362
+ },
363
+ restoreOriginal = function () {
364
+ var cal = $(this).parent();
365
+ var col = cal.data('colorpicker').origColor;
366
+ cal.data('colorpicker').color = col;
367
+ fillRGBFields(col, cal.get(0));
368
+ fillHexFields(col, cal.get(0));
369
+ fillHSBFields(col, cal.get(0));
370
+ setSelector(col, cal.get(0));
371
+ setHue(col, cal.get(0));
372
+ setNewColor(col, cal.get(0));
373
+ };
374
+ return {
375
+ init: function (opt) {
376
+ opt = $.extend({}, defaults, opt||{});
377
+ if (typeof opt.color == 'string') {
378
+ opt.color = HexToHSB(opt.color);
379
+ } else if (opt.color.r != undefined && opt.color.g != undefined && opt.color.b != undefined) {
380
+ opt.color = RGBToHSB(opt.color);
381
+ } else if (opt.color.h != undefined && opt.color.s != undefined && opt.color.b != undefined) {
382
+ opt.color = fixHSB(opt.color);
383
+ } else {
384
+ return this;
385
+ }
386
+ return this.each(function () {
387
+ if (!$(this).data('colorpickerId')) {
388
+ var options = $.extend({}, opt);
389
+ options.origColor = opt.color;
390
+ var id = 'collorpicker_' + parseInt(Math.random() * 1000);
391
+ $(this).data('colorpickerId', id);
392
+ var cal = $(tpl).attr('id', id);
393
+ if (options.flat) {
394
+ cal.appendTo(this).show();
395
+ } else {
396
+ cal.appendTo(document.body);
397
+ }
398
+ options.fields = cal
399
+ .find('input')
400
+ .bind('keyup', keyDown)
401
+ .bind('change', change)
402
+ .bind('blur', blur)
403
+ .bind('focus', focus);
404
+ cal
405
+ .find('span').bind('mousedown', downIncrement).end()
406
+ .find('>div.colorpicker_current_color').bind('click', restoreOriginal);
407
+ options.selector = cal.find('div.colorpicker_color').bind('mousedown', downSelector);
408
+ options.selectorIndic = options.selector.find('div div');
409
+ options.el = this;
410
+ options.hue = cal.find('div.colorpicker_hue div');
411
+ cal.find('div.colorpicker_hue').bind('mousedown', downHue);
412
+ options.newColor = cal.find('div.colorpicker_new_color');
413
+ options.currentColor = cal.find('div.colorpicker_current_color');
414
+ cal.data('colorpicker', options);
415
+ cal.find('div.colorpicker_submit')
416
+ .bind('mouseenter', enterSubmit)
417
+ .bind('mouseleave', leaveSubmit)
418
+ .bind('click', clickSubmit);
419
+ fillRGBFields(options.color, cal.get(0));
420
+ fillHSBFields(options.color, cal.get(0));
421
+ fillHexFields(options.color, cal.get(0));
422
+ setHue(options.color, cal.get(0));
423
+ setSelector(options.color, cal.get(0));
424
+ setCurrentColor(options.color, cal.get(0));
425
+ setNewColor(options.color, cal.get(0));
426
+ if (options.flat) {
427
+ cal.css({
428
+ position: 'relative',
429
+ display: 'block'
430
+ });
431
+ } else {
432
+ $(this).bind(options.eventName, show);
433
+ }
434
+ }
435
+ });
436
+ },
437
+ showPicker: function() {
438
+ return this.each( function () {
439
+ if ($(this).data('colorpickerId')) {
440
+ show.apply(this);
441
+ }
442
+ });
443
+ },
444
+ hidePicker: function() {
445
+ return this.each( function () {
446
+ if ($(this).data('colorpickerId')) {
447
+ $('#' + $(this).data('colorpickerId')).hide();
448
+ }
449
+ });
450
+ },
451
+ setColor: function(col) {
452
+ if (typeof col == 'string') {
453
+ col = HexToHSB(col);
454
+ } else if (col.r != undefined && col.g != undefined && col.b != undefined) {
455
+ col = RGBToHSB(col);
456
+ } else if (col.h != undefined && col.s != undefined && col.b != undefined) {
457
+ col = fixHSB(col);
458
+ } else {
459
+ return this;
460
+ }
461
+ return this.each(function(){
462
+ if ($(this).data('colorpickerId')) {
463
+ var cal = $('#' + $(this).data('colorpickerId'));
464
+ cal.data('colorpicker').color = col;
465
+ cal.data('colorpicker').origColor = col;
466
+ fillRGBFields(col, cal.get(0));
467
+ fillHSBFields(col, cal.get(0));
468
+ fillHexFields(col, cal.get(0));
469
+ setHue(col, cal.get(0));
470
+ setSelector(col, cal.get(0));
471
+ setCurrentColor(col, cal.get(0));
472
+ setNewColor(col, cal.get(0));
473
+ }
474
+ });
475
+ }
476
+ };
477
+ }();
478
+ $.fn.extend({
479
+ ColorPicker: ColorPicker.init,
480
+ ColorPickerHide: ColorPicker.hidePicker,
481
+ ColorPickerShow: ColorPicker.showPicker,
482
+ ColorPickerSetColor: ColorPicker.setColor
483
+ });
484
  })(jQuery)
js/custom-contact-forms-admin-ajax.js CHANGED
@@ -1,255 +1,255 @@
1
-
2
- function print_r(x, max, sep, l) {
3
-
4
- l = l || 0;
5
- max = max || 10;
6
- sep = sep || ' ';
7
-
8
- if (l > max) {
9
- return "[WARNING: Too much recursion]\n";
10
- }
11
-
12
- var
13
- i,
14
- r = '',
15
- t = typeof x,
16
- tab = '';
17
-
18
- if (x === null) {
19
- r += "(null)\n";
20
- } else if (t == 'object') {
21
-
22
- l++;
23
-
24
- for (i = 0; i < l; i++) {
25
- tab += sep;
26
- }
27
-
28
- if (x && x.length) {
29
- t = 'array';
30
- }
31
-
32
- r += '(' + t + ") :\n";
33
-
34
- for (i in x) {
35
- try {
36
- r += tab + '<br />[' + i + '] : ' + print_r(x[i], max, sep, (l + 1));
37
- } catch(e) {
38
- return "[ERROR: " + e + "]\n";
39
- }
40
- }
41
-
42
- } else {
43
-
44
- if (t == 'string') {
45
- if (x == '') {
46
- x = '(empty)';
47
- }
48
- }
49
-
50
- r += '(' + t + ') ' + x + "\n";
51
-
52
- }
53
-
54
- return r;
55
-
56
- };
57
-
58
- function getFormFieldValue(field_name, formData) {
59
- for(var i = 0; i < formData.length; i++) {
60
- if (formData[i].name == field_name) {
61
- return formData[i].value;
62
- }
63
- }
64
- return false;
65
- };
66
-
67
- /*function pageselectCallback(page_index, jq){
68
- rows = $j('#form-submissions-hidden > tr')
69
- items_per_page = 5;
70
- max_elem = Math.min((page_index+1) * items_per_page, rows.length);
71
- var new_content = '';
72
- for(var i=page_index*items_per_page;i<max_elem;i++) {
73
- if (rows.eq(i) != null) {
74
- new_content += '<tr class="' + rows.eq(i).attr('class') + '">' + rows.eq(i).html() + '</tr>';
75
- i += 1;
76
- new_content += '<tr class="' + rows.eq(i).attr('class') + '">' + rows.eq(i).html() + '</tr>';
77
- } else i += 1;
78
- }
79
- if (new_content != '' && new_content != null)
80
- $j('#form-submissions-table tbody').empty().append(new_content);
81
- $j('.submission-content').hide();
82
- $j('.submission-content-expand-button').click(function() {
83
- $j(this)
84
- .parent()
85
- .parent()
86
- .parent()
87
- .next()
88
- .toggle();
89
- });
90
- return false;
91
- }
92
-
93
- function initPagination() {
94
- // Create content inside pagination element
95
- var num_entries = $j('#form-submissions-hidden > tr').length;
96
- $j("#form-submissions-pagination").pagination(num_entries, {
97
- callback: pageselectCallback,
98
- items_per_page: 5 // Show only one item per page
99
- });
100
- }*/
101
-
102
- $j.preloadImages(ccfAjax.plugin_dir + "/images/wpspin_light.gif"); // preload loading image
103
- $j(document).ready(function() {
104
-
105
- //initPagination();
106
- $j('.ccf-edit-ajax').attr("action", ccfAjax.url);
107
-
108
- var loading_img = null;
109
- var form_dom = null;
110
- $j('.ccf-edit-ajax').ajaxForm({
111
- data: { action: 'ccf-ajax', nonce: ccfLang.nonce },
112
- beforeSubmit: function(formData, jqForm, options) {
113
- var action_type = getFormFieldValue('object_bulk_action', formData);
114
- //var bulk_apply_button = getFormFieldValue('object_bulk_action', formData);
115
- var attach_button = getFormFieldValue('buttons', formData);
116
- var detach_button = getFormFieldValue('object_bulk_action', formData);
117
- if (action_type == 0) return false;
118
- bulk_button = jqForm.find("input[name=object_bulk_apply]");
119
- form_dom = jqForm;
120
- loading_img = jqForm.find(".loading-img").fadeIn();
121
- return true;
122
- },
123
- success : function(responseText) {
124
- if (responseText.objects) {
125
- for (var i = 0; i < responseText.objects.length; i++) {
126
- var this_object = responseText.objects[i];
127
- if (responseText.object_bulk_action == 'delete') {
128
-
129
- form_dom.find(".row-" + this_object.object_type + "-" + this_object.object_id).hide().remove();
130
- if (this_object.object_type == "style") {
131
- /* delete occurences of this option within style dropdowns. */
132
- var style_inputs = $j(".form_style_input");
133
- style_inputs.each(function() {
134
- this_option = $j(this).find("option[value=" + this_object.object_id + "]");
135
- if (this_option.attr("selected") == "selected")
136
- $j(this).find("option[value=0]").attr("selected", "selected");
137
- this_option.remove();
138
- });
139
- } else if (this_object.object_type == "field" || this_object.object_type == "field_option") {
140
- if (this_object.object_type == "field")
141
- var fields_options_input = $j("select.detach-field");
142
- else
143
- var fields_options_input = $j("select.detach-field-option");
144
- fields_options_input.each(function () {
145
- var this_obj = $j(this);
146
- var this_option = this_obj.find("option[value=" + this_object.object_id + "]");
147
- if (this_option.length >=1 && this_obj.find("option").length <= 1) {
148
- $j("<option>")
149
- .attr("value", "-1")
150
- .text(ccfLang.nothing_attached)
151
- .prependTo(this_obj);
152
- }
153
- this_option.remove();
154
- });
155
- if (this_object.object_type == "field")
156
- fields_options_input = $j("select.attach-field option[value=" + this_object.object_id + "]");
157
- else
158
- fields_options_input = $j("select.attach-field-option option[value=" + this_object.object_id + "]");
159
-
160
- fields_options_input.each(function () {
161
- $j(this).remove();
162
- });
163
- }
164
- } else if (responseText.object_bulk_action == 'edit') {
165
- /* TODO: update field and field option slug dropdowns */
166
- if (responseText.objects[i].object_type == "field" || responseText.objects[i].object_type == "field_option") {
167
-
168
- }
169
- }
170
- }
171
- }
172
- },
173
- error: function(XMLHttpRequest, textStatus, errorThrown) {
174
- debug = fx.initDebugWindow();
175
- $j("<div></div>").html(textStatus + " " + errorThrown).appendTo(debug);
176
- //alert(textStatus + " " + errorThrown);
177
- },
178
- complete: function() {
179
- //j("test").html(data).appendTo(debug);
180
- loading_img.fadeOut();
181
- }
182
- });
183
-
184
- //form_submissions = $j("#form-submissions-table tbody").clone();
185
- //$j("#form-submissions-hidden").html(form_submissions.html());
186
-
187
- $j("span.attach-lang").remove();
188
- $j(".attach-check").each(function(){
189
- var name = $j(this).attr('name');
190
- var html = '<input class="attach-button" type="button" name="' + name + '" value="' + ccfLang.attach_button + '" />';
191
- $j(this).after(html).remove(); // add new, then remove original input
192
- });
193
- $j(".attach-button").live("click", function() {
194
- var object_type = $j(this).parents().find(".object-type").attr("value");
195
- var attach_object_field = $j(this).parents().find(".attach-object:first");
196
- var object_id = attach_object_field.attr("class").split(' ')[0].replace(/[^0-9]*([0-9]*)/, "$1");
197
- var detach_object_field = $j(this).parents().find(".detach-object:first");
198
- var attach_object_id = attach_object_field.attr("value");
199
- var attach_object_slug = attach_object_field.find("option[value=" + attach_object_id + "]:eq(0)").first().text();
200
- pattern = new RegExp('<option value="' + attach_object_id + '">', "i");
201
- str = detach_object_field.html();
202
- if (!str.match(pattern)) {
203
- var save_box = fx.initSaveBox(ccfLang.attaching);
204
- $j.ajax({
205
- type: "POST",
206
- url: ccfAjax.url,
207
- data: "nonce=" + ccfLang.nonce + "&action=ccf-ajax&object_attach=1&attach_object_id=" + attach_object_id + "&object_id=" + object_id + "&object_type=" + object_type,
208
- success: function(data) {
209
- new_option = $j("<option></option>").attr("value", attach_object_id).text(attach_object_slug);
210
- detach_object_field.append(new_option);
211
- detach_object_field.find('option[value=-1]').remove();
212
-
213
- },
214
- error: function() { alert(ccfLang.error); },
215
- complete: function() { $j(".save-box").fadeOut().remove(); }
216
- });
217
- }
218
- });
219
-
220
- $j("span.detach-lang").remove();
221
- $j(".detach-check").each(function(){
222
- var name = $j(this).attr('name');
223
- var html = '<input class="detach-button" type="button" name="' + name + '" value="' + ccfLang.detach_button + '" />';
224
- $j(this).after(html).remove(); // add new, then remove original input
225
- });
226
- $j(".detach-button").live("click", function() {
227
- var object_type = $j(this).parents().find(".object-type").attr("value");
228
- var detach_object_field = $j(this).parents().find(".detach-object:first");
229
- var object_id = detach_object_field.attr("class").split(' ')[0].replace(/[^0-9]*([0-9]*)/, "$1");
230
- var detach_object_id = detach_object_field.attr("value");
231
- if (detach_object_id != "-1") {
232
- var detach_object_slug = detach_object_field.find("option[value=" + detach_object_id + "]:eq(0)").first().text();
233
- var save_box = fx.initSaveBox(ccfLang.detaching);
234
- $j.ajax({
235
- type: "POST",
236
- url: ccfAjax.url,
237
- data: "nonce=" + ccfLang.nonce + "&action=ccf-ajax&object_detach=1&detach_object_id=" + detach_object_id + "&object_id=" + object_id + "&object_type=" + object_type,
238
- success: function(data) {
239
- pattern = new RegExp('<option value="' + detach_object_id + '">.*?<\/option>', "i");
240
- new_options = detach_object_field.html().replace(pattern, '');
241
- var patt = /<\/option>/i;
242
- if (!new_options.match(patt)) new_options = '<option value="-1">Nothing Attached!</option>';
243
- detach_object_field.html(new_options);
244
- },
245
- error: function() { alert(ccfLang.error); },
246
- /*beforeSubmit: function() {
247
- debug = fx.initDebugWindow();
248
- $j("<div></div>").html(textStatus + " " + errorThrown).appendTo(debug);
249
- },*/
250
- complete: function() { $j(".save-box").fadeOut().remove(); }
251
- });
252
- }
253
- });
254
-
255
  });
1
+
2
+ function print_r(x, max, sep, l) {
3
+
4
+ l = l || 0;
5
+ max = max || 10;
6
+ sep = sep || ' ';
7
+
8
+ if (l > max) {
9
+ return "[WARNING: Too much recursion]\n";
10
+ }
11
+
12
+ var
13
+ i,
14
+ r = '',
15
+ t = typeof x,
16
+ tab = '';
17
+
18
+ if (x === null) {
19
+ r += "(null)\n";
20
+ } else if (t == 'object') {
21
+
22
+ l++;
23
+
24
+ for (i = 0; i < l; i++) {
25
+ tab += sep;
26
+ }
27
+
28
+ if (x && x.length) {
29
+ t = 'array';
30
+ }
31
+
32
+ r += '(' + t + ") :\n";
33
+
34
+ for (i in x) {
35
+ try {
36
+ r += tab + '<br />[' + i + '] : ' + print_r(x[i], max, sep, (l + 1));
37
+ } catch(e) {
38
+ return "[ERROR: " + e + "]\n";
39
+ }
40
+ }
41
+
42
+ } else {
43
+
44
+ if (t == 'string') {
45
+ if (x == '') {
46
+ x = '(empty)';
47
+ }
48
+ }
49
+
50
+ r += '(' + t + ') ' + x + "\n";
51
+
52
+ }
53
+
54
+ return r;
55
+
56
+ };
57
+
58
+ function getFormFieldValue(field_name, formData) {
59
+ for(var i = 0; i < formData.length; i++) {
60
+ if (formData[i].name == field_name) {
61
+ return formData[i].value;
62
+ }
63
+ }
64
+ return false;
65
+ };
66
+
67
+ /*function pageselectCallback(page_index, jq){
68
+ rows = $j('#form-submissions-hidden > tr')
69
+ items_per_page = 5;
70
+ max_elem = Math.min((page_index+1) * items_per_page, rows.length);
71
+ var new_content = '';
72
+ for(var i=page_index*items_per_page;i<max_elem;i++) {
73
+ if (rows.eq(i) != null) {
74
+ new_content += '<tr class="' + rows.eq(i).attr('class') + '">' + rows.eq(i).html() + '</tr>';
75
+ i += 1;
76
+ new_content += '<tr class="' + rows.eq(i).attr('class') + '">' + rows.eq(i).html() + '</tr>';
77
+ } else i += 1;
78
+ }
79
+ if (new_content != '' && new_content != null)
80
+ $j('#form-submissions-table tbody').empty().append(new_content);
81
+ $j('.submission-content').hide();
82
+ $j('.submission-content-expand-button').click(function() {
83
+ $j(this)
84
+ .parent()
85
+ .parent()
86
+ .parent()
87
+ .next()
88
+ .toggle();
89
+ });
90
+ return false;
91
+ }
92
+
93
+ function initPagination() {
94
+ // Create content inside pagination element
95
+ var num_entries = $j('#form-submissions-hidden > tr').length;
96
+ $j("#form-submissions-pagination").pagination(num_entries, {
97
+ callback: pageselectCallback,
98
+ items_per_page: 5 // Show only one item per page
99
+ });
100
+ }*/
101
+
102
+ $j.preloadImages(ccfAjax.plugin_dir + "/images/wpspin_light.gif"); // preload loading image
103
+ $j(document).ready(function() {
104
+
105
+ //initPagination();
106
+ $j('.ccf-edit-ajax').attr("action", ccfAjax.url);
107
+
108
+ var loading_img = null;
109
+ var form_dom = null;
110
+ $j('.ccf-edit-ajax').ajaxForm({
111
+ data: { action: 'ccf-ajax', nonce: ccfLang.nonce },
112
+ beforeSubmit: function(formData, jqForm, options) {
113
+ var action_type = getFormFieldValue('object_bulk_action', formData);
114
+ //var bulk_apply_button = getFormFieldValue('object_bulk_action', formData);
115
+ var attach_button = getFormFieldValue('buttons', formData);
116
+ var detach_button = getFormFieldValue('object_bulk_action', formData);
117
+ if (action_type == 0) return false;
118
+ bulk_button = jqForm.find("input[name=object_bulk_apply]");
119
+ form_dom = jqForm;
120
+ loading_img = jqForm.find(".loading-img").fadeIn();
121
+ return true;
122
+ },
123
+ success : function(responseText) {
124
+ if (responseText.objects) {
125
+ for (var i = 0; i < responseText.objects.length; i++) {
126
+ var this_object = responseText.objects[i];
127
+ if (responseText.object_bulk_action == 'delete') {
128
+
129
+ form_dom.find(".row-" + this_object.object_type + "-" + this_object.object_id).hide().remove();
130
+ if (this_object.object_type == "style") {
131
+ /* delete occurences of this option within style dropdowns. */
132
+ var style_inputs = $j(".form_style_input");
133
+ style_inputs.each(function() {
134
+ this_option = $j(this).find("option[value=" + this_object.object_id + "]");
135
+ if (this_option.attr("selected") == "selected")
136
+ $j(this).find("option[value=0]").attr("selected", "selected");
137
+ this_option.remove();
138
+ });
139
+ } else if (this_object.object_type == "field" || this_object.object_type == "field_option") {
140
+ if (this_object.object_type == "field")
141
+ var fields_options_input = $j("select.detach-field");
142
+ else
143
+ var fields_options_input = $j("select.detach-field-option");
144
+ fields_options_input.each(function () {
145
+ var this_obj = $j(this);
146
+ var this_option = this_obj.find("option[value=" + this_object.object_id + "]");
147
+ if (this_option.length >=1 && this_obj.find("option").length <= 1) {
148
+ $j("<option>")
149
+ .attr("value", "-1")
150
+ .text(ccfLang.nothing_attached)
151
+ .prependTo(this_obj);
152
+ }
153
+ this_option.remove();
154
+ });
155
+ if (this_object.object_type == "field")
156
+ fields_options_input = $j("select.attach-field option[value=" + this_object.object_id + "]");
157
+ else
158
+ fields_options_input = $j("select.attach-field-option option[value=" + this_object.object_id + "]");
159
+
160
+ fields_options_input.each(function () {
161
+ $j(this).remove();
162
+ });
163
+ }
164
+ } else if (responseText.object_bulk_action == 'edit') {
165
+ /* TODO: update field and field option slug dropdowns */
166
+ if (responseText.objects[i].object_type == "field" || responseText.objects[i].object_type == "field_option") {
167
+
168
+ }
169
+ }
170
+ }
171
+ }
172
+ },
173
+ error: function(XMLHttpRequest, textStatus, errorThrown) {
174
+ debug = fx.initDebugWindow();
175
+ $j("<div></div>").html(textStatus + " " + errorThrown).appendTo(debug);
176
+ //alert(textStatus + " " + errorThrown);
177
+ },
178
+ complete: function() {
179
+ //j("test").html(data).appendTo(debug);
180
+ loading_img.fadeOut();
181
+ }
182
+ });
183
+
184
+ //form_submissions = $j("#form-submissions-table tbody").clone();
185
+ //$j("#form-submissions-hidden").html(form_submissions.html());
186
+
187
+ $j("span.attach-lang").remove();
188
+ $j(".attach-check").each(function(){
189
+ var name = $j(this).attr('name');
190
+ var html = '<input class="attach-button" type="button" name="' + name + '" value="' + ccfLang.attach_button + '" />';
191
+ $j(this).after(html).remove(); // add new, then remove original input
192
+ });
193
+ $j(".attach-button").live("click", function() {
194
+ var object_type = $j(this).parents().find(".object-type").attr("value");
195
+ var attach_object_field = $j(this).parents().find(".attach-object:first");
196
+ var object_id = attach_object_field.attr("class").split(' ')[0].replace(/[^0-9]*([0-9]*)/, "$1");
197
+ var detach_object_field = $j(this).parents().find(".detach-object:first");
198
+ var attach_object_id = attach_object_field.attr("value");
199
+ var attach_object_slug = attach_object_field.find("option[value=" + attach_object_id + "]:eq(0)").first().text();
200
+ pattern = new RegExp('<option value="' + attach_object_id + '">', "i");
201
+ str = detach_object_field.html();
202
+ if (!str.match(pattern)) {
203
+ var save_box = fx.initSaveBox(ccfLang.attaching);
204
+ $j.ajax({
205
+ type: "POST",
206
+ url: ccfAjax.url,
207
+ data: "nonce=" + ccfLang.nonce + "&action=ccf-ajax&object_attach=1&attach_object_id=" + attach_object_id + "&object_id=" + object_id + "&object_type=" + object_type,
208
+ success: function(data) {
209
+ new_option = $j("<option></option>").attr("value", attach_object_id).text(attach_object_slug);
210
+ detach_object_field.append(new_option);
211
+ detach_object_field.find('option[value=-1]').remove();
212
+
213
+ },
214
+ error: function() { alert(ccfLang.error); },
215
+ complete: function() { $j(".save-box").fadeOut().remove(); }
216
+ });
217
+ }
218
+ });
219
+
220
+ $j("span.detach-lang").remove();
221
+ $j(".detach-check").each(function(){
222
+ var name = $j(this).attr('name');
223
+ var html = '<input class="detach-button" type="button" name="' + name + '" value="' + ccfLang.detach_button + '" />';
224
+ $j(this).after(html).remove(); // add new, then remove original input
225
+ });
226
+ $j(".detach-button").live("click", function() {
227
+ var object_type = $j(this).parents().find(".object-type").attr("value");
228
+ var detach_object_field = $j(this).parents().find(".detach-object:first");
229
+ var object_id = detach_object_field.attr("class").split(' ')[0].replace(/[^0-9]*([0-9]*)/, "$1");
230
+ var detach_object_id = detach_object_field.attr("value");
231
+ if (detach_object_id != "-1") {
232
+ var detach_object_slug = detach_object_field.find("option[value=" + detach_object_id + "]:eq(0)").first().text();
233
+ var save_box = fx.initSaveBox(ccfLang.detaching);
234
+ $j.ajax({
235
+ type: "POST",
236
+ url: ccfAjax.url,
237
+ data: "nonce=" + ccfLang.nonce + "&action=ccf-ajax&object_detach=1&detach_object_id=" + detach_object_id + "&object_id=" + object_id + "&object_type=" + object_type,
238
+ success: function(data) {
239
+ pattern = new RegExp('<option value="' + detach_object_id + '">.*?<\/option>', "i");
240
+ new_options = detach_object_field.html().replace(pattern, '');
241
+ var patt = /<\/option>/i;
242
+ if (!new_options.match(patt)) new_options = '<option value="-1">Nothing Attached!</option>';
243
+ detach_object_field.html(new_options);
244
+ },
245
+ error: function() { alert(ccfLang.error); },
246
+ /*beforeSubmit: function() {
247
+ debug = fx.initDebugWindow();
248
+ $j("<div></div>").html(textStatus + " " + errorThrown).appendTo(debug);
249
+ },*/
250
+ complete: function() { $j(".save-box").fadeOut().remove(); }
251
+ });
252
+ }
253
+ });
254
+
255
  });
js/custom-contact-forms-admin-inc.js CHANGED
@@ -1,47 +1,47 @@
1
- $j = jQuery.noConflict();
2
-
3
- (function($j) {
4
- var cache = [];
5
- // Arguments are image paths relative to the current page.
6
- $j.preloadImages = function() {
7
- var args_len = arguments.length;
8
- for (var i = args_len; i--;) {
9
- var cacheImage = document.createElement('img');
10
- cacheImage.src = arguments[i];
11
- cache.push(cacheImage);
12
- }
13
- }
14
- })(jQuery)
15
-
16
- var fx = {
17
- "initDebugWindow" : function() {
18
- if ($j(".debug-window").length == 0) {
19
- debug = $j("<div>").addClass("debug-window").appendTo("body");
20
- debug.click(function() { debug.remove(); });
21
- return debug;
22
- } else {
23
- return $j(".debug-window");
24
- }
25
- },
26
-
27
- "initSaveBox" : function(text) {
28
- if ($j(".save-box").length == 0) {
29
- box = $j("<div>").addClass("save-box").appendTo("body");
30
- $j("<a>")
31
- .attr("href", "#")
32
- .addClass("save-box-close-btn")
33
- .html("&times;")
34
- .click(function(event) { event.preventDefault(); $j(".save-box").fadeOut("slow"); })
35
- .appendTo(box);
36
- $j("<p>").html(text + ' <img src="' + ccfAjax.plugin_dir + '/images/wpspin_light.gif" />').appendTo(".save-box");
37
- return box;
38
- } else {
39
- return $j(".save-box");
40
- }
41
- },
42
-
43
- "boxOut": function(event) {
44
- if (event != undefined) event.preventDefault();
45
- $j(".modal-window").fadeOut("slow", function() { $j(this).remove(); });
46
- }
47
  };
1
+ $j = jQuery.noConflict();
2
+
3
+ (function($j) {
4
+ var cache = [];
5
+ // Arguments are image paths relative to the current page.
6
+ $j.preloadImages = function() {
7
+ var args_len = arguments.length;
8
+ for (var i = args_len; i--;) {
9
+ var cacheImage = document.createElement('img');
10
+ cacheImage.src = arguments[i];
11
+ cache.push(cacheImage);
12
+ }
13
+ }
14
+ })(jQuery)
15
+
16
+ var fx = {
17
+ "initDebugWindow" : function() {
18
+ if ($j(".debug-window").length == 0) {
19
+ debug = $j("<div>").addClass("debug-window").appendTo("body");
20
+ debug.click(function() { debug.remove(); });
21
+ return debug;
22
+ } else {
23
+ return $j(".debug-window");
24
+ }
25
+ },
26
+
27
+ "initSaveBox" : function(text) {
28
+ if ($j(".save-box").length == 0) {
29
+ box = $j("<div>").addClass("save-box").appendTo("body");
30
+ $j("<a>")
31
+ .attr("href", "#")
32
+ .addClass("save-box-close-btn")
33
+ .html("&times;")
34
+ .click(function(event) { event.preventDefault(); $j(".save-box").fadeOut("slow"); })
35
+ .appendTo(box);
36
+ $j("<p>").html(text + ' <img src="' + ccfAjax.plugin_dir + '/images/wpspin_light.gif" />').appendTo(".save-box");
37
+ return box;
38
+ } else {
39
+ return $j(".save-box");
40
+ }
41
+ },
42
+
43
+ "boxOut": function(event) {
44
+ if (event != undefined) event.preventDefault();
45
+ $j(".modal-window").fadeOut("slow", function() { $j(this).remove(); });
46
+ }
47
  };
js/custom-contact-forms-admin.js CHANGED
@@ -1,84 +1,99 @@
1
- $j(document).ready(function(){
2
-
3
- $j('.checkall').live("click", function() {
4
- var checked_status = this.checked;
5
- $j(this).parents("form").find("input.object-check ,input.checkall").each(function() {
6
- if ($j(this).attr("type") == "checkbox")
7
- this.checked = checked_status;
8
- });
9
- });
10
-
11
- $j('.form-options-expand').prepend('<input type="button" class="form-options-expand-link" value="' + ccfLang.more_options + '" />');
12
- $j('.form-options-expand-link').click(function() {
13
- $j(this)
14
- .parent()
15
- .parent()
16
- .parent()
17
- .next()
18
- .find(".form-extra-options:first")
19
- .toggle();
20
- });
21
- $j('.form-extra-options').hide();
22
-
23
- $j('.submission-content').hide();
24
- $j('.submission-content-expand').prepend('<input type="button" class="submission-content-expand-button" value="' + ccfLang.expand + '" />');
25
- $j('.submission-content-expand-button').click(function() {
26
- $j(this)
27
- .parent()
28
- .parent()
29
- .parent()
30
- .next()
31
- .toggle();
32
- });
33
-
34
-
35
- $j('.fixed-fields-options-expand').prepend('<input type="button" class="fixed-fields-options-expand-link" value="' + ccfLang.more_options + '" />');
36
- $j('.fixed-fields-options-expand-link').click(function() {
37
- $j(this)
38
- .parent()
39
- .parent()
40
- .parent()
41
- .next()
42
- .find(".fixed-fields-extra-options:first")
43
- .toggle();
44
- });
45
- $j('.fixed-fields-extra-options').hide();
46
-
47
- $j('.fields-options-expand').prepend('<input type="button" class="fields-options-expand-link" value="' + ccfLang.more_options + '" />');
48
- $j('.fields-options-expand-link').click(function() {
49
- $j(this)
50
- .parent()
51
- .parent()
52
- .parent()
53
- .next()
54
- .find(".fields-extra-options:first")
55
- .toggle();
56
- });
57
- $j('.fields-extra-options').hide();
58
-
59
- $j("#ccf-usage-popover").dialog({
60
- height: 420,
61
- width:600,
62
- modal: true,
63
- autoOpen: false
64
- });
65
-
66
- $j(".usage-popover-button").click(function() { $j("#ccf-usage-popover").dialog('open'); });
67
-
68
- $j("#ccf-quick-start-popover").dialog({
69
- height: 420,
70
- width:600,
71
- modal: true,
72
- autoOpen: false
73
- });
74
-
75
- $j(".quick-start-button").click(function() { $j("#ccf-quick-start-popover").dialog('open'); });
76
-
77
- $j("a[title].toollink").tooltip({
78
- position: "bottom left",
79
- offset: [-2, 10],
80
- effect: "fade",
81
- tipClass: 'ccf-tooltip',
82
- opacity: 1.0
83
- });
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
84
  });
1
+ $j(document).ready(function(){
2
+
3
+ $j('.checkall').live("click", function() {
4
+ var checked_status = this.checked;
5
+ $j(this).parents("form").find("input.object-check ,input.checkall").each(function() {
6
+ if ($j(this).attr("type") == "checkbox")
7
+ this.checked = checked_status;
8
+ });
9
+ });
10
+
11
+ $j('.form-options-expand').prepend('<input type="button" class="form-options-expand-link" value="' + ccfLang.more_options + '" />');
12
+ $j('.form-options-expand-link').click(function() {
13
+ $j(this)
14
+ .parent()
15
+ .parent()
16
+ .parent()
17
+ .next()
18
+ .find(".form-extra-options:first")
19
+ .toggle();
20
+ });
21
+ $j('.form-extra-options').hide();
22
+
23
+ $j('.submission-content').hide();
24
+ $j('.submission-content-expand').prepend('<input type="button" class="submission-content-expand-button" value="' + ccfLang.expand + '" />');
25
+ $j('.submission-content-expand-button').click(function() {
26
+ $j(this)
27
+ .parent()
28
+ .parent()
29
+ .parent()
30
+ .next()
31
+ .toggle();
32
+ });
33
+
34
+
35
+ $j('.fixed-fields-options-expand').prepend('<input type="button" class="fixed-fields-options-expand-link" value="' + ccfLang.more_options + '" />');
36
+ $j('.fixed-fields-options-expand-link').click(function() {
37
+ $j(this)
38
+ .parent()
39
+ .parent()
40
+ .parent()
41
+ .next()
42
+ .find(".fixed-fields-extra-options:first")
43
+ .toggle();
44
+ });
45
+ $j('.fixed-fields-extra-options').hide();
46
+
47
+ $j('.fields-options-expand').prepend('<input type="button" class="fields-options-expand-link" value="' + ccfLang.more_options + '" />');
48
+ $j('.fields-options-expand-link').click(function() {
49
+ $j(this)
50
+ .parent()
51
+ .parent()
52
+ .parent()
53
+ .next()
54
+ .find(".fields-extra-options:first")
55
+ .toggle();
56
+ });
57
+ $j('.fields-extra-options').hide();
58
+
59
+ $j("#ccf-usage-popover").dialog({
60
+ height: 420,
61
+ width:600,
62
+ modal: true,
63
+ autoOpen: false
64
+ });
65
+
66
+ $j(".usage-popover-button").click(function() { $j("#ccf-usage-popover").dialog('open'); });
67
+
68
+ $j("#ccf-quick-start-popover").dialog({
69
+ height: 420,
70
+ width:600,
71
+ modal: true,
72
+ autoOpen: false
73
+ });
74
+
75
+ $j(".quick-start-button").click(function() { $j("#ccf-quick-start-popover").dialog('open'); });
76
+
77
+ $j("a[title].toollink").tooltip({
78
+ position: "bottom left",
79
+ offset: [-2, 10],
80
+ effect: "fade",
81
+ tipClass: 'ccf-tooltip',
82
+ opacity: 1.0
83
+ });
84
+
85
+
86
+ $j("#customcontactforms-admin #create-fields .field-type-selector").change(function () {
87
+ $j("#customcontactforms-admin #create-fields .field-type-selector option:selected").each(function () {
88
+ if ($j(this).text() == "File") {
89
+ $j("#customcontactforms-admin #create-fields .file-fields").fadeIn("slow");
90
+ } else {
91
+ $j("#customcontactforms-admin #create-fields .file-fields").hide();
92
+ }
93
+ });
94
+ }).trigger('change');
95
+
96
+ var $tabs = $j( "#customcontactforms-admin #ccf-tabs" ).tabs();
97
+ if (ccfLang.selected_tab != 0) $tabs.tabs('select', '#' + ccfLang.selected_tab);
98
+
99
  });
js/custom-contact-forms-dashboard.js CHANGED
@@ -1,17 +1,17 @@
1
- /* Custom Contact Forms Dashboard Javascript */
2
-
3
- $j = jQuery.noConflict();
4
-
5
- $j(document).ready(function() {
6
-
7
- $j(".ccf-view-submission").each(function() {
8
- var submission_window = $j(this).next();
9
- submission_window.dialog({
10
- height: 420,
11
- width:600,
12
- modal: true,
13
- autoOpen: false
14
- });
15
- $j(this).click(function() { submission_window.dialog('open'); });
16
- });
17
  });
1
+ /* Custom Contact Forms Dashboard Javascript */
2
+
3
+ $j = jQuery.noConflict();
4
+
5
+ $j(document).ready(function() {
6
+
7
+ $j(".ccf-view-submission").each(function() {
8
+ var submission_window = $j(this).next();
9
+ submission_window.dialog({
10
+ height: 420,
11
+ width:600,
12
+ modal: true,
13
+ autoOpen: false
14
+ });
15
+ $j(this).click(function() { submission_window.dialog('open'); });
16
+ });
17
  });
js/custom-contact-forms-datepicker.js CHANGED
@@ -1,5 +1,5 @@
1
- // JavaScript Document
2
- $m = jQuery.noConflict();
3
- $m(document).ready(function(){
4
- $m(".ccf-datepicker").datepicker();
5
  });
1
+ // JavaScript Document
2
+ $m = jQuery.noConflict();
3
+ $m(document).ready(function(){
4
+ $m(".ccf-datepicker").datepicker();
5
  });
js/eye.js CHANGED
@@ -1,34 +1,34 @@
1
- /**
2
- *
3
- * Zoomimage
4
- * Author: Stefan Petre www.eyecon.ro
5
- *
6
- */
7
- (function($){
8
- var EYE = window.EYE = function() {
9
- var _registered = {
10
- init: []
11
- };
12
- return {
13
- init: function() {
14
- $.each(_registered.init, function(nr, fn){
15
- fn.call();
16
- });
17
- },
18
- extend: function(prop) {
19
- for (var i in prop) {
20
- if (prop[i] != undefined) {
21
- this[i] = prop[i];
22
- }
23
- }
24
- },
25
- register: function(fn, type) {
26
- if (!_registered[type]) {
27
- _registered[type] = [];
28
- }
29
- _registered[type].push(fn);
30
- }
31
- };
32
- }();
33
- $(EYE.init);
34
- })(jQuery);
1
+ /**
2
+ *
3
+ * Zoomimage
4
+ * Author: Stefan Petre www.eyecon.ro
5
+ *
6
+ */
7
+ (function($){
8
+ var EYE = window.EYE = function() {
9
+ var _registered = {
10
+ init: []
11
+ };
12
+ return {
13
+ init: function() {
14
+ $.each(_registered.init, function(nr, fn){
15
+ fn.call();
16
+ });
17
+ },
18
+ extend: function(prop) {
19
+ for (var i in prop) {
20
+ if (prop[i] != undefined) {
21
+ this[i] = prop[i];
22
+ }
23
+ }
24
+ },
25
+ register: function(fn, type) {
26
+ if (!_registered[type]) {
27
+ _registered[type] = [];
28
+ }
29
+ _registered[type].push(fn);
30
+ }
31
+ };
32
+ }();
33
+ $(EYE.init);
34
+ })(jQuery);
js/jquery-ui-1.8.4.custom.js CHANGED
@@ -1,1578 +1,1578 @@
1
- /*!
2
- * jQuery UI 1.8.4
3
- *
4
- * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
5
- * Dual licensed under the MIT or GPL Version 2 licenses.
6
- * http://jquery.org/license
7
- *
8
- * http://docs.jquery.com/UI
9
- */
10
- (function( $, undefined ) {
11
-
12
- // prevent duplicate loading
13
- // this is only a problem because we proxy existing functions
14
- // and we don't want to double proxy them
15
- $.ui = $.ui || {};
16
- if ( $.ui.version ) {
17
- return;
18
- }
19
-
20
- //Helper functions and ui object
21
- $.extend( $.ui, {
22
- version: "1.8.4",
23
-
24
- // $.ui.plugin is deprecated. Use the proxy pattern instead.
25
- plugin: {
26
- add: function( module, option, set ) {
27
- var proto = $.ui[ module ].prototype;
28
- for ( var i in set ) {
29
- proto.plugins[ i ] = proto.plugins[ i ] || [];
30
- proto.plugins[ i ].push( [ option, set[ i ] ] );
31
- }
32
- },
33
- call: function( instance, name, args ) {
34
- var set = instance.plugins[ name ];
35
- if ( !set || !instance.element[ 0 ].parentNode ) {
36
- return;
37
- }
38
-
39
- for ( var i = 0; i < set.length; i++ ) {
40
- if ( instance.options[ set[ i ][ 0 ] ] ) {
41
- set[ i ][ 1 ].apply( instance.element, args );
42
- }
43
- }
44
- }
45
- },
46
-
47
- contains: function( a, b ) {
48
- return document.compareDocumentPosition ?
49
- a.compareDocumentPosition( b ) & 16 :
50
- a !== b && a.contains( b );
51
- },
52
-
53
- hasScroll: function( el, a ) {
54
-
55
- //If overflow is hidden, the element might have extra content, but the user wants to hide it
56
- if ( $( el ).css( "overflow" ) === "hidden") {
57
- return false;
58
- }
59
-
60
- var scroll = ( a && a === "left" ) ? "scrollLeft" : "scrollTop",
61
- has = false;
62
-
63
- if ( el[ scroll ] > 0 ) {
64
- return true;
65
- }
66
-
67
- // TODO: determine which cases actually cause this to happen
68
- // if the element doesn't have the scroll set, see if it's possible to
69
- // set the scroll
70
- el[ scroll ] = 1;
71
- has = ( el[ scroll ] > 0 );
72
- el[ scroll ] = 0;
73
- return has;
74
- },
75
-
76
- isOverAxis: function( x, reference, size ) {
77
- //Determines when x coordinate is over "b" element axis
78
- return ( x > reference ) && ( x < ( reference + size ) );
79
- },
80
-
81
- isOver: function( y, x, top, left, height, width ) {
82
- //Determines when x, y coordinates is over "b" element
83
- return $.ui.isOverAxis( y, top, height ) && $.ui.isOverAxis( x, left, width );
84
- },
85
-
86
- keyCode: {
87
- ALT: 18,
88
- BACKSPACE: 8,
89
- CAPS_LOCK: 20,
90
- COMMA: 188,
91
- COMMAND: 91,
92
- COMMAND_LEFT: 91, // COMMAND
93
- COMMAND_RIGHT: 93,
94
- CONTROL: 17,
95
- DELETE: 46,
96
- DOWN: 40,
97
- END: 35,
98
- ENTER: 13,
99
- ESCAPE: 27,
100
- HOME: 36,
101
- INSERT: 45,
102
- LEFT: 37,
103
- MENU: 93, // COMMAND_RIGHT
104
- NUMPAD_ADD: 107,
105
- NUMPAD_DECIMAL: 110,
106
- NUMPAD_DIVIDE: 111,
107
- NUMPAD_ENTER: 108,
108
- NUMPAD_MULTIPLY: 106,
109
- NUMPAD_SUBTRACT: 109,
110
- PAGE_DOWN: 34,
111
- PAGE_UP: 33,
112
- PERIOD: 190,
113
- RIGHT: 39,
114
- SHIFT: 16,
115
- SPACE: 32,
116
- TAB: 9,
117
- UP: 38,
118
- WINDOWS: 91 // COMMAND
119
- }
120
- });
121
-
122
- //jQuery plugins
123
- $.fn.extend({
124
- _focus: $.fn.focus,
125
- focus: function( delay, fn ) {
126
- return typeof delay === "number" ?
127
- this.each(function() {
128
- var elem = this;
129
- setTimeout(function() {
130
- $( elem ).focus();
131
- if ( fn ) {
132
- fn.call( elem );
133
- }
134
- }, delay );
135
- }) :
136
- this._focus.apply( this, arguments );
137
- },
138
-
139
- enableSelection: function() {
140
- return this
141
- .attr( "unselectable", "off" )
142
- .css( "MozUserSelect", "" );
143
- },
144
-
145
- disableSelection: function() {
146
- return this
147
- .attr( "unselectable", "on" )
148
- .css( "MozUserSelect", "none" );
149
- },
150
-
151
- scrollParent: function() {
152
- var scrollParent;
153
- if (($.browser.msie && (/(static|relative)/).test(this.css('position'))) || (/absolute/).test(this.css('position'))) {
154
- scrollParent = this.parents().filter(function() {
155
- return (/(relative|absolute|fixed)/).test($.curCSS(this,'position',1)) && (/(auto|scroll)/).test($.curCSS(this,'overflow',1)+$.curCSS(this,'overflow-y',1)+$.curCSS(this,'overflow-x',1));
156
- }).eq(0);
157
- } else {
158
- scrollParent = this.parents().filter(function() {
159
- return (/(auto|scroll)/).test($.curCSS(this,'overflow',1)+$.curCSS(this,'overflow-y',1)+$.curCSS(this,'overflow-x',1));
160
- }).eq(0);
161
- }
162
-
163
- return (/fixed/).test(this.css('position')) || !scrollParent.length ? $(document) : scrollParent;
164
- },
165
-
166
- zIndex: function( zIndex ) {
167
- if ( zIndex !== undefined ) {
168
- return this.css( "zIndex", zIndex );
169
- }
170
-
171
- if ( this.length ) {
172
- var elem = $( this[ 0 ] ), position, value;
173
- while ( elem.length && elem[ 0 ] !== document ) {
174
- // Ignore z-index if position is set to a value where z-index is ignored by the browser
175
- // This makes behavior of this function consistent across browsers
176
- // WebKit always returns auto if the element is positioned
177
- position = elem.css( "position" );
178
- if ( position === "absolute" || position === "relative" || position === "fixed" ) {
179
- // IE returns 0 when zIndex is not specified
180
- // other browsers return a string
181
- // we ignore the case of nested elements with an explicit value of 0
182
- // <div style="z-index: -10;"><div style="z-index: 0;"></div></div>
183
- value = parseInt( elem.css( "zIndex" ) );
184
- if ( !isNaN( value ) && value != 0 ) {
185
- return value;
186
- }
187
- }
188
- elem = elem.parent();
189
- }
190
- }
191
-
192
- return 0;
193
- }
194
- });
195
-
196
- $.each( [ "Width", "Height" ], function( i, name ) {
197
- var side = name === "Width" ? [ "Left", "Right" ] : [ "Top", "Bottom" ],
198
- type = name.toLowerCase(),
199
- orig = {
200
- innerWidth: $.fn.innerWidth,
201
- innerHeight: $.fn.innerHeight,
202
- outerWidth: $.fn.outerWidth,
203
- outerHeight: $.fn.outerHeight
204
- };
205
-
206
- function reduce( elem, size, border, margin ) {
207
- $.each( side, function() {
208
- size -= parseFloat( $.curCSS( elem, "padding" + this, true) ) || 0;
209
- if ( border ) {
210
- size -= parseFloat( $.curCSS( elem, "border" + this + "Width", true) ) || 0;
211
- }
212
- if ( margin ) {
213
- size -= parseFloat( $.curCSS( elem, "margin" + this, true) ) || 0;
214
- }
215
- });
216
- return size;
217
- }
218
-
219
- $.fn[ "inner" + name ] = function( size ) {
220
- if ( size === undefined ) {
221
- return orig[ "inner" + name ].call( this );
222
- }
223
-
224
- return this.each(function() {
225
- $.style( this, type, reduce( this, size ) + "px" );
226
- });
227
- };
228
-
229
- $.fn[ "outer" + name] = function( size, margin ) {
230
- if ( typeof size !== "number" ) {
231
- return orig[ "outer" + name ].call( this, size );
232
- }
233
-
234
- return this.each(function() {
235
- $.style( this, type, reduce( this, size, true, margin ) + "px" );
236
- });
237
- };
238
- });
239
-
240
- //Additional selectors
241
- function visible( element ) {
242
- return !$( element ).parents().andSelf().filter(function() {
243
- return $.curCSS( this, "visibility" ) === "hidden" ||
244
- $.expr.filters.hidden( this );
245
- }).length;
246
- }
247
-
248
- $.extend( $.expr[ ":" ], {
249
- data: function( elem, i, match ) {
250
- return !!$.data( elem, match[ 3 ] );
251
- },
252
-
253
- focusable: function( element ) {
254
- var nodeName = element.nodeName.toLowerCase(),
255
- tabIndex = $.attr( element, "tabindex" );
256
- if ( "area" === nodeName ) {
257
- var map = element.parentNode,
258
- mapName = map.name,
259
- img;
260
- if ( !element.href || !mapName || map.nodeName.toLowerCase() !== "map" ) {
261
- return false;
262
- }
263
- img = $( "img[usemap=#" + mapName + "]" )[0];
264
- return !!img && visible( img );
265
- }
266
- return ( /input|select|textarea|button|object/.test( nodeName )
267
- ? !element.disabled
268
- : "a" == nodeName
269
- ? element.href || !isNaN( tabIndex )
270
- : !isNaN( tabIndex ))
271
- // the element and all of its ancestors must be visible
272
- && visible( element );
273
- },
274
-
275
- tabbable: function( element ) {
276
- var tabIndex = $.attr( element, "tabindex" );
277
- return ( isNaN( tabIndex ) || tabIndex >= 0 ) && $( element ).is( ":focusable" );
278
- }
279
- });
280
-
281
- })( jQuery );
282
- /*!
283
- * jQuery UI Widget 1.8.4
284
- *
285
- * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
286
- * Dual licensed under the MIT or GPL Version 2 licenses.
287
- * http://jquery.org/license
288
- *
289
- * http://docs.jquery.com/UI/Widget
290
- */
291
- (function( $, undefined ) {
292
-
293
- var _remove = $.fn.remove;
294
-
295
- $.fn.remove = function( selector, keepData ) {
296
- return this.each(function() {
297
- if ( !keepData ) {
298
- if ( !selector || $.filter( selector, [ this ] ).length ) {
299
- $( "*", this ).add( [ this ] ).each(function() {
300
- $( this ).triggerHandler( "remove" );
301
- });
302
- }
303
- }
304
- return _remove.call( $(this), selector, keepData );
305
- });
306
- };
307
-
308
- $.widget = function( name, base, prototype ) {
309
- var namespace = name.split( "." )[ 0 ],
310
- fullName;
311
- name = name.split( "." )[ 1 ];
312
- fullName = namespace + "-" + name;
313
-
314
- if ( !prototype ) {
315
- prototype = base;
316
- base = $.Widget;
317
- }
318
-
319
- // create selector for plugin
320
- $.expr[ ":" ][ fullName ] = function( elem ) {
321
- return !!$.data( elem, name );
322
- };
323
-
324
- $[ namespace ] = $[ namespace ] || {};
325
- $[ namespace ][ name ] = function( options, element ) {
326
- // allow instantiation without initializing for simple inheritance
327
- if ( arguments.length ) {
328
- this._createWidget( options, element );
329
- }
330
- };
331
-
332
- var basePrototype = new base();
333
- // we need to make the options hash a property directly on the new instance
334
- // otherwise we'll modify the options hash on the prototype that we're
335
- // inheriting from
336
- // $.each( basePrototype, function( key, val ) {
337
- // if ( $.isPlainObject(val) ) {
338
- // basePrototype[ key ] = $.extend( {}, val );
339
- // }
340
- // });
341
- basePrototype.options = $.extend( true, {}, basePrototype.options );
342
- $[ namespace ][ name ].prototype = $.extend( true, basePrototype, {
343
- namespace: namespace,
344
- widgetName: name,
345
- widgetEventPrefix: $[ namespace ][ name ].prototype.widgetEventPrefix || name,
346
- widgetBaseClass: fullName
347
- }, prototype );
348
-
349
- $.widget.bridge( name, $[ namespace ][ name ] );
350
- };
351
-
352
- $.widget.bridge = function( name, object ) {
353
- $.fn[ name ] = function( options ) {
354
- var isMethodCall = typeof options === "string",
355
- args = Array.prototype.slice.call( arguments, 1 ),
356
- returnValue = this;
357
-
358
- // allow multiple hashes to be passed on init
359
- options = !isMethodCall && args.length ?
360
- $.extend.apply( null, [ true, options ].concat(args) ) :
361
- options;
362
-
363
- // prevent calls to internal methods
364
- if ( isMethodCall && options.substring( 0, 1 ) === "_" ) {
365
- return returnValue;
366
- }
367
-
368
- if ( isMethodCall ) {
369
- this.each(function() {
370
- var instance = $.data( this, name ),
371
- methodValue = instance && $.isFunction( instance[options] ) ?
372
- instance[ options ].apply( instance, args ) :
373
- instance;
374
- if ( methodValue !== instance && methodValue !== undefined ) {
375
- returnValue = methodValue;
376
- return false;
377
- }
378
- });
379
- } else {
380
- this.each(function() {
381
- var instance = $.data( this, name );
382
- if ( instance ) {
383
- if ( options ) {
384
- instance.option( options );
385
- }
386
- instance._init();
387
- } else {
388
- $.data( this, name, new object( options, this ) );
389
- }
390
- });
391
- }
392
-
393
- return returnValue;
394
- };
395
- };
396
-
397
- $.Widget = function( options, element ) {
398
- // allow instantiation without initializing for simple inheritance
399
- if ( arguments.length ) {
400
- this._createWidget( options, element );
401
- }
402
- };
403
-
404
- $.Widget.prototype = {
405
- widgetName: "widget",
406
- widgetEventPrefix: "",
407
- options: {
408
- disabled: false
409
- },
410
- _createWidget: function( options, element ) {
411
- // $.widget.bridge stores the plugin instance, but we do it anyway
412
- // so that it's stored even before the _create function runs
413
- $.data( element, this.widgetName, this );
414
- this.element = $( element );
415
- this.options = $.extend( true, {},
416
- this.options,
417
- $.metadata && $.metadata.get( element )[ this.widgetName ],
418
- options );
419
-
420
- var self = this;
421
- this.element.bind( "remove." + this.widgetName, function() {
422
- self.destroy();
423
- });
424
-
425
- this._create();
426
- this._init();
427
- },
428
- _create: function() {},
429
- _init: function() {},
430
-
431
- destroy: function() {
432
- this.element
433
- .unbind( "." + this.widgetName )
434
- .removeData( this.widgetName );
435
- this.widget()
436
- .unbind( "." + this.widgetName )
437
- .removeAttr( "aria-disabled" )
438
- .removeClass(
439
- this.widgetBaseClass + "-disabled " +
440
- "ui-state-disabled" );
441
- },
442
-
443
- widget: function() {
444
- return this.element;
445
- },
446
-
447
- option: function( key, value ) {
448
- var options = key,
449
- self = this;
450
-
451
- if ( arguments.length === 0 ) {
452
- // don't return a reference to the internal hash
453
- return $.extend( {}, self.options );
454
- }
455
-
456
- if (typeof key === "string" ) {
457
- if ( value === undefined ) {
458
- return this.options[ key ];
459
- }
460
- options = {};
461
- options[ key ] = value;
462
- }
463
-
464
- $.each( options, function( key, value ) {
465
- self._setOption( key, value );
466
- });
467
-
468
- return self;
469
- },
470
- _setOption: function( key, value ) {
471
- this.options[ key ] = value;
472
-
473
- if ( key === "disabled" ) {
474
- this.widget()
475
- [ value ? "addClass" : "removeClass"](
476
- this.widgetBaseClass + "-disabled" + " " +
477
- "ui-state-disabled" )
478
- .attr( "aria-disabled", value );
479
- }
480
-
481
- return this;
482
- },
483
-
484
- enable: function() {
485
- return this._setOption( "disabled", false );
486
- },
487
- disable: function() {
488
- return this._setOption( "disabled", true );
489
- },
490
-
491
- _trigger: function( type, event, data ) {
492
- var callback = this.options[ type ];
493
-
494
- event = $.Event( event );
495
- event.type = ( type === this.widgetEventPrefix ?
496
- type :
497
- this.widgetEventPrefix + type ).toLowerCase();
498
- data = data || {};
499
-
500
- // copy original event properties over to the new event
501
- // this would happen if we could call $.event.fix instead of $.Event
502
- // but we don't have a way to force an event to be fixed multiple times
503
- if ( event.originalEvent ) {
504
- for ( var i = $.event.props.length, prop; i; ) {
505
- prop = $.event.props[ --i ];
506
- event[ prop ] = event.originalEvent[ prop ];
507
- }
508
- }
509
-
510
- this.element.trigger( event, data );
511
-
512
- return !( $.isFunction(callback) &&
513
- callback.call( this.element[0], event, data ) === false ||
514
- event.isDefaultPrevented() );
515
- }
516
- };
517
-
518
- })( jQuery );
519
- /*
520
- * jQuery UI Position 1.8.4
521
- *
522
- * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
523
- * Dual licensed under the MIT or GPL Version 2 licenses.
524
- * http://jquery.org/license
525
- *
526
- * http://docs.jquery.com/UI/Position
527
- */
528
- (function( $, undefined ) {
529
-
530
- $.ui = $.ui || {};
531
-
532
- var horizontalPositions = /left|center|right/,
533
- horizontalDefault = "center",
534
- verticalPositions = /top|center|bottom/,
535
- verticalDefault = "center",
536
- _position = $.fn.position,
537
- _offset = $.fn.offset;
538
-
539
- $.fn.position = function( options ) {
540
- if ( !options || !options.of ) {
541
- return _position.apply( this, arguments );
542
- }
543
-
544
- // make a copy, we don't want to modify arguments
545
- options = $.extend( {}, options );
546
-
547
- var target = $( options.of ),
548
- collision = ( options.collision || "flip" ).split( " " ),
549
- offset = options.offset ? options.offset.split( " " ) : [ 0, 0 ],
550
- targetWidth,
551
- targetHeight,
552
- basePosition;
553
-
554
- if ( options.of.nodeType === 9 ) {
555
- targetWidth = target.width();
556
- targetHeight = target.height();
557
- basePosition = { top: 0, left: 0 };
558
- } else if ( options.of.scrollTo && options.of.document ) {
559
- targetWidth = target.width();
560
- targetHeight = target.height();
561
- basePosition = { top: target.scrollTop(), left: target.scrollLeft() };
562
- } else if ( options.of.preventDefault ) {
563
- // force left top to allow flipping
564
- options.at = "left top";
565
- targetWidth = targetHeight = 0;
566
- basePosition = { top: options.of.pageY, left: options.of.pageX };
567
- } else {
568
- targetWidth = target.outerWidth();
569
- targetHeight = target.outerHeight();
570
- basePosition = target.offset();
571
- }
572
-
573
- // force my and at to have valid horizontal and veritcal positions
574
- // if a value is missing or invalid, it will be converted to center
575
- $.each( [ "my", "at" ], function() {
576
- var pos = ( options[this] || "" ).split( " " );
577
- if ( pos.length === 1) {
578
- pos = horizontalPositions.test( pos[0] ) ?
579
- pos.concat( [verticalDefault] ) :
580
- verticalPositions.test( pos[0] ) ?
581
- [ horizontalDefault ].concat( pos ) :
582
- [ horizontalDefault, verticalDefault ];
583
- }
584
- pos[ 0 ] = horizontalPositions.test( pos[0] ) ? pos[ 0 ] : horizontalDefault;
585
- pos[ 1 ] = verticalPositions.test( pos[1] ) ? pos[ 1 ] : verticalDefault;
586
- options[ this ] = pos;
587
- });
588
-
589
- // normalize collision option
590
- if ( collision.length === 1 ) {
591
- collision[ 1 ] = collision[ 0 ];
592
- }
593
-
594
- // normalize offset option
595
- offset[ 0 ] = parseInt( offset[0], 10 ) || 0;
596
- if ( offset.length === 1 ) {
597
- offset[ 1 ] = offset[ 0 ];
598
- }
599
- offset[ 1 ] = parseInt( offset[1], 10 ) || 0;
600
-
601
- if ( options.at[0] === "right" ) {
602
- basePosition.left += targetWidth;
603
- } else if (options.at[0] === horizontalDefault ) {
604
- basePosition.left += targetWidth / 2;
605
- }
606
-
607
- if ( options.at[1] === "bottom" ) {
608
- basePosition.top += targetHeight;
609
- } else if ( options.at[1] === verticalDefault ) {
610
- basePosition.top += targetHeight / 2;
611
- }
612
-
613
- basePosition.left += offset[ 0 ];
614
- basePosition.top += offset[ 1 ];
615
-
616
- return this.each(function() {
617
- var elem = $( this ),
618
- elemWidth = elem.outerWidth(),
619
- elemHeight = elem.outerHeight(),
620
- position = $.extend( {}, basePosition );
621
-
622
- if ( options.my[0] === "right" ) {
623
- position.left -= elemWidth;
624
- } else if ( options.my[0] === horizontalDefault ) {
625
- position.left -= elemWidth / 2;
626
- }
627
-
628
- if ( options.my[1] === "bottom" ) {
629
- position.top -= elemHeight;
630
- } else if ( options.my[1] === verticalDefault ) {
631
- position.top -= elemHeight / 2;
632
- }
633
-
634
- // prevent fractions (see #5280)
635
- position.left = parseInt( position.left );
636
- position.top = parseInt( position.top );
637
-
638
- $.each( [ "left", "top" ], function( i, dir ) {
639
- if ( $.ui.position[ collision[i] ] ) {
640
- $.ui.position[ collision[i] ][ dir ]( position, {
641
- targetWidth: targetWidth,
642
- targetHeight: targetHeight,
643
- elemWidth: elemWidth,
644
- elemHeight: elemHeight,
645
- offset: offset,
646
- my: options.my,
647
- at: options.at
648
- });
649
- }
650
- });
651
-
652
- if ( $.fn.bgiframe ) {
653
- elem.bgiframe();
654
- }
655
- elem.offset( $.extend( position, { using: options.using } ) );
656
- });
657
- };
658
-
659
- $.ui.position = {
660
- fit: {
661
- left: function( position, data ) {
662
- var win = $( window ),
663
- over = position.left + data.elemWidth - win.width() - win.scrollLeft();
664
- position.left = over > 0 ? position.left - over : Math.max( 0, position.left );
665
- },
666
- top: function( position, data ) {
667
- var win = $( window ),
668
- over = position.top + data.elemHeight - win.height() - win.scrollTop();
669
- position.top = over > 0 ? position.top - over : Math.max( 0, position.top );
670
- }
671
- },
672
-
673
- flip: {
674
- left: function( position, data ) {
675
- if ( data.at[0] === "center" ) {
676
- return;
677
- }
678
- var win = $( window ),
679
- over = position.left + data.elemWidth - win.width() - win.scrollLeft(),
680
- myOffset = data.my[ 0 ] === "left" ?
681
- -data.elemWidth :
682
- data.my[ 0 ] === "right" ?
683
- data.elemWidth :
684
- 0,
685
- offset = -2 * data.offset[ 0 ];
686
- position.left += position.left < 0 ?
687
- myOffset + data.targetWidth + offset :
688
- over > 0 ?
689
- myOffset - data.targetWidth + offset :
690
- 0;
691
- },
692
- top: function( position, data ) {
693
- if ( data.at[1] === "center" ) {
694
- return;
695
- }
696
- var win = $( window ),
697
- over = position.top + data.elemHeight - win.height() - win.scrollTop(),
698
- myOffset = data.my[ 1 ] === "top" ?
699
- -data.elemHeight :
700
- data.my[ 1 ] === "bottom" ?
701
- data.elemHeight :
702
- 0,
703
- atOffset = data.at[ 1 ] === "top" ?
704
- data.targetHeight :
705
- -data.targetHeight,
706
- offset = -2 * data.offset[ 1 ];
707
- position.top += position.top < 0 ?
708
- myOffset + data.targetHeight + offset :
709
- over > 0 ?
710
- myOffset + atOffset + offset :
711
- 0;
712
- }
713
- }
714
- };
715
-
716
- // offset setter from jQuery 1.4
717
- if ( !$.offset.setOffset ) {
718
- $.offset.setOffset = function( elem, options ) {
719
- // set position first, in-case top/left are set even on static elem
720
- if ( /static/.test( $.curCSS( elem, "position" ) ) ) {
721
- elem.style.position = "relative";
722
- }
723
- var curElem = $( elem ),
724
- curOffset = curElem.offset(),
725
- curTop = parseInt( $.curCSS( elem, "top", true ), 10 ) || 0,
726
- curLeft = parseInt( $.curCSS( elem, "left", true ), 10) || 0,
727
- props = {
728
- top: (options.top - curOffset.top) + curTop,
729
- left: (options.left - curOffset.left) + curLeft
730
- };
731
-
732
- if ( 'using' in options ) {
733
- options.using.call( elem, props );
734
- } else {
735
- curElem.css( props );
736
- }
737
- };
738
-
739
- $.fn.offset = function( options ) {
740
- var elem = this[ 0 ];
741
- if ( !elem || !elem.ownerDocument ) { return null; }
742
- if ( options ) {
743
- return this.each(function() {
744
- $.offset.setOffset( this, options );
745
- });
746
- }
747
- return _offset.call( this );
748
- };
749
- }
750
-
751
- }( jQuery ));
752
- /*
753
- * jQuery UI Dialog 1.8.4
754
- *
755
- * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
756
- * Dual licensed under the MIT or GPL Version 2 licenses.
757
- * http://jquery.org/license
758
- *
759
- * http://docs.jquery.com/UI/Dialog
760
- *
761
- * Depends:
762
- * jquery.ui.core.js
763
- * jquery.ui.widget.js
764
- * jquery.ui.button.js
765
- * jquery.ui.draggable.js
766
- * jquery.ui.mouse.js
767
- * jquery.ui.position.js
768
- * jquery.ui.resizable.js
769
- */
770
- (function( $, undefined ) {
771
-
772
- var uiDialogClasses =
773
- 'ui-dialog ' +
774
- 'ui-widget ' +
775
- 'ui-widget-content ' +
776
- 'ui-corner-all ';
777
-
778
- $.widget("ui.dialog", {
779
- options: {
780
- autoOpen: true,
781
- buttons: {},
782
- closeOnEscape: true,
783
- closeText: 'close',
784
- dialogClass: '',
785
- draggable: true,
786
- hide: null,
787
- height: 'auto',
788
- maxHeight: false,
789
- maxWidth: false,
790
- minHeight: 150,
791
- minWidth: 150,
792
- modal: false,
793
- position: {
794
- my: 'center',
795
- at: 'center',
796
- of: window,
797
- collision: 'fit',
798
- // ensure that the titlebar is never outside the document
799
- using: function(pos) {
800
- var topOffset = $(this).css(pos).offset().top;
801
- if (topOffset < 0) {
802
- $(this).css('top', pos.top - topOffset);
803
- }
804
- }
805
- },
806
- resizable: true,
807
- show: null,
808
- stack: true,
809
- title: '',
810
- width: 300,
811
- zIndex: 1000
812
- },
813
-
814
- _create: function() {
815
- this.originalTitle = this.element.attr('title');
816
- // #5742 - .attr() might return a DOMElement
817
- if ( typeof this.originalTitle !== "string" ) {
818
- this.originalTitle = "";
819
- }
820
-
821
- var self = this,
822
- options = self.options,
823
-
824
- title = options.title || self.originalTitle || '&#160;',
825
- titleId = $.ui.dialog.getTitleId(self.element),
826
-
827
- uiDialog = (self.uiDialog = $('<div></div>'))
828
- .appendTo(document.body)
829
- .hide()
830
- .addClass(uiDialogClasses + options.dialogClass)
831
- .css({
832
- zIndex: options.zIndex
833
- })
834
- // setting tabIndex makes the div focusable
835
- // setting outline to 0 prevents a border on focus in Mozilla
836
- .attr('tabIndex', -1).css('outline', 0).keydown(function(event) {
837
- if (options.closeOnEscape && event.keyCode &&
838
- event.keyCode === $.ui.keyCode.ESCAPE) {
839
-
840
- self.close(event);
841
- event.preventDefault();
842
- }
843
- })
844
- .attr({
845
- role: 'dialog',
846
- 'aria-labelledby': titleId
847
- })
848
- .mousedown(function(event) {
849
- self.moveToTop(false, event);
850
- }),
851
-
852
- uiDialogContent = self.element
853
- .show()
854
- .removeAttr('title')
855
- .addClass(
856
- 'ui-dialog-content ' +
857
- 'ui-widget-content')
858
- .appendTo(uiDialog),
859
-
860
- uiDialogTitlebar = (self.uiDialogTitlebar = $('<div></div>'))
861
- .addClass(
862
- 'ui-dialog-titlebar ' +
863
- 'ui-widget-header ' +
864
- 'ui-corner-all ' +
865
- 'ui-helper-clearfix'
866
- )
867
- .prependTo(uiDialog),
868
-
869
- uiDialogTitlebarClose = $('<a href="#"></a>')
870
- .addClass(
871
- 'ui-dialog-titlebar-close ' +
872
- 'ui-corner-all'
873
- )
874
- .attr('role', 'button')
875
- .hover(
876
- function() {
877
- uiDialogTitlebarClose.addClass('ui-state-hover');
878
- },
879
- function() {
880
- uiDialogTitlebarClose.removeClass('ui-state-hover');
881
- }
882
- )
883
- .focus(function() {
884
- uiDialogTitlebarClose.addClass('ui-state-focus');
885
- })
886
- .blur(function() {
887
- uiDialogTitlebarClose.removeClass('ui-state-focus');
888
- })
889
- .click(function(event) {
890
- self.close(event);
891
- return false;
892
- })
893
- .appendTo(uiDialogTitlebar),
894
-
895
- uiDialogTitlebarCloseText = (self.uiDialogTitlebarCloseText = $('<span></span>'))
896
- .addClass(
897
- 'ui-icon ' +
898
- 'ui-icon-closethick'
899
- )
900
- .text(options.closeText)
901
- .appendTo(uiDialogTitlebarClose),
902
-
903
- uiDialogTitle = $('<span></span>')
904
- .addClass('ui-dialog-title')
905
- .attr('id', titleId)
906
- .html(title)
907
- .prependTo(uiDialogTitlebar);
908
-
909
- //handling of deprecated beforeclose (vs beforeClose) option
910
- //Ticket #4669 http://dev.jqueryui.com/ticket/4669
911
- //TODO: remove in 1.9pre
912
- if ($.isFunction(options.beforeclose) && !$.isFunction(options.beforeClose)) {
913
- options.beforeClose = options.beforeclose;
914
- }
915
-
916
- uiDialogTitlebar.find("*").add(uiDialogTitlebar).disableSelection();
917
-
918
- if (options.draggable && $.fn.draggable) {
919
- self._makeDraggable();
920
- }
921
- if (options.resizable && $.fn.resizable) {
922
- self._makeResizable();
923
- }
924
-
925
- self._createButtons(options.buttons);
926
- self._isOpen = false;
927
-
928
- if ($.fn.bgiframe) {
929
- uiDialog.bgiframe();
930
- }
931
- },
932
-
933
- _init: function() {
934
- if ( this.options.autoOpen ) {
935
- this.open();
936
- }
937
- },
938
-
939
- destroy: function() {
940
- var self = this;
941
-
942
- if (self.overlay) {
943
- self.overlay.destroy();
944
- }
945
- self.uiDialog.hide();
946
- self.element
947
- .unbind('.dialog')
948
- .removeData('dialog')
949
- .removeClass('ui-dialog-content ui-widget-content')
950
- .hide().appendTo('body');
951
- self.uiDialog.remove();
952
-
953
- if (self.originalTitle) {
954
- self.element.attr('title', self.originalTitle);
955
- }
956
-
957
- return self;
958
- },
959
-
960
- widget: function() {
961
- return this.uiDialog;
962
- },
963
-
964
- close: function(event) {
965
- var self = this,
966
- maxZ;
967
-
968
- if (false === self._trigger('beforeClose', event)) {
969
- return;
970
- }
971
-
972
- if (self.overlay) {
973
- self.overlay.destroy();
974
- }
975
- self.uiDialog.unbind('keypress.ui-dialog');
976
-
977
- self._isOpen = false;
978
-
979
- if (self.options.hide) {
980
- self.uiDialog.hide(self.options.hide, function() {
981
- self._trigger('close', event);
982
- });
983
- } else {
984
- self.uiDialog.hide();
985
- self._trigger('close', event);
986
- }
987
-
988
- $.ui.dialog.overlay.resize();
989
-
990
- // adjust the maxZ to allow other modal dialogs to continue to work (see #4309)
991
- if (self.options.modal) {
992
- maxZ = 0;
993
- $('.ui-dialog').each(function() {
994
- if (this !== self.uiDialog[0]) {
995
- maxZ = Math.max(maxZ, $(this).css('z-index'));
996
- }
997
- });
998
- $.ui.dialog.maxZ = maxZ;
999
- }
1000
-
1001
- return self;
1002
- },
1003
-
1004
- isOpen: function() {
1005
- return this._isOpen;
1006
- },
1007
-
1008
- // the force parameter allows us to move modal dialogs to their correct
1009
- // position on open
1010
- moveToTop: function(force, event) {
1011
- var self = this,
1012
- options = self.options,
1013
- saveScroll;
1014
-
1015
- if ((options.modal && !force) ||
1016
- (!options.stack && !options.modal)) {
1017
- return self._trigger('focus', event);
1018
- }
1019
-
1020
- if (options.zIndex > $.ui.dialog.maxZ) {
1021
- $.ui.dialog.maxZ = options.zIndex;
1022
- }
1023
- if (self.overlay) {
1024
- $.ui.dialog.maxZ += 1;
1025
- self.overlay.$el.css('z-index', $.ui.dialog.overlay.maxZ = $.ui.dialog.maxZ);
1026
- }
1027
-
1028
- //Save and then restore scroll since Opera 9.5+ resets when parent z-Index is changed.
1029
- // http://ui.jquery.com/bugs/ticket/3193
1030
- saveScroll = { scrollTop: self.element.attr('scrollTop'), scrollLeft: self.element.attr('scrollLeft') };
1031
- $.ui.dialog.maxZ += 1;
1032
- self.uiDialog.css('z-index', $.ui.dialog.maxZ);
1033
- self.element.attr(saveScroll);
1034
- self._trigger('focus', event);
1035
-
1036
- return self;
1037
- },
1038
-
1039
- open: function() {
1040
- if (this._isOpen) { return; }
1041
-
1042
- var self = this,
1043
- options = self.options,
1044
- uiDialog = self.uiDialog;
1045
-
1046
- self.overlay = options.modal ? new $.ui.dialog.overlay(self) : null;
1047
- if (uiDialog.next().length) {
1048
- uiDialog.appendTo('body');
1049
- }
1050
- self._size();
1051
- self._position(options.position);
1052
- uiDialog.show(options.show);
1053
- self.moveToTop(true);
1054
-
1055
- // prevent tabbing out of modal dialogs
1056
- if (options.modal) {
1057
- uiDialog.bind('keypress.ui-dialog', function(event) {
1058
- if (event.keyCode !== $.ui.keyCode.TAB) {
1059
- return;
1060
- }
1061
-
1062
- var tabbables = $(':tabbable', this),
1063
- first = tabbables.filter(':first'),
1064
- last = tabbables.filter(':last');
1065
-
1066
- if (event.target === last[0] && !event.shiftKey) {
1067
- first.focus(1);
1068
- return false;
1069
- } else if (event.target === first[0] && event.shiftKey) {
1070
- last.focus(1);
1071
- return false;
1072
- }
1073
- });
1074
- }
1075
-
1076
- // set focus to the first tabbable element in the content area or the first button
1077
- // if there are no tabbable elements, set focus on the dialog itself
1078
- $(self.element.find(':tabbable').get().concat(
1079
- uiDialog.find('.ui-dialog-buttonpane :tabbable').get().concat(
1080
- uiDialog.get()))).eq(0).focus();
1081
-
1082
- self._trigger('open');
1083
- self._isOpen = true;
1084
-
1085
- return self;
1086
- },
1087
-
1088
- _createButtons: function(buttons) {
1089
- var self = this,
1090
- hasButtons = false,
1091
- uiDialogButtonPane = $('<div></div>')
1092
- .addClass(
1093
- 'ui-dialog-buttonpane ' +
1094
- 'ui-widget-content ' +
1095
- 'ui-helper-clearfix'
1096
- ),
1097
- uiButtonSet = $( "<div></div>" )
1098
- .addClass( "ui-dialog-buttonset" )
1099
- .appendTo( uiDialogButtonPane );
1100
-
1101
- // if we already have a button pane, remove it
1102
- self.uiDialog.find('.ui-dialog-buttonpane').remove();
1103
-
1104
- if (typeof buttons === 'object' && buttons !== null) {
1105
- $.each(buttons, function() {
1106
- return !(hasButtons = true);
1107
- });
1108
- }
1109
- if (hasButtons) {
1110
- $.each(buttons, function(name, fn) {
1111
- var button = $('<button type="button"></button>')
1112
- .text(name)
1113
- .click(function() { fn.apply(self.element[0], arguments); })
1114
- .appendTo(uiButtonSet);
1115
- if ($.fn.button) {
1116
- button.button();
1117
- }
1118
- });
1119
- uiDialogButtonPane.appendTo(self.uiDialog);
1120
- }
1121
- },
1122
-
1123
- _makeDraggable: function() {
1124
- var self = this,
1125
- options = self.options,
1126
- doc = $(document),
1127
- heightBeforeDrag;
1128
-
1129
- function filteredUi(ui) {
1130
- return {
1131
- position: ui.position,
1132
- offset: ui.offset
1133
- };
1134
- }
1135
-
1136
- self.uiDialog.draggable({
1137
- cancel: '.ui-dialog-content, .ui-dialog-titlebar-close',
1138
- handle: '.ui-dialog-titlebar',
1139
- containment: 'document',
1140
- start: function(event, ui) {
1141
- heightBeforeDrag = options.height === "auto" ? "auto" : $(this).height();
1142
- $(this).height($(this).height()).addClass("ui-dialog-dragging");
1143
- self._trigger('dragStart', event, filteredUi(ui));
1144
- },
1145
- drag: function(event, ui) {
1146
- self._trigger('drag', event, filteredUi(ui));
1147
- },
1148
- stop: function(event, ui) {
1149
- options.position = [ui.position.left - doc.scrollLeft(),
1150
- ui.position.top - doc.scrollTop()];
1151
- $(this).removeClass("ui-dialog-dragging").height(heightBeforeDrag);
1152
- self._trigger('dragStop', event, filteredUi(ui));
1153
- $.ui.dialog.overlay.resize();
1154
- }
1155
- });
1156
- },
1157
-
1158
- _makeResizable: function(handles) {
1159
- handles = (handles === undefined ? this.options.resizable : handles);
1160
- var self = this,
1161
- options = self.options,
1162
- // .ui-resizable has position: relative defined in the stylesheet
1163
- // but dialogs have to use absolute or fixed positioning
1164
- position = self.uiDialog.css('position'),
1165
- resizeHandles = (typeof handles === 'string' ?
1166
- handles :
1167
- 'n,e,s,w,se,sw,ne,nw'
1168
- );
1169
-
1170
- function filteredUi(ui) {
1171
- return {
1172
- originalPosition: ui.originalPosition,
1173
- originalSize: ui.originalSize,
1174
- position: ui.position,
1175
- size: ui.size
1176
- };
1177
- }
1178
-
1179
- self.uiDialog.resizable({
1180
- cancel: '.ui-dialog-content',
1181
- containment: 'document',
1182
- alsoResize: self.element,
1183
- maxWidth: options.maxWidth,
1184
- maxHeight: options.maxHeight,
1185
- minWidth: options.minWidth,
1186
- minHeight: self._minHeight(),
1187
- handles: resizeHandles,
1188
- start: function(event, ui) {
1189
- $(this).addClass("ui-dialog-resizing");
1190
- self._trigger('resizeStart', event, filteredUi(ui));
1191
- },
1192
- resize: function(event, ui) {
1193
- self._trigger('resize', event, filteredUi(ui));
1194
- },
1195
- stop: function(event, ui) {
1196
- $(this).removeClass("ui-dialog-resizing");
1197
- options.height = $(this).height();
1198
- options.width = $(this).width();
1199
- self._trigger('resizeStop', event, filteredUi(ui));
1200
- $.ui.dialog.overlay.resize();
1201
- }
1202
- })
1203
- .css('position', position)
1204
- .find('.ui-resizable-se').addClass('ui-icon ui-icon-grip-diagonal-se');
1205
- },
1206
-
1207
- _minHeight: function() {
1208
- var options = this.options;
1209
-
1210
- if (options.height === 'auto') {
1211
- return options.minHeight;
1212
- } else {
1213
- return Math.min(options.minHeight, options.height);
1214
- }
1215
- },
1216
-
1217
- _position: function(position) {
1218
- var myAt = [],
1219
- offset = [0, 0],
1220
- isVisible;
1221
-
1222
- if (position) {
1223
- // deep extending converts arrays to objects in jQuery <= 1.3.2 :-(
1224
- // if (typeof position == 'string' || $.isArray(position)) {
1225
- // myAt = $.isArray(position) ? position : position.split(' ');
1226
-
1227
- if (typeof position === 'string' || (typeof position === 'object' && '0' in position)) {
1228
- myAt = position.split ? position.split(' ') : [position[0], position[1]];
1229
- if (myAt.length === 1) {
1230
- myAt[1] = myAt[0];
1231
- }
1232
-
1233
- $.each(['left', 'top'], function(i, offsetPosition) {
1234
- if (+myAt[i] === myAt[i]) {
1235
- offset[i] = myAt[i];
1236
- myAt[i] = offsetPosition;
1237
- }
1238
- });
1239
-
1240
- position = {
1241
- my: myAt.join(" "),
1242
- at: myAt.join(" "),
1243
- offset: offset.join(" ")
1244
- };
1245
- }
1246
-
1247
- position = $.extend({}, $.ui.dialog.prototype.options.position, position);
1248
- } else {
1249
- position = $.ui.dialog.prototype.options.position;
1250
- }
1251
-
1252
- // need to show the dialog to get the actual offset in the position plugin
1253
- isVisible = this.uiDialog.is(':visible');
1254
- if (!isVisible) {
1255
- this.uiDialog.show();
1256
- }
1257
- this.uiDialog
1258
- // workaround for jQuery bug #5781 http://dev.jquery.com/ticket/5781
1259
- .css({ top: 0, left: 0 })
1260
- .position(position);
1261
- if (!isVisible) {
1262
- this.uiDialog.hide();
1263
- }
1264
- },
1265
-
1266
- _setOption: function(key, value){
1267
- var self = this,
1268
- uiDialog = self.uiDialog,
1269
- isResizable = uiDialog.is(':data(resizable)'),
1270
- resize = false;
1271
-
1272
- switch (key) {
1273
- //handling of deprecated beforeclose (vs beforeClose) option
1274
- //Ticket #4669 http://dev.jqueryui.com/ticket/4669
1275
- //TODO: remove in 1.9pre
1276
- case "beforeclose":
1277
- key = "beforeClose";
1278
- break;
1279
- case "buttons":
1280
- self._createButtons(value);
1281
- resize = true;
1282
- break;
1283
- case "closeText":
1284
- // convert whatever was passed in to a string, for text() to not throw up
1285
- self.uiDialogTitlebarCloseText.text("" + value);
1286
- break;
1287
- case "dialogClass":
1288
- uiDialog
1289
- .removeClass(self.options.dialogClass)
1290
- .addClass(uiDialogClasses + value);
1291
- break;
1292
- case "disabled":
1293
- if (value) {
1294
- uiDialog.addClass('ui-dialog-disabled');
1295
- } else {
1296
- uiDialog.removeClass('ui-dialog-disabled');
1297
- }
1298
- break;
1299
- case "draggable":
1300
- if (value) {
1301
- self._makeDraggable();
1302
- } else {
1303
- uiDialog.draggable('destroy');
1304
- }
1305
- break;
1306
- case "height":
1307
- resize = true;
1308
- break;
1309
- case "maxHeight":
1310
- if (isResizable) {
1311
- uiDialog.resizable('option', 'maxHeight', value);
1312
- }
1313
- resize = true;
1314
- break;
1315
- case "maxWidth":
1316
- if (isResizable) {
1317
- uiDialog.resizable('option', 'maxWidth', value);
1318
- }
1319
- resize = true;
1320
- break;
1321
- case "minHeight":
1322
- if (isResizable) {
1323
- uiDialog.resizable('option', 'minHeight', value);
1324
- }
1325
- resize = true;
1326
- break;
1327
- case "minWidth":
1328
- if (isResizable) {
1329
- uiDialog.resizable('option', 'minWidth', value);
1330
- }
1331
- resize = true;
1332
- break;
1333
- case "position":
1334
- self._position(value);
1335
- break;
1336
- case "resizable":
1337
- // currently resizable, becoming non-resizable
1338
- if (isResizable && !value) {
1339
- uiDialog.resizable('destroy');
1340
- }
1341
-
1342
- // currently resizable, changing handles
1343
- if (isResizable && typeof value === 'string') {
1344
- uiDialog.resizable('option', 'handles', value);
1345
- }
1346
-
1347
- // currently non-resizable, becoming resizable
1348
- if (!isResizable && value !== false) {
1349
- self._makeResizable(value);
1350
- }
1351
- break;
1352
- case "title":
1353
- // convert whatever was passed in o a string, for html() to not throw up
1354
- $(".ui-dialog-title", self.uiDialogTitlebar).html("" + (value || '&#160;'));
1355
- break;
1356
- case "width":
1357
- resize = true;
1358
- break;
1359
- }
1360
-
1361
- $.Widget.prototype._setOption.apply(self, arguments);
1362
- if (resize) {
1363
- self._size();
1364
- }
1365
- },
1366
-
1367
- _size: function() {
1368
- /* If the user has resized the dialog, the .ui-dialog and .ui-dialog-content
1369
- * divs will both have width and height set, so we need to reset them
1370
- */
1371
- var options = this.options,
1372
- nonContentHeight;
1373
-
1374
- // reset content sizing
1375
- // hide for non content measurement because height: 0 doesn't work in IE quirks mode (see #4350)
1376
- this.element.css({
1377
- width: 'auto',
1378
- minHeight: 0,
1379
- height: 0
1380
- });
1381
-
1382
- if (options.minWidth > options.width) {
1383
- options.width = options.minWidth;
1384
- }
1385
-
1386
- // reset wrapper sizing
1387
- // determine the height of all the non-content elements
1388
- nonContentHeight = this.uiDialog.css({
1389
- height: 'auto',
1390
- width: options.width
1391
- })
1392
- .height();
1393
-
1394
- this.element
1395
- .css(options.height === 'auto' ? {
1396
- minHeight: Math.max(options.minHeight - nonContentHeight, 0),
1397
- height: 'auto'
1398
- } : {
1399
- minHeight: 0,
1400
- height: Math.max(options.height - nonContentHeight, 0)
1401
- })
1402
- .show();
1403
-
1404
- if (this.uiDialog.is(':data(resizable)')) {
1405
- this.uiDialog.resizable('option', 'minHeight', this._minHeight());
1406
- }
1407
- }
1408
- });
1409
-
1410
- $.extend($.ui.dialog, {
1411
- version: "1.8.4",
1412
-
1413
- uuid: 0,
1414
- maxZ: 0,
1415
-
1416
- getTitleId: function($el) {
1417
- var id = $el.attr('id');
1418
- if (!id) {
1419
- this.uuid += 1;
1420
- id = this.uuid;
1421
- }
1422
- return 'ui-dialog-title-' + id;
1423
- },
1424
-
1425
- overlay: function(dialog) {
1426
- this.$el = $.ui.dialog.overlay.create(dialog);
1427
- }
1428
- });
1429
-
1430
- $.extend($.ui.dialog.overlay, {
1431
- instances: [],
1432
- // reuse old instances due to IE memory leak with alpha transparency (see #5185)
1433
- oldInstances: [],
1434
- maxZ: 0,
1435
- events: $.map('focus,mousedown,mouseup,keydown,keypress,click'.split(','),
1436
- function(event) { return event + '.dialog-overlay'; }).join(' '),
1437
- create: function(dialog) {
1438
- if (this.instances.length === 0) {
1439
- // prevent use of anchors and inputs
1440
- // we use a setTimeout in case the overlay is created from an
1441
- // event that we're going to be cancelling (see #2804)
1442
- setTimeout(function() {
1443
- // handle $(el).dialog().dialog('close') (see #4065)
1444
- if ($.ui.dialog.overlay.instances.length) {
1445
- $(document).bind($.ui.dialog.overlay.events, function(event) {
1446
- // stop events if the z-index of the target is < the z-index of the overlay
1447
- return ($(event.target).zIndex() >= $.ui.dialog.overlay.maxZ);
1448
- });
1449
- }
1450
- }, 1);
1451
-
1452
- // allow closing by pressing the escape key
1453
- $(document).bind('keydown.dialog-overlay', function(event) {
1454
- if (dialog.options.closeOnEscape && event.keyCode &&
1455
- event.keyCode === $.ui.keyCode.ESCAPE) {
1456
-
1457
- dialog.close(event);
1458
- event.preventDefault();
1459
- }
1460
- });
1461
-
1462
- // handle window resize
1463
- $(window).bind('resize.dialog-overlay', $.ui.dialog.overlay.resize);
1464
- }
1465
-
1466
- var $el = (this.oldInstances.pop() || $('<div></div>').addClass('ui-widget-overlay'))
1467
- .appendTo(document.body)
1468
- .css({
1469
- width: this.width(),
1470
- height: this.height()
1471
- });
1472
-
1473
- if ($.fn.bgiframe) {
1474
- $el.bgiframe();
1475
- }
1476
-
1477
- this.instances.push($el);
1478
- return $el;
1479
- },
1480
-
1481
- destroy: function($el) {
1482
- this.oldInstances.push(this.instances.splice($.inArray($el, this.instances), 1)[0]);
1483
-
1484
- if (this.instances.length === 0) {
1485
- $([document, window]).unbind('.dialog-overlay');
1486
- }
1487
-
1488
- $el.remove();
1489
-
1490
- // adjust the maxZ to allow other modal dialogs to continue to work (see #4309)
1491
- var maxZ = 0;
1492
- $.each(this.instances, function() {
1493
- maxZ = Math.max(maxZ, this.css('z-index'));
1494
- });
1495
- this.maxZ = maxZ;
1496
- },
1497
-
1498
- height: function() {
1499
- var scrollHeight,
1500
- offsetHeight;
1501
- // handle IE 6
1502
- if ($.browser.msie && $.browser.version < 7) {
1503
- scrollHeight = Math.max(
1504
- document.documentElement.scrollHeight,
1505
- document.body.scrollHeight
1506
- );
1507
- offsetHeight = Math.max(
1508
- document.documentElement.offsetHeight,
1509
- document.body.offsetHeight
1510
- );
1511
-
1512
- if (scrollHeight < offsetHeight) {
1513
- return $(window).height() + 'px';
1514
- } else {
1515
- return scrollHeight + 'px';
1516
- }
1517
- // handle "good" browsers
1518
- } else {
1519
- return $(document).height() + 'px';
1520
- }
1521
- },
1522
-
1523
- width: function() {
1524
- var scrollWidth,
1525
- offsetWidth;
1526
- // handle IE 6
1527
- if ($.browser.msie && $.browser.version < 7) {
1528
- scrollWidth = Math.max(
1529
- document.documentElement.scrollWidth,
1530
- document.body.scrollWidth
1531
- );
1532
- offsetWidth = Math.max(
1533
- document.documentElement.offsetWidth,
1534
- document.body.offsetWidth
1535
- );
1536
-
1537
- if (scrollWidth < offsetWidth) {
1538
- return $(window).width() + 'px';
1539
- } else {
1540
- return scrollWidth + 'px';
1541
- }
1542
- // handle "good" browsers
1543
- } else {
1544
- return $(document).width() + 'px';
1545
- }
1546
- },
1547
-
1548
- resize: function() {
1549
- /* If the dialog is draggable and the user drags it past the
1550
- * right edge of the window, the document becomes wider so we
1551
- * need to stretch the overlay. If the user then drags the
1552
- * dialog back to the left, the document will become narrower,
1553
- * so we need to shrink the overlay to the appropriate size.
1554
- * This is handled by shrinking the overlay before setting it
1555
- * to the full document size.
1556
- */
1557
- var $overlays = $([]);
1558
- $.each($.ui.dialog.overlay.instances, function() {
1559
- $overlays = $overlays.add(this);
1560
- });
1561
-
1562
- $overlays.css({
1563
- width: 0,
1564
- height: 0
1565
- }).css({
1566
- width: $.ui.dialog.overlay.width(),
1567
- height: $.ui.dialog.overlay.height()
1568
- });
1569
- }
1570
- });
1571
-
1572
- $.extend($.ui.dialog.overlay.prototype, {
1573
- destroy: function() {
1574
- $.ui.dialog.overlay.destroy(this.$el);
1575
- }
1576
- });
1577
-
1578
- }(jQuery));
1
+ /*!
2
+ * jQuery UI 1.8.4
3
+ *
4
+ * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
5
+ * Dual licensed under the MIT or GPL Version 2 licenses.
6
+ * http://jquery.org/license
7
+ *
8
+ * http://docs.jquery.com/UI
9
+ */
10
+ (function( $, undefined ) {
11
+
12
+ // prevent duplicate loading
13
+ // this is only a problem because we proxy existing functions
14
+ // and we don't want to double proxy them
15
+ $.ui = $.ui || {};
16
+ if ( $.ui.version ) {
17
+ return;
18
+ }
19
+
20
+ //Helper functions and ui object
21
+ $.extend( $.ui, {
22
+ version: "1.8.4",
23
+
24
+ // $.ui.plugin is deprecated. Use the proxy pattern instead.
25
+ plugin: {
26
+ add: function( module, option, set ) {
27
+ var proto = $.ui[ module ].prototype;
28
+ for ( var i in set ) {
29
+ proto.plugins[ i ] = proto.plugins[ i ] || [];
30
+ proto.plugins[ i ].push( [ option, set[ i ] ] );
31
+ }
32
+ },
33
+ call: function( instance, name, args ) {
34
+ var set = instance.plugins[ name ];
35
+ if ( !set || !instance.element[ 0 ].parentNode ) {
36
+ return;
37
+ }
38
+
39
+ for ( var i = 0; i < set.length; i++ ) {
40
+ if ( instance.options[ set[ i ][ 0 ] ] ) {
41
+ set[ i ][ 1 ].apply( instance.element, args );
42
+ }
43
+ }
44
+ }
45
+ },
46
+
47
+ contains: function( a, b ) {
48
+ return document.compareDocumentPosition ?
49
+ a.compareDocumentPosition( b ) & 16 :
50
+ a !== b && a.contains( b );
51
+ },
52
+
53
+ hasScroll: function( el, a ) {
54
+
55
+ //If overflow is hidden, the element might have extra content, but the user wants to hide it
56
+ if ( $( el ).css( "overflow" ) === "hidden") {
57
+ return false;
58
+ }
59
+
60
+ var scroll = ( a && a === "left" ) ? "scrollLeft" : "scrollTop",
61
+ has = false;
62
+
63
+ if ( el[ scroll ] > 0 ) {
64
+ return true;
65
+ }
66
+
67
+ // TODO: determine which cases actually cause this to happen
68
+ // if the element doesn't have the scroll set, see if it's possible to
69
+ // set the scroll
70
+ el[ scroll ] = 1;
71
+ has = ( el[ scroll ] > 0 );
72
+ el[ scroll ] = 0;
73
+ return has;
74
+ },
75
+
76
+ isOverAxis: function( x, reference, size ) {
77
+ //Determines when x coordinate is over "b" element axis
78
+ return ( x > reference ) && ( x < ( reference + size ) );
79
+ },
80
+
81
+ isOver: function( y, x, top, left, height, width ) {
82
+ //Determines when x, y coordinates is over "b" element
83
+ return $.ui.isOverAxis( y, top, height ) && $.ui.isOverAxis( x, left, width );
84
+ },
85
+
86
+ keyCode: {
87
+ ALT: 18,
88
+ BACKSPACE: 8,
89
+ CAPS_LOCK: 20,
90
+ COMMA: 188,
91
+ COMMAND: 91,
92
+ COMMAND_LEFT: 91, // COMMAND
93
+ COMMAND_RIGHT: 93,
94
+ CONTROL: 17,
95
+ DELETE: 46,
96
+ DOWN: 40,
97
+ END: 35,
98
+ ENTER: 13,
99
+ ESCAPE: 27,
100
+ HOME: 36,
101
+ INSERT: 45,
102
+ LEFT: 37,
103
+ MENU: 93, // COMMAND_RIGHT
104
+ NUMPAD_ADD: 107,
105
+ NUMPAD_DECIMAL: 110,
106
+ NUMPAD_DIVIDE: 111,
107
+ NUMPAD_ENTER: 108,
108
+ NUMPAD_MULTIPLY: 106,
109
+ NUMPAD_SUBTRACT: 109,
110
+ PAGE_DOWN: 34,
111
+ PAGE_UP: 33,
112
+ PERIOD: 190,
113
+ RIGHT: 39,
114
+ SHIFT: 16,
115
+ SPACE: 32,
116
+ TAB: 9,
117
+ UP: 38,
118
+ WINDOWS: 91 // COMMAND
119
+ }
120
+ });
121
+
122
+ //jQuery plugins
123
+ $.fn.extend({
124
+ _focus: $.fn.focus,
125
+ focus: function( delay, fn ) {
126
+ return typeof delay === "number" ?
127
+ this.each(function() {
128
+ var elem = this;
129
+ setTimeout(function() {
130
+ $( elem ).focus();
131
+ if ( fn ) {
132
+ fn.call( elem );
133
+ }
134
+ }, delay );
135
+ }) :
136
+ this._focus.apply( this, arguments );
137
+ },
138
+
139
+ enableSelection: function() {
140
+ return this
141
+ .attr( "unselectable", "off" )
142
+ .css( "MozUserSelect", "" );
143
+ },
144
+
145
+ disableSelection: function() {
146
+ return this
147
+ .attr( "unselectable", "on" )
148
+ .css( "MozUserSelect", "none" );
149
+ },
150
+
151
+ scrollParent: function() {
152
+ var scrollParent;
153
+ if (($.browser.msie && (/(static|relative)/).test(this.css('position'))) || (/absolute/).test(this.css('position'))) {
154
+ scrollParent = this.parents().filter(function() {
155
+ return (/(relative|absolute|fixed)/).test($.curCSS(this,'position',1)) && (/(auto|scroll)/).test($.curCSS(this,'overflow',1)+$.curCSS(this,'overflow-y',1)+$.curCSS(this,'overflow-x',1));
156
+ }).eq(0);
157
+ } else {
158
+ scrollParent = this.parents().filter(function() {
159
+ return (/(auto|scroll)/).test($.curCSS(this,'overflow',1)+$.curCSS(this,'overflow-y',1)+$.curCSS(this,'overflow-x',1));
160
+ }).eq(0);
161
+ }
162
+
163
+ return (/fixed/).test(this.css('position')) || !scrollParent.length ? $(document) : scrollParent;
164
+ },
165
+
166
+ zIndex: function( zIndex ) {
167
+ if ( zIndex !== undefined ) {
168
+ return this.css( "zIndex", zIndex );
169
+ }
170
+
171
+ if ( this.length ) {
172
+ var elem = $( this[ 0 ] ), position, value;
173
+ while ( elem.length && elem[ 0 ] !== document ) {
174
+ // Ignore z-index if position is set to a value where z-index is ignored by the browser
175
+ // This makes behavior of this function consistent across browsers
176
+ // WebKit always returns auto if the element is positioned
177
+ position = elem.css( "position" );
178
+ if ( position === "absolute" || position === "relative" || position === "fixed" ) {
179
+ // IE returns 0 when zIndex is not specified
180
+ // other browsers return a string
181
+ // we ignore the case of nested elements with an explicit value of 0
182
+ // <div style="z-index: -10;"><div style="z-index: 0;"></div></div>
183
+ value = parseInt( elem.css( "zIndex" ) );
184
+ if ( !isNaN( value ) && value != 0 ) {
185
+ return value;
186
+ }
187
+ }
188
+ elem = elem.parent();
189
+ }
190
+ }
191
+
192
+ return 0;
193
+ }
194
+ });
195
+
196
+ $.each( [ "Width", "Height" ], function( i, name ) {
197
+ var side = name === "Width" ? [ "Left", "Right" ] : [ "Top", "Bottom" ],
198
+ type = name.toLowerCase(),
199
+ orig = {
200
+ innerWidth: $.fn.innerWidth,
201
+ innerHeight: $.fn.innerHeight,
202
+ outerWidth: $.fn.outerWidth,
203
+ outerHeight: $.fn.outerHeight
204
+ };
205
+
206
+ function reduce( elem, size, border, margin ) {
207
+ $.each( side, function() {
208
+ size -= parseFloat( $.curCSS( elem, "padding" + this, true) ) || 0;
209
+ if ( border ) {
210
+ size -= parseFloat( $.curCSS( elem, "border" + this + "Width", true) ) || 0;
211
+ }
212
+ if ( margin ) {
213
+ size -= parseFloat( $.curCSS( elem, "margin" + this, true) ) || 0;
214
+ }
215
+ });
216
+ return size;
217
+ }
218
+
219
+ $.fn[ "inner" + name ] = function( size ) {
220
+ if ( size === undefined ) {
221
+ return orig[ "inner" + name ].call( this );
222
+ }
223
+
224
+ return this.each(function() {
225
+ $.style( this, type, reduce( this, size ) + "px" );
226
+ });
227
+ };
228
+
229
+ $.fn[ "outer" + name] = function( size, margin ) {
230
+ if ( typeof size !== "number" ) {
231
+ return orig[ "outer" + name ].call( this, size );
232
+ }
233
+
234
+ return this.each(function() {
235
+ $.style( this, type, reduce( this, size, true, margin ) + "px" );
236
+ });
237
+ };
238
+ });
239
+
240
+ //Additional selectors
241
+ function visible( element ) {
242
+ return !$( element ).parents().andSelf().filter(function() {
243
+ return $.curCSS( this, "visibility" ) === "hidden" ||
244
+ $.expr.filters.hidden( this );
245
+ }).length;
246
+ }
247
+
248
+ $.extend( $.expr[ ":" ], {
249
+ data: function( elem, i, match ) {
250
+ return !!$.data( elem, match[ 3 ] );
251
+ },
252
+
253
+ focusable: function( element ) {
254
+ var nodeName = element.nodeName.toLowerCase(),
255
+ tabIndex = $.attr( element, "tabindex" );
256
+ if ( "area" === nodeName ) {
257
+ var map = element.parentNode,
258
+ mapName = map.name,
259
+ img;
260
+ if ( !element.href || !mapName || map.nodeName.toLowerCase() !== "map" ) {
261
+ return false;
262
+ }
263
+ img = $( "img[usemap=#" + mapName + "]" )[0];
264
+ return !!img && visible( img );
265
+ }
266
+ return ( /input|select|textarea|button|object/.test( nodeName )
267
+ ? !element.disabled
268
+ : "a" == nodeName
269
+ ? element.href || !isNaN( tabIndex )
270
+ : !isNaN( tabIndex ))
271
+ // the element and all of its ancestors must be visible
272
+ && visible( element );
273
+ },
274
+
275
+ tabbable: function( element ) {
276
+ var tabIndex = $.attr( element, "tabindex" );
277
+ return ( isNaN( tabIndex ) || tabIndex >= 0 ) && $( element ).is( ":focusable" );
278
+ }
279
+ });
280
+
281
+ })( jQuery );
282
+ /*!
283
+ * jQuery UI Widget 1.8.4
284
+ *
285
+ * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
286
+ * Dual licensed under the MIT or GPL Version 2 licenses.
287
+ * http://jquery.org/license
288
+ *
289
+ * http://docs.jquery.com/UI/Widget
290
+ */
291
+ (function( $, undefined ) {
292
+
293
+ var _remove = $.fn.remove;
294
+
295
+ $.fn.remove = function( selector, keepData ) {
296
+ return this.each(function() {
297
+ if ( !keepData ) {
298
+ if ( !selector || $.filter( selector, [ this ] ).length ) {
299
+ $( "*", this ).add( [ this ] ).each(function() {
300
+ $( this ).triggerHandler( "remove" );
301
+ });
302
+ }
303
+ }
304
+ return _remove.call( $(this), selector, keepData );
305
+ });
306
+ };
307
+
308
+ $.widget = function( name, base, prototype ) {
309
+ var namespace = name.split( "." )[ 0 ],
310
+ fullName;
311
+ name = name.split( "." )[ 1 ];
312
+ fullName = namespace + "-" + name;
313
+
314
+ if ( !prototype ) {
315
+ prototype = base;
316
+ base = $.Widget;
317
+ }
318
+
319
+ // create selector for plugin
320
+ $.expr[ ":" ][ fullName ] = function( elem ) {
321
+ return !!$.data( elem, name );
322
+ };
323
+
324
+ $[ namespace ] = $[ namespace ] || {};
325
+ $[ namespace ][ name ] = function( options, element ) {
326
+ // allow instantiation without initializing for simple inheritance
327
+ if ( arguments.length ) {
328
+ this._createWidget( options, element );
329
+ }
330
+ };
331
+
332
+ var basePrototype = new base();
333
+ // we need to make the options hash a property directly on the new instance
334
+ // otherwise we'll modify the options hash on the prototype that we're
335
+ // inheriting from
336
+ // $.each( basePrototype, function( key, val ) {
337
+ // if ( $.isPlainObject(val) ) {
338
+ // basePrototype[ key ] = $.extend( {}, val );
339
+ // }
340
+ // });
341
+ basePrototype.options = $.extend( true, {}, basePrototype.options );
342
+ $[ namespace ][ name ].prototype = $.extend( true, basePrototype, {
343
+ namespace: namespace,
344
+ widgetName: name,
345
+ widgetEventPrefix: $[ namespace ][ name ].prototype.widgetEventPrefix || name,
346
+ widgetBaseClass: fullName
347
+ }, prototype );
348
+
349
+ $.widget.bridge( name, $[ namespace ][ name ] );
350
+ };
351
+
352
+ $.widget.bridge = function( name, object ) {
353
+ $.fn[ name ] = function( options ) {
354
+ var isMethodCall = typeof options === "string",
355
+ args = Array.prototype.slice.call( arguments, 1 ),
356
+ returnValue = this;
357
+
358
+ // allow multiple hashes to be passed on init
359
+ options = !isMethodCall && args.length ?
360
+ $.extend.apply( null, [ true, options ].concat(args) ) :
361
+ options;
362
+
363
+ // prevent calls to internal methods
364
+ if ( isMethodCall && options.substring( 0, 1 ) === "_" ) {
365
+ return returnValue;
366
+ }
367
+
368
+ if ( isMethodCall ) {
369
+ this.each(function() {
370
+ var instance = $.data( this, name ),
371
+ methodValue = instance && $.isFunction( instance[options] ) ?
372
+ instance[ options ].apply( instance, args ) :
373
+ instance;
374
+ if ( methodValue !== instance && methodValue !== undefined ) {
375
+ returnValue = methodValue;
376
+ return false;
377
+ }
378
+ });
379
+ } else {
380
+ this.each(function() {
381
+ var instance = $.data( this, name );
382
+ if ( instance ) {
383
+ if ( options ) {
384
+ instance.option( options );
385
+ }
386
+ instance._init();
387
+ } else {
388
+ $.data( this, name, new object( options, this ) );
389
+ }
390
+ });
391
+ }
392
+
393
+ return returnValue;
394
+ };
395
+ };
396
+
397
+ $.Widget = function( options, element ) {
398
+ // allow instantiation without initializing for simple inheritance
399
+ if ( arguments.length ) {
400
+ this._createWidget( options, element );
401
+ }
402
+ };
403
+
404
+ $.Widget.prototype = {
405
+ widgetName: "widget",
406
+ widgetEventPrefix: "",
407
+ options: {
408
+ disabled: false
409
+ },
410
+ _createWidget: function( options, element ) {
411
+ // $.widget.bridge stores the plugin instance, but we do it anyway
412
+ // so that it's stored even before the _create function runs
413
+ $.data( element, this.widgetName, this );
414
+ this.element = $( element );
415
+ this.options = $.extend( true, {},
416
+ this.options,
417
+ $.metadata && $.metadata.get( element )[ this.widgetName ],
418
+ options );
419
+
420
+ var self = this;
421
+ this.element.bind( "remove." + this.widgetName, function() {
422
+ self.destroy();
423
+ });
424
+
425
+ this._create();
426
+ this._init();
427
+ },
428
+ _create: function() {},
429
+ _init: function() {},
430
+
431
+ destroy: function() {
432
+ this.element
433
+ .unbind( "." + this.widgetName )
434
+ .removeData( this.widgetName );
435
+ this.widget()
436
+ .unbind( "." + this.widgetName )
437
+ .removeAttr( "aria-disabled" )
438
+ .removeClass(
439
+ this.widgetBaseClass + "-disabled " +
440
+ "ui-state-disabled" );
441
+ },
442
+
443
+ widget: function() {
444
+ return this.element;
445
+ },
446
+
447
+ option: function( key, value ) {
448
+ var options = key,
449
+ self = this;
450
+
451
+ if ( arguments.length === 0 ) {
452
+ // don't return a reference to the internal hash
453
+ return $.extend( {}, self.options );
454
+ }
455
+
456
+ if (typeof key === "string" ) {
457
+ if ( value === undefined ) {
458
+ return this.options[ key ];
459
+ }
460
+ options = {};
461
+ options[ key ] = value;
462
+ }
463
+
464
+ $.each( options, function( key, value ) {
465
+ self._setOption( key, value );
466
+ });
467
+
468
+ return self;
469
+ },
470
+ _setOption: function( key, value ) {
471
+ this.options[ key ] = value;
472
+
473
+ if ( key === "disabled" ) {
474
+ this.widget()
475
+ [ value ? "addClass" : "removeClass"](
476
+ this.widgetBaseClass + "-disabled" + " " +
477
+ "ui-state-disabled" )
478
+ .attr( "aria-disabled", value );
479
+ }
480
+
481
+ return this;
482
+ },
483
+
484
+ enable: function() {
485
+ return this._setOption( "disabled", false );
486
+ },
487
+ disable: function() {
488
+ return this._setOption( "disabled", true );
489
+ },
490
+
491
+ _trigger: function( type, event, data ) {
492
+ var callback = this.options[ type ];
493
+
494
+ event = $.Event( event );
495
+ event.type = ( type === this.widgetEventPrefix ?
496
+ type :
497
+ this.widgetEventPrefix + type ).toLowerCase();
498
+ data = data || {};
499
+
500
+ // copy original event properties over to the new event
501
+ // this would happen if we could call $.event.fix instead of $.Event
502
+ // but we don't have a way to force an event to be fixed multiple times
503
+ if ( event.originalEvent ) {
504
+ for ( var i = $.event.props.length, prop; i; ) {
505
+ prop = $.event.props[ --i ];
506
+ event[ prop ] = event.originalEvent[ prop ];
507
+ }
508
+ }
509
+
510
+ this.element.trigger( event, data );
511
+
512
+ return !( $.isFunction(callback) &&
513
+ callback.call( this.element[0], event, data ) === false ||
514
+ event.isDefaultPrevented() );
515
+ }
516
+ };
517
+
518
+ })( jQuery );
519
+ /*
520
+ * jQuery UI Position 1.8.4
521
+ *
522
+ * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
523
+ * Dual licensed under the MIT or GPL Version 2 licenses.
524
+ * http://jquery.org/license
525
+ *
526
+ * http://docs.jquery.com/UI/Position
527
+ */
528
+ (function( $, undefined ) {
529
+
530
+ $.ui = $.ui || {};
531
+
532
+ var horizontalPositions = /left|center|right/,
533
+ horizontalDefault = "center",
534
+ verticalPositions = /top|center|bottom/,
535
+ verticalDefault = "center",
536
+ _position = $.fn.position,
537
+ _offset = $.fn.offset;
538
+
539
+ $.fn.position = function( options ) {
540
+ if ( !options || !options.of ) {
541
+ return _position.apply( this, arguments );
542
+ }
543
+
544
+ // make a copy, we don't want to modify arguments
545
+ options = $.extend( {}, options );
546
+
547
+ var target = $( options.of ),
548
+ collision = ( options.collision || "flip" ).split( " " ),
549
+ offset = options.offset ? options.offset.split( " " ) : [ 0, 0 ],
550
+ targetWidth,
551
+ targetHeight,
552
+ basePosition;
553
+
554
+ if ( options.of.nodeType === 9 ) {
555
+ targetWidth = target.width();
556
+ targetHeight = target.height();
557
+ basePosition = { top: 0, left: 0 };
558
+ } else if ( options.of.scrollTo && options.of.document ) {
559
+ targetWidth = target.width();
560
+ targetHeight = target.height();
561
+ basePosition = { top: target.scrollTop(), left: target.scrollLeft() };
562
+ } else if ( options.of.preventDefault ) {
563
+ // force left top to allow flipping
564
+ options.at = "left top";
565
+ targetWidth = targetHeight = 0;
566
+ basePosition = { top: options.of.pageY, left: options.of.pageX };
567
+ } else {
568
+ targetWidth = target.outerWidth();
569
+ targetHeight = target.outerHeight();
570
+ basePosition = target.offset();
571
+ }
572
+
573
+ // force my and at to have valid horizontal and veritcal positions
574
+ // if a value is missing or invalid, it will be converted to center
575
+ $.each( [ "my", "at" ], function() {
576
+ var pos = ( options[this] || "" ).split( " " );
577
+ if ( pos.length === 1) {
578
+ pos = horizontalPositions.test( pos[0] ) ?
579
+ pos.concat( [verticalDefault] ) :
580
+ verticalPositions.test( pos[0] ) ?
581
+ [ horizontalDefault ].concat( pos ) :
582
+ [ horizontalDefault, verticalDefault ];
583
+ }
584
+ pos[ 0 ] = horizontalPositions.test( pos[0] ) ? pos[ 0 ] : horizontalDefault;
585
+ pos[ 1 ] = verticalPositions.test( pos[1] ) ? pos[ 1 ] : verticalDefault;
586
+ options[ this ] = pos;
587
+ });
588
+
589
+ // normalize collision option
590
+ if ( collision.length === 1 ) {
591
+ collision[ 1 ] = collision[ 0 ];
592
+ }
593
+
594
+ // normalize offset option
595
+ offset[ 0 ] = parseInt( offset[0], 10 ) || 0;
596
+ if ( offset.length === 1 ) {
597
+ offset[ 1 ] = offset[ 0 ];
598
+ }
599
+ offset[ 1 ] = parseInt( offset[1], 10 ) || 0;
600
+
601
+ if ( options.at[0] === "right" ) {
602
+ basePosition.left += targetWidth;
603
+ } else if (options.at[0] === horizontalDefault ) {
604
+ basePosition.left += targetWidth / 2;
605
+ }
606
+
607
+ if ( options.at[1] === "bottom" ) {
608
+ basePosition.top += targetHeight;
609
+ } else if ( options.at[1] === verticalDefault ) {
610
+ basePosition.top += targetHeight / 2;
611
+ }
612
+
613
+ basePosition.left += offset[ 0 ];
614
+ basePosition.top += offset[ 1 ];
615
+
616
+ return this.each(function() {
617
+ var elem = $( this ),
618
+ elemWidth = elem.outerWidth(),
619
+ elemHeight = elem.outerHeight(),
620
+ position = $.extend( {}, basePosition );
621
+
622
+ if ( options.my[0] === "right" ) {
623
+ position.left -= elemWidth;
624
+ } else if ( options.my[0] === horizontalDefault ) {
625
+ position.left -= elemWidth / 2;
626
+ }
627
+
628
+ if ( options.my[1] === "bottom" ) {
629
+ position.top -= elemHeight;
630
+ } else if ( options.my[1] === verticalDefault ) {
631
+ position.top -= elemHeight / 2;
632
+ }
633
+
634
+ // prevent fractions (see #5280)
635
+ position.left = parseInt( position.left );
636
+ position.top = parseInt( position.top );
637
+
638
+ $.each( [ "left", "top" ], function( i, dir ) {
639
+ if ( $.ui.position[ collision[i] ] ) {
640
+ $.ui.position[ collision[i] ][ dir ]( position, {
641
+ targetWidth: targetWidth,
642
+ targetHeight: targetHeight,
643
+ elemWidth: elemWidth,
644
+ elemHeight: elemHeight,
645
+ offset: offset,
646
+ my: options.my,
647
+ at: options.at
648
+ });
649
+ }
650
+ });
651
+
652
+ if ( $.fn.bgiframe ) {
653
+ elem.bgiframe();
654
+ }
655
+ elem.offset( $.extend( position, { using: options.using } ) );
656
+ });
657
+ };
658
+
659
+ $.ui.position = {
660
+ fit: {
661
+ left: function( position, data ) {
662
+ var win = $( window ),
663
+ over = position.left + data.elemWidth - win.width() - win.scrollLeft();
664
+ position.left = over > 0 ? position.left - over : Math.max( 0, position.left );
665
+ },
666
+ top: function( position, data ) {
667
+ var win = $( window ),
668
+ over = position.top + data.elemHeight - win.height() - win.scrollTop();
669
+ position.top = over > 0 ? position.top - over : Math.max( 0, position.top );
670
+ }
671
+ },
672
+
673
+ flip: {
674
+ left: function( position, data ) {
675
+ if ( data.at[0] === "center" ) {
676
+ return;
677
+ }
678
+ var win = $( window ),
679
+ over = position.left + data.elemWidth - win.width() - win.scrollLeft(),
680
+ myOffset = data.my[ 0 ] === "left" ?
681
+ -data.elemWidth :
682
+ data.my[ 0 ] === "right" ?
683
+ data.elemWidth :
684
+ 0,
685
+ offset = -2 * data.offset[ 0 ];
686
+ position.left += position.left < 0 ?
687
+ myOffset + data.targetWidth + offset :
688
+ over > 0 ?
689
+ myOffset - data.targetWidth + offset :
690
+ 0;
691
+ },
692
+ top: function( position, data ) {
693
+ if ( data.at[1] === "center" ) {
694
+ return;
695
+ }
696
+ var win = $( window ),
697
+ over = position.top + data.elemHeight - win.height() - win.scrollTop(),
698
+ myOffset = data.my[ 1 ] === "top" ?
699
+ -data.elemHeight :
700
+ data.my[ 1 ] === "bottom" ?
701
+ data.elemHeight :
702
+ 0,
703
+ atOffset = data.at[ 1 ] === "top" ?
704
+ data.targetHeight :
705
+ -data.targetHeight,
706
+ offset = -2 * data.offset[ 1 ];
707
+ position.top += position.top < 0 ?
708
+ myOffset + data.targetHeight + offset :
709
+ over > 0 ?
710
+ myOffset + atOffset + offset :
711
+ 0;
712
+ }
713
+ }
714
+ };
715
+
716
+ // offset setter from jQuery 1.4
717
+ if ( !$.offset.setOffset ) {
718
+ $.offset.setOffset = function( elem, options ) {
719
+ // set position first, in-case top/left are set even on static elem
720
+ if ( /static/.test( $.curCSS( elem, "position" ) ) ) {
721
+ elem.style.position = "relative";
722
+ }
723
+ var curElem = $( elem ),
724
+ curOffset = curElem.offset(),
725
+ curTop = parseInt( $.curCSS( elem, "top", true ), 10 ) || 0,
726
+ curLeft = parseInt( $.curCSS( elem, "left", true ), 10) || 0,
727
+ props = {
728
+ top: (options.top - curOffset.top) + curTop,
729
+ left: (options.left - curOffset.left) + curLeft
730
+ };
731
+
732
+ if ( 'using' in options ) {
733
+ options.using.call( elem, props );
734
+ } else {
735
+ curElem.css( props );
736
+ }
737
+ };
738
+
739
+ $.fn.offset = function( options ) {
740
+ var elem = this[ 0 ];
741
+ if ( !elem || !elem.ownerDocument ) { return null; }
742
+ if ( options ) {
743
+ return this.each(function() {
744
+ $.offset.setOffset( this, options );
745
+ });
746
+ }
747
+ return _offset.call( this );
748
+ };
749
+ }
750
+
751
+ }( jQuery ));
752
+ /*
753
+ * jQuery UI Dialog 1.8.4
754
+ *
755
+ * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
756
+ * Dual licensed under the MIT or GPL Version 2 licenses.
757
+ * http://jquery.org/license
758
+ *
759
+ * http://docs.jquery.com/UI/Dialog
760
+ *
761
+ * Depends:
762
+ * jquery.ui.core.js
763
+ * jquery.ui.widget.js
764
+ * jquery.ui.button.js
765
+ * jquery.ui.draggable.js
766
+ * jquery.ui.mouse.js
767
+ * jquery.ui.position.js
768
+ * jquery.ui.resizable.js
769
+ */
770
+ (function( $, undefined ) {
771
+
772
+ var uiDialogClasses =
773
+ 'ui-dialog ' +
774
+ 'ui-widget ' +
775
+ 'ui-widget-content ' +
776
+ 'ui-corner-all ';
777
+
778
+ $.widget("ui.dialog", {
779
+ options: {
780
+ autoOpen: true,
781
+ buttons: {},
782
+ closeOnEscape: true,
783
+ closeText: 'close',
784
+ dialogClass: '',
785
+ draggable: true,
786
+ hide: null,
787
+ height: 'auto',
788
+ maxHeight: false,
789
+ maxWidth: false,
790
+ minHeight: 150,
791
+ minWidth: 150,
792
+ modal: false,
793
+ position: {
794
+ my: 'center',
795
+ at: 'center',
796
+ of: window,
797
+ collision: 'fit',
798
+ // ensure that the titlebar is never outside the document
799
+ using: function(pos) {
800
+ var topOffset = $(this).css(pos).offset().top;
801
+ if (topOffset < 0) {
802
+ $(this).css('top', pos.top - topOffset);
803
+ }
804
+ }
805
+ },
806
+ resizable: true,
807
+ show: null,
808
+ stack: true,
809
+ title: '',
810
+ width: 300,
811
+ zIndex: 1000
812
+ },
813
+
814
+ _create: function() {
815
+ this.originalTitle = this.element.attr('title');
816
+ // #5742 - .attr() might return a DOMElement
817
+ if ( typeof this.originalTitle !== "string" ) {
818
+ this.originalTitle = "";
819
+ }
820
+
821
+ var self = this,
822
+ options = self.options,
823
+
824
+ title = options.title || self.originalTitle || '&#160;',
825
+ titleId = $.ui.dialog.getTitleId(self.element),
826
+
827
+ uiDialog = (self.uiDialog = $('<div></div>'))
828
+ .appendTo(document.body)
829
+ .hide()
830
+ .addClass(uiDialogClasses + options.dialogClass)
831
+ .css({
832
+ zIndex: options.zIndex
833
+ })
834
+ // setting tabIndex makes the div focusable
835
+ // setting outline to 0 prevents a border on focus in Mozilla
836
+ .attr('tabIndex', -1).css('outline', 0).keydown(function(event) {
837
+ if (options.closeOnEscape && event.keyCode &&
838
+ event.keyCode === $.ui.keyCode.ESCAPE) {
839
+
840
+ self.close(event);
841
+ event.preventDefault();
842
+ }
843
+ })
844
+ .attr({
845
+ role: 'dialog',
846
+ 'aria-labelledby': titleId
847
+ })
848
+ .mousedown(function(event) {
849
+ self.moveToTop(false, event);
850
+ }),
851
+
852
+ uiDialogContent = self.element
853
+ .show()
854
+ .removeAttr('title')
855
+ .addClass(
856
+ 'ui-dialog-content ' +
857
+ 'ui-widget-content')
858
+ .appendTo(uiDialog),
859
+
860
+ uiDialogTitlebar = (self.uiDialogTitlebar = $('<div></div>'))
861
+ .addClass(
862
+ 'ui-dialog-titlebar ' +
863
+ 'ui-widget-header ' +
864
+ 'ui-corner-all ' +
865
+ 'ui-helper-clearfix'
866
+ )
867
+ .prependTo(uiDialog),
868
+
869
+ uiDialogTitlebarClose = $('<a href="#"></a>')
870
+ .addClass(
871
+ 'ui-dialog-titlebar-close ' +
872
+ 'ui-corner-all'
873
+ )
874
+ .attr('role', 'button')
875
+ .hover(
876
+ function() {
877
+ uiDialogTitlebarClose.addClass('ui-state-hover');
878
+ },
879
+ function() {
880
+ uiDialogTitlebarClose.removeClass('ui-state-hover');
881
+ }
882
+ )
883
+ .focus(function() {
884
+ uiDialogTitlebarClose.addClass('ui-state-focus');
885
+ })
886
+ .blur(function() {
887
+ uiDialogTitlebarClose.removeClass('ui-state-focus');
888
+ })
889
+ .click(function(event) {
890
+ self.close(event);
891
+ return false;
892
+ })
893
+ .appendTo(uiDialogTitlebar),
894
+
895
+ uiDialogTitlebarCloseText = (self.uiDialogTitlebarCloseText = $('<span></span>'))
896
+ .addClass(
897
+ 'ui-icon ' +
898
+ 'ui-icon-closethick'
899
+ )
900
+ .text(options.closeText)
901
+ .appendTo(uiDialogTitlebarClose),
902
+
903
+ uiDialogTitle = $('<span></span>')
904
+ .addClass('ui-dialog-title')
905
+ .attr('id', titleId)
906
+ .html(title)
907
+ .prependTo(uiDialogTitlebar);
908
+
909
+ //handling of deprecated beforeclose (vs beforeClose) option
910
+ //Ticket #4669 http://dev.jqueryui.com/ticket/4669
911
+ //TODO: remove in 1.9pre
912
+ if ($.isFunction(options.beforeclose) && !$.isFunction(options.beforeClose)) {
913
+ options.beforeClose = options.beforeclose;
914
+ }
915
+
916
+ uiDialogTitlebar.find("*").add(uiDialogTitlebar).disableSelection();
917
+
918
+ if (options.draggable && $.fn.draggable) {
919
+ self._makeDraggable();
920
+ }
921
+ if (options.resizable && $.fn.resizable) {
922
+ self._makeResizable();
923
+ }
924
+
925
+ self._createButtons(options.buttons);
926
+ self._isOpen = false;
927
+
928
+ if ($.fn.bgiframe) {
929
+ uiDialog.bgiframe();
930
+ }
931
+ },
932
+
933
+ _init: function() {
934
+ if ( this.options.autoOpen ) {
935
+ this.open();
936
+ }
937
+ },
938
+
939
+ destroy: function() {
940
+ var self = this;
941
+
942
+ if (self.overlay) {
943
+ self.overlay.destroy();
944
+ }
945
+ self.uiDialog.hide();
946
+ self.element
947
+ .unbind('.dialog')
948
+ .removeData('dialog')
949
+ .removeClass('ui-dialog-content ui-widget-content')
950
+ .hide().appendTo('body');
951
+ self.uiDialog.remove();
952
+
953
+ if (self.originalTitle) {
954
+ self.element.attr('title', self.originalTitle);
955
+ }
956
+
957
+ return self;
958
+ },
959
+
960
+ widget: function() {
961
+ return this.uiDialog;
962
+ },
963
+
964
+ close: function(event) {
965
+ var self = this,
966
+ maxZ;
967
+
968
+ if (false === self._trigger('beforeClose', event)) {
969
+ return;
970
+ }
971
+
972
+ if (self.overlay) {
973
+ self.overlay.destroy();
974
+ }
975
+ self.uiDialog.unbind('keypress.ui-dialog');
976
+
977
+ self._isOpen = false;
978
+
979
+ if (self.options.hide) {
980
+ self.uiDialog.hide(self.options.hide, function() {
981
+ self._trigger('close', event);
982
+ });
983
+ } else {
984
+ self.uiDialog.hide();
985
+ self._trigger('close', event);
986
+ }
987
+
988
+ $.ui.dialog.overlay.resize();
989
+
990
+ // adjust the maxZ to allow other modal dialogs to continue to work (see #4309)
991
+ if (self.options.modal) {
992
+ maxZ = 0;
993
+ $('.ui-dialog').each(function() {
994
+ if (this !== self.uiDialog[0]) {
995
+ maxZ = Math.max(maxZ, $(this).css('z-index'));
996
+ }
997
+ });
998
+ $.ui.dialog.maxZ = maxZ;
999
+ }
1000
+
1001
+ return self;
1002
+ },
1003
+
1004
+ isOpen: function() {
1005
+ return this._isOpen;
1006
+ },
1007
+
1008
+ // the force parameter allows us to move modal dialogs to their correct
1009
+ // position on open
1010
+ moveToTop: function(force, event) {
1011
+ var self = this,
1012
+ options = self.options,
1013
+ saveScroll;
1014
+
1015
+ if ((options.modal && !force) ||
1016
+ (!options.stack && !options.modal)) {
1017
+ return self._trigger('focus', event);
1018
+ }
1019
+
1020
+ if (options.zIndex > $.ui.dialog.maxZ) {
1021
+ $.ui.dialog.maxZ = options.zIndex;
1022
+ }
1023
+ if (self.overlay) {
1024
+ $.ui.dialog.maxZ += 1;
1025
+ self.overlay.$el.css('z-index', $.ui.dialog.overlay.maxZ = $.ui.dialog.maxZ);
1026
+ }
1027
+
1028
+ //Save and then restore scroll since Opera 9.5+ resets when parent z-Index is changed.
1029
+ // http://ui.jquery.com/bugs/ticket/3193
1030
+ saveScroll = { scrollTop: self.element.attr('scrollTop'), scrollLeft: self.element.attr('scrollLeft') };
1031
+ $.ui.dialog.maxZ += 1;
1032
+ self.uiDialog.css('z-index', $.ui.dialog.maxZ);
1033
+ self.element.attr(saveScroll);
1034
+ self._trigger('focus', event);
1035
+
1036
+ return self;
1037
+ },
1038
+
1039
+ open: function() {
1040
+ if (this._isOpen) { return; }
1041
+
1042
+ var self = this,
1043
+ options = self.options,
1044
+ uiDialog = self.uiDialog;
1045
+
1046
+ self.overlay = options.modal ? new $.ui.dialog.overlay(self) : null;
1047
+ if (uiDialog.next().length) {
1048
+ uiDialog.appendTo('body');
1049
+ }
1050
+ self._size();
1051
+ self._position(options.position);
1052
+ uiDialog.show(options.show);
1053
+ self.moveToTop(true);
1054
+
1055
+ // prevent tabbing out of modal dialogs
1056
+ if (options.modal) {
1057
+ uiDialog.bind('keypress.ui-dialog', function(event) {
1058
+ if (event.keyCode !== $.ui.keyCode.TAB) {
1059
+ return;
1060
+ }
1061
+
1062
+ var tabbables = $(':tabbable', this),
1063
+ first = tabbables.filter(':first'),
1064
+ last = tabbables.filter(':last');
1065
+
1066
+ if (event.target === last[0] && !event.shiftKey) {
1067
+ first.focus(1);
1068
+ return false;
1069
+ } else if (event.target === first[0] && event.shiftKey) {
1070
+ last.focus(1);
1071
+ return false;
1072
+ }
1073
+ });
1074
+ }
1075
+
1076
+ // set focus to the first tabbable element in the content area or the first button
1077
+ // if there are no tabbable elements, set focus on the dialog itself
1078
+ $(self.element.find(':tabbable').get().concat(
1079
+ uiDialog.find('.ui-dialog-buttonpane :tabbable').get().concat(
1080
+ uiDialog.get()))).eq(0).focus();
1081
+
1082
+ self._trigger('open');
1083
+ self._isOpen = true;
1084
+
1085
+ return self;
1086
+ },
1087
+
1088
+ _createButtons: function(buttons) {
1089
+ var self = this,
1090
+ hasButtons = false,
1091
+ uiDialogButtonPane = $('<div></div>')
1092
+ .addClass(
1093
+ 'ui-dialog-buttonpane ' +
1094
+ 'ui-widget-content ' +
1095
+ 'ui-helper-clearfix'
1096
+ ),
1097
+ uiButtonSet = $( "<div></div>" )
1098
+ .addClass( "ui-dialog-buttonset" )
1099
+ .appendTo( uiDialogButtonPane );
1100
+
1101
+ // if we already have a button pane, remove it
1102
+ self.uiDialog.find('.ui-dialog-buttonpane').remove();
1103
+
1104
+ if (typeof buttons === 'object' && buttons !== null) {
1105
+ $.each(buttons, function() {
1106
+ return !(hasButtons = true);
1107
+ });
1108
+ }
1109
+ if (hasButtons) {
1110
+ $.each(buttons, function(name, fn) {
1111
+ var button = $('<button type="button"></button>')
1112
+ .text(name)
1113
+ .click(function() { fn.apply(self.element[0], arguments); })
1114
+ .appendTo(uiButtonSet);
1115
+ if ($.fn.button) {
1116
+ button.button();
1117
+ }
1118
+ });
1119
+ uiDialogButtonPane.appendTo(self.uiDialog);
1120
+ }
1121
+ },
1122
+
1123
+ _makeDraggable: function() {
1124
+ var self = this,
1125
+ options = self.options,
1126
+ doc = $(document),
1127
+ heightBeforeDrag;
1128
+
1129
+ function filteredUi(ui) {
1130
+ return {
1131
+ position: ui.position,
1132
+ offset: ui.offset
1133
+ };
1134
+ }
1135
+
1136
+ self.uiDialog.draggable({
1137
+ cancel: '.ui-dialog-content, .ui-dialog-titlebar-close',
1138
+ handle: '.ui-dialog-titlebar',
1139
+ containment: 'document',
1140
+ start: function(event, ui) {
1141
+ heightBeforeDrag = options.height === "auto" ? "auto" : $(this).height();
1142
+ $(this).height($(this).height()).addClass("ui-dialog-dragging");
1143
+ self._trigger('dragStart', event, filteredUi(ui));
1144
+ },
1145
+ drag: function(event, ui) {
1146
+ self._trigger('drag', event, filteredUi(ui));
1147
+ },
1148
+ stop: function(event, ui) {
1149
+ options.position = [ui.position.left - doc.scrollLeft(),
1150
+ ui.position.top - doc.scrollTop()];
1151
+ $(this).removeClass("ui-dialog-dragging").height(heightBeforeDrag);
1152
+ self._trigger('dragStop', event, filteredUi(ui));
1153
+ $.ui.dialog.overlay.resize();
1154
+ }
1155
+ });
1156
+ },
1157
+
1158
+ _makeResizable: function(handles) {
1159
+ handles = (handles === undefined ? this.options.resizable : handles);
1160
+ var self = this,
1161
+ options = self.options,
1162
+ // .ui-resizable has position: relative defined in the stylesheet
1163
+ // but dialogs have to use absolute or fixed positioning
1164
+ position = self.uiDialog.css('position'),
1165
+ resizeHandles = (typeof handles === 'string' ?
1166
+ handles :
1167
+ 'n,e,s,w,se,sw,ne,nw'
1168
+ );
1169
+
1170
+ function filteredUi(ui) {
1171
+ return {
1172
+ originalPosition: ui.originalPosition,
1173
+ originalSize: ui.originalSize,
1174
+ position: ui.position,
1175
+ size: ui.size
1176
+ };
1177
+ }
1178
+
1179
+ self.uiDialog.resizable({
1180
+ cancel: '.ui-dialog-content',
1181
+ containment: 'document',
1182
+ alsoResize: self.element,
1183
+ maxWidth: options.maxWidth,
1184
+ maxHeight: options.maxHeight,
1185
+ minWidth: options.minWidth,
1186
+ minHeight: self._minHeight(),
1187
+ handles: resizeHandles,
1188
+ start: function(event, ui) {
1189
+ $(this).addClass("ui-dialog-resizing");
1190
+ self._trigger('resizeStart', event, filteredUi(ui));
1191
+ },
1192
+ resize: function(event, ui) {
1193
+ self._trigger('resize', event, filteredUi(ui));
1194
+ },
1195
+ stop: function(event, ui) {
1196
+ $(this).removeClass("ui-dialog-resizing");
1197
+ options.height = $(this).height();
1198
+ options.width = $(this).width();
1199
+ self._trigger('resizeStop', event, filteredUi(ui));
1200
+ $.ui.dialog.overlay.resize();
1201
+ }
1202
+ })
1203
+ .css('position', position)
1204
+ .find('.ui-resizable-se').addClass('ui-icon ui-icon-grip-diagonal-se');
1205
+ },
1206
+
1207
+ _minHeight: function() {
1208
+ var options = this.options;
1209
+
1210
+ if (options.height === 'auto') {
1211
+ return options.minHeight;
1212
+ } else {
1213
+ return Math.min(options.minHeight, options.height);
1214
+ }
1215
+ },
1216
+
1217
+ _position: function(position) {
1218
+ var myAt = [],
1219
+ offset = [0, 0],
1220
+ isVisible;
1221
+
1222
+ if (position) {
1223
+ // deep extending converts arrays to objects in jQuery <= 1.3.2 :-(
1224
+ // if (typeof position == 'string' || $.isArray(position)) {
1225
+ // myAt = $.isArray(position) ? position : position.split(' ');
1226
+
1227
+ if (typeof position === 'string' || (typeof position === 'object' && '0' in position)) {
1228
+ myAt = position.split ? position.split(' ') : [position[0], position[1]];
1229
+ if (myAt.length === 1) {
1230
+ myAt[1] = myAt[0];
1231
+ }
1232
+
1233
+ $.each(['left', 'top'], function(i, offsetPosition) {
1234
+ if (+myAt[i] === myAt[i]) {
1235
+ offset[i] = myAt[i];
1236
+ myAt[i] = offsetPosition;
1237
+ }
1238
+ });
1239
+
1240
+ position = {
1241
+ my: myAt.join(" "),
1242
+ at: myAt.join(" "),
1243
+ offset: offset.join(" ")
1244
+ };
1245
+ }
1246
+
1247
+ position = $.extend({}, $.ui.dialog.prototype.options.position, position);
1248
+ } else {
1249
+ position = $.ui.dialog.prototype.options.position;
1250
+ }
1251
+
1252
+ // need to show the dialog to get the actual offset in the position plugin
1253
+ isVisible = this.uiDialog.is(':visible');
1254
+ if (!isVisible) {
1255
+ this.uiDialog.show();
1256
+ }
1257
+ this.uiDialog
1258
+ // workaround for jQuery bug #5781 http://dev.jquery.com/ticket/5781
1259
+ .css({ top: 0, left: 0 })
1260
+ .position(position);
1261
+ if (!isVisible) {
1262
+ this.uiDialog.hide();
1263
+ }
1264
+ },
1265
+
1266
+ _setOption: function(key, value){
1267
+ var self = this,
1268
+ uiDialog = self.uiDialog,
1269
+ isResizable = uiDialog.is(':data(resizable)'),
1270
+ resize = false;
1271
+
1272
+ switch (key) {
1273
+ //handling of deprecated beforeclose (vs beforeClose) option
1274
+ //Ticket #4669 http://dev.jqueryui.com/ticket/4669
1275
+ //TODO: remove in 1.9pre
1276
+ case "beforeclose":
1277
+ key = "beforeClose";
1278
+ break;
1279
+ case "buttons":
1280
+ self._createButtons(value);
1281
+ resize = true;
1282
+ break;
1283
+ case "closeText":
1284
+ // convert whatever was passed in to a string, for text() to not throw up
1285
+ self.uiDialogTitlebarCloseText.text("" + value);
1286
+ break;
1287
+ case "dialogClass":
1288
+ uiDialog
1289
+ .removeClass(self.options.dialogClass)
1290
+ .addClass(uiDialogClasses + value);
1291
+ break;
1292
+ case "disabled":
1293
+ if (value) {
1294
+ uiDialog.addClass('ui-dialog-disabled');
1295
+ } else {
1296
+ uiDialog.removeClass('ui-dialog-disabled');
1297
+ }
1298
+ break;
1299
+ case "draggable":
1300
+ if (value) {
1301
+ self._makeDraggable();
1302
+ } else {
1303
+ uiDialog.draggable('destroy');
1304
+ }
1305
+ break;
1306
+ case "height":
1307
+ resize = true;
1308
+ break;
1309
+ case "maxHeight":
1310
+ if (isResizable) {
1311
+ uiDialog.resizable('option', 'maxHeight', value);
1312
+ }
1313
+ resize = true;
1314
+ break;
1315
+ case "maxWidth":
1316
+ if (isResizable) {
1317
+ uiDialog.resizable('option', 'maxWidth', value);
1318
+ }
1319
+ resize = true;
1320
+ break;
1321
+ case "minHeight":
1322
+ if (isResizable) {
1323
+ uiDialog.resizable('option', 'minHeight', value);
1324
+ }
1325
+ resize = true;
1326
+ break;
1327
+ case "minWidth":
1328
+ if (isResizable) {
1329
+ uiDialog.resizable('option', 'minWidth', value);
1330
+ }
1331
+ resize = true;
1332
+ break;
1333
+ case "position":
1334
+ self._position(value);
1335
+ break;
1336
+ case "resizable":
1337
+ // currently resizable, becoming non-resizable
1338
+ if (isResizable && !value) {
1339
+ uiDialog.resizable('destroy');
1340
+ }
1341
+
1342
+ // currently resizable, changing handles
1343
+ if (isResizable && typeof value === 'string') {
1344
+ uiDialog.resizable('option', 'handles', value);
1345
+ }
1346
+
1347
+ // currently non-resizable, becoming resizable
1348
+ if (!isResizable && value !== false) {
1349
+ self._makeResizable(value);
1350
+ }
1351
+ break;
1352
+ case "title":
1353
+ // convert whatever was passed in o a string, for html() to not throw up
1354
+ $(".ui-dialog-title", self.uiDialogTitlebar).html("" + (value || '&#160;'));
1355
+ break;
1356
+ case "width":
1357
+ resize = true;
1358
+ break;
1359
+ }
1360
+
1361
+ $.Widget.prototype._setOption.apply(self, arguments);
1362
+ if (resize) {
1363
+ self._size();
1364
+ }
1365
+ },
1366
+
1367
+ _size: function() {
1368
+ /* If the user has resized the dialog, the .ui-dialog and .ui-dialog-content
1369
+ * divs will both have width and height set, so we need to reset them
1370
+ */
1371
+ var options = this.options,
1372
+ nonContentHeight;
1373
+
1374
+ // reset content sizing
1375
+ // hide for non content measurement because height: 0 doesn't work in IE quirks mode (see #4350)
1376
+ this.element.css({
1377
+ width: 'auto',
1378
+ minHeight: 0,
1379
+ height: 0
1380
+ });
1381
+
1382
+ if (options.minWidth > options.width) {
1383
+ options.width = options.minWidth;
1384
+ }
1385
+
1386
+ // reset wrapper sizing
1387
+ // determine the height of all the non-content elements
1388
+ nonContentHeight = this.uiDialog.css({
1389
+ height: 'auto',
1390
+ width: options.width
1391
+ })
1392
+ .height();
1393
+
1394
+ this.element
1395
+ .css(options.height === 'auto' ? {
1396
+ minHeight: Math.max(options.minHeight - nonContentHeight, 0),
1397
+ height: 'auto'
1398
+ } : {
1399
+ minHeight: 0,
1400
+ height: Math.max(options.height - nonContentHeight, 0)
1401
+ })
1402
+ .show();
1403
+
1404
+ if (this.uiDialog.is(':data(resizable)')) {
1405
+ this.uiDialog.resizable('option', 'minHeight', this._minHeight());
1406
+ }
1407
+ }
1408
+ });
1409
+
1410
+ $.extend($.ui.dialog, {
1411
+ version: "1.8.4",
1412
+
1413
+ uuid: 0,
1414
+ maxZ: 0,
1415
+
1416
+ getTitleId: function($el) {
1417
+ var id = $el.attr('id');
1418
+ if (!id) {
1419
+ this.uuid += 1;
1420
+ id = this.uuid;
1421
+ }
1422
+ return 'ui-dialog-title-' + id;
1423
+ },
1424
+
1425
+ overlay: function(dialog) {
1426
+ this.$el = $.ui.dialog.overlay.create(dialog);
1427
+ }
1428
+ });
1429
+
1430
+ $.extend($.ui.dialog.overlay, {
1431
+ instances: [],
1432
+ // reuse old instances due to IE memory leak with alpha transparency (see #5185)
1433
+ oldInstances: [],
1434
+ maxZ: 0,
1435
+ events: $.map('focus,mousedown,mouseup,keydown,keypress,click'.split(','),
1436
+ function(event) { return event + '.dialog-overlay'; }).join(' '),
1437
+ create: function(dialog) {
1438
+ if (this.instances.length === 0) {
1439
+ // prevent use of anchors and inputs
1440
+ // we use a setTimeout in case the overlay is created from an
1441
+ // event that we're going to be cancelling (see #2804)
1442
+ setTimeout(function() {
1443
+ // handle $(el).dialog().dialog('close') (see #4065)
1444
+ if ($.ui.dialog.overlay.instances.length) {
1445
+ $(document).bind($.ui.dialog.overlay.events, function(event) {
1446
+ // stop events if the z-index of the target is < the z-index of the overlay
1447
+ return ($(event.target).zIndex() >= $.ui.dialog.overlay.maxZ);
1448
+ });
1449
+ }
1450
+ }, 1);
1451
+
1452
+ // allow closing by pressing the escape key
1453
+ $(document).bind('keydown.dialog-overlay', function(event) {
1454
+ if (dialog.options.closeOnEscape && event.keyCode &&
1455
+ event.keyCode === $.ui.keyCode.ESCAPE) {
1456
+
1457
+ dialog.close(event);
1458
+ event.preventDefault();
1459
+ }
1460
+ });
1461
+
1462
+ // handle window resize
1463
+ $(window).bind('resize.dialog-overlay', $.ui.dialog.overlay.resize);
1464
+ }
1465
+
1466
+ var $el = (this.oldInstances.pop() || $('<div></div>').addClass('ui-widget-overlay'))
1467
+ .appendTo(document.body)
1468
+ .css({
1469
+ width: this.width(),
1470
+ height: this.height()
1471
+ });
1472
+
1473
+ if ($.fn.bgiframe) {
1474
+ $el.bgiframe();
1475
+ }
1476
+
1477
+ this.instances.push($el);
1478
+ return $el;
1479
+ },
1480
+
1481
+ destroy: function($el) {
1482
+ this.oldInstances.push(this.instances.splice($.inArray($el, this.instances), 1)[0]);
1483
+
1484
+ if (this.instances.length === 0) {
1485
+ $([document, window]).unbind('.dialog-overlay');
1486
+ }
1487
+
1488
+ $el.remove();
1489
+
1490
+ // adjust the maxZ to allow other modal dialogs to continue to work (see #4309)
1491
+ var maxZ = 0;
1492
+ $.each(this.instances, function() {
1493
+ maxZ = Math.max(maxZ, this.css('z-index'));
1494
+ });
1495
+ this.maxZ = maxZ;
1496
+ },
1497
+
1498
+ height: function() {
1499
+ var scrollHeight,
1500
+ offsetHeight;
1501
+ // handle IE 6
1502
+ if ($.browser.msie && $.browser.version < 7) {
1503
+ scrollHeight = Math.max(
1504
+ document.documentElement.scrollHeight,
1505
+ document.body.scrollHeight
1506
+ );
1507
+ offsetHeight = Math.max(
1508
+ document.documentElement.offsetHeight,
1509
+ document.body.offsetHeight
1510
+ );
1511
+
1512
+ if (scrollHeight < offsetHeight) {
1513
+ return $(window).height() + 'px';
1514
+ } else {
1515
+ return scrollHeight + 'px';
1516
+ }
1517
+ // handle "good" browsers
1518
+ } else {
1519
+ return $(document).height() + 'px';
1520
+ }
1521
+ },
1522
+
1523
+ width: function() {
1524
+ var scrollWidth,
1525
+ offsetWidth;
1526
+ // handle IE 6
1527
+ if ($.browser.msie && $.browser.version < 7) {
1528
+ scrollWidth = Math.max(
1529
+ document.documentElement.scrollWidth,
1530
+ document.body.scrollWidth
1531
+ );
1532
+ offsetWidth = Math.max(
1533
+ document.documentElement.offsetWidth,
1534
+ document.body.offsetWidth
1535
+ );
1536
+
1537
+ if (scrollWidth < offsetWidth) {
1538
+ return $(window).width() + 'px';
1539
+ } else {
1540
+ return scrollWidth + 'px';
1541
+ }
1542
+ // handle "good" browsers
1543
+ } else {
1544
+ return $(document).width() + 'px';
1545
+ }
1546
+ },
1547
+
1548
+ resize: function() {
1549
+ /* If the dialog is draggable and the user drags it past the
1550
+ * right edge of the window, the document becomes wider so we
1551
+ * need to stretch the overlay. If the user then drags the
1552
+ * dialog back to the left, the document will become narrower,
1553
+ * so we need to shrink the overlay to the appropriate size.
1554
+ * This is handled by shrinking the overlay before setting it
1555
+ * to the full document size.
1556
+ */
1557
+ var $overlays = $([]);
1558
+ $.each($.ui.dialog.overlay.instances, function() {
1559
+ $overlays = $overlays.add(this);
1560
+ });
1561
+
1562
+ $overlays.css({
1563
+ width: 0,
1564
+ height: 0
1565
+ }).css({
1566
+ width: $.ui.dialog.overlay.width(),
1567
+ height: $.ui.dialog.overlay.height()
1568
+ });
1569
+ }
1570
+ });
1571
+
1572
+ $.extend($.ui.dialog.overlay.prototype, {
1573
+ destroy: function() {
1574
+ $.ui.dialog.overlay.destroy(this.$el);
1575
+ }
1576
+ });
1577
+
1578
+ }(jQuery));
js/jquery.bgiframe-2.1.1.js CHANGED
@@ -1,10 +1,10 @@
1
- /* Copyright (c) 2006 Brandon Aaron (http://brandonaaron.net)
2
- * Dual licensed under the MIT (http://www.opensource.org/licenses/mit-license.php)
3
- * and GPL (http://www.opensource.org/licenses/gpl-license.php) licenses.
4
- *
5
- * $LastChangedDate: 2007-07-21 18:45:56 -0500 (Sat, 21 Jul 2007) $
6
- * $Rev: 2447 $
7
- *
8
- * Version 2.1.1
9
- */
10
  (function($){$.fn.bgIframe=$.fn.bgiframe=function(s){if($.browser.msie&&/6.0/.test(navigator.userAgent)){s=$.extend({top:'auto',left:'auto',width:'auto',height:'auto',opacity:true,src:'javascript:false;'},s||{});var prop=function(n){return n&&n.constructor==Number?n+'px':n;},html='<iframe class="bgiframe"frameborder="0"tabindex="-1"src="'+s.src+'"'+'style="display:block;position:absolute;z-index:-1;'+(s.opacity!==false?'filter:Alpha(Opacity=\'0\');':'')+'top:'+(s.top=='auto'?'expression(((parseInt(this.parentNode.currentStyle.borderTopWidth)||0)*-1)+\'px\')':prop(s.top))+';'+'left:'+(s.left=='auto'?'expression(((parseInt(this.parentNode.currentStyle.borderLeftWidth)||0)*-1)+\'px\')':prop(s.left))+';'+'width:'+(s.width=='auto'?'expression(this.parentNode.offsetWidth+\'px\')':prop(s.width))+';'+'height:'+(s.height=='auto'?'expression(this.parentNode.offsetHeight+\'px\')':prop(s.height))+';'+'"/>';return this.each(function(){if($('> iframe.bgiframe',this).length==0)this.insertBefore(document.createElement(html),this.firstChild);});}return this;};})(jQuery);
1
+ /* Copyright (c) 2006 Brandon Aaron (http://brandonaaron.net)
2
+ * Dual licensed under the MIT (http://www.opensource.org/licenses/mit-license.php)
3
+ * and GPL (http://www.opensource.org/licenses/gpl-license.php) licenses.
4
+ *
5
+ * $LastChangedDate: 2007-07-21 18:45:56 -0500 (Sat, 21 Jul 2007) $
6
+ * $Rev: 2447 $
7
+ *
8
+ * Version 2.1.1
9
+ */
10
  (function($){$.fn.bgIframe=$.fn.bgiframe=function(s){if($.browser.msie&&/6.0/.test(navigator.userAgent)){s=$.extend({top:'auto',left:'auto',width:'auto',height:'auto',opacity:true,src:'javascript:false;'},s||{});var prop=function(n){return n&&n.constructor==Number?n+'px':n;},html='<iframe class="bgiframe"frameborder="0"tabindex="-1"src="'+s.src+'"'+'style="display:block;position:absolute;z-index:-1;'+(s.opacity!==false?'filter:Alpha(Opacity=\'0\');':'')+'top:'+(s.top=='auto'?'expression(((parseInt(this.parentNode.currentStyle.borderTopWidth)||0)*-1)+\'px\')':prop(s.top))+';'+'left:'+(s.left=='auto'?'expression(((parseInt(this.parentNode.currentStyle.borderLeftWidth)||0)*-1)+\'px\')':prop(s.left))+';'+'width:'+(s.width=='auto'?'expression(this.parentNode.offsetWidth+\'px\')':prop(s.width))+';'+'height:'+(s.height=='auto'?'expression(this.parentNode.offsetHeight+\'px\')':prop(s.height))+';'+'"/>';return this.each(function(){if($('> iframe.bgiframe',this).length==0)this.insertBefore(document.createElement(html),this.firstChild);});}return this;};})(jQuery);
js/jquery.form.js CHANGED
@@ -1,864 +1,864 @@
1
- /*!
2
- * jQuery Form Plugin
3
- * version: 2.80 (25-MAY-2011)
4
- * @requires jQuery v1.3.2 or later
5
- *
6
- * Examples and documentation at: http://malsup.com/jquery/form/
7
- * Dual licensed under the MIT and GPL licenses:
8
- * http://www.opensource.org/licenses/mit-license.php
9
- * http://www.gnu.org/licenses/gpl.html
10
- */
11
- ;(function($) {
12
-
13
- /*
14
- Usage Note:
15
- -----------
16
- Do not use both ajaxSubmit and ajaxForm on the same form. These
17
- functions are intended to be exclusive. Use ajaxSubmit if you want
18
- to bind your own submit handler to the form. For example,
19
-
20
- $(document).ready(function() {
21
- $('#myForm').bind('submit', function(e) {
22
- e.preventDefault(); // <-- important
23
- $(this).ajaxSubmit({
24
- target: '#output'
25
- });
26
- });
27
- });
28
-
29
- Use ajaxForm when you want the plugin to manage all the event binding
30
- for you. For example,
31
-
32
- $(document).ready(function() {
33
- $('#myForm').ajaxForm({
34
- target: '#output'
35
- });
36
- });
37
-
38
- When using ajaxForm, the ajaxSubmit function will be invoked for you
39
- at the appropriate time.
40
- */
41
-
42
- /**
43
- * ajaxSubmit() provides a mechanism for immediately submitting
44
- * an HTML form using AJAX.
45
- */
46
- $.fn.ajaxSubmit = function(options) {
47
- // fast fail if nothing selected (http://dev.jquery.com/ticket/2752)
48
- if (!this.length) {
49
- log('ajaxSubmit: skipping submit process - no element selected');
50
- return this;
51
- }
52
-
53
- if (typeof options == 'function') {
54
- options = { success: options };
55
- }
56
-
57
- var action = this.attr('action');
58
- var url = (typeof action === 'string') ? $.trim(action) : '';
59
- url = url || window.location.href || '';
60
- if (url) {
61
- // clean url (don't include hash vaue)
62
- url = (url.match(/^([^#]+)/)||[])[1];
63
- }
64
-
65
- options = $.extend(true, {
66
- url: url,
67
- success: $.ajaxSettings.success,
68
- type: this[0].getAttribute('method') || 'GET', // IE7 massage (see issue 57)
69
- iframeSrc: /^https/i.test(window.location.href || '') ? 'javascript:false' : 'about:blank'
70
- }, options);
71
-
72
- // hook for manipulating the form data before it is extracted;
73
- // convenient for use with rich editors like tinyMCE or FCKEditor
74
- var veto = {};
75
- this.trigger('form-pre-serialize', [this, options, veto]);
76
- if (veto.veto) {
77
- log('ajaxSubmit: submit vetoed via form-pre-serialize trigger');
78
- return this;
79
- }
80
-
81
- // provide opportunity to alter form data before it is serialized
82
- if (options.beforeSerialize && options.beforeSerialize(this, options) === false) {
83
- log('ajaxSubmit: submit aborted via beforeSerialize callback');
84
- return this;
85
- }
86
-
87
- var n,v,a = this.formToArray(options.semantic);
88
- if (options.data) {
89
- options.extraData = options.data;
90
- for (n in options.data) {
91
- if(options.data[n] instanceof Array) {
92
- for (var k in options.data[n]) {
93
- a.push( { name: n, value: options.data[n][k] } );
94
- }
95
- }
96
- else {
97
- v = options.data[n];
98
- v = $.isFunction(v) ? v() : v; // if value is fn, invoke it
99
- a.push( { name: n, value: v } );
100
- }
101
- }
102
- }
103
-
104
- // give pre-submit callback an opportunity to abort the submit
105
- if (options.beforeSubmit && options.beforeSubmit(a, this, options) === false) {
106
- log('ajaxSubmit: submit aborted via beforeSubmit callback');
107
- return this;
108
- }
109
-
110
- // fire vetoable 'validate' event
111
- this.trigger('form-submit-validate', [a, this, options, veto]);
112
- if (veto.veto) {
113
- log('ajaxSubmit: submit vetoed via form-submit-validate trigger');
114
- return this;
115
- }
116
-
117
- var q = $.param(a);
118
-
119
- if (options.type.toUpperCase() == 'GET') {
120
- options.url += (options.url.indexOf('?') >= 0 ? '&' : '?') + q;
121
- options.data = null; // data is null for 'get'
122
- }
123
- else {
124
- options.data = q; // data is the query string for 'post'
125
- }
126
-
127
- var $form = this, callbacks = [];
128
- if (options.resetForm) {
129
- callbacks.push(function() { $form.resetForm(); });
130
- }
131
- if (options.clearForm) {
132
- callbacks.push(function() { $form.clearForm(); });
133
- }
134
-
135
- // perform a load on the target only if dataType is not provided
136
- if (!options.dataType && options.target) {
137
- var oldSuccess = options.success || function(){};
138
- callbacks.push(function(data) {
139
- var fn = options.replaceTarget ? 'replaceWith' : 'html';
140
- $(options.target)[fn](data).each(oldSuccess, arguments);
141
- });
142
- }
143
- else if (options.success) {
144
- callbacks.push(options.success);
145
- }
146
-
147
- options.success = function(data, status, xhr) { // jQuery 1.4+ passes xhr as 3rd arg
148
- var context = options.context || options; // jQuery 1.4+ supports scope context
149
- for (var i=0, max=callbacks.length; i < max; i++) {
150
- callbacks[i].apply(context, [data, status, xhr || $form, $form]);
151
- }
152
- };
153
-
154
- // are there files to upload?
155
- var fileInputs = $('input:file', this).length > 0;
156
- var mp = 'multipart/form-data';
157
- var multipart = ($form.attr('enctype') == mp || $form.attr('encoding') == mp);
158
-
159
- // options.iframe allows user to force iframe mode
160
- // 06-NOV-09: now defaulting to iframe mode if file input is detected
161
- if (options.iframe !== false && (fileInputs || options.iframe || multipart)) {
162
- // hack to fix Safari hang (thanks to Tim Molendijk for this)
163
- // see: http://groups.google.com/group/jquery-dev/browse_thread/thread/36395b7ab510dd5d
164
- if (options.closeKeepAlive) {
165
- $.get(options.closeKeepAlive, function() { fileUpload(a); });
166
- }
167
- else {
168
- fileUpload(a);
169
- }
170
- }
171
- else {
172
- $.ajax(options);
173
- }
174
-
175
- // fire 'notify' event
176
- this.trigger('form-submit-notify', [this, options]);
177
- return this;
178
-
179
-
180
- // private function for handling file uploads (hat tip to YAHOO!)
181
- function fileUpload(a) {
182
- var form = $form[0], i, s, g, id, $io, io, xhr, sub, n, timedOut, timeoutHandle;
183
-
184
- if (a) {
185
- // ensure that every serialized input is still enabled
186
- for (i=0; i < a.length; i++) {
187
- $(form[a[i].name]).attr('disabled', false);
188
- }
189
- }
190
-
191
- if ($(':input[name=submit],:input[id=submit]', form).length) {
192
- // if there is an input with a name or id of 'submit' then we won't be
193
- // able to invoke the submit fn on the form (at least not x-browser)
194
- alert('Error: Form elements must not have name or id of "submit".');
195
- return;
196
- }
197
-
198
- s = $.extend(true, {}, $.ajaxSettings, options);
199
- s.context = s.context || s;
200
- id = 'jqFormIO' + (new Date().getTime());
201
- if (s.iframeTarget) {
202
- $io = $(s.iframeTarget);
203
- n = $io.attr('name');
204
- if (n == null)
205
- $io.attr('name', id);
206
- else
207
- id = n;
208
- }
209
- else {
210
- $io = $('<iframe name="' + id + '" src="'+ s.iframeSrc +'" />');
211
- $io.css({ position: 'absolute', top: '-1000px', left: '-1000px' });
212
- }
213
- io = $io[0];
214
-
215
-
216
- xhr = { // mock object
217
- aborted: 0,
218
- responseText: null,
219
- responseXML: null,
220
- status: 0,
221
- statusText: 'n/a',
222
- getAllResponseHeaders: function() {},
223
- getResponseHeader: function() {},
224
- setRequestHeader: function() {},
225
- abort: function(status) {
226
- var e = (status === 'timeout' ? 'timeout' : 'aborted');
227
- log('aborting upload... ' + e);
228
- this.aborted = 1;
229
- $io.attr('src', s.iframeSrc); // abort op in progress
230
- xhr.error = e;
231
- s.error && s.error.call(s.context, xhr, e, e);
232
- g && $.event.trigger("ajaxError", [xhr, s, e]);
233
- s.complete && s.complete.call(s.context, xhr, e);
234
- }
235
- };
236
-
237
- g = s.global;
238
- // trigger ajax global events so that activity/block indicators work like normal
239
- if (g && ! $.active++) {
240
- $.event.trigger("ajaxStart");
241
- }
242
- if (g) {
243
- $.event.trigger("ajaxSend", [xhr, s]);
244
- }
245
-
246
- if (s.beforeSend && s.beforeSend.call(s.context, xhr, s) === false) {
247
- if (s.global) {
248
- $.active--;
249
- }
250
- return;
251
- }
252
- if (xhr.aborted) {
253
- return;
254
- }
255
-
256
- // add submitting element to data if we know it
257
- sub = form.clk;
258
- if (sub) {
259
- n = sub.name;
260
- if (n && !sub.disabled) {
261
- s.extraData = s.extraData || {};
262
- s.extraData[n] = sub.value;
263
- if (sub.type == "image") {
264
- s.extraData[n+'.x'] = form.clk_x;
265
- s.extraData[n+'.y'] = form.clk_y;
266
- }
267
- }
268
- }
269
-
270
- // take a breath so that pending repaints get some cpu time before the upload starts
271
- function doSubmit() {
272
- // make sure form attrs are set
273
- var t = $form.attr('target'), a = $form.attr('action');
274
-
275
- // update form attrs in IE friendly way
276
- form.setAttribute('target',id);
277
- if (form.getAttribute('method') != 'POST') {
278
- form.setAttribute('method', 'POST');
279
- }
280
- if (form.getAttribute('action') != s.url) {
281
- form.setAttribute('action', s.url);
282
- }
283
-
284
- // ie borks in some cases when setting encoding
285
- if (! s.skipEncodingOverride) {
286
- $form.attr({
287
- encoding: 'multipart/form-data',
288
- enctype: 'multipart/form-data'
289
- });
290
- }
291
-
292
- // support timout
293
- if (s.timeout) {
294
- timeoutHandle = setTimeout(function() { timedOut = true; cb(true); }, s.timeout);
295
- }
296
-
297
- // add "extra" data to form if provided in options
298
- var extraInputs = [];
299
- try {
300
- if (s.extraData) {
301
- for (var n in s.extraData) {
302
- extraInputs.push(
303
- $('<input type="hidden" name="'+n+'" value="'+s.extraData[n]+'" />')
304
- .appendTo(form)[0]);
305
- }
306
- }
307
-
308
- if (!s.iframeTarget) {
309
- // add iframe to doc and submit the form
310
- $io.appendTo('body');
311
- io.attachEvent ? io.attachEvent('onload', cb) : io.addEventListener('load', cb, false);
312
- }
313
- form.submit();
314
- }
315
- finally {
316
- // reset attrs and remove "extra" input elements
317
- form.setAttribute('action',a);
318
- if(t) {
319
- form.setAttribute('target', t);
320
- } else {
321
- $form.removeAttr('target');
322
- }
323
- $(extraInputs).remove();
324
- }
325
- }
326
-
327
- if (s.forceSync) {
328
- doSubmit();
329
- }
330
- else {
331
- setTimeout(doSubmit, 10); // this lets dom updates render
332
- }
333
-
334
- var data, doc, domCheckCount = 50, callbackProcessed;
335
-
336
- function cb(e) {
337
- if (xhr.aborted || callbackProcessed) {
338
- return;
339
- }
340
- if (e === true && xhr) {
341
- xhr.abort('timeout');
342
- return;
343
- }
344
-
345
- var doc = io.contentWindow ? io.contentWindow.document : io.contentDocument ? io.contentDocument : io.document;
346
- if (!doc || doc.location.href == s.iframeSrc) {
347
- // response not received yet
348
- if (!timedOut)
349
- return;
350
- }
351
- io.detachEvent ? io.detachEvent('onload', cb) : io.removeEventListener('load', cb, false);
352
-
353
- var status = 'success', errMsg;
354
- try {
355
- if (timedOut) {
356
- throw 'timeout';
357
- }
358
-
359
- var isXml = s.dataType == 'xml' || doc.XMLDocument || $.isXMLDoc(doc);
360
- log('isXml='+isXml);
361
- if (!isXml && window.opera && (doc.body == null || doc.body.innerHTML == '')) {
362
- if (--domCheckCount) {
363
- // in some browsers (Opera) the iframe DOM is not always traversable when
364
- // the onload callback fires, so we loop a bit to accommodate
365
- log('requeing onLoad callback, DOM not available');
366
- setTimeout(cb, 250);
367
- return;
368
- }
369
- // let this fall through because server response could be an empty document
370
- //log('Could not access iframe DOM after mutiple tries.');
371
- //throw 'DOMException: not available';
372
- }
373
-
374
- //log('response detected');
375
- var docRoot = doc.body ? doc.body : doc.documentElement;
376
- xhr.responseText = docRoot ? docRoot.innerHTML : null;
377
- xhr.responseXML = doc.XMLDocument ? doc.XMLDocument : doc;
378
- if (isXml)
379
- s.dataType = 'xml';
380
- xhr.getResponseHeader = function(header){
381
- var headers = {'content-type': s.dataType};
382
- return headers[header];
383
- };
384
- // support for XHR 'status' & 'statusText' emulation :
385
- if (docRoot) {
386
- xhr.status = Number( docRoot.getAttribute('status') ) || xhr.status;
387
- xhr.statusText = docRoot.getAttribute('statusText') || xhr.statusText;
388
- }
389
-
390
- var dt = s.dataType || '';
391
- var scr = /(json|script|text)/.test(dt.toLowerCase());
392
- if (scr || s.textarea) {
393
- // see if user embedded response in textarea
394
- var ta = doc.getElementsByTagName('textarea')[0];
395
- if (ta) {
396
- xhr.responseText = ta.value;
397
- // support for XHR 'status' & 'statusText' emulation :
398
- xhr.status = Number( ta.getAttribute('status') ) || xhr.status;
399
- xhr.statusText = ta.getAttribute('statusText') || xhr.statusText;
400
- }
401
- else if (scr) {
402
- // account for browsers injecting pre around json response
403
- var pre = doc.getElementsByTagName('pre')[0];
404
- var b = doc.getElementsByTagName('body')[0];
405
- if (pre) {
406
- xhr.responseText = pre.textContent ? pre.textContent : pre.innerHTML;
407
- }
408
- else if (b) {
409
- xhr.responseText = b.innerHTML;
410
- }
411
- }
412
- }
413
- else if (s.dataType == 'xml' && !xhr.responseXML && xhr.responseText != null) {
414
- xhr.responseXML = toXml(xhr.responseText);
415
- }
416
-
417
- try {
418
- data = httpData(xhr, s.dataType, s);
419
- }
420
- catch (e) {
421
- status = 'parsererror';
422
- xhr.error = errMsg = (e || status);
423
- }
424
- }
425
- catch (e) {
426
- log('error caught',e);
427
- status = 'error';
428
- xhr.error = errMsg = (e || status);
429
- }
430
-
431
- if (xhr.aborted) {
432
- log('upload aborted');
433
- status = null;
434
- }
435
-
436
- if (xhr.status) { // we've set xhr.status
437
- status = (xhr.status >= 200 && xhr.status < 300 || xhr.status === 304) ? 'success' : 'error';
438
- }
439
-
440
- // ordering of these callbacks/triggers is odd, but that's how $.ajax does it
441
- if (status === 'success') {
442
- s.success && s.success.call(s.context, data, 'success', xhr);
443
- g && $.event.trigger("ajaxSuccess", [xhr, s]);
444
- }
445
- else if (status) {
446
- if (errMsg == undefined)
447
- errMsg = xhr.statusText;
448
- s.error && s.error.call(s.context, xhr, status, errMsg);
449
- g && $.event.trigger("ajaxError", [xhr, s, errMsg]);
450
- }
451
-
452
- g && $.event.trigger("ajaxComplete", [xhr, s]);
453
-
454
- if (g && ! --$.active) {
455
- $.event.trigger("ajaxStop");
456
- }
457
-
458
- s.complete && s.complete.call(s.context, xhr, status);
459
-
460
- callbackProcessed = true;
461
- if (s.timeout)
462
- clearTimeout(timeoutHandle);
463
-
464
- // clean up
465
- setTimeout(function() {
466
- if (!s.iframeTarget)
467
- $io.remove();
468
- xhr.responseXML = null;
469
- }, 100);
470
- }
471
-
472
- var toXml = $.parseXML || function(s, doc) { // use parseXML if available (jQuery 1.5+)
473
- if (window.ActiveXObject) {
474
- doc = new ActiveXObject('Microsoft.XMLDOM');
475
- doc.async = 'false';
476
- doc.loadXML(s);
477
- }
478
- else {
479
- doc = (new DOMParser()).parseFromString(s, 'text/xml');
480
- }
481
- return (doc && doc.documentElement && doc.documentElement.nodeName != 'parsererror') ? doc : null;
482
- };
483
- var parseJSON = $.parseJSON || function(s) {
484
- return window['eval']('(' + s + ')');
485
- };
486
-
487
- var httpData = function( xhr, type, s ) { // mostly lifted from jq1.4.4
488
-
489
- var ct = xhr.getResponseHeader('content-type') || '',
490
- xml = type === 'xml' || !type && ct.indexOf('xml') >= 0,
491
- data = xml ? xhr.responseXML : xhr.responseText;
492
-
493
- if (xml && data.documentElement.nodeName === 'parsererror') {
494
- $.error && $.error('parsererror');
495
- }
496
- if (s && s.dataFilter) {
497
- data = s.dataFilter(data, type);
498
- }
499
- if (typeof data === 'string') {
500
- if (type === 'json' || !type && ct.indexOf('json') >= 0) {
501
- data = parseJSON(data);
502
- } else if (type === "script" || !type && ct.indexOf("javascript") >= 0) {
503
- $.globalEval(data);
504
- }
505
- }
506
- return data;
507
- };
508
- }
509
- };
510
-
511
- /**
512
- * ajaxForm() provides a mechanism for fully automating form submission.
513
- *
514
- * The advantages of using this method instead of ajaxSubmit() are:
515
- *
516
- * 1: This method will include coordinates for <input type="image" /> elements (if the element
517
- * is used to submit the form).
518
- * 2. This method will include the submit element's name/value data (for the element that was
519
- * used to submit the form).
520
- * 3. This method binds the submit() method to the form for you.
521
- *
522
- * The options argument for ajaxForm works exactly as it does for ajaxSubmit. ajaxForm merely
523
- * passes the options argument along after properly binding events for submit elements and
524
- * the form itself.
525
- */
526
- $.fn.ajaxForm = function(options) {
527
- // in jQuery 1.3+ we can fix mistakes with the ready state
528
- if (this.length === 0) {
529
- var o = { s: this.selector, c: this.context };
530
- if (!$.isReady && o.s) {
531
- log('DOM not ready, queuing ajaxForm');
532
- $(function() {
533
- $(o.s,o.c).ajaxForm(options);
534
- });
535
- return this;
536
- }
537
- // is your DOM ready? http://docs.jquery.com/Tutorials:Introducing_$(document).ready()
538
- log('terminating; zero elements found by selector' + ($.isReady ? '' : ' (DOM not ready)'));
539
- return this;
540
- }
541
-
542
- return this.ajaxFormUnbind().bind('submit.form-plugin', function(e) {
543
- if (!e.isDefaultPrevented()) { // if event has been canceled, don't proceed
544
- e.preventDefault();
545
- $(this).ajaxSubmit(options);
546
- }
547
- }).bind('click.form-plugin', function(e) {
548
- var target = e.target;
549
- var $el = $(target);
550
- if (!($el.is(":submit,input:image"))) {
551
- // is this a child element of the submit el? (ex: a span within a button)
552
- var t = $el.closest(':submit');
553
- if (t.length == 0) {
554
- return;
555
- }
556
- target = t[0];
557
- }
558
- var form = this;
559
- form.clk = target;
560
- if (target.type == 'image') {
561
- if (e.offsetX != undefined) {
562
- form.clk_x = e.offsetX;
563
- form.clk_y = e.offsetY;
564
- } else if (typeof $.fn.offset == 'function') { // try to use dimensions plugin
565
- var offset = $el.offset();
566
- form.clk_x = e.pageX - offset.left;
567
- form.clk_y = e.pageY - offset.top;
568
- } else {
569
- form.clk_x = e.pageX - target.offsetLeft;
570
- form.clk_y = e.pageY - target.offsetTop;
571
- }
572
- }
573
- // clear form vars
574
- setTimeout(function() { form.clk = form.clk_x = form.clk_y = null; }, 100);
575
- });
576
- };
577
-
578
- // ajaxFormUnbind unbinds the event handlers that were bound by ajaxForm
579
- $.fn.ajaxFormUnbind = function() {
580
- return this.unbind('submit.form-plugin click.form-plugin');
581
- };
582
-
583
- /**
584
- * formToArray() gathers form element data into an array of objects that can
585
- * be passed to any of the following ajax functions: $.get, $.post, or load.
586
- * Each object in the array has both a 'name' and 'value' property. An example of
587
- * an array for a simple login form might be:
588
- *
589
- * [ { name: 'username', value: 'jresig' }, { name: 'password', value: 'secret' } ]
590
- *
591
- * It is this array that is passed to pre-submit callback functions provided to the
592
- * ajaxSubmit() and ajaxForm() methods.
593
- */
594
- $.fn.formToArray = function(semantic) {
595
- var a = [];
596
- if (this.length === 0) {
597
- return a;
598
- }
599
-
600
- var form = this[0];
601
- var els = semantic ? form.getElementsByTagName('*') : form.elements;
602
- if (!els) {
603
- return a;
604
- }
605
-
606
- var i,j,n,v,el,max,jmax;
607
- for(i=0, max=els.length; i < max; i++) {
608
- el = els[i];
609
- n = el.name;
610
- if (!n) {
611
- continue;
612
- }
613
-
614
- if (semantic && form.clk && el.type == "image") {
615
- // handle image inputs on the fly when semantic == true
616
- if(!el.disabled && form.clk == el) {
617
- a.push({name: n, value: $(el).val()});
618
- a.push({name: n+'.x', value: form.clk_x}, {name: n+'.y', value: form.clk_y});
619
- }
620
- continue;
621
- }
622
-
623
- v = $.fieldValue(el, true);
624
- if (v && v.constructor == Array) {
625
- for(j=0, jmax=v.length; j < jmax; j++) {
626
- a.push({name: n, value: v[j]});
627
- }
628
- }
629
- else if (v !== null && typeof v != 'undefined') {
630
- a.push({name: n, value: v});
631
- }
632
- }
633
-
634
- if (!semantic && form.clk) {
635
- // input type=='image' are not found in elements array! handle it here
636
- var $input = $(form.clk), input = $input[0];
637
- n = input.name;
638
- if (n && !input.disabled && input.type == 'image') {
639
- a.push({name: n, value: $input.val()});
640
- a.push({name: n+'.x', value: form.clk_x}, {name: n+'.y', value: form.clk_y});
641
- }
642
- }
643
- return a;
644
- };
645
-
646
- /**
647
- * Serializes form data into a 'submittable' string. This method will return a string
648
- * in the format: name1=value1&amp;name2=value2
649
- */
650
- $.fn.formSerialize = function(semantic) {
651
- //hand off to jQuery.param for proper encoding
652
- return $.param(this.formToArray(semantic));
653
- };
654
-
655
- /**
656
- * Serializes all field elements in the jQuery object into a query string.
657
- * This method will return a string in the format: name1=value1&amp;name2=value2
658
- */
659
- $.fn.fieldSerialize = function(successful) {
660
- var a = [];
661
- this.each(function() {
662
- var n = this.name;
663
- if (!n) {
664
- return;
665
- }
666
- var v = $.fieldValue(this, successful);
667
- if (v && v.constructor == Array) {
668
- for (var i=0,max=v.length; i < max; i++) {
669
- a.push({name: n, value: v[i]});
670
- }
671
- }
672
- else if (v !== null && typeof v != 'undefined') {
673
- a.push({name: this.name, value: v});
674
- }
675
- });
676
- //hand off to jQuery.param for proper encoding
677
- return $.param(a);
678
- };
679
-
680
- /**
681
- * Returns the value(s) of the element in the matched set. For example, consider the following form:
682
- *
683
- * <form><fieldset>
684
- * <input name="A" type="text" />
685
- * <input name="A" type="text" />
686
- * <input name="B" type="checkbox" value="B1" />
687
- * <input name="B" type="checkbox" value="B2"/>
688
- * <input name="C" type="radio" value="C1" />
689
- * <input name="C" type="radio" value="C2" />
690
- * </fieldset></form>
691
- *
692
- * var v = $(':text').fieldValue();
693
- * // if no values are entered into the text inputs
694
- * v == ['','']
695
- * // if values entered into the text inputs are 'foo' and 'bar'
696
- * v == ['foo','bar']
697
- *
698
- * var v = $(':checkbox').fieldValue();
699
- * // if neither checkbox is checked
700
- * v === undefined
701
- * // if both checkboxes are checked
702
- * v == ['B1', 'B2']
703
- *
704
- * var v = $(':radio').fieldValue();
705
- * // if neither radio is checked
706
- * v === undefined
707
- * // if first radio is checked
708
- * v == ['C1']
709
- *
710
- * The successful argument controls whether or not the field element must be 'successful'
711
- * (per http://www.w3.org/TR/html4/interact/forms.html#successful-controls).
712
- * The default value of the successful argument is true. If this value is false the value(s)
713
- * for each element is returned.
714
- *
715
- * Note: This method *always* returns an array. If no valid value can be determined the
716
- * array will be empty, otherwise it will contain one or more values.
717
- */
718
- $.fn.fieldValue = function(successful) {
719
- for (var val=[], i=0, max=this.length; i < max; i++) {
720
- var el = this[i];
721
- var v = $.fieldValue(el, successful);
722
- if (v === null || typeof v == 'undefined' || (v.constructor == Array && !v.length)) {
723
- continue;
724
- }
725
- v.constructor == Array ? $.merge(val, v) : val.push(v);
726
- }
727
- return val;
728
- };
729
-
730
- /**
731
- * Returns the value of the field element.
732
- */
733
- $.fieldValue = function(el, successful) {
734
- var n = el.name, t = el.type, tag = el.tagName.toLowerCase();
735
- if (successful === undefined) {
736
- successful = true;
737
- }
738
-
739
- if (successful && (!n || el.disabled || t == 'reset' || t == 'button' ||
740
- (t == 'checkbox' || t == 'radio') && !el.checked ||
741
- (t == 'submit' || t == 'image') && el.form && el.form.clk != el ||
742
- tag == 'select' && el.selectedIndex == -1)) {
743
- return null;
744
- }
745
-
746
- if (tag == 'select') {
747
- var index = el.selectedIndex;
748
- if (index < 0) {
749
- return null;
750
- }
751
- var a = [], ops = el.options;
752
- var one = (t == 'select-one');
753
- var max = (one ? index+1 : ops.length);
754
- for(var i=(one ? index : 0); i < max; i++) {
755
- var op = ops[i];
756
- if (op.selected) {
757
- var v = op.value;
758
- if (!v) { // extra pain for IE...
759
- v = (op.attributes && op.attributes['value'] && !(op.attributes['value'].specified)) ? op.text : op.value;
760
- }
761
- if (one) {
762
- return v;
763
- }
764
- a.push(v);
765
- }
766
- }
767
- return a;
768
- }
769
- return $(el).val();
770
- };
771
-
772
- /**
773
- * Clears the form data. Takes the following actions on the form's input fields:
774
- * - input text fields will have their 'value' property set to the empty string
775
- * - select elements will have their 'selectedIndex' property set to -1
776
- * - checkbox and radio inputs will have their 'checked' property set to false
777
- * - inputs of type submit, button, reset, and hidden will *not* be effected
778
- * - button elements will *not* be effected
779
- */
780
- $.fn.clearForm = function() {
781
- return this.each(function() {
782
- $('input,select,textarea', this).clearFields();
783
- });
784
- };
785
-
786
- /**
787
- * Clears the selected form elements.
788
- */
789
- $.fn.clearFields = $.fn.clearInputs = function() {
790
- return this.each(function() {
791
- var t = this.type, tag = this.tagName.toLowerCase();
792
- if (t == 'text' || t == 'password' || tag == 'textarea') {
793
- this.value = '';
794
- }
795
- else if (t == 'checkbox' || t == 'radio') {
796
- this.checked = false;
797
- }
798
- else if (tag == 'select') {
799
- this.selectedIndex = -1;
800
- }
801
- });
802
- };
803
-
804
- /**
805
- * Resets the form data. Causes all form elements to be reset to their original value.
806
- */
807
- $.fn.resetForm = function() {
808
- return this.each(function() {
809
- // guard against an input with the name of 'reset'
810
- // note that IE reports the reset function as an 'object'
811
- if (typeof this.reset == 'function' || (typeof this.reset == 'object' && !this.reset.nodeType)) {
812
- this.reset();
813
- }
814
- });
815
- };
816
-
817
- /**
818
- * Enables or disables any matching elements.
819
- */
820
- $.fn.enable = function(b) {
821
- if (b === undefined) {
822
- b = true;
823
- }
824
- return this.each(function() {
825
- this.disabled = !b;
826
- });
827
- };
828
-
829
- /**
830
- * Checks/unchecks any matching checkboxes or radio buttons and
831
- * selects/deselects and matching option elements.
832
- */
833
- $.fn.selected = function(select) {
834
- if (select === undefined) {
835
- select = true;
836
- }
837
- return this.each(function() {
838
- var t = this.type;
839
- if (t == 'checkbox' || t == 'radio') {
840
- this.checked = select;
841
- }
842
- else if (this.tagName.toLowerCase() == 'option') {
843
- var $sel = $(this).parent('select');
844
- if (select && $sel[0] && $sel[0].type == 'select-one') {
845
- // deselect all other options
846
- $sel.find('option').selected(false);
847
- }
848
- this.selected = select;
849
- }
850
- });
851
- };
852
-
853
- // helper fn for console logging
854
- function log() {
855
- var msg = '[jquery.form] ' + Array.prototype.join.call(arguments,'');
856
- if (window.console && window.console.log) {
857
- window.console.log(msg);
858
- }
859
- else if (window.opera && window.opera.postError) {
860
- window.opera.postError(msg);
861
- }
862
- };
863
-
864
- })(jQuery);
1
+ /*!
2
+ * jQuery Form Plugin
3
+ * version: 2.80 (25-MAY-2011)
4
+ * @requires jQuery v1.3.2 or later
5
+ *
6
+ * Examples and documentation at: http://malsup.com/jquery/form/
7
+ * Dual licensed under the MIT and GPL licenses:
8
+ * http://www.opensource.org/licenses/mit-license.php
9
+ * http://www.gnu.org/licenses/gpl.html
10
+ */
11
+ ;(function($) {
12
+
13
+ /*
14
+ Usage Note:
15
+ -----------
16
+ Do not use both ajaxSubmit and ajaxForm on the same form. These
17
+ functions are intended to be exclusive. Use ajaxSubmit if you want
18
+ to bind your own submit handler to the form. For example,
19
+
20
+ $(document).ready(function() {
21
+ $('#myForm').bind('submit', function(e) {
22
+ e.preventDefault(); // <-- important
23
+ $(this).ajaxSubmit({
24
+ target: '#output'
25
+ });
26
+ });
27
+ });
28
+
29
+ Use ajaxForm when you want the plugin to manage all the event binding
30
+ for you. For example,
31
+
32
+ $(document).ready(function() {
33
+ $('#myForm').ajaxForm({
34
+ target: '#output'
35
+ });
36
+ });
37
+
38
+ When using ajaxForm, the ajaxSubmit function will be invoked for you
39
+ at the appropriate time.
40
+ */
41
+
42
+ /**
43
+ * ajaxSubmit() provides a mechanism for immediately submitting
44
+ * an HTML form using AJAX.
45
+ */
46
+ $.fn.ajaxSubmit = function(options) {
47
+ // fast fail if nothing selected (http://dev.jquery.com/ticket/2752)
48
+ if (!this.length) {
49
+ log('ajaxSubmit: skipping submit process - no element selected');
50
+ return this;
51
+ }
52
+
53
+ if (typeof options == 'function') {
54
+ options = { success: options };
55
+ }
56
+
57
+ var action = this.attr('action');
58
+ var url = (typeof action === 'string') ? $.trim(action) : '';
59
+ url = url || window.location.href || '';
60
+ if (url) {
61
+ // clean url (don't include hash vaue)
62
+ url = (url.match(/^([^#]+)/)||[])[1];
63
+ }
64
+
65
+ options = $.extend(true, {
66
+ url: url,
67
+ success: $.ajaxSettings.success,
68
+ type: this[0].getAttribute('method') || 'GET', // IE7 massage (see issue 57)
69
+ iframeSrc: /^https/i.test(window.location.href || '') ? 'javascript:false' : 'about:blank'
70
+ }, options);
71
+
72
+ // hook for manipulating the form data before it is extracted;
73
+ // convenient for use with rich editors like tinyMCE or FCKEditor
74
+ var veto = {};
75
+ this.trigger('form-pre-serialize', [this, options, veto]);
76
+ if (veto.veto) {
77
+ log('ajaxSubmit: submit vetoed via form-pre-serialize trigger');
78
+ return this;
79
+ }
80
+
81
+ // provide opportunity to alter form data before it is serialized
82
+ if (options.beforeSerialize && options.beforeSerialize(this, options) === false) {
83
+ log('ajaxSubmit: submit aborted via beforeSerialize callback');
84
+ return this;
85
+ }
86
+
87
+ var n,v,a = this.formToArray(options.semantic);
88
+ if (options.data) {
89
+ options.extraData = options.data;
90
+ for (n in options.data) {
91
+ if(options.data[n] instanceof Array) {
92
+ for (var k in options.data[n]) {
93
+ a.push( { name: n, value: options.data[n][k] } );
94
+ }
95
+ }
96
+ else {
97
+ v = options.data[n];
98
+ v = $.isFunction(v) ? v() : v; // if value is fn, invoke it
99
+ a.push( { name: n, value: v } );
100
+ }
101
+ }
102
+ }
103
+
104
+ // give pre-submit callback an opportunity to abort the submit
105
+ if (options.beforeSubmit && options.beforeSubmit(a, this, options) === false) {
106
+ log('ajaxSubmit: submit aborted via beforeSubmit callback');
107
+ return this;
108
+ }
109
+
110
+ // fire vetoable 'validate' event
111
+ this.trigger('form-submit-validate', [a, this, options, veto]);
112
+ if (veto.veto) {
113
+ log('ajaxSubmit: submit vetoed via form-submit-validate trigger');
114
+ return this;
115
+ }
116
+
117
+ var q = $.param(a);
118
+
119
+ if (options.type.toUpperCase() == 'GET') {
120
+ options.url += (options.url.indexOf('?') >= 0 ? '&' : '?') + q;
121
+ options.data = null; // data is null for 'get'
122
+ }
123
+ else {
124
+ options.data = q; // data is the query string for 'post'
125
+ }
126
+
127
+ var $form = this, callbacks = [];
128
+ if (options.resetForm) {
129
+ callbacks.push(function() { $form.resetForm(); });
130
+ }
131
+ if (options.clearForm) {
132
+ callbacks.push(function() { $form.clearForm(); });
133
+ }
134
+
135
+ // perform a load on the target only if dataType is not provided
136
+ if (!options.dataType && options.target) {
137
+ var oldSuccess = options.success || function(){};
138
+ callbacks.push(function(data) {
139
+ var fn = options.replaceTarget ? 'replaceWith' : 'html';
140
+ $(options.target)[fn](data).each(oldSuccess, arguments);
141
+ });
142
+ }
143
+ else if (options.success) {
144
+ callbacks.push(options.success);
145
+ }
146
+
147
+ options.success = function(data, status, xhr) { // jQuery 1.4+ passes xhr as 3rd arg
148
+ var context = options.context || options; // jQuery 1.4+ supports scope context
149
+ for (var i=0, max=callbacks.length; i < max; i++) {
150
+ callbacks[i].apply(context, [data, status, xhr || $form, $form]);
151
+ }
152
+ };
153
+
154
+ // are there files to upload?
155
+ var fileInputs = $('input:file', this).length > 0;
156
+ var mp = 'multipart/form-data';
157
+ var multipart = ($form.attr('enctype') == mp || $form.attr('encoding') == mp);
158
+
159
+ // options.iframe allows user to force iframe mode
160
+ // 06-NOV-09: now defaulting to iframe mode if file input is detected
161
+ if (options.iframe !== false && (fileInputs || options.iframe || multipart)) {
162
+ // hack to fix Safari hang (thanks to Tim Molendijk for this)
163
+ // see: http://groups.google.com/group/jquery-dev/browse_thread/thread/36395b7ab510dd5d
164
+ if (options.closeKeepAlive) {
165
+ $.get(options.closeKeepAlive, function() { fileUpload(a); });
166
+ }
167
+ else {
168
+ fileUpload(a);
169
+ }
170
+ }
171
+ else {
172
+ $.ajax(options);
173
+ }
174
+
175
+ // fire 'notify' event
176
+ this.trigger('form-submit-notify', [this, options]);
177
+ return this;
178
+
179
+
180
+ // private function for handling file uploads (hat tip to YAHOO!)
181
+ function fileUpload(a) {
182
+ var form = $form[0], i, s, g, id, $io, io, xhr, sub, n, timedOut, timeoutHandle;
183
+
184
+ if (a) {
185
+ // ensure that every serialized input is still enabled
186
+ for (i=0; i < a.length; i++) {
187
+ $(form[a[i].name]).attr('disabled', false);
188
+ }
189
+ }
190
+
191
+ if ($(':input[name=submit],:input[id=submit]', form).length) {
192
+ // if there is an input with a name or id of 'submit' then we won't be
193
+ // able to invoke the submit fn on the form (at least not x-browser)
194
+ alert('Error: Form elements must not have name or id of "submit".');
195
+ return;
196
+ }
197
+
198
+ s = $.extend(true, {}, $.ajaxSettings, options);
199
+ s.context = s.context || s;
200
+ id = 'jqFormIO' + (new Date().getTime());
201
+ if (s.iframeTarget) {
202
+ $io = $(s.iframeTarget);
203
+ n = $io.attr('name');
204
+ if (n == null)
205
+ $io.attr('name', id);
206
+ else
207
+ id = n;
208
+ }
209
+ else {
210
+ $io = $('<iframe name="' + id + '" src="'+ s.iframeSrc +'" />');
211
+ $io.css({ position: 'absolute', top: '-1000px', left: '-1000px' });
212
+ }
213
+ io = $io[0];
214
+
215
+
216
+ xhr = { // mock object
217
+ aborted: 0,
218
+ responseText: null,
219
+ responseXML: null,
220
+ status: 0,
221
+ statusText: 'n/a',
222
+ getAllResponseHeaders: function() {},
223
+ getResponseHeader: function() {},
224
+ setRequestHeader: function() {},
225
+ abort: function(status) {
226
+ var e = (status === 'timeout' ? 'timeout' : 'aborted');
227
+ log('aborting upload... ' + e);
228
+ this.aborted = 1;
229
+ $io.attr('src', s.iframeSrc); // abort op in progress
230
+ xhr.error = e;
231
+ s.error && s.error.call(s.context, xhr, e, e);
232
+ g && $.event.trigger("ajaxError", [xhr, s, e]);
233
+ s.complete && s.complete.call(s.context, xhr, e);
234
+ }
235
+ };
236
+
237
+ g = s.global;
238
+ // trigger ajax global events so that activity/block indicators work like normal
239
+ if (g && ! $.active++) {
240
+ $.event.trigger("ajaxStart");
241
+ }
242
+ if (g) {
243
+ $.event.trigger("ajaxSend", [xhr, s]);
244
+ }
245
+
246
+ if (s.beforeSend && s.beforeSend.call(s.context, xhr, s) === false) {
247
+ if (s.global) {
248
+ $.active--;
249
+ }
250
+ return;
251
+ }
252
+ if (xhr.aborted) {
253
+ return;
254
+ }
255
+
256
+ // add submitting element to data if we know it
257
+ sub = form.clk;
258
+ if (sub) {
259
+ n = sub.name;
260
+ if (n && !sub.disabled) {
261
+ s.extraData = s.extraData || {};
262
+ s.extraData[n] = sub.value;
263
+ if (sub.type == "image") {
264
+ s.extraData[n+'.x'] = form.clk_x;
265
+ s.extraData[n+'.y'] = form.clk_y;
266
+ }
267
+ }
268
+ }
269
+
270
+ // take a breath so that pending repaints get some cpu time before the upload starts
271
+ function doSubmit() {
272
+ // make sure form attrs are set
273
+ var t = $form.attr('target'), a = $form.attr('action');
274
+
275
+ // update form attrs in IE friendly way
276
+ form.setAttribute('target',id);
277
+ if (form.getAttribute('method') != 'POST') {
278
+ form.setAttribute('method', 'POST');
279
+ }
280
+ if (form.getAttribute('action') != s.url) {
281
+ form.setAttribute('action', s.url);
282
+ }
283
+
284
+ // ie borks in some cases when setting encoding
285
+ if (! s.skipEncodingOverride) {
286
+ $form.attr({
287
+ encoding: 'multipart/form-data',
288
+ enctype: 'multipart/form-data'
289
+ });
290
+ }
291
+
292
+ // support timout
293
+ if (s.timeout) {
294
+ timeoutHandle = setTimeout(function() { timedOut = true; cb(true); }, s.timeout);
295
+ }
296
+
297
+ // add "extra" data to form if provided in options
298
+ var extraInputs = [];
299
+ try {
300
+ if (s.extraData) {
301
+ for (var n in s.extraData) {
302
+ extraInputs.push(
303
+ $('<input type="hidden" name="'+n+'" value="'+s.extraData[n]+'" />')
304
+ .appendTo(form)[0]);
305
+ }
306
+ }
307
+
308
+ if (!s.iframeTarget) {
309
+ // add iframe to doc and submit the form
310
+ $io.appendTo('body');
311
+ io.attachEvent ? io.attachEvent('onload', cb) : io.addEventListener('load', cb, false);
312
+ }
313
+ form.submit();
314
+ }
315
+ finally {
316
+ // reset attrs and remove "extra" input elements
317
+ form.setAttribute('action',a);
318
+ if(t) {
319
+ form.setAttribute('target', t);
320
+ } else {
321
+ $form.removeAttr('target');
322
+ }
323
+ $(extraInputs).remove();
324
+ }
325
+ }
326
+
327
+ if (s.forceSync) {
328
+ doSubmit();
329
+ }
330
+ else {
331
+ setTimeout(doSubmit, 10); // this lets dom updates render
332
+ }
333
+
334
+ var data, doc, domCheckCount = 50, callbackProcessed;
335
+
336
+ function cb(e) {
337
+ if (xhr.aborted || callbackProcessed) {
338
+ return;
339
+ }
340
+ if (e === true && xhr) {
341
+ xhr.abort('timeout');
342
+ return;
343
+ }
344
+
345
+ var doc = io.contentWindow ? io.contentWindow.document : io.contentDocument ? io.contentDocument : io.document;
346
+ if (!doc || doc.location.href == s.iframeSrc) {
347
+ // response not received yet
348
+ if (!timedOut)
349
+ return;
350
+ }
351
+ io.detachEvent ? io.detachEvent('onload', cb) : io.removeEventListener('load', cb, false);
352
+
353
+ var status = 'success', errMsg;
354
+ try {
355
+ if (timedOut) {
356
+ throw 'timeout';
357
+ }
358
+
359
+ var isXml = s.dataType == 'xml' || doc.XMLDocument || $.isXMLDoc(doc);
360
+ log('isXml='+isXml);
361
+ if (!isXml && window.opera && (doc.body == null || doc.body.innerHTML == '')) {
362
+ if (--domCheckCount) {
363
+ // in some browsers (Opera) the iframe DOM is not always traversable when
364
+ // the onload callback fires, so we loop a bit to accommodate
365
+ log('requeing onLoad callback, DOM not available');
366
+ setTimeout(cb, 250);
367
+ return;
368
+ }
369
+ // let this fall through because server response could be an empty document
370
+ //log('Could not access iframe DOM after mutiple tries.');
371
+ //throw 'DOMException: not available';
372
+ }
373
+
374
+ //log('response detected');
375
+ var docRoot = doc.body ? doc.body : doc.documentElement;
376
+ xhr.responseText = docRoot ? docRoot.innerHTML : null;
377
+ xhr.responseXML = doc.XMLDocument ? doc.XMLDocument : doc;
378
+ if (isXml)
379
+ s.dataType = 'xml';
380
+ xhr.getResponseHeader = function(header){
381
+ var headers = {'content-type': s.dataType};
382
+ return headers[header];
383
+ };
384
+ // support for XHR 'status' & 'statusText' emulation :
385
+ if (docRoot) {
386
+ xhr.status = Number( docRoot.getAttribute('status') ) || xhr.status;
387
+ xhr.statusText = docRoot.getAttribute('statusText') || xhr.statusText;
388
+ }
389
+
390
+ var dt = s.dataType || '';
391
+ var scr = /(json|script|text)/.test(dt.toLowerCase());
392
+ if (scr || s.textarea) {
393
+ // see if user embedded response in textarea
394
+ var ta = doc.getElementsByTagName('textarea')[0];
395
+ if (ta) {
396
+ xhr.responseText = ta.value;
397
+ // support for XHR 'status' & 'statusText' emulation :
398
+ xhr.status = Number( ta.getAttribute('status') ) || xhr.status;
399
+ xhr.statusText = ta.getAttribute('statusText') || xhr.statusText;
400
+ }
401
+ else if (scr) {
402
+ // account for browsers injecting pre around json response
403
+ var pre = doc.getElementsByTagName('pre')[0];
404
+ var b = doc.getElementsByTagName('body')[0];
405
+ if (pre) {
406
+ xhr.responseText = pre.textContent ? pre.textContent : pre.innerHTML;
407
+ }
408
+ else if (b) {
409
+ xhr.responseText = b.innerHTML;
410
+ }
411
+ }
412
+ }
413
+ else if (s.dataType == 'xml' && !xhr.responseXML && xhr.responseText != null) {
414
+ xhr.responseXML = toXml(xhr.responseText);
415
+ }
416
+
417
+ try {
418
+ data = httpData(xhr, s.dataType, s);
419
+ }
420
+ catch (e) {
421
+ status = 'parsererror';
422
+ xhr.error = errMsg = (e || status);
423
+ }
424
+ }
425
+ catch (e) {
426
+ log('error caught',e);
427
+ status = 'error';
428
+ xhr.error = errMsg = (e || status);
429
+ }
430
+
431
+ if (xhr.aborted) {
432
+ log('upload aborted');
433
+ status = null;
434
+ }
435
+
436
+ if (xhr.status) { // we've set xhr.status
437
+ status = (xhr.status >= 200 && xhr.status < 300 || xhr.status === 304) ? 'success' : 'error';
438
+ }
439
+
440
+ // ordering of these callbacks/triggers is odd, but that's how $.ajax does it
441
+ if (status === 'success') {
442
+ s.success && s.success.call(s.context, data, 'success', xhr);
443
+ g && $.event.trigger("ajaxSuccess", [xhr, s]);
444
+ }
445
+ else if (status) {
446
+ if (errMsg == undefined)
447
+ errMsg = xhr.statusText;
448
+ s.error && s.error.call(s.context, xhr, status, errMsg);
449
+ g && $.event.trigger("ajaxError", [xhr, s, errMsg]);
450
+ }
451
+
452
+ g && $.event.trigger("ajaxComplete", [xhr, s]);
453
+
454
+ if (g && ! --$.active) {
455
+ $.event.trigger("ajaxStop");
456
+ }
457
+
458
+ s.complete && s.complete.call(s.context, xhr, status);
459
+
460
+ callbackProcessed = true;
461
+ if (s.timeout)
462
+ clearTimeout(timeoutHandle);
463
+
464
+ // clean up
465
+ setTimeout(function() {
466
+ if (!s.iframeTarget)
467
+ $io.remove();
468
+ xhr.responseXML = null;
469
+ }, 100);
470
+ }
471
+
472
+ var toXml = $.parseXML || function(s, doc) { // use parseXML if available (jQuery 1.5+)
473
+ if (window.ActiveXObject) {
474
+ doc = new ActiveXObject('Microsoft.XMLDOM');
475
+ doc.async = 'false';
476
+ doc.loadXML(s);
477
+ }
478
+ else {
479
+ doc = (new DOMParser()).parseFromString(s, 'text/xml');
480
+ }
481
+ return (doc && doc.documentElement && doc.documentElement.nodeName != 'parsererror') ? doc : null;
482
+ };
483
+ var parseJSON = $.parseJSON || function(s) {
484
+ return window['eval']('(' + s + ')');
485
+ };
486
+
487
+ var httpData = function( xhr, type, s ) { // mostly lifted from jq1.4.4
488
+
489
+ var ct = xhr.getResponseHeader('content-type') || '',
490
+ xml = type === 'xml' || !type && ct.indexOf('xml') >= 0,
491
+ data = xml ? xhr.responseXML : xhr.responseText;
492
+
493
+ if (xml && data.documentElement.nodeName === 'parsererror') {
494
+ $.error && $.error('parsererror');
495
+ }
496
+ if (s && s.dataFilter) {
497
+ data = s.dataFilter(data, type);
498
+ }
499
+ if (typeof data === 'string') {
500
+ if (type === 'json' || !type && ct.indexOf('json') >= 0) {
501
+ data = parseJSON(data);
502
+ } else if (type === "script" || !type && ct.indexOf("javascript") >= 0) {
503
+ $.globalEval(data);
504
+ }
505
+ }
506
+ return data;
507
+ };
508
+ }
509
+ };
510
+
511
+ /**
512
+ * ajaxForm() provides a mechanism for fully automating form submission.
513
+ *
514
+ * The advantages of using this method instead of ajaxSubmit() are:
515
+ *
516
+ * 1: This method will include coordinates for <input type="image" /> elements (if the element
517
+ * is used to submit the form).
518
+ * 2. This method will include the submit element's name/value data (for the element that was
519
+ * used to submit the form).
520
+ * 3. This method binds the submit() method to the form for you.
521
+ *
522
+ * The options argument for ajaxForm works exactly as it does for ajaxSubmit. ajaxForm merely
523
+ * passes the options argument along after properly binding events for submit elements and
524
+ * the form itself.
525
+ */
526
+ $.fn.ajaxForm = function(options) {
527
+ // in jQuery 1.3+ we can fix mistakes with the ready state
528
+ if (this.length === 0) {
529
+ var o = { s: this.selector, c: this.context };
530
+ if (!$.isReady && o.s) {
531
+ log('DOM not ready, queuing ajaxForm');
532
+ $(function() {
533
+ $(o.s,o.c).ajaxForm(options);
534
+ });
535
+ return this;
536
+ }
537
+ // is your DOM ready? http://docs.jquery.com/Tutorials:Introducing_$(document).ready()
538
+ log('terminating; zero elements found by selector' + ($.isReady ? '' : ' (DOM not ready)'));
539
+ return this;
540
+ }
541
+
542
+ return this.ajaxFormUnbind().bind('submit.form-plugin', function(e) {
543
+ if (!e.isDefaultPrevented()) { // if event has been canceled, don't proceed
544
+ e.preventDefault();
545
+ $(this).ajaxSubmit(options);
546
+ }
547
+ }).bind('click.form-plugin', function(e) {
548
+ var target = e.target;
549
+ var $el = $(target);
550
+ if (!($el.is(":submit,input:image"))) {
551
+ // is this a child element of the submit el? (ex: a span within a button)
552
+ var t = $el.closest(':submit');
553
+ if (t.length == 0) {
554
+ return;
555
+ }
556
+ target = t[0];
557
+ }
558
+ var form = this;
559
+ form.clk = target;
560
+ if (target.type == 'image') {
561
+ if (e.offsetX != undefined) {
562
+ form.clk_x = e.offsetX;
563
+ form.clk_y = e.offsetY;
564
+ } else if (typeof $.fn.offset == 'function') { // try to use dimensions plugin
565
+ var offset = $el.offset();
566
+ form.clk_x = e.pageX - offset.left;
567
+ form.clk_y = e.pageY - offset.top;
568
+ } else {
569
+ form.clk_x = e.pageX - target.offsetLeft;
570
+ form.clk_y = e.pageY - target.offsetTop;
571
+ }
572
+ }
573
+ // clear form vars
574
+ setTimeout(function() { form.clk = form.clk_x = form.clk_y = null; }, 100);
575
+ });
576
+ };
577
+
578
+ // ajaxFormUnbind unbinds the event handlers that were bound by ajaxForm
579
+ $.fn.ajaxFormUnbind = function() {
580
+ return this.unbind('submit.form-plugin click.form-plugin');
581
+ };
582
+
583
+ /**
584
+ * formToArray() gathers form element data into an array of objects that can
585
+ * be passed to any of the following ajax functions: $.get, $.post, or load.
586
+ * Each object in the array has both a 'name' and 'value' property. An example of
587
+ * an array for a simple login form might be:
588
+ *
589
+ * [ { name: 'username', value: 'jresig' }, { name: 'password', value: 'secret' } ]
590
+ *
591
+ * It is this array that is passed to pre-submit callback functions provided to the
592
+ * ajaxSubmit() and ajaxForm() methods.
593
+ */
594
+ $.fn.formToArray = function(semantic) {
595
+ var a = [];
596
+ if (this.length === 0) {
597
+ return a;
598
+ }
599
+
600
+ var form = this[0];
601
+ var els = semantic ? form.getElementsByTagName('*') : form.elements;
602
+ if (!els) {
603
+ return a;
604
+ }
605
+
606
+ var i,j,n,v,el,max,jmax;
607
+ for(i=0, max=els.length; i < max; i++) {
608
+ el = els[i];
609
+ n = el.name;
610
+ if (!n) {
611
+ continue;
612
+ }
613
+
614
+ if (semantic && form.clk && el.type == "image") {
615
+ // handle image inputs on the fly when semantic == true
616
+ if(!el.disabled && form.clk == el) {
617
+ a.push({name: n, value: $(el).val()});
618
+ a.push({name: n+'.x', value: form.clk_x}, {name: n+'.y', value: form.clk_y});
619
+ }
620
+ continue;
621
+ }
622
+
623
+ v = $.fieldValue(el, true);
624
+ if (v && v.constructor == Array) {
625
+ for(j=0, jmax=v.length; j < jmax; j++) {
626
+ a.push({name: n, value: v[j]});
627
+ }
628
+ }
629
+ else if (v !== null && typeof v != 'undefined') {
630
+ a.push({name: n, value: v});
631
+ }
632
+ }
633
+
634
+ if (!semantic && form.clk) {
635
+ // input type=='image' are not found in elements array! handle it here
636
+ var $input = $(form.clk), input = $input[0];
637
+ n = input.name;
638
+ if (n && !input.disabled && input.type == 'image') {
639
+ a.push({name: n, value: $input.val()});
640
+ a.push({name: n+'.x', value: form.clk_x}, {name: n+'.y', value: form.clk_y});
641
+ }
642
+ }
643
+ return a;
644
+ };
645
+
646
+ /**
647
+ * Serializes form data into a 'submittable' string. This method will return a string
648
+ * in the format: name1=value1&amp;name2=value2
649
+ */
650
+ $.fn.formSerialize = function(semantic) {
651
+ //hand off to jQuery.param for proper encoding
652
+ return $.param(this.formToArray(semantic));
653
+ };
654
+
655
+ /**
656
+ * Serializes all field elements in the jQuery object into a query string.
657
+ * This method will return a string in the format: name1=value1&amp;name2=value2
658
+ */
659
+ $.fn.fieldSerialize = function(successful) {
660
+ var a = [];
661
+ this.each(function() {
662
+ var n = this.name;
663
+ if (!n) {
664
+ return;
665
+ }
666
+ var v = $.fieldValue(this, successful);
667
+ if (v && v.constructor == Array) {
668
+ for (var i=0,max=v.length; i < max; i++) {
669
+ a.push({name: n, value: v[i]});
670
+ }
671
+ }
672
+ else if (v !== null && typeof v != 'undefined') {
673
+ a.push({name: this.name, value: v});
674
+ }
675
+ });
676
+ //hand off to jQuery.param for proper encoding
677
+ return $.param(a);
678
+ };
679
+
680
+ /**
681
+ * Returns the value(s) of the element in the matched set. For example, consider the following form:
682
+ *
683
+ * <form><fieldset>
684
+ * <input name="A" type="text" />
685
+ * <input name="A" type="text" />
686
+ * <input name="B" type="checkbox" value="B1" />
687
+ * <input name="B" type="checkbox" value="B2"/>
688
+ * <input name="C" type="radio" value="C1" />
689
+ * <input name="C" type="radio" value="C2" />
690
+ * </fieldset></form>
691
+ *
692
+ * var v = $(':text').fieldValue();
693
+ * // if no values are entered into the text inputs
694
+ * v == ['','']
695
+ * // if values entered into the text inputs are 'foo' and 'bar'
696
+ * v == ['foo','bar']
697
+ *
698
+ * var v = $(':checkbox').fieldValue();
699
+ * // if neither checkbox is checked
700
+ * v === undefined
701
+ * // if both checkboxes are checked
702
+ * v == ['B1', 'B2']
703
+ *
704
+ * var v = $(':radio').fieldValue();
705
+ * // if neither radio is checked
706
+ * v === undefined
707
+ * // if first radio is checked
708
+ * v == ['C1']
709
+ *
710
+ * The successful argument controls whether or not the field element must be 'successful'
711
+ * (per http://www.w3.org/TR/html4/interact/forms.html#successful-controls).
712
+ * The default value of the successful argument is true. If this value is false the value(s)
713
+ * for each element is returned.
714
+ *
715
+ * Note: This method *always* returns an array. If no valid value can be determined the
716
+ * array will be empty, otherwise it will contain one or more values.
717
+ */
718
+ $.fn.fieldValue = function(successful) {
719
+ for (var val=[], i=0, max=this.length; i < max; i++) {
720
+ var el = this[i];
721
+ var v = $.fieldValue(el, successful);
722
+ if (v === null || typeof v == 'undefined' || (v.constructor == Array && !v.length)) {
723
+ continue;
724
+ }
725
+ v.constructor == Array ? $.merge(val, v) : val.push(v);
726
+ }
727
+ return val;
728
+ };
729
+
730
+ /**
731
+ * Returns the value of the field element.
732
+ */
733
+ $.fieldValue = function(el, successful) {
734
+ var n = el.name, t = el.type, tag = el.tagName.toLowerCase();
735
+ if (successful === undefined) {
736
+ successful = true;
737
+ }
738
+
739
+ if (successful && (!n || el.disabled || t == 'reset' || t == 'button' ||
740
+ (t == 'checkbox' || t == 'radio') && !el.checked ||
741
+ (t == 'submit' || t == 'image') && el.form && el.form.clk != el ||
742
+ tag == 'select' && el.selectedIndex == -1)) {
743
+ return null;
744
+ }
745
+
746
+ if (tag == 'select') {
747
+ var index = el.selectedIndex;
748
+ if (index < 0) {
749
+ return null;
750
+ }
751
+ var a = [], ops = el.options;
752
+ var one = (t == 'select-one');
753
+ var max = (one ? index+1 : ops.length);
754
+ for(var i=(one ? index : 0); i < max; i++) {
755
+ var op = ops[i];
756
+ if (op.selected) {
757
+ var v = op.value;
758
+ if (!v) { // extra pain for IE...
759
+ v = (op.attributes && op.attributes['value'] && !(op.attributes['value'].specified)) ? op.text : op.value;
760
+ }
761
+ if (one) {
762
+ return v;
763
+ }
764
+ a.push(v);
765
+ }
766
+ }
767
+ return a;
768
+ }
769
+ return $(el).val();
770
+ };
771
+
772
+ /**
773
+ * Clears the form data. Takes the following actions on the form's input fields:
774
+ * - input text fields will have their 'value' property set to the empty string
775
+ * - select elements will have their 'selectedIndex' property set to -1
776
+ * - checkbox and radio inputs will have their 'checked' property set to false
777
+ * - inputs of type submit, button, reset, and hidden will *not* be effected
778
+ * - button elements will *not* be effected
779
+ */
780
+ $.fn.clearForm = function() {
781
+ return this.each(function() {
782
+ $('input,select,textarea', this).clearFields();
783
+ });
784
+ };
785
+
786
+ /**
787
+ * Clears the selected form elements.
788
+ */
789
+ $.fn.clearFields = $.fn.clearInputs = function() {
790
+ return this.each(function() {
791
+ var t = this.type, tag = this.tagName.toLowerCase();
792
+ if (t == 'text' || t == 'password' || tag == 'textarea') {
793
+ this.value = '';
794
+ }
795
+ else if (t == 'checkbox' || t == 'radio') {
796
+ this.checked = false;
797
+ }
798
+ else if (tag == 'select') {
799
+ this.selectedIndex = -1;
800
+ }
801
+ });
802
+ };
803
+
804
+ /**
805
+ * Resets the form data. Causes all form elements to be reset to their original value.
806
+ */
807
+ $.fn.resetForm = function() {
808
+ return this.each(function() {
809
+ // guard against an input with the name of 'reset'
810
+ // note that IE reports the reset function as an 'object'
811
+ if (typeof this.reset == 'function' || (typeof this.reset == 'object' && !this.reset.nodeType)) {
812
+ this.reset();
813
+ }
814
+ });
815
+ };
816
+
817
+ /**
818
+ * Enables or disables any matching elements.
819
+ */
820
+ $.fn.enable = function(b) {
821
+ if (b === undefined) {
822
+ b = true;
823
+ }
824
+ return this.each(function() {
825
+ this.disabled = !b;
826
+ });
827
+ };
828
+
829
+ /**
830
+ * Checks/unchecks any matching checkboxes or radio buttons and
831
+ * selects/deselects and matching option elements.
832
+ */
833
+ $.fn.selected = function(select) {
834
+ if (select === undefined) {
835
+ select = true;
836
+ }
837
+ return this.each(function() {
838
+ var t = this.type;
839
+ if (t == 'checkbox' || t == 'radio') {
840
+ this.checked = select;
841
+ }
842
+ else if (this.tagName.toLowerCase() == 'option') {
843
+ var $sel = $(this).parent('select');
844
+ if (select && $sel[0] && $sel[0].type == 'select-one') {
845
+ // deselect all other options
846
+ $sel.find('option').selected(false);
847
+ }
848
+ this.selected = select;
849
+ }
850
+ });
851
+ };
852
+
853
+ // helper fn for console logging
854
+ function log() {
855
+ var msg = '[jquery.form] ' + Array.prototype.join.call(arguments,'');
856
+ if (window.console && window.console.log) {
857
+ window.console.log(msg);
858
+ }
859
+ else if (window.opera && window.opera.postError) {
860
+ window.opera.postError(msg);
861
+ }
862
+ };
863
+
864
+ })(jQuery);
js/jquery.tools.min.js CHANGED
@@ -1,269 +1,269 @@
1
- /*
2
- * jQuery Tools 1.2.3 - The missing UI library for the Web
3
- *
4
- * [jquery, toolbox.flashembed, toolbox.history, toolbox.expose, toolbox.mousewheel, tabs, tabs.slideshow, tooltip, tooltip.slide, tooltip.dynamic, scrollable, scrollable.autoscroll, scrollable.navigator, overlay, overlay.apple, dateinput, rangeinput, validator]
5
- *
6
- * NO COPYRIGHTS OR LICENSES. DO WHAT YOU LIKE.
7
- *
8
- * http://flowplayer.org/tools/
9
- *
10
- * jQuery JavaScript Library v1.4.2
11
- * http://jquery.com/
12
- *
13
- * Copyright 2010, John Resig
14
- * Dual licensed under the MIT or GPL Version 2 licenses.
15
- * http://docs.jquery.com/License
16
- *
17
- * Includes Sizzle.js
18
- * http://sizzlejs.com/
19
- * Copyright 2010, The Dojo Foundation
20
- * Released under the MIT, BSD, and GPL Licenses.
21
- *
22
- * -----
23
- *
24
-
25
-
26
- * jquery.event.wheel.js - rev 1
27
- * Copyright (c) 2008, Three Dub Media (http://threedubmedia.com)
28
- * Liscensed under the MIT License (MIT-LICENSE.txt)
29
- * http://www.opensource.org/licenses/mit-license.php
30
- * Created: 2008-07-01 | Updated: 2008-07-14
31
- *
32
- * -----
33
- *
34
- * File generated: Sat Jun 12 10:02:29 GMT 2010
35
- */
36
- (function(A,w){function ma(){if(!c.isReady){try{s.documentElement.doScroll("left")}catch(a){setTimeout(ma,1);return}c.ready()}}function Qa(a,b){b.src?c.ajax({url:b.src,async:false,dataType:"script"}):c.globalEval(b.text||b.textContent||b.innerHTML||"");b.parentNode&&b.parentNode.removeChild(b)}function X(a,b,d,f,e,j){var i=a.length;if(typeof b==="object"){for(var o in b)X(a,o,b[o],f,e,d);return a}if(d!==w){f=!j&&f&&c.isFunction(d);for(o=0;o<i;o++)e(a[o],b,f?d.call(a[o],o,e(a[o],b)):d,j);return a}return i?
37
- e(a[0],b):w}function J(){return(new Date).getTime()}function Y(){return false}function Z(){return true}function na(a,b,d){d[0].type=a;return c.event.handle.apply(b,d)}function oa(a){var b,d=[],f=[],e=arguments,j,i,o,k,n,r;i=c.data(this,"events");if(!(a.liveFired===this||!i||!i.live||a.button&&a.type==="click")){a.liveFired=this;var u=i.live.slice(0);for(k=0;k<u.length;k++){i=u[k];i.origType.replace(O,"")===a.type?f.push(i.selector):u.splice(k--,1)}j=c(a.target).closest(f,a.currentTarget);n=0;for(r=
38
- j.length;n<r;n++)for(k=0;k<u.length;k++){i=u[k];if(j[n].selector===i.selector){o=j[n].elem;f=null;if(i.preType==="mouseenter"||i.preType==="mouseleave")f=c(a.relatedTarget).closest(i.selector)[0];if(!f||f!==o)d.push({elem:o,handleObj:i})}}n=0;for(r=d.length;n<r;n++){j=d[n];a.currentTarget=j.elem;a.data=j.handleObj.data;a.handleObj=j.handleObj;if(j.handleObj.origHandler.apply(j.elem,e)===false){b=false;break}}return b}}function pa(a,b){return"live."+(a&&a!=="*"?a+".":"")+b.replace(/\./g,"`").replace(/ /g,
39
- "&")}function qa(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function ra(a,b){var d=0;b.each(function(){if(this.nodeName===(a[d]&&a[d].nodeName)){var f=c.data(a[d++]),e=c.data(this,f);if(f=f&&f.events){delete e.handle;e.events={};for(var j in f)for(var i in f[j])c.event.add(this,j,f[j][i],f[j][i].data)}}})}function sa(a,b,d){var f,e,j;b=b&&b[0]?b[0].ownerDocument||b[0]:s;if(a.length===1&&typeof a[0]==="string"&&a[0].length<512&&b===s&&!ta.test(a[0])&&(c.support.checkClone||!ua.test(a[0]))){e=
40
- true;if(j=c.fragments[a[0]])if(j!==1)f=j}if(!f){f=b.createDocumentFragment();c.clean(a,b,f,d)}if(e)c.fragments[a[0]]=j?f:1;return{fragment:f,cacheable:e}}function K(a,b){var d={};c.each(va.concat.apply([],va.slice(0,b)),function(){d[this]=a});return d}function wa(a){return"scrollTo"in a&&a.document?a:a.nodeType===9?a.defaultView||a.parentWindow:false}var c=function(a,b){return new c.fn.init(a,b)},Ra=A.jQuery,Sa=A.$,s=A.document,T,Ta=/^[^<]*(<[\w\W]+>)[^>]*$|^#([\w-]+)$/,Ua=/^.[^:#\[\.,]*$/,Va=/\S/,
41
- Wa=/^(\s|\u00A0)+|(\s|\u00A0)+$/g,Xa=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,P=navigator.userAgent,xa=false,Q=[],L,$=Object.prototype.toString,aa=Object.prototype.hasOwnProperty,ba=Array.prototype.push,R=Array.prototype.slice,ya=Array.prototype.indexOf;c.fn=c.prototype={init:function(a,b){var d,f;if(!a)return this;if(a.nodeType){this.context=this[0]=a;this.length=1;return this}if(a==="body"&&!b){this.context=s;this[0]=s.body;this.selector="body";this.length=1;return this}if(typeof a==="string")if((d=Ta.exec(a))&&
42
- (d[1]||!b))if(d[1]){f=b?b.ownerDocument||b:s;if(a=Xa.exec(a))if(c.isPlainObject(b)){a=[s.createElement(a[1])];c.fn.attr.call(a,b,true)}else a=[f.createElement(a[1])];else{a=sa([d[1]],[f]);a=(a.cacheable?a.fragment.cloneNode(true):a.fragment).childNodes}return c.merge(this,a)}else{if(b=s.getElementById(d[2])){if(b.id!==d[2])return T.find(a);this.length=1;this[0]=b}this.context=s;this.selector=a;return this}else if(!b&&/^\w+$/.test(a)){this.selector=a;this.context=s;a=s.getElementsByTagName(a);return c.merge(this,
43
- a)}else return!b||b.jquery?(b||T).find(a):c(b).find(a);else if(c.isFunction(a))return T.ready(a);if(a.selector!==w){this.selector=a.selector;this.context=a.context}return c.makeArray(a,this)},selector:"",jquery:"1.4.2",length:0,size:function(){return this.length},toArray:function(){return R.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this.slice(a)[0]:this[a]},pushStack:function(a,b,d){var f=c();c.isArray(a)?ba.apply(f,a):c.merge(f,a);f.prevObject=this;f.context=this.context;if(b===
44
- "find")f.selector=this.selector+(this.selector?" ":"")+d;else if(b)f.selector=this.selector+"."+b+"("+d+")";return f},each:function(a,b){return c.each(this,a,b)},ready:function(a){c.bindReady();if(c.isReady)a.call(s,c);else Q&&Q.push(a);return this},eq:function(a){return a===-1?this.slice(a):this.slice(a,+a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(R.apply(this,arguments),"slice",R.call(arguments).join(","))},map:function(a){return this.pushStack(c.map(this,
45
- function(b,d){return a.call(b,d,b)}))},end:function(){return this.prevObject||c(null)},push:ba,sort:[].sort,splice:[].splice};c.fn.init.prototype=c.fn;c.extend=c.fn.extend=function(){var a=arguments[0]||{},b=1,d=arguments.length,f=false,e,j,i,o;if(typeof a==="boolean"){f=a;a=arguments[1]||{};b=2}if(typeof a!=="object"&&!c.isFunction(a))a={};if(d===b){a=this;--b}for(;b<d;b++)if((e=arguments[b])!=null)for(j in e){i=a[j];o=e[j];if(a!==o)if(f&&o&&(c.isPlainObject(o)||c.isArray(o))){i=i&&(c.isPlainObject(i)||
46
- c.isArray(i))?i:c.isArray(o)?[]:{};a[j]=c.extend(f,i,o)}else if(o!==w)a[j]=o}return a};c.extend({noConflict:function(a){A.$=Sa;if(a)A.jQuery=Ra;return c},isReady:false,ready:function(){if(!c.isReady){if(!s.body)return setTimeout(c.ready,13);c.isReady=true;if(Q){for(var a,b=0;a=Q[b++];)a.call(s,c);Q=null}c.fn.triggerHandler&&c(s).triggerHandler("ready")}},bindReady:function(){if(!xa){xa=true;if(s.readyState==="complete")return c.ready();if(s.addEventListener){s.addEventListener("DOMContentLoaded",
47
- L,false);A.addEventListener("load",c.ready,false)}else if(s.attachEvent){s.attachEvent("onreadystatechange",L);A.attachEvent("onload",c.ready);var a=false;try{a=A.frameElement==null}catch(b){}s.documentElement.doScroll&&a&&ma()}}},isFunction:function(a){return $.call(a)==="[object Function]"},isArray:function(a){return $.call(a)==="[object Array]"},isPlainObject:function(a){if(!a||$.call(a)!=="[object Object]"||a.nodeType||a.setInterval)return false;if(a.constructor&&!aa.call(a,"constructor")&&!aa.call(a.constructor.prototype,
48
- "isPrototypeOf"))return false;var b;for(b in a);return b===w||aa.call(a,b)},isEmptyObject:function(a){for(var b in a)return false;return true},error:function(a){throw a;},parseJSON:function(a){if(typeof a!=="string"||!a)return null;a=c.trim(a);if(/^[\],:{}\s]*$/.test(a.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,"@").replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,"]").replace(/(?:^|:|,)(?:\s*\[)+/g,"")))return A.JSON&&A.JSON.parse?A.JSON.parse(a):(new Function("return "+
49
- a))();else c.error("Invalid JSON: "+a)},noop:function(){},globalEval:function(a){if(a&&Va.test(a)){var b=s.getElementsByTagName("head")[0]||s.documentElement,d=s.createElement("script");d.type="text/javascript";if(c.support.scriptEval)d.appendChild(s.createTextNode(a));else d.text=a;b.insertBefore(d,b.firstChild);b.removeChild(d)}},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,b,d){var f,e=0,j=a.length,i=j===w||c.isFunction(a);if(d)if(i)for(f in a){if(b.apply(a[f],
50
- d)===false)break}else for(;e<j;){if(b.apply(a[e++],d)===false)break}else if(i)for(f in a){if(b.call(a[f],f,a[f])===false)break}else for(d=a[0];e<j&&b.call(d,e,d)!==false;d=a[++e]);return a},trim:function(a){return(a||"").replace(Wa,"")},makeArray:function(a,b){b=b||[];if(a!=null)a.length==null||typeof a==="string"||c.isFunction(a)||typeof a!=="function"&&a.setInterval?ba.call(b,a):c.merge(b,a);return b},inArray:function(a,b){if(b.indexOf)return b.indexOf(a);for(var d=0,f=b.length;d<f;d++)if(b[d]===
51
- a)return d;return-1},merge:function(a,b){var d=a.length,f=0;if(typeof b.length==="number")for(var e=b.length;f<e;f++)a[d++]=b[f];else for(;b[f]!==w;)a[d++]=b[f++];a.length=d;return a},grep:function(a,b,d){for(var f=[],e=0,j=a.length;e<j;e++)!d!==!b(a[e],e)&&f.push(a[e]);return f},map:function(a,b,d){for(var f=[],e,j=0,i=a.length;j<i;j++){e=b(a[j],j,d);if(e!=null)f[f.length]=e}return f.concat.apply([],f)},guid:1,proxy:function(a,b,d){if(arguments.length===2)if(typeof b==="string"){d=a;a=d[b];b=w}else if(b&&
52
- !c.isFunction(b)){d=b;b=w}if(!b&&a)b=function(){return a.apply(d||this,arguments)};if(a)b.guid=a.guid=a.guid||b.guid||c.guid++;return b},uaMatch:function(a){a=a.toLowerCase();a=/(webkit)[ \/]([\w.]+)/.exec(a)||/(opera)(?:.*version)?[ \/]([\w.]+)/.exec(a)||/(msie) ([\w.]+)/.exec(a)||!/compatible/.test(a)&&/(mozilla)(?:.*? rv:([\w.]+))?/.exec(a)||[];return{browser:a[1]||"",version:a[2]||"0"}},browser:{}});P=c.uaMatch(P);if(P.browser){c.browser[P.browser]=true;c.browser.version=P.version}if(c.browser.webkit)c.browser.safari=
53
- true;if(ya)c.inArray=function(a,b){return ya.call(b,a)};T=c(s);if(s.addEventListener)L=function(){s.removeEventListener("DOMContentLoaded",L,false);c.ready()};else if(s.attachEvent)L=function(){if(s.readyState==="complete"){s.detachEvent("onreadystatechange",L);c.ready()}};(function(){c.support={};var a=s.documentElement,b=s.createElement("script"),d=s.createElement("div"),f="script"+J();d.style.display="none";d.innerHTML=" <link/><table></table><a href='/a' style='color:red;float:left;opacity:.55;'>a</a><input type='checkbox'/>";
54
- var e=d.getElementsByTagName("*"),j=d.getElementsByTagName("a")[0];if(!(!e||!e.length||!j)){c.support={leadingWhitespace:d.firstChild.nodeType===3,tbody:!d.getElementsByTagName("tbody").length,htmlSerialize:!!d.getElementsByTagName("link").length,style:/red/.test(j.getAttribute("style")),hrefNormalized:j.getAttribute("href")==="/a",opacity:/^0.55$/.test(j.style.opacity),cssFloat:!!j.style.cssFloat,checkOn:d.getElementsByTagName("input")[0].value==="on",optSelected:s.createElement("select").appendChild(s.createElement("option")).selected,
55
- parentNode:d.removeChild(d.appendChild(s.createElement("div"))).parentNode===null,deleteExpando:true,checkClone:false,scriptEval:false,noCloneEvent:true,boxModel:null};b.type="text/javascript";try{b.appendChild(s.createTextNode("window."+f+"=1;"))}catch(i){}a.insertBefore(b,a.firstChild);if(A[f]){c.support.scriptEval=true;delete A[f]}try{delete b.test}catch(o){c.support.deleteExpando=false}a.removeChild(b);if(d.attachEvent&&d.fireEvent){d.attachEvent("onclick",function k(){c.support.noCloneEvent=
56
- false;d.detachEvent("onclick",k)});d.cloneNode(true).fireEvent("onclick")}d=s.createElement("div");d.innerHTML="<input type='radio' name='radiotest' checked='checked'/>";a=s.createDocumentFragment();a.appendChild(d.firstChild);c.support.checkClone=a.cloneNode(true).cloneNode(true).lastChild.checked;c(function(){var k=s.createElement("div");k.style.width=k.style.paddingLeft="1px";s.body.appendChild(k);c.boxModel=c.support.boxModel=k.offsetWidth===2;s.body.removeChild(k).style.display="none"});a=function(k){var n=
57
- s.createElement("div");k="on"+k;var r=k in n;if(!r){n.setAttribute(k,"return;");r=typeof n[k]==="function"}return r};c.support.submitBubbles=a("submit");c.support.changeBubbles=a("change");a=b=d=e=j=null}})();c.props={"for":"htmlFor","class":"className",readonly:"readOnly",maxlength:"maxLength",cellspacing:"cellSpacing",rowspan:"rowSpan",colspan:"colSpan",tabindex:"tabIndex",usemap:"useMap",frameborder:"frameBorder"};var G="jQuery"+J(),Ya=0,za={};c.extend({cache:{},expando:G,noData:{embed:true,object:true,
58
- applet:true},data:function(a,b,d){if(!(a.nodeName&&c.noData[a.nodeName.toLowerCase()])){a=a==A?za:a;var f=a[G],e=c.cache;if(!f&&typeof b==="string"&&d===w)return null;f||(f=++Ya);if(typeof b==="object"){a[G]=f;e[f]=c.extend(true,{},b)}else if(!e[f]){a[G]=f;e[f]={}}a=e[f];if(d!==w)a[b]=d;return typeof b==="string"?a[b]:a}},removeData:function(a,b){if(!(a.nodeName&&c.noData[a.nodeName.toLowerCase()])){a=a==A?za:a;var d=a[G],f=c.cache,e=f[d];if(b){if(e){delete e[b];c.isEmptyObject(e)&&c.removeData(a)}}else{if(c.support.deleteExpando)delete a[c.expando];
59
- else a.removeAttribute&&a.removeAttribute(c.expando);delete f[d]}}}});c.fn.extend({data:function(a,b){if(typeof a==="undefined"&&this.length)return c.data(this[0]);else if(typeof a==="object")return this.each(function(){c.data(this,a)});var d=a.split(".");d[1]=d[1]?"."+d[1]:"";if(b===w){var f=this.triggerHandler("getData"+d[1]+"!",[d[0]]);if(f===w&&this.length)f=c.data(this[0],a);return f===w&&d[1]?this.data(d[0]):f}else return this.trigger("setData"+d[1]+"!",[d[0],b]).each(function(){c.data(this,
60
- a,b)})},removeData:function(a){return this.each(function(){c.removeData(this,a)})}});c.extend({queue:function(a,b,d){if(a){b=(b||"fx")+"queue";var f=c.data(a,b);if(!d)return f||[];if(!f||c.isArray(d))f=c.data(a,b,c.makeArray(d));else f.push(d);return f}},dequeue:function(a,b){b=b||"fx";var d=c.queue(a,b),f=d.shift();if(f==="inprogress")f=d.shift();if(f){b==="fx"&&d.unshift("inprogress");f.call(a,function(){c.dequeue(a,b)})}}});c.fn.extend({queue:function(a,b){if(typeof a!=="string"){b=a;a="fx"}if(b===
61
- w)return c.queue(this[0],a);return this.each(function(){var d=c.queue(this,a,b);a==="fx"&&d[0]!=="inprogress"&&c.dequeue(this,a)})},dequeue:function(a){return this.each(function(){c.dequeue(this,a)})},delay:function(a,b){a=c.fx?c.fx.speeds[a]||a:a;b=b||"fx";return this.queue(b,function(){var d=this;setTimeout(function(){c.dequeue(d,b)},a)})},clearQueue:function(a){return this.queue(a||"fx",[])}});var Aa=/[\n\t]/g,ca=/\s+/,Za=/\r/g,$a=/href|src|style/,ab=/(button|input)/i,bb=/(button|input|object|select|textarea)/i,
62
- cb=/^(a|area)$/i,Ba=/radio|checkbox/;c.fn.extend({attr:function(a,b){return X(this,a,b,true,c.attr)},removeAttr:function(a){return this.each(function(){c.attr(this,a,"");this.nodeType===1&&this.removeAttribute(a)})},addClass:function(a){if(c.isFunction(a))return this.each(function(n){var r=c(this);r.addClass(a.call(this,n,r.attr("class")))});if(a&&typeof a==="string")for(var b=(a||"").split(ca),d=0,f=this.length;d<f;d++){var e=this[d];if(e.nodeType===1)if(e.className){for(var j=" "+e.className+" ",
63
- i=e.className,o=0,k=b.length;o<k;o++)if(j.indexOf(" "+b[o]+" ")<0)i+=" "+b[o];e.className=c.trim(i)}else e.className=a}return this},removeClass:function(a){if(c.isFunction(a))return this.each(function(k){var n=c(this);n.removeClass(a.call(this,k,n.attr("class")))});if(a&&typeof a==="string"||a===w)for(var b=(a||"").split(ca),d=0,f=this.length;d<f;d++){var e=this[d];if(e.nodeType===1&&e.className)if(a){for(var j=(" "+e.className+" ").replace(Aa," "),i=0,o=b.length;i<o;i++)j=j.replace(" "+b[i]+" ",
64
- " ");e.className=c.trim(j)}else e.className=""}return this},toggleClass:function(a,b){var d=typeof a,f=typeof b==="boolean";if(c.isFunction(a))return this.each(function(e){var j=c(this);j.toggleClass(a.call(this,e,j.attr("class"),b),b)});return this.each(function(){if(d==="string")for(var e,j=0,i=c(this),o=b,k=a.split(ca);e=k[j++];){o=f?o:!i.hasClass(e);i[o?"addClass":"removeClass"](e)}else if(d==="undefined"||d==="boolean"){this.className&&c.data(this,"__className__",this.className);this.className=
65
- this.className||a===false?"":c.data(this,"__className__")||""}})},hasClass:function(a){a=" "+a+" ";for(var b=0,d=this.length;b<d;b++)if((" "+this[b].className+" ").replace(Aa," ").indexOf(a)>-1)return true;return false},val:function(a){if(a===w){var b=this[0];if(b){if(c.nodeName(b,"option"))return(b.attributes.value||{}).specified?b.value:b.text;if(c.nodeName(b,"select")){var d=b.selectedIndex,f=[],e=b.options;b=b.type==="select-one";if(d<0)return null;var j=b?d:0;for(d=b?d+1:e.length;j<d;j++){var i=
66
- e[j];if(i.selected){a=c(i).val();if(b)return a;f.push(a)}}return f}if(Ba.test(b.type)&&!c.support.checkOn)return b.getAttribute("value")===null?"on":b.value;return(b.value||"").replace(Za,"")}return w}var o=c.isFunction(a);return this.each(function(k){var n=c(this),r=a;if(this.nodeType===1){if(o)r=a.call(this,k,n.val());if(typeof r==="number")r+="";if(c.isArray(r)&&Ba.test(this.type))this.checked=c.inArray(n.val(),r)>=0;else if(c.nodeName(this,"select")){var u=c.makeArray(r);c("option",this).each(function(){this.selected=
67
- c.inArray(c(this).val(),u)>=0});if(!u.length)this.selectedIndex=-1}else this.value=r}})}});c.extend({attrFn:{val:true,css:true,html:true,text:true,data:true,width:true,height:true,offset:true},attr:function(a,b,d,f){if(!a||a.nodeType===3||a.nodeType===8)return w;if(f&&b in c.attrFn)return c(a)[b](d);f=a.nodeType!==1||!c.isXMLDoc(a);var e=d!==w;b=f&&c.props[b]||b;if(a.nodeType===1){var j=$a.test(b);if(b in a&&f&&!j){if(e){b==="type"&&ab.test(a.nodeName)&&a.parentNode&&c.error("type property can't be changed");
68
- a[b]=d}if(c.nodeName(a,"form")&&a.getAttributeNode(b))return a.getAttributeNode(b).nodeValue;if(b==="tabIndex")return(b=a.getAttributeNode("tabIndex"))&&b.specified?b.value:bb.test(a.nodeName)||cb.test(a.nodeName)&&a.href?0:w;return a[b]}if(!c.support.style&&f&&b==="style"){if(e)a.style.cssText=""+d;return a.style.cssText}e&&a.setAttribute(b,""+d);a=!c.support.hrefNormalized&&f&&j?a.getAttribute(b,2):a.getAttribute(b);return a===null?w:a}return c.style(a,b,d)}});var O=/\.(.*)$/,db=function(a){return a.replace(/[^\w\s\.\|`]/g,
69
- function(b){return"\\"+b})};c.event={add:function(a,b,d,f){if(!(a.nodeType===3||a.nodeType===8)){if(a.setInterval&&a!==A&&!a.frameElement)a=A;var e,j;if(d.handler){e=d;d=e.handler}if(!d.guid)d.guid=c.guid++;if(j=c.data(a)){var i=j.events=j.events||{},o=j.handle;if(!o)j.handle=o=function(){return typeof c!=="undefined"&&!c.event.triggered?c.event.handle.apply(o.elem,arguments):w};o.elem=a;b=b.split(" ");for(var k,n=0,r;k=b[n++];){j=e?c.extend({},e):{handler:d,data:f};if(k.indexOf(".")>-1){r=k.split(".");
70
- k=r.shift();j.namespace=r.slice(0).sort().join(".")}else{r=[];j.namespace=""}j.type=k;j.guid=d.guid;var u=i[k],z=c.event.special[k]||{};if(!u){u=i[k]=[];if(!z.setup||z.setup.call(a,f,r,o)===false)if(a.addEventListener)a.addEventListener(k,o,false);else a.attachEvent&&a.attachEvent("on"+k,o)}if(z.add){z.add.call(a,j);if(!j.handler.guid)j.handler.guid=d.guid}u.push(j);c.event.global[k]=true}a=null}}},global:{},remove:function(a,b,d,f){if(!(a.nodeType===3||a.nodeType===8)){var e,j=0,i,o,k,n,r,u,z=c.data(a),
71
- C=z&&z.events;if(z&&C){if(b&&b.type){d=b.handler;b=b.type}if(!b||typeof b==="string"&&b.charAt(0)==="."){b=b||"";for(e in C)c.event.remove(a,e+b)}else{for(b=b.split(" ");e=b[j++];){n=e;i=e.indexOf(".")<0;o=[];if(!i){o=e.split(".");e=o.shift();k=new RegExp("(^|\\.)"+c.map(o.slice(0).sort(),db).join("\\.(?:.*\\.)?")+"(\\.|$)")}if(r=C[e])if(d){n=c.event.special[e]||{};for(B=f||0;B<r.length;B++){u=r[B];if(d.guid===u.guid){if(i||k.test(u.namespace)){f==null&&r.splice(B--,1);n.remove&&n.remove.call(a,u)}if(f!=
72
- null)break}}if(r.length===0||f!=null&&r.length===1){if(!n.teardown||n.teardown.call(a,o)===false)Ca(a,e,z.handle);delete C[e]}}else for(var B=0;B<r.length;B++){u=r[B];if(i||k.test(u.namespace)){c.event.remove(a,n,u.handler,B);r.splice(B--,1)}}}if(c.isEmptyObject(C)){if(b=z.handle)b.elem=null;delete z.events;delete z.handle;c.isEmptyObject(z)&&c.removeData(a)}}}}},trigger:function(a,b,d,f){var e=a.type||a;if(!f){a=typeof a==="object"?a[G]?a:c.extend(c.Event(e),a):c.Event(e);if(e.indexOf("!")>=0){a.type=
73
- e=e.slice(0,-1);a.exclusive=true}if(!d){a.stopPropagation();c.event.global[e]&&c.each(c.cache,function(){this.events&&this.events[e]&&c.event.trigger(a,b,this.handle.elem)})}if(!d||d.nodeType===3||d.nodeType===8)return w;a.result=w;a.target=d;b=c.makeArray(b);b.unshift(a)}a.currentTarget=d;(f=c.data(d,"handle"))&&f.apply(d,b);f=d.parentNode||d.ownerDocument;try{if(!(d&&d.nodeName&&c.noData[d.nodeName.toLowerCase()]))if(d["on"+e]&&d["on"+e].apply(d,b)===false)a.result=false}catch(j){}if(!a.isPropagationStopped()&&
74
- f)c.event.trigger(a,b,f,true);else if(!a.isDefaultPrevented()){f=a.target;var i,o=c.nodeName(f,"a")&&e==="click",k=c.event.special[e]||{};if((!k._default||k._default.call(d,a)===false)&&!o&&!(f&&f.nodeName&&c.noData[f.nodeName.toLowerCase()])){try{if(f[e]){if(i=f["on"+e])f["on"+e]=null;c.event.triggered=true;f[e]()}}catch(n){}if(i)f["on"+e]=i;c.event.triggered=false}}},handle:function(a){var b,d,f,e;a=arguments[0]=c.event.fix(a||A.event);a.currentTarget=this;b=a.type.indexOf(".")<0&&!a.exclusive;
75
- if(!b){d=a.type.split(".");a.type=d.shift();f=new RegExp("(^|\\.)"+d.slice(0).sort().join("\\.(?:.*\\.)?")+"(\\.|$)")}e=c.data(this,"events");d=e[a.type];if(e&&d){d=d.slice(0);e=0;for(var j=d.length;e<j;e++){var i=d[e];if(b||f.test(i.namespace)){a.handler=i.handler;a.data=i.data;a.handleObj=i;i=i.handler.apply(this,arguments);if(i!==w){a.result=i;if(i===false){a.preventDefault();a.stopPropagation()}}if(a.isImmediatePropagationStopped())break}}}return a.result},props:"altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode layerX layerY metaKey newValue offsetX offsetY originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "),
76
- fix:function(a){if(a[G])return a;var b=a;a=c.Event(b);for(var d=this.props.length,f;d;){f=this.props[--d];a[f]=b[f]}if(!a.target)a.target=a.srcElement||s;if(a.target.nodeType===3)a.target=a.target.parentNode;if(!a.relatedTarget&&a.fromElement)a.relatedTarget=a.fromElement===a.target?a.toElement:a.fromElement;if(a.pageX==null&&a.clientX!=null){b=s.documentElement;d=s.body;a.pageX=a.clientX+(b&&b.scrollLeft||d&&d.scrollLeft||0)-(b&&b.clientLeft||d&&d.clientLeft||0);a.pageY=a.clientY+(b&&b.scrollTop||
77
- d&&d.scrollTop||0)-(b&&b.clientTop||d&&d.clientTop||0)}if(!a.which&&(a.charCode||a.charCode===0?a.charCode:a.keyCode))a.which=a.charCode||a.keyCode;if(!a.metaKey&&a.ctrlKey)a.metaKey=a.ctrlKey;if(!a.which&&a.button!==w)a.which=a.button&1?1:a.button&2?3:a.button&4?2:0;return a},guid:1E8,proxy:c.proxy,special:{ready:{setup:c.bindReady,teardown:c.noop},live:{add:function(a){c.event.add(this,a.origType,c.extend({},a,{handler:oa}))},remove:function(a){var b=true,d=a.origType.replace(O,"");c.each(c.data(this,
78
- "events").live||[],function(){if(d===this.origType.replace(O,""))return b=false});b&&c.event.remove(this,a.origType,oa)}},beforeunload:{setup:function(a,b,d){if(this.setInterval)this.onbeforeunload=d;return false},teardown:function(a,b){if(this.onbeforeunload===b)this.onbeforeunload=null}}}};var Ca=s.removeEventListener?function(a,b,d){a.removeEventListener(b,d,false)}:function(a,b,d){a.detachEvent("on"+b,d)};c.Event=function(a){if(!this.preventDefault)return new c.Event(a);if(a&&a.type){this.originalEvent=
79
- a;this.type=a.type}else this.type=a;this.timeStamp=J();this[G]=true};c.Event.prototype={preventDefault:function(){this.isDefaultPrevented=Z;var a=this.originalEvent;if(a){a.preventDefault&&a.preventDefault();a.returnValue=false}},stopPropagation:function(){this.isPropagationStopped=Z;var a=this.originalEvent;if(a){a.stopPropagation&&a.stopPropagation();a.cancelBubble=true}},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=Z;this.stopPropagation()},isDefaultPrevented:Y,isPropagationStopped:Y,
80
- isImmediatePropagationStopped:Y};var Da=function(a){var b=a.relatedTarget;try{for(;b&&b!==this;)b=b.parentNode;if(b!==this){a.type=a.data;c.event.handle.apply(this,arguments)}}catch(d){}},Ea=function(a){a.type=a.data;c.event.handle.apply(this,arguments)};c.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(a,b){c.event.special[a]={setup:function(d){c.event.add(this,b,d&&d.selector?Ea:Da,a)},teardown:function(d){c.event.remove(this,b,d&&d.selector?Ea:Da)}}});if(!c.support.submitBubbles)c.event.special.submit=
81
- {setup:function(){if(this.nodeName.toLowerCase()!=="form"){c.event.add(this,"click.specialSubmit",function(a){var b=a.target,d=b.type;if((d==="submit"||d==="image")&&c(b).closest("form").length)return na("submit",this,arguments)});c.event.add(this,"keypress.specialSubmit",function(a){var b=a.target,d=b.type;if((d==="text"||d==="password")&&c(b).closest("form").length&&a.keyCode===13)return na("submit",this,arguments)})}else return false},teardown:function(){c.event.remove(this,".specialSubmit")}};
82
- if(!c.support.changeBubbles){var da=/textarea|input|select/i,ea,Fa=function(a){var b=a.type,d=a.value;if(b==="radio"||b==="checkbox")d=a.checked;else if(b==="select-multiple")d=a.selectedIndex>-1?c.map(a.options,function(f){return f.selected}).join("-"):"";else if(a.nodeName.toLowerCase()==="select")d=a.selectedIndex;return d},fa=function(a,b){var d=a.target,f,e;if(!(!da.test(d.nodeName)||d.readOnly)){f=c.data(d,"_change_data");e=Fa(d);if(a.type!=="focusout"||d.type!=="radio")c.data(d,"_change_data",
83
- e);if(!(f===w||e===f))if(f!=null||e){a.type="change";return c.event.trigger(a,b,d)}}};c.event.special.change={filters:{focusout:fa,click:function(a){var b=a.target,d=b.type;if(d==="radio"||d==="checkbox"||b.nodeName.toLowerCase()==="select")return fa.call(this,a)},keydown:function(a){var b=a.target,d=b.type;if(a.keyCode===13&&b.nodeName.toLowerCase()!=="textarea"||a.keyCode===32&&(d==="checkbox"||d==="radio")||d==="select-multiple")return fa.call(this,a)},beforeactivate:function(a){a=a.target;c.data(a,
84
- "_change_data",Fa(a))}},setup:function(){if(this.type==="file")return false;for(var a in ea)c.event.add(this,a+".specialChange",ea[a]);return da.test(this.nodeName)},teardown:function(){c.event.remove(this,".specialChange");return da.test(this.nodeName)}};ea=c.event.special.change.filters}s.addEventListener&&c.each({focus:"focusin",blur:"focusout"},function(a,b){function d(f){f=c.event.fix(f);f.type=b;return c.event.handle.call(this,f)}c.event.special[b]={setup:function(){this.addEventListener(a,
85
- d,true)},teardown:function(){this.removeEventListener(a,d,true)}}});c.each(["bind","one"],function(a,b){c.fn[b]=function(d,f,e){if(typeof d==="object"){for(var j in d)this[b](j,f,d[j],e);return this}if(c.isFunction(f)){e=f;f=w}var i=b==="one"?c.proxy(e,function(k){c(this).unbind(k,i);return e.apply(this,arguments)}):e;if(d==="unload"&&b!=="one")this.one(d,f,e);else{j=0;for(var o=this.length;j<o;j++)c.event.add(this[j],d,i,f)}return this}});c.fn.extend({unbind:function(a,b){if(typeof a==="object"&&
86
- !a.preventDefault)for(var d in a)this.unbind(d,a[d]);else{d=0;for(var f=this.length;d<f;d++)c.event.remove(this[d],a,b)}return this},delegate:function(a,b,d,f){return this.live(b,d,f,a)},undelegate:function(a,b,d){return arguments.length===0?this.unbind("live"):this.die(b,null,d,a)},trigger:function(a,b){return this.each(function(){c.event.trigger(a,b,this)})},triggerHandler:function(a,b){if(this[0]){a=c.Event(a);a.preventDefault();a.stopPropagation();c.event.trigger(a,b,this[0]);return a.result}},
87
- toggle:function(a){for(var b=arguments,d=1;d<b.length;)c.proxy(a,b[d++]);return this.click(c.proxy(a,function(f){var e=(c.data(this,"lastToggle"+a.guid)||0)%d;c.data(this,"lastToggle"+a.guid,e+1);f.preventDefault();return b[e].apply(this,arguments)||false}))},hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}});var Ga={focus:"focusin",blur:"focusout",mouseenter:"mouseover",mouseleave:"mouseout"};c.each(["live","die"],function(a,b){c.fn[b]=function(d,f,e,j){var i,o=0,k,n,r=j||this.selector,
88
- u=j?this:c(this.context);if(c.isFunction(f)){e=f;f=w}for(d=(d||"").split(" ");(i=d[o++])!=null;){j=O.exec(i);k="";if(j){k=j[0];i=i.replace(O,"")}if(i==="hover")d.push("mouseenter"+k,"mouseleave"+k);else{n=i;if(i==="focus"||i==="blur"){d.push(Ga[i]+k);i+=k}else i=(Ga[i]||i)+k;b==="live"?u.each(function(){c.event.add(this,pa(i,r),{data:f,selector:r,handler:e,origType:i,origHandler:e,preType:n})}):u.unbind(pa(i,r),e)}}return this}});c.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error".split(" "),
89
- function(a,b){c.fn[b]=function(d){return d?this.bind(b,d):this.trigger(b)};if(c.attrFn)c.attrFn[b]=true});A.attachEvent&&!A.addEventListener&&A.attachEvent("onunload",function(){for(var a in c.cache)if(c.cache[a].handle)try{c.event.remove(c.cache[a].handle.elem)}catch(b){}});(function(){function a(g){for(var h="",l,m=0;g[m];m++){l=g[m];if(l.nodeType===3||l.nodeType===4)h+=l.nodeValue;else if(l.nodeType!==8)h+=a(l.childNodes)}return h}function b(g,h,l,m,q,p){q=0;for(var v=m.length;q<v;q++){var t=m[q];
90
- if(t){t=t[g];for(var y=false;t;){if(t.sizcache===l){y=m[t.sizset];break}if(t.nodeType===1&&!p){t.sizcache=l;t.sizset=q}if(t.nodeName.toLowerCase()===h){y=t;break}t=t[g]}m[q]=y}}}function d(g,h,l,m,q,p){q=0;for(var v=m.length;q<v;q++){var t=m[q];if(t){t=t[g];for(var y=false;t;){if(t.sizcache===l){y=m[t.sizset];break}if(t.nodeType===1){if(!p){t.sizcache=l;t.sizset=q}if(typeof h!=="string"){if(t===h){y=true;break}}else if(k.filter(h,[t]).length>0){y=t;break}}t=t[g]}m[q]=y}}}var f=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,
91
- e=0,j=Object.prototype.toString,i=false,o=true;[0,0].sort(function(){o=false;return 0});var k=function(g,h,l,m){l=l||[];var q=h=h||s;if(h.nodeType!==1&&h.nodeType!==9)return[];if(!g||typeof g!=="string")return l;for(var p=[],v,t,y,S,H=true,M=x(h),I=g;(f.exec(""),v=f.exec(I))!==null;){I=v[3];p.push(v[1]);if(v[2]){S=v[3];break}}if(p.length>1&&r.exec(g))if(p.length===2&&n.relative[p[0]])t=ga(p[0]+p[1],h);else for(t=n.relative[p[0]]?[h]:k(p.shift(),h);p.length;){g=p.shift();if(n.relative[g])g+=p.shift();
92
- t=ga(g,t)}else{if(!m&&p.length>1&&h.nodeType===9&&!M&&n.match.ID.test(p[0])&&!n.match.ID.test(p[p.length-1])){v=k.find(p.shift(),h,M);h=v.expr?k.filter(v.expr,v.set)[0]:v.set[0]}if(h){v=m?{expr:p.pop(),set:z(m)}:k.find(p.pop(),p.length===1&&(p[0]==="~"||p[0]==="+")&&h.parentNode?h.parentNode:h,M);t=v.expr?k.filter(v.expr,v.set):v.set;if(p.length>0)y=z(t);else H=false;for(;p.length;){var D=p.pop();v=D;if(n.relative[D])v=p.pop();else D="";if(v==null)v=h;n.relative[D](y,v,M)}}else y=[]}y||(y=t);y||k.error(D||
93
- g);if(j.call(y)==="[object Array]")if(H)if(h&&h.nodeType===1)for(g=0;y[g]!=null;g++){if(y[g]&&(y[g]===true||y[g].nodeType===1&&E(h,y[g])))l.push(t[g])}else for(g=0;y[g]!=null;g++)y[g]&&y[g].nodeType===1&&l.push(t[g]);else l.push.apply(l,y);else z(y,l);if(S){k(S,q,l,m);k.uniqueSort(l)}return l};k.uniqueSort=function(g){if(B){i=o;g.sort(B);if(i)for(var h=1;h<g.length;h++)g[h]===g[h-1]&&g.splice(h--,1)}return g};k.matches=function(g,h){return k(g,null,null,h)};k.find=function(g,h,l){var m,q;if(!g)return[];
94
- for(var p=0,v=n.order.length;p<v;p++){var t=n.order[p];if(q=n.leftMatch[t].exec(g)){var y=q[1];q.splice(1,1);if(y.substr(y.length-1)!=="\\"){q[1]=(q[1]||"").replace(/\\/g,"");m=n.find[t](q,h,l);if(m!=null){g=g.replace(n.match[t],"");break}}}}m||(m=h.getElementsByTagName("*"));return{set:m,expr:g}};k.filter=function(g,h,l,m){for(var q=g,p=[],v=h,t,y,S=h&&h[0]&&x(h[0]);g&&h.length;){for(var H in n.filter)if((t=n.leftMatch[H].exec(g))!=null&&t[2]){var M=n.filter[H],I,D;D=t[1];y=false;t.splice(1,1);if(D.substr(D.length-
95
- 1)!=="\\"){if(v===p)p=[];if(n.preFilter[H])if(t=n.preFilter[H](t,v,l,p,m,S)){if(t===true)continue}else y=I=true;if(t)for(var U=0;(D=v[U])!=null;U++)if(D){I=M(D,t,U,v);var Ha=m^!!I;if(l&&I!=null)if(Ha)y=true;else v[U]=false;else if(Ha){p.push(D);y=true}}if(I!==w){l||(v=p);g=g.replace(n.match[H],"");if(!y)return[];break}}}if(g===q)if(y==null)k.error(g);else break;q=g}return v};k.error=function(g){throw"Syntax error, unrecognized expression: "+g;};var n=k.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF-]|\\.)+)/,
96
- CLASS:/\.((?:[\w\u00c0-\uFFFF-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF-]|\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)\3|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\((even|odd|[\dn+-]*)\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/},leftMatch:{},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(g){return g.getAttribute("href")}},
97
- relative:{"+":function(g,h){var l=typeof h==="string",m=l&&!/\W/.test(h);l=l&&!m;if(m)h=h.toLowerCase();m=0;for(var q=g.length,p;m<q;m++)if(p=g[m]){for(;(p=p.previousSibling)&&p.nodeType!==1;);g[m]=l||p&&p.nodeName.toLowerCase()===h?p||false:p===h}l&&k.filter(h,g,true)},">":function(g,h){var l=typeof h==="string";if(l&&!/\W/.test(h)){h=h.toLowerCase();for(var m=0,q=g.length;m<q;m++){var p=g[m];if(p){l=p.parentNode;g[m]=l.nodeName.toLowerCase()===h?l:false}}}else{m=0;for(q=g.length;m<q;m++)if(p=g[m])g[m]=
98
- l?p.parentNode:p.parentNode===h;l&&k.filter(h,g,true)}},"":function(g,h,l){var m=e++,q=d;if(typeof h==="string"&&!/\W/.test(h)){var p=h=h.toLowerCase();q=b}q("parentNode",h,m,g,p,l)},"~":function(g,h,l){var m=e++,q=d;if(typeof h==="string"&&!/\W/.test(h)){var p=h=h.toLowerCase();q=b}q("previousSibling",h,m,g,p,l)}},find:{ID:function(g,h,l){if(typeof h.getElementById!=="undefined"&&!l)return(g=h.getElementById(g[1]))?[g]:[]},NAME:function(g,h){if(typeof h.getElementsByName!=="undefined"){var l=[];
99
- h=h.getElementsByName(g[1]);for(var m=0,q=h.length;m<q;m++)h[m].getAttribute("name")===g[1]&&l.push(h[m]);return l.length===0?null:l}},TAG:function(g,h){return h.getElementsByTagName(g[1])}},preFilter:{CLASS:function(g,h,l,m,q,p){g=" "+g[1].replace(/\\/g,"")+" ";if(p)return g;p=0;for(var v;(v=h[p])!=null;p++)if(v)if(q^(v.className&&(" "+v.className+" ").replace(/[\t\n]/g," ").indexOf(g)>=0))l||m.push(v);else if(l)h[p]=false;return false},ID:function(g){return g[1].replace(/\\/g,"")},TAG:function(g){return g[1].toLowerCase()},
100
- CHILD:function(g){if(g[1]==="nth"){var h=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(g[2]==="even"&&"2n"||g[2]==="odd"&&"2n+1"||!/\D/.test(g[2])&&"0n+"+g[2]||g[2]);g[2]=h[1]+(h[2]||1)-0;g[3]=h[3]-0}g[0]=e++;return g},ATTR:function(g,h,l,m,q,p){h=g[1].replace(/\\/g,"");if(!p&&n.attrMap[h])g[1]=n.attrMap[h];if(g[2]==="~=")g[4]=" "+g[4]+" ";return g},PSEUDO:function(g,h,l,m,q){if(g[1]==="not")if((f.exec(g[3])||"").length>1||/^\w/.test(g[3]))g[3]=k(g[3],null,null,h);else{g=k.filter(g[3],h,l,true^q);l||m.push.apply(m,
101
- g);return false}else if(n.match.POS.test(g[0])||n.match.CHILD.test(g[0]))return true;return g},POS:function(g){g.unshift(true);return g}},filters:{enabled:function(g){return g.disabled===false&&g.type!=="hidden"},disabled:function(g){return g.disabled===true},checked:function(g){return g.checked===true},selected:function(g){return g.selected===true},parent:function(g){return!!g.firstChild},empty:function(g){return!g.firstChild},has:function(g,h,l){return!!k(l[3],g).length},header:function(g){return/h\d/i.test(g.nodeName)},
102
- text:function(g){return"text"===g.type},radio:function(g){return"radio"===g.type},checkbox:function(g){return"checkbox"===g.type},file:function(g){return"file"===g.type},password:function(g){return"password"===g.type},submit:function(g){return"submit"===g.type},image:function(g){return"image"===g.type},reset:function(g){return"reset"===g.type},button:function(g){return"button"===g.type||g.nodeName.toLowerCase()==="button"},input:function(g){return/input|select|textarea|button/i.test(g.nodeName)}},
103
- setFilters:{first:function(g,h){return h===0},last:function(g,h,l,m){return h===m.length-1},even:function(g,h){return h%2===0},odd:function(g,h){return h%2===1},lt:function(g,h,l){return h<l[3]-0},gt:function(g,h,l){return h>l[3]-0},nth:function(g,h,l){return l[3]-0===h},eq:function(g,h,l){return l[3]-0===h}},filter:{PSEUDO:function(g,h,l,m){var q=h[1],p=n.filters[q];if(p)return p(g,l,h,m);else if(q==="contains")return(g.textContent||g.innerText||a([g])||"").indexOf(h[3])>=0;else if(q==="not"){h=
104
- h[3];l=0;for(m=h.length;l<m;l++)if(h[l]===g)return false;return true}else k.error("Syntax error, unrecognized expression: "+q)},CHILD:function(g,h){var l=h[1],m=g;switch(l){case "only":case "first":for(;m=m.previousSibling;)if(m.nodeType===1)return false;if(l==="first")return true;m=g;case "last":for(;m=m.nextSibling;)if(m.nodeType===1)return false;return true;case "nth":l=h[2];var q=h[3];if(l===1&&q===0)return true;h=h[0];var p=g.parentNode;if(p&&(p.sizcache!==h||!g.nodeIndex)){var v=0;for(m=p.firstChild;m;m=
105
- m.nextSibling)if(m.nodeType===1)m.nodeIndex=++v;p.sizcache=h}g=g.nodeIndex-q;return l===0?g===0:g%l===0&&g/l>=0}},ID:function(g,h){return g.nodeType===1&&g.getAttribute("id")===h},TAG:function(g,h){return h==="*"&&g.nodeType===1||g.nodeName.toLowerCase()===h},CLASS:function(g,h){return(" "+(g.className||g.getAttribute("class"))+" ").indexOf(h)>-1},ATTR:function(g,h){var l=h[1];g=n.attrHandle[l]?n.attrHandle[l](g):g[l]!=null?g[l]:g.getAttribute(l);l=g+"";var m=h[2];h=h[4];return g==null?m==="!=":m===
106
- "="?l===h:m==="*="?l.indexOf(h)>=0:m==="~="?(" "+l+" ").indexOf(h)>=0:!h?l&&g!==false:m==="!="?l!==h:m==="^="?l.indexOf(h)===0:m==="$="?l.substr(l.length-h.length)===h:m==="|="?l===h||l.substr(0,h.length+1)===h+"-":false},POS:function(g,h,l,m){var q=n.setFilters[h[2]];if(q)return q(g,l,h,m)}}},r=n.match.POS;for(var u in n.match){n.match[u]=new RegExp(n.match[u].source+/(?![^\[]*\])(?![^\(]*\))/.source);n.leftMatch[u]=new RegExp(/(^(?:.|\r|\n)*?)/.source+n.match[u].source.replace(/\\(\d+)/g,function(g,
107
- h){return"\\"+(h-0+1)}))}var z=function(g,h){g=Array.prototype.slice.call(g,0);if(h){h.push.apply(h,g);return h}return g};try{Array.prototype.slice.call(s.documentElement.childNodes,0)}catch(C){z=function(g,h){h=h||[];if(j.call(g)==="[object Array]")Array.prototype.push.apply(h,g);else if(typeof g.length==="number")for(var l=0,m=g.length;l<m;l++)h.push(g[l]);else for(l=0;g[l];l++)h.push(g[l]);return h}}var B;if(s.documentElement.compareDocumentPosition)B=function(g,h){if(!g.compareDocumentPosition||
108
- !h.compareDocumentPosition){if(g==h)i=true;return g.compareDocumentPosition?-1:1}g=g.compareDocumentPosition(h)&4?-1:g===h?0:1;if(g===0)i=true;return g};else if("sourceIndex"in s.documentElement)B=function(g,h){if(!g.sourceIndex||!h.sourceIndex){if(g==h)i=true;return g.sourceIndex?-1:1}g=g.sourceIndex-h.sourceIndex;if(g===0)i=true;return g};else if(s.createRange)B=function(g,h){if(!g.ownerDocument||!h.ownerDocument){if(g==h)i=true;return g.ownerDocument?-1:1}var l=g.ownerDocument.createRange(),m=
109
- h.ownerDocument.createRange();l.setStart(g,0);l.setEnd(g,0);m.setStart(h,0);m.setEnd(h,0);g=l.compareBoundaryPoints(Range.START_TO_END,m);if(g===0)i=true;return g};(function(){var g=s.createElement("div"),h="script"+(new Date).getTime();g.innerHTML="<a name='"+h+"'/>";var l=s.documentElement;l.insertBefore(g,l.firstChild);if(s.getElementById(h)){n.find.ID=function(m,q,p){if(typeof q.getElementById!=="undefined"&&!p)return(q=q.getElementById(m[1]))?q.id===m[1]||typeof q.getAttributeNode!=="undefined"&&
110
- q.getAttributeNode("id").nodeValue===m[1]?[q]:w:[]};n.filter.ID=function(m,q){var p=typeof m.getAttributeNode!=="undefined"&&m.getAttributeNode("id");return m.nodeType===1&&p&&p.nodeValue===q}}l.removeChild(g);l=g=null})();(function(){var g=s.createElement("div");g.appendChild(s.createComment(""));if(g.getElementsByTagName("*").length>0)n.find.TAG=function(h,l){l=l.getElementsByTagName(h[1]);if(h[1]==="*"){h=[];for(var m=0;l[m];m++)l[m].nodeType===1&&h.push(l[m]);l=h}return l};g.innerHTML="<a href='#'></a>";
111
- if(g.firstChild&&typeof g.firstChild.getAttribute!=="undefined"&&g.firstChild.getAttribute("href")!=="#")n.attrHandle.href=function(h){return h.getAttribute("href",2)};g=null})();s.querySelectorAll&&function(){var g=k,h=s.createElement("div");h.innerHTML="<p class='TEST'></p>";if(!(h.querySelectorAll&&h.querySelectorAll(".TEST").length===0)){k=function(m,q,p,v){q=q||s;if(!v&&q.nodeType===9&&!x(q))try{return z(q.querySelectorAll(m),p)}catch(t){}return g(m,q,p,v)};for(var l in g)k[l]=g[l];h=null}}();
112
- (function(){var g=s.createElement("div");g.innerHTML="<div class='test e'></div><div class='test'></div>";if(!(!g.getElementsByClassName||g.getElementsByClassName("e").length===0)){g.lastChild.className="e";if(g.getElementsByClassName("e").length!==1){n.order.splice(1,0,"CLASS");n.find.CLASS=function(h,l,m){if(typeof l.getElementsByClassName!=="undefined"&&!m)return l.getElementsByClassName(h[1])};g=null}}})();var E=s.compareDocumentPosition?function(g,h){return!!(g.compareDocumentPosition(h)&16)}:
113
- function(g,h){return g!==h&&(g.contains?g.contains(h):true)},x=function(g){return(g=(g?g.ownerDocument||g:0).documentElement)?g.nodeName!=="HTML":false},ga=function(g,h){var l=[],m="",q;for(h=h.nodeType?[h]:h;q=n.match.PSEUDO.exec(g);){m+=q[0];g=g.replace(n.match.PSEUDO,"")}g=n.relative[g]?g+"*":g;q=0;for(var p=h.length;q<p;q++)k(g,h[q],l);return k.filter(m,l)};c.find=k;c.expr=k.selectors;c.expr[":"]=c.expr.filters;c.unique=k.uniqueSort;c.text=a;c.isXMLDoc=x;c.contains=E})();var eb=/Until$/,fb=/^(?:parents|prevUntil|prevAll)/,
114
- gb=/,/;R=Array.prototype.slice;var Ia=function(a,b,d){if(c.isFunction(b))return c.grep(a,function(e,j){return!!b.call(e,j,e)===d});else if(b.nodeType)return c.grep(a,function(e){return e===b===d});else if(typeof b==="string"){var f=c.grep(a,function(e){return e.nodeType===1});if(Ua.test(b))return c.filter(b,f,!d);else b=c.filter(b,f)}return c.grep(a,function(e){return c.inArray(e,b)>=0===d})};c.fn.extend({find:function(a){for(var b=this.pushStack("","find",a),d=0,f=0,e=this.length;f<e;f++){d=b.length;
115
- c.find(a,this[f],b);if(f>0)for(var j=d;j<b.length;j++)for(var i=0;i<d;i++)if(b[i]===b[j]){b.splice(j--,1);break}}return b},has:function(a){var b=c(a);return this.filter(function(){for(var d=0,f=b.length;d<f;d++)if(c.contains(this,b[d]))return true})},not:function(a){return this.pushStack(Ia(this,a,false),"not",a)},filter:function(a){return this.pushStack(Ia(this,a,true),"filter",a)},is:function(a){return!!a&&c.filter(a,this).length>0},closest:function(a,b){if(c.isArray(a)){var d=[],f=this[0],e,j=
116
- {},i;if(f&&a.length){e=0;for(var o=a.length;e<o;e++){i=a[e];j[i]||(j[i]=c.expr.match.POS.test(i)?c(i,b||this.context):i)}for(;f&&f.ownerDocument&&f!==b;){for(i in j){e=j[i];if(e.jquery?e.index(f)>-1:c(f).is(e)){d.push({selector:i,elem:f});delete j[i]}}f=f.parentNode}}return d}var k=c.expr.match.POS.test(a)?c(a,b||this.context):null;return this.map(function(n,r){for(;r&&r.ownerDocument&&r!==b;){if(k?k.index(r)>-1:c(r).is(a))return r;r=r.parentNode}return null})},index:function(a){if(!a||typeof a===
117
- "string")return c.inArray(this[0],a?c(a):this.parent().children());return c.inArray(a.jquery?a[0]:a,this)},add:function(a,b){a=typeof a==="string"?c(a,b||this.context):c.makeArray(a);b=c.merge(this.get(),a);return this.pushStack(qa(a[0])||qa(b[0])?b:c.unique(b))},andSelf:function(){return this.add(this.prevObject)}});c.each({parent:function(a){return(a=a.parentNode)&&a.nodeType!==11?a:null},parents:function(a){return c.dir(a,"parentNode")},parentsUntil:function(a,b,d){return c.dir(a,"parentNode",
118
- d)},next:function(a){return c.nth(a,2,"nextSibling")},prev:function(a){return c.nth(a,2,"previousSibling")},nextAll:function(a){return c.dir(a,"nextSibling")},prevAll:function(a){return c.dir(a,"previousSibling")},nextUntil:function(a,b,d){return c.dir(a,"nextSibling",d)},prevUntil:function(a,b,d){return c.dir(a,"previousSibling",d)},siblings:function(a){return c.sibling(a.parentNode.firstChild,a)},children:function(a){return c.sibling(a.firstChild)},contents:function(a){return c.nodeName(a,"iframe")?
119
- a.contentDocument||a.contentWindow.document:c.makeArray(a.childNodes)}},function(a,b){c.fn[a]=function(d,f){var e=c.map(this,b,d);eb.test(a)||(f=d);if(f&&typeof f==="string")e=c.filter(f,e);e=this.length>1?c.unique(e):e;if((this.length>1||gb.test(f))&&fb.test(a))e=e.reverse();return this.pushStack(e,a,R.call(arguments).join(","))}});c.extend({filter:function(a,b,d){if(d)a=":not("+a+")";return c.find.matches(a,b)},dir:function(a,b,d){var f=[];for(a=a[b];a&&a.nodeType!==9&&(d===w||a.nodeType!==1||!c(a).is(d));){a.nodeType===
120
- 1&&f.push(a);a=a[b]}return f},nth:function(a,b,d){b=b||1;for(var f=0;a;a=a[d])if(a.nodeType===1&&++f===b)break;return a},sibling:function(a,b){for(var d=[];a;a=a.nextSibling)a.nodeType===1&&a!==b&&d.push(a);return d}});var Ja=/ jQuery\d+="(?:\d+|null)"/g,V=/^\s+/,Ka=/(<([\w:]+)[^>]*?)\/>/g,hb=/^(?:area|br|col|embed|hr|img|input|link|meta|param)$/i,La=/<([\w:]+)/,ib=/<tbody/i,jb=/<|&#?\w+;/,ta=/<script|<object|<embed|<option|<style/i,ua=/checked\s*(?:[^=]|=\s*.checked.)/i,Ma=function(a,b,d){return hb.test(d)?
121
- a:b+"></"+d+">"},F={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],area:[1,"<map>","</map>"],_default:[0,"",""]};F.optgroup=F.option;F.tbody=F.tfoot=F.colgroup=F.caption=F.thead;F.th=F.td;if(!c.support.htmlSerialize)F._default=[1,"div<div>","</div>"];c.fn.extend({text:function(a){if(c.isFunction(a))return this.each(function(b){var d=
122
- c(this);d.text(a.call(this,b,d.text()))});if(typeof a!=="object"&&a!==w)return this.empty().append((this[0]&&this[0].ownerDocument||s).createTextNode(a));return c.text(this)},wrapAll:function(a){if(c.isFunction(a))return this.each(function(d){c(this).wrapAll(a.call(this,d))});if(this[0]){var b=c(a,this[0].ownerDocument).eq(0).clone(true);this[0].parentNode&&b.insertBefore(this[0]);b.map(function(){for(var d=this;d.firstChild&&d.firstChild.nodeType===1;)d=d.firstChild;return d}).append(this)}return this},
123
- wrapInner:function(a){if(c.isFunction(a))return this.each(function(b){c(this).wrapInner(a.call(this,b))});return this.each(function(){var b=c(this),d=b.contents();d.length?d.wrapAll(a):b.append(a)})},wrap:function(a){return this.each(function(){c(this).wrapAll(a)})},unwrap:function(){return this.parent().each(function(){c.nodeName(this,"body")||c(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.appendChild(a)})},
124
- prepend:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,false,function(b){this.parentNode.insertBefore(b,this)});else if(arguments.length){var a=c(arguments[0]);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,false,function(b){this.parentNode.insertBefore(b,
125
- this.nextSibling)});else if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,c(arguments[0]).toArray());return a}},remove:function(a,b){for(var d=0,f;(f=this[d])!=null;d++)if(!a||c.filter(a,[f]).length){if(!b&&f.nodeType===1){c.cleanData(f.getElementsByTagName("*"));c.cleanData([f])}f.parentNode&&f.parentNode.removeChild(f)}return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++)for(b.nodeType===1&&c.cleanData(b.getElementsByTagName("*"));b.firstChild;)b.removeChild(b.firstChild);
126
- return this},clone:function(a){var b=this.map(function(){if(!c.support.noCloneEvent&&!c.isXMLDoc(this)){var d=this.outerHTML,f=this.ownerDocument;if(!d){d=f.createElement("div");d.appendChild(this.cloneNode(true));d=d.innerHTML}return c.clean([d.replace(Ja,"").replace(/=([^="'>\s]+\/)>/g,'="$1">').replace(V,"")],f)[0]}else return this.cloneNode(true)});if(a===true){ra(this,b);ra(this.find("*"),b.find("*"))}return b},html:function(a){if(a===w)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(Ja,
127
- ""):null;else if(typeof a==="string"&&!ta.test(a)&&(c.support.leadingWhitespace||!V.test(a))&&!F[(La.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Ka,Ma);try{for(var b=0,d=this.length;b<d;b++)if(this[b].nodeType===1){c.cleanData(this[b].getElementsByTagName("*"));this[b].innerHTML=a}}catch(f){this.empty().append(a)}}else c.isFunction(a)?this.each(function(e){var j=c(this),i=j.html();j.empty().append(function(){return a.call(this,e,i)})}):this.empty().append(a);return this},replaceWith:function(a){if(this[0]&&
128
- this[0].parentNode){if(c.isFunction(a))return this.each(function(b){var d=c(this),f=d.html();d.replaceWith(a.call(this,b,f))});if(typeof a!=="string")a=c(a).detach();return this.each(function(){var b=this.nextSibling,d=this.parentNode;c(this).remove();b?c(b).before(a):c(d).append(a)})}else return this.pushStack(c(c.isFunction(a)?a():a),"replaceWith",a)},detach:function(a){return this.remove(a,true)},domManip:function(a,b,d){function f(u){return c.nodeName(u,"table")?u.getElementsByTagName("tbody")[0]||
129
- u.appendChild(u.ownerDocument.createElement("tbody")):u}var e,j,i=a[0],o=[],k;if(!c.support.checkClone&&arguments.length===3&&typeof i==="string"&&ua.test(i))return this.each(function(){c(this).domManip(a,b,d,true)});if(c.isFunction(i))return this.each(function(u){var z=c(this);a[0]=i.call(this,u,b?z.html():w);z.domManip(a,b,d)});if(this[0]){e=i&&i.parentNode;e=c.support.parentNode&&e&&e.nodeType===11&&e.childNodes.length===this.length?{fragment:e}:sa(a,this,o);k=e.fragment;if(j=k.childNodes.length===
130
- 1?(k=k.firstChild):k.firstChild){b=b&&c.nodeName(j,"tr");for(var n=0,r=this.length;n<r;n++)d.call(b?f(this[n],j):this[n],n>0||e.cacheable||this.length>1?k.cloneNode(true):k)}o.length&&c.each(o,Qa)}return this}});c.fragments={};c.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){c.fn[a]=function(d){var f=[];d=c(d);var e=this.length===1&&this[0].parentNode;if(e&&e.nodeType===11&&e.childNodes.length===1&&d.length===1){d[b](this[0]);
131
- return this}else{e=0;for(var j=d.length;e<j;e++){var i=(e>0?this.clone(true):this).get();c.fn[b].apply(c(d[e]),i);f=f.concat(i)}return this.pushStack(f,a,d.selector)}}});c.extend({clean:function(a,b,d,f){b=b||s;if(typeof b.createElement==="undefined")b=b.ownerDocument||b[0]&&b[0].ownerDocument||s;for(var e=[],j=0,i;(i=a[j])!=null;j++){if(typeof i==="number")i+="";if(i){if(typeof i==="string"&&!jb.test(i))i=b.createTextNode(i);else if(typeof i==="string"){i=i.replace(Ka,Ma);var o=(La.exec(i)||["",
132
- ""])[1].toLowerCase(),k=F[o]||F._default,n=k[0],r=b.createElement("div");for(r.innerHTML=k[1]+i+k[2];n--;)r=r.lastChild;if(!c.support.tbody){n=ib.test(i);o=o==="table"&&!n?r.firstChild&&r.firstChild.childNodes:k[1]==="<table>"&&!n?r.childNodes:[];for(k=o.length-1;k>=0;--k)c.nodeName(o[k],"tbody")&&!o[k].childNodes.length&&o[k].parentNode.removeChild(o[k])}!c.support.leadingWhitespace&&V.test(i)&&r.insertBefore(b.createTextNode(V.exec(i)[0]),r.firstChild);i=r.childNodes}if(i.nodeType)e.push(i);else e=
133
- c.merge(e,i)}}if(d)for(j=0;e[j];j++)if(f&&c.nodeName(e[j],"script")&&(!e[j].type||e[j].type.toLowerCase()==="text/javascript"))f.push(e[j].parentNode?e[j].parentNode.removeChild(e[j]):e[j]);else{e[j].nodeType===1&&e.splice.apply(e,[j+1,0].concat(c.makeArray(e[j].getElementsByTagName("script"))));d.appendChild(e[j])}return e},cleanData:function(a){for(var b,d,f=c.cache,e=c.event.special,j=c.support.deleteExpando,i=0,o;(o=a[i])!=null;i++)if(d=o[c.expando]){b=f[d];if(b.events)for(var k in b.events)e[k]?
134
- c.event.remove(o,k):Ca(o,k,b.handle);if(j)delete o[c.expando];else o.removeAttribute&&o.removeAttribute(c.expando);delete f[d]}}});var kb=/z-?index|font-?weight|opacity|zoom|line-?height/i,Na=/alpha\([^)]*\)/,Oa=/opacity=([^)]*)/,ha=/float/i,ia=/-([a-z])/ig,lb=/([A-Z])/g,mb=/^-?\d+(?:px)?$/i,nb=/^-?\d/,ob={position:"absolute",visibility:"hidden",display:"block"},pb=["Left","Right"],qb=["Top","Bottom"],rb=s.defaultView&&s.defaultView.getComputedStyle,Pa=c.support.cssFloat?"cssFloat":"styleFloat",ja=
135
- function(a,b){return b.toUpperCase()};c.fn.css=function(a,b){return X(this,a,b,true,function(d,f,e){if(e===w)return c.curCSS(d,f);if(typeof e==="number"&&!kb.test(f))e+="px";c.style(d,f,e)})};c.extend({style:function(a,b,d){if(!a||a.nodeType===3||a.nodeType===8)return w;if((b==="width"||b==="height")&&parseFloat(d)<0)d=w;var f=a.style||a,e=d!==w;if(!c.support.opacity&&b==="opacity"){if(e){f.zoom=1;b=parseInt(d,10)+""==="NaN"?"":"alpha(opacity="+d*100+")";a=f.filter||c.curCSS(a,"filter")||"";f.filter=
136
- Na.test(a)?a.replace(Na,b):b}return f.filter&&f.filter.indexOf("opacity=")>=0?parseFloat(Oa.exec(f.filter)[1])/100+"":""}if(ha.test(b))b=Pa;b=b.replace(ia,ja);if(e)f[b]=d;return f[b]},css:function(a,b,d,f){if(b==="width"||b==="height"){var e,j=b==="width"?pb:qb;function i(){e=b==="width"?a.offsetWidth:a.offsetHeight;f!=="border"&&c.each(j,function(){f||(e-=parseFloat(c.curCSS(a,"padding"+this,true))||0);if(f==="margin")e+=parseFloat(c.curCSS(a,"margin"+this,true))||0;else e-=parseFloat(c.curCSS(a,
137
- "border"+this+"Width",true))||0})}a.offsetWidth!==0?i():c.swap(a,ob,i);return Math.max(0,Math.round(e))}return c.curCSS(a,b,d)},curCSS:function(a,b,d){var f,e=a.style;if(!c.support.opacity&&b==="opacity"&&a.currentStyle){f=Oa.test(a.currentStyle.filter||"")?parseFloat(RegExp.$1)/100+"":"";return f===""?"1":f}if(ha.test(b))b=Pa;if(!d&&e&&e[b])f=e[b];else if(rb){if(ha.test(b))b="float";b=b.replace(lb,"-$1").toLowerCase();e=a.ownerDocument.defaultView;if(!e)return null;if(a=e.getComputedStyle(a,null))f=
138
- a.getPropertyValue(b);if(b==="opacity"&&f==="")f="1"}else if(a.currentStyle){d=b.replace(ia,ja);f=a.currentStyle[b]||a.currentStyle[d];if(!mb.test(f)&&nb.test(f)){b=e.left;var j=a.runtimeStyle.left;a.runtimeStyle.left=a.currentStyle.left;e.left=d==="fontSize"?"1em":f||0;f=e.pixelLeft+"px";e.left=b;a.runtimeStyle.left=j}}return f},swap:function(a,b,d){var f={};for(var e in b){f[e]=a.style[e];a.style[e]=b[e]}d.call(a);for(e in b)a.style[e]=f[e]}});if(c.expr&&c.expr.filters){c.expr.filters.hidden=function(a){var b=
139
- a.offsetWidth,d=a.offsetHeight,f=a.nodeName.toLowerCase()==="tr";return b===0&&d===0&&!f?true:b>0&&d>0&&!f?false:c.curCSS(a,"display")==="none"};c.expr.filters.visible=function(a){return!c.expr.filters.hidden(a)}}var sb=J(),tb=/<script(.|\s)*?\/script>/gi,ub=/select|textarea/i,vb=/color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week/i,N=/=\?(&|$)/,ka=/\?/,wb=/(\?|&)_=.*?(&|$)/,xb=/^(\w+:)?\/\/([^\/?#]+)/,yb=/%20/g,zb=c.fn.load;c.fn.extend({load:function(a,b,d){if(typeof a!==
140
- "string")return zb.call(this,a);else if(!this.length)return this;var f=a.indexOf(" ");if(f>=0){var e=a.slice(f,a.length);a=a.slice(0,f)}f="GET";if(b)if(c.isFunction(b)){d=b;b=null}else if(typeof b==="object"){b=c.param(b,c.ajaxSettings.traditional);f="POST"}var j=this;c.ajax({url:a,type:f,dataType:"html",data:b,complete:function(i,o){if(o==="success"||o==="notmodified")j.html(e?c("<div />").append(i.responseText.replace(tb,"")).find(e):i.responseText);d&&j.each(d,[i.responseText,o,i])}});return this},
141
- serialize:function(){return c.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?c.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||ub.test(this.nodeName)||vb.test(this.type))}).map(function(a,b){a=c(this).val();return a==null?null:c.isArray(a)?c.map(a,function(d){return{name:b.name,value:d}}):{name:b.name,value:a}}).get()}});c.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),
142
- function(a,b){c.fn[b]=function(d){return this.bind(b,d)}});c.extend({get:function(a,b,d,f){if(c.isFunction(b)){f=f||d;d=b;b=null}return c.ajax({type:"GET",url:a,data:b,success:d,dataType:f})},getScript:function(a,b){return c.get(a,null,b,"script")},getJSON:function(a,b,d){return c.get(a,b,d,"json")},post:function(a,b,d,f){if(c.isFunction(b)){f=f||d;d=b;b={}}return c.ajax({type:"POST",url:a,data:b,success:d,dataType:f})},ajaxSetup:function(a){c.extend(c.ajaxSettings,a)},ajaxSettings:{url:location.href,
143
- global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,xhr:A.XMLHttpRequest&&(A.location.protocol!=="file:"||!A.ActiveXObject)?function(){return new A.XMLHttpRequest}:function(){try{return new A.ActiveXObject("Microsoft.XMLHTTP")}catch(a){}},accepts:{xml:"application/xml, text/xml",html:"text/html",script:"text/javascript, application/javascript",json:"application/json, text/javascript",text:"text/plain",_default:"*/*"}},lastModified:{},etag:{},ajax:function(a){function b(){e.success&&
144
- e.success.call(k,o,i,x);e.global&&f("ajaxSuccess",[x,e])}function d(){e.complete&&e.complete.call(k,x,i);e.global&&f("ajaxComplete",[x,e]);e.global&&!--c.active&&c.event.trigger("ajaxStop")}function f(q,p){(e.context?c(e.context):c.event).trigger(q,p)}var e=c.extend(true,{},c.ajaxSettings,a),j,i,o,k=a&&a.context||e,n=e.type.toUpperCase();if(e.data&&e.processData&&typeof e.data!=="string")e.data=c.param(e.data,e.traditional);if(e.dataType==="jsonp"){if(n==="GET")N.test(e.url)||(e.url+=(ka.test(e.url)?
145
- "&":"?")+(e.jsonp||"callback")+"=?");else if(!e.data||!N.test(e.data))e.data=(e.data?e.data+"&":"")+(e.jsonp||"callback")+"=?";e.dataType="json"}if(e.dataType==="json"&&(e.data&&N.test(e.data)||N.test(e.url))){j=e.jsonpCallback||"jsonp"+sb++;if(e.data)e.data=(e.data+"").replace(N,"="+j+"$1");e.url=e.url.replace(N,"="+j+"$1");e.dataType="script";A[j]=A[j]||function(q){o=q;b();d();A[j]=w;try{delete A[j]}catch(p){}z&&z.removeChild(C)}}if(e.dataType==="script"&&e.cache===null)e.cache=false;if(e.cache===
146
- false&&n==="GET"){var r=J(),u=e.url.replace(wb,"$1_="+r+"$2");e.url=u+(u===e.url?(ka.test(e.url)?"&":"?")+"_="+r:"")}if(e.data&&n==="GET")e.url+=(ka.test(e.url)?"&":"?")+e.data;e.global&&!c.active++&&c.event.trigger("ajaxStart");r=(r=xb.exec(e.url))&&(r[1]&&r[1]!==location.protocol||r[2]!==location.host);if(e.dataType==="script"&&n==="GET"&&r){var z=s.getElementsByTagName("head")[0]||s.documentElement,C=s.createElement("script");C.src=e.url;if(e.scriptCharset)C.charset=e.scriptCharset;if(!j){var B=
147
- false;C.onload=C.onreadystatechange=function(){if(!B&&(!this.readyState||this.readyState==="loaded"||this.readyState==="complete")){B=true;b();d();C.onload=C.onreadystatechange=null;z&&C.parentNode&&z.removeChild(C)}}}z.insertBefore(C,z.firstChild);return w}var E=false,x=e.xhr();if(x){e.username?x.open(n,e.url,e.async,e.username,e.password):x.open(n,e.url,e.async);try{if(e.data||a&&a.contentType)x.setRequestHeader("Content-Type",e.contentType);if(e.ifModified){c.lastModified[e.url]&&x.setRequestHeader("If-Modified-Since",
148
- c.lastModified[e.url]);c.etag[e.url]&&x.setRequestHeader("If-None-Match",c.etag[e.url])}r||x.setRequestHeader("X-Requested-With","XMLHttpRequest");x.setRequestHeader("Accept",e.dataType&&e.accepts[e.dataType]?e.accepts[e.dataType]+", */*":e.accepts._default)}catch(ga){}if(e.beforeSend&&e.beforeSend.call(k,x,e)===false){e.global&&!--c.active&&c.event.trigger("ajaxStop");x.abort();return false}e.global&&f("ajaxSend",[x,e]);var g=x.onreadystatechange=function(q){if(!x||x.readyState===0||q==="abort"){E||
149
- d();E=true;if(x)x.onreadystatechange=c.noop}else if(!E&&x&&(x.readyState===4||q==="timeout")){E=true;x.onreadystatechange=c.noop;i=q==="timeout"?"timeout":!c.httpSuccess(x)?"error":e.ifModified&&c.httpNotModified(x,e.url)?"notmodified":"success";var p;if(i==="success")try{o=c.httpData(x,e.dataType,e)}catch(v){i="parsererror";p=v}if(i==="success"||i==="notmodified")j||b();else c.handleError(e,x,i,p);d();q==="timeout"&&x.abort();if(e.async)x=null}};try{var h=x.abort;x.abort=function(){x&&h.call(x);
150
- g("abort")}}catch(l){}e.async&&e.timeout>0&&setTimeout(function(){x&&!E&&g("timeout")},e.timeout);try{x.send(n==="POST"||n==="PUT"||n==="DELETE"?e.data:null)}catch(m){c.handleError(e,x,null,m);d()}e.async||g();return x}},handleError:function(a,b,d,f){if(a.error)a.error.call(a.context||a,b,d,f);if(a.global)(a.context?c(a.context):c.event).trigger("ajaxError",[b,a,f])},active:0,httpSuccess:function(a){try{return!a.status&&location.protocol==="file:"||a.status>=200&&a.status<300||a.status===304||a.status===
151
- 1223||a.status===0}catch(b){}return false},httpNotModified:function(a,b){var d=a.getResponseHeader("Last-Modified"),f=a.getResponseHeader("Etag");if(d)c.lastModified[b]=d;if(f)c.etag[b]=f;return a.status===304||a.status===0},httpData:function(a,b,d){var f=a.getResponseHeader("content-type")||"",e=b==="xml"||!b&&f.indexOf("xml")>=0;a=e?a.responseXML:a.responseText;e&&a.documentElement.nodeName==="parsererror"&&c.error("parsererror");if(d&&d.dataFilter)a=d.dataFilter(a,b);if(typeof a==="string")if(b===
152
- "json"||!b&&f.indexOf("json")>=0)a=c.parseJSON(a);else if(b==="script"||!b&&f.indexOf("javascript")>=0)c.globalEval(a);return a},param:function(a,b){function d(i,o){if(c.isArray(o))c.each(o,function(k,n){b||/\[\]$/.test(i)?f(i,n):d(i+"["+(typeof n==="object"||c.isArray(n)?k:"")+"]",n)});else!b&&o!=null&&typeof o==="object"?c.each(o,function(k,n){d(i+"["+k+"]",n)}):f(i,o)}function f(i,o){o=c.isFunction(o)?o():o;e[e.length]=encodeURIComponent(i)+"="+encodeURIComponent(o)}var e=[];if(b===w)b=c.ajaxSettings.traditional;
153
- if(c.isArray(a)||a.jquery)c.each(a,function(){f(this.name,this.value)});else for(var j in a)d(j,a[j]);return e.join("&").replace(yb,"+")}});var la={},Ab=/toggle|show|hide/,Bb=/^([+-]=)?([\d+-.]+)(.*)$/,W,va=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]];c.fn.extend({show:function(a,b){if(a||a===0)return this.animate(K("show",3),a,b);else{a=0;for(b=this.length;a<b;a++){var d=c.data(this[a],"olddisplay");
154
- this[a].style.display=d||"";if(c.css(this[a],"display")==="none"){d=this[a].nodeName;var f;if(la[d])f=la[d];else{var e=c("<"+d+" />").appendTo("body");f=e.css("display");if(f==="none")f="block";e.remove();la[d]=f}c.data(this[a],"olddisplay",f)}}a=0;for(b=this.length;a<b;a++)this[a].style.display=c.data(this[a],"olddisplay")||"";return this}},hide:function(a,b){if(a||a===0)return this.animate(K("hide",3),a,b);else{a=0;for(b=this.length;a<b;a++){var d=c.data(this[a],"olddisplay");!d&&d!=="none"&&c.data(this[a],
155
- "olddisplay",c.css(this[a],"display"))}a=0;for(b=this.length;a<b;a++)this[a].style.display="none";return this}},_toggle:c.fn.toggle,toggle:function(a,b){var d=typeof a==="boolean";if(c.isFunction(a)&&c.isFunction(b))this._toggle.apply(this,arguments);else a==null||d?this.each(function(){var f=d?a:c(this).is(":hidden");c(this)[f?"show":"hide"]()}):this.animate(K("toggle",3),a,b);return this},fadeTo:function(a,b,d){return this.filter(":hidden").css("opacity",0).show().end().animate({opacity:b},a,d)},
156
- animate:function(a,b,d,f){var e=c.speed(b,d,f);if(c.isEmptyObject(a))return this.each(e.complete);return this[e.queue===false?"each":"queue"](function(){var j=c.extend({},e),i,o=this.nodeType===1&&c(this).is(":hidden"),k=this;for(i in a){var n=i.replace(ia,ja);if(i!==n){a[n]=a[i];delete a[i];i=n}if(a[i]==="hide"&&o||a[i]==="show"&&!o)return j.complete.call(this);if((i==="height"||i==="width")&&this.style){j.display=c.css(this,"display");j.overflow=this.style.overflow}if(c.isArray(a[i])){(j.specialEasing=
157
- j.specialEasing||{})[i]=a[i][1];a[i]=a[i][0]}}if(j.overflow!=null)this.style.overflow="hidden";j.curAnim=c.extend({},a);c.each(a,function(r,u){var z=new c.fx(k,j,r);if(Ab.test(u))z[u==="toggle"?o?"show":"hide":u](a);else{var C=Bb.exec(u),B=z.cur(true)||0;if(C){u=parseFloat(C[2]);var E=C[3]||"px";if(E!=="px"){k.style[r]=(u||1)+E;B=(u||1)/z.cur(true)*B;k.style[r]=B+E}if(C[1])u=(C[1]==="-="?-1:1)*u+B;z.custom(B,u,E)}else z.custom(B,u,"")}});return true})},stop:function(a,b){var d=c.timers;a&&this.queue([]);
158
- this.each(function(){for(var f=d.length-1;f>=0;f--)if(d[f].elem===this){b&&d[f](true);d.splice(f,1)}});b||this.dequeue();return this}});c.each({slideDown:K("show",1),slideUp:K("hide",1),slideToggle:K("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"}},function(a,b){c.fn[a]=function(d,f){return this.animate(b,d,f)}});c.extend({speed:function(a,b,d){var f=a&&typeof a==="object"?a:{complete:d||!d&&b||c.isFunction(a)&&a,duration:a,easing:d&&b||b&&!c.isFunction(b)&&b};f.duration=c.fx.off?0:typeof f.duration===
159
- "number"?f.duration:c.fx.speeds[f.duration]||c.fx.speeds._default;f.old=f.complete;f.complete=function(){f.queue!==false&&c(this).dequeue();c.isFunction(f.old)&&f.old.call(this)};return f},easing:{linear:function(a,b,d,f){return d+f*a},swing:function(a,b,d,f){return(-Math.cos(a*Math.PI)/2+0.5)*f+d}},timers:[],fx:function(a,b,d){this.options=b;this.elem=a;this.prop=d;if(!b.orig)b.orig={}}});c.fx.prototype={update:function(){this.options.step&&this.options.step.call(this.elem,this.now,this);(c.fx.step[this.prop]||
160
- c.fx.step._default)(this);if((this.prop==="height"||this.prop==="width")&&this.elem.style)this.elem.style.display="block"},cur:function(a){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null))return this.elem[this.prop];return(a=parseFloat(c.css(this.elem,this.prop,a)))&&a>-10000?a:parseFloat(c.curCSS(this.elem,this.prop))||0},custom:function(a,b,d){function f(j){return e.step(j)}this.startTime=J();this.start=a;this.end=b;this.unit=d||this.unit||"px";this.now=this.start;
161
- this.pos=this.state=0;var e=this;f.elem=this.elem;if(f()&&c.timers.push(f)&&!W)W=setInterval(c.fx.tick,13)},show:function(){this.options.orig[this.prop]=c.style(this.elem,this.prop);this.options.show=true;this.custom(this.prop==="width"||this.prop==="height"?1:0,this.cur());c(this.elem).show()},hide:function(){this.options.orig[this.prop]=c.style(this.elem,this.prop);this.options.hide=true;this.custom(this.cur(),0)},step:function(a){var b=J(),d=true;if(a||b>=this.options.duration+this.startTime){this.now=
162
- this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;for(var f in this.options.curAnim)if(this.options.curAnim[f]!==true)d=false;if(d){if(this.options.display!=null){this.elem.style.overflow=this.options.overflow;a=c.data(this.elem,"olddisplay");this.elem.style.display=a?a:this.options.display;if(c.css(this.elem,"display")==="none")this.elem.style.display="block"}this.options.hide&&c(this.elem).hide();if(this.options.hide||this.options.show)for(var e in this.options.curAnim)c.style(this.elem,
163
- e,this.options.orig[e]);this.options.complete.call(this.elem)}return false}else{e=b-this.startTime;this.state=e/this.options.duration;a=this.options.easing||(c.easing.swing?"swing":"linear");this.pos=c.easing[this.options.specialEasing&&this.options.specialEasing[this.prop]||a](this.state,e,0,1,this.options.duration);this.now=this.start+(this.end-this.start)*this.pos;this.update()}return true}};c.extend(c.fx,{tick:function(){for(var a=c.timers,b=0;b<a.length;b++)a[b]()||a.splice(b--,1);a.length||
164
- c.fx.stop()},stop:function(){clearInterval(W);W=null},speeds:{slow:600,fast:200,_default:400},step:{opacity:function(a){c.style(a.elem,"opacity",a.now)},_default:function(a){if(a.elem.style&&a.elem.style[a.prop]!=null)a.elem.style[a.prop]=(a.prop==="width"||a.prop==="height"?Math.max(0,a.now):a.now)+a.unit;else a.elem[a.prop]=a.now}}});if(c.expr&&c.expr.filters)c.expr.filters.animated=function(a){return c.grep(c.timers,function(b){return a===b.elem}).length};c.fn.offset="getBoundingClientRect"in s.documentElement?
165
- function(a){var b=this[0];if(a)return this.each(function(e){c.offset.setOffset(this,a,e)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return c.offset.bodyOffset(b);var d=b.getBoundingClientRect(),f=b.ownerDocument;b=f.body;f=f.documentElement;return{top:d.top+(self.pageYOffset||c.support.boxModel&&f.scrollTop||b.scrollTop)-(f.clientTop||b.clientTop||0),left:d.left+(self.pageXOffset||c.support.boxModel&&f.scrollLeft||b.scrollLeft)-(f.clientLeft||b.clientLeft||0)}}:function(a){var b=
166
- this[0];if(a)return this.each(function(r){c.offset.setOffset(this,a,r)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return c.offset.bodyOffset(b);c.offset.initialize();var d=b.offsetParent,f=b,e=b.ownerDocument,j,i=e.documentElement,o=e.body;f=(e=e.defaultView)?e.getComputedStyle(b,null):b.currentStyle;for(var k=b.offsetTop,n=b.offsetLeft;(b=b.parentNode)&&b!==o&&b!==i;){if(c.offset.supportsFixedPosition&&f.position==="fixed")break;j=e?e.getComputedStyle(b,null):b.currentStyle;
167
- k-=b.scrollTop;n-=b.scrollLeft;if(b===d){k+=b.offsetTop;n+=b.offsetLeft;if(c.offset.doesNotAddBorder&&!(c.offset.doesAddBorderForTableAndCells&&/^t(able|d|h)$/i.test(b.nodeName))){k+=parseFloat(j.borderTopWidth)||0;n+=parseFloat(j.borderLeftWidth)||0}f=d;d=b.offsetParent}if(c.offset.subtractsBorderForOverflowNotVisible&&j.overflow!=="visible"){k+=parseFloat(j.borderTopWidth)||0;n+=parseFloat(j.borderLeftWidth)||0}f=j}if(f.position==="relative"||f.position==="static"){k+=o.offsetTop;n+=o.offsetLeft}if(c.offset.supportsFixedPosition&&
168
- f.position==="fixed"){k+=Math.max(i.scrollTop,o.scrollTop);n+=Math.max(i.scrollLeft,o.scrollLeft)}return{top:k,left:n}};c.offset={initialize:function(){var a=s.body,b=s.createElement("div"),d,f,e,j=parseFloat(c.curCSS(a,"marginTop",true))||0;c.extend(b.style,{position:"absolute",top:0,left:0,margin:0,border:0,width:"1px",height:"1px",visibility:"hidden"});b.innerHTML="<div style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;'><div></div></div><table style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;' cellpadding='0' cellspacing='0'><tr><td></td></tr></table>";
169
- a.insertBefore(b,a.firstChild);d=b.firstChild;f=d.firstChild;e=d.nextSibling.firstChild.firstChild;this.doesNotAddBorder=f.offsetTop!==5;this.doesAddBorderForTableAndCells=e.offsetTop===5;f.style.position="fixed";f.style.top="20px";this.supportsFixedPosition=f.offsetTop===20||f.offsetTop===15;f.style.position=f.style.top="";d.style.overflow="hidden";d.style.position="relative";this.subtractsBorderForOverflowNotVisible=f.offsetTop===-5;this.doesNotIncludeMarginInBodyOffset=a.offsetTop!==j;a.removeChild(b);
170
- c.offset.initialize=c.noop},bodyOffset:function(a){var b=a.offsetTop,d=a.offsetLeft;c.offset.initialize();if(c.offset.doesNotIncludeMarginInBodyOffset){b+=parseFloat(c.curCSS(a,"marginTop",true))||0;d+=parseFloat(c.curCSS(a,"marginLeft",true))||0}return{top:b,left:d}},setOffset:function(a,b,d){if(/static/.test(c.curCSS(a,"position")))a.style.position="relative";var f=c(a),e=f.offset(),j=parseInt(c.curCSS(a,"top",true),10)||0,i=parseInt(c.curCSS(a,"left",true),10)||0;if(c.isFunction(b))b=b.call(a,
171
- d,e);d={top:b.top-e.top+j,left:b.left-e.left+i};"using"in b?b.using.call(a,d):f.css(d)}};c.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),d=this.offset(),f=/^body|html$/i.test(b[0].nodeName)?{top:0,left:0}:b.offset();d.top-=parseFloat(c.curCSS(a,"marginTop",true))||0;d.left-=parseFloat(c.curCSS(a,"marginLeft",true))||0;f.top+=parseFloat(c.curCSS(b[0],"borderTopWidth",true))||0;f.left+=parseFloat(c.curCSS(b[0],"borderLeftWidth",true))||0;return{top:d.top-
172
- f.top,left:d.left-f.left}},offsetParent:function(){return this.map(function(){for(var a=this.offsetParent||s.body;a&&!/^body|html$/i.test(a.nodeName)&&c.css(a,"position")==="static";)a=a.offsetParent;return a})}});c.each(["Left","Top"],function(a,b){var d="scroll"+b;c.fn[d]=function(f){var e=this[0],j;if(!e)return null;if(f!==w)return this.each(function(){if(j=wa(this))j.scrollTo(!a?f:c(j).scrollLeft(),a?f:c(j).scrollTop());else this[d]=f});else return(j=wa(e))?"pageXOffset"in j?j[a?"pageYOffset":
173
- "pageXOffset"]:c.support.boxModel&&j.document.documentElement[d]||j.document.body[d]:e[d]}});c.each(["Height","Width"],function(a,b){var d=b.toLowerCase();c.fn["inner"+b]=function(){return this[0]?c.css(this[0],d,false,"padding"):null};c.fn["outer"+b]=function(f){return this[0]?c.css(this[0],d,false,f?"margin":"border"):null};c.fn[d]=function(f){var e=this[0];if(!e)return f==null?null:this;if(c.isFunction(f))return this.each(function(j){var i=c(this);i[d](f.call(this,j,i[d]()))});return"scrollTo"in
174
- e&&e.document?e.document.compatMode==="CSS1Compat"&&e.document.documentElement["client"+b]||e.document.body["client"+b]:e.nodeType===9?Math.max(e.documentElement["client"+b],e.body["scroll"+b],e.documentElement["scroll"+b],e.body["offset"+b],e.documentElement["offset"+b]):f===w?c.css(e,d):this.css(d,typeof f==="string"?f:f+"px")}});A.jQuery=A.$=c})(window);
175
- (function(){function f(a,b){if(b)for(key in b)if(b.hasOwnProperty(key))a[key]=b[key];return a}function l(a,b){var c=[];for(var d in a)if(a.hasOwnProperty(d))c[d]=b(a[d]);return c}function m(a,b,c){if(e.isSupported(b.version))a.innerHTML=e.getHTML(b,c);else if(b.expressInstall&&e.isSupported([6,65]))a.innerHTML=e.getHTML(f(b,{src:b.expressInstall}),{MMredirectURL:location.href,MMplayerType:"PlugIn",MMdoctitle:document.title});else{if(!a.innerHTML.replace(/\s/g,"")){a.innerHTML="<h2>Flash version "+
176
- b.version+" or greater is required</h2><h3>"+(g[0]>0?"Your version is "+g:"You have no flash plugin installed")+"</h3>"+(a.tagName=="A"?"<p>Click here to download latest version</p>":"<p>Download latest version from <a href='"+k+"'>here</a></p>");if(a.tagName=="A")a.onclick=function(){location.href=k}}if(b.onFail){var d=b.onFail.call(this);if(typeof d=="string")a.innerHTML=d}}if(h)window[b.id]=document.getElementById(b.id);f(this,{getRoot:function(){return a},getOptions:function(){return b},getConf:function(){return c},
177
- getApi:function(){return a.firstChild}})}var h=document.all,k="http://www.adobe.com/go/getflashplayer",n=typeof jQuery=="function",o=/(\d+)[^\d]+(\d+)[^\d]*(\d*)/,i={width:"100%",height:"100%",id:"_"+(""+Math.random()).slice(9),allowfullscreen:true,allowscriptaccess:"always",quality:"high",version:[3,0],onFail:null,expressInstall:null,w3c:false,cachebusting:false};window.attachEvent&&window.attachEvent("onbeforeunload",function(){__flash_unloadHandler=function(){};__flash_savedUnloadHandler=function(){}});
178
- window.flashembed=function(a,b,c){if(typeof a=="string")a=document.getElementById(a.replace("#",""));if(a){if(typeof b=="string")b={src:b};return new m(a,f(f({},i),b),c)}};var e=f(window.flashembed,{conf:i,getVersion:function(){var a;try{a=navigator.plugins["Shockwave Flash"].description.slice(16)}catch(b){try{var c=new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7");a=c&&c.GetVariable("$version")}catch(d){}}return(a=o.exec(a))?[a[1],a[3]]:[0,0]},asString:function(a){if(a===null||a===undefined)return null;
179
- var b=typeof a;if(b=="object"&&a.push)b="array";switch(b){case "string":a=a.replace(new RegExp('(["\\\\])',"g"),"\\$1");a=a.replace(/^\s?(\d+\.?\d+)%/,"$1pct");return'"'+a+'"';case "array":return"["+l(a,function(d){return e.asString(d)}).join(",")+"]";case "function":return'"function()"';case "object":b=[];for(var c in a)a.hasOwnProperty(c)&&b.push('"'+c+'":'+e.asString(a[c]));return"{"+b.join(",")+"}"}return String(a).replace(/\s/g," ").replace(/\'/g,'"')},getHTML:function(a,b){a=f({},a);var c='<object width="'+
180
- a.width+'" height="'+a.height+'" id="'+a.id+'" name="'+a.id+'"';if(a.cachebusting)a.src+=(a.src.indexOf("?")!=-1?"&":"?")+Math.random();c+=a.w3c||!h?' data="'+a.src+'" type="application/x-shockwave-flash"':' classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"';c+=">";if(a.w3c||h)c+='<param name="movie" value="'+a.src+'" />';a.width=a.height=a.id=a.w3c=a.src=null;a.onFail=a.version=a.expressInstall=null;for(var d in a)if(a[d])c+='<param name="'+d+'" value="'+a[d]+'" />';a="";if(b){for(var j in b)if(b[j]){d=
181
- b[j];a+=j+"="+(/function|object/.test(typeof d)?e.asString(d):d)+"&"}a=a.slice(0,-1);c+='<param name="flashvars" value=\''+a+"' />"}c+="</object>";return c},isSupported:function(a){return g[0]>a[0]||g[0]==a[0]&&g[1]>=a[1]}}),g=e.getVersion();if(n){jQuery.tools=jQuery.tools||{version:"1.2.3"};jQuery.tools.flashembed={conf:i};jQuery.fn.flashembed=function(a,b){return this.each(function(){$(this).data("flashembed",flashembed(this,a,b))})}}})();
182
- (function(b){function h(c){if(c){var a=d.contentWindow.document;a.open().close();a.location.hash=c}}var g,d,f,i;b.tools=b.tools||{version:"1.2.3"};b.tools.history={init:function(c){if(!i){if(b.browser.msie&&b.browser.version<"8"){if(!d){d=b("<iframe/>").attr("src","javascript:false;").hide().get(0);b("body").append(d);setInterval(function(){var a=d.contentWindow.document;a=a.location.hash;g!==a&&b.event.trigger("hash",a)},100);h(location.hash||"#")}}else setInterval(function(){var a=location.hash;
183
- a!==g&&b.event.trigger("hash",a)},100);f=!f?c:f.add(c);c.click(function(a){var e=b(this).attr("href");d&&h(e);if(e.slice(0,1)!="#"){location.href="#"+e;return a.preventDefault()}});i=true}}};b(window).bind("hash",function(c,a){a?f.filter(function(){var e=b(this).attr("href");return e==a||e==a.replace("#","")}).trigger("history",[a]):f.eq(0).trigger("history",[a]);g=a;window.location.hash=g});b.fn.history=function(c){b.tools.history.init(this);return this.bind("history",c)}})(jQuery);
184
- (function(b){function k(){if(b.browser.msie){var a=b(document).height(),d=b(window).height();return[window.innerWidth||document.documentElement.clientWidth||document.body.clientWidth,a-d<20?d:a]}return[b(document).width(),b(document).height()]}function h(a){if(a)return a.call(b.mask)}b.tools=b.tools||{version:"1.2.3"};var l;l=b.tools.expose={conf:{maskId:"exposeMask",loadSpeed:"slow",closeSpeed:"fast",closeOnClick:true,closeOnEsc:true,zIndex:9998,opacity:0.8,startOpacity:0,color:"#fff",onLoad:null,
185
- onClose:null}};var c,i,f,g,j;b.mask={load:function(a,d){if(f)return this;if(typeof a=="string")a={color:a};a=a||g;g=a=b.extend(b.extend({},l.conf),a);c=b("#"+a.maskId);if(!c.length){c=b("<div/>").attr("id",a.maskId);b("body").append(c)}var m=k();c.css({position:"absolute",top:0,left:0,width:m[0],height:m[1],display:"none",opacity:a.startOpacity,zIndex:a.zIndex});a.color&&c.css("backgroundColor",a.color);if(h(a.onBeforeLoad)===false)return this;a.closeOnEsc&&b(document).bind("keydown.mask",function(e){e.keyCode==
186
- 27&&b.mask.close(e)});a.closeOnClick&&c.bind("click.mask",function(e){b.mask.close(e)});b(window).bind("resize.mask",function(){b.mask.fit()});if(d&&d.length){j=d.eq(0).css("zIndex");b.each(d,function(){var e=b(this);/relative|absolute|fixed/i.test(e.css("position"))||e.css("position","relative")});i=d.css({zIndex:Math.max(a.zIndex+1,j=="auto"?0:j)})}c.css({display:"block"}).fadeTo(a.loadSpeed,a.opacity,function(){b.mask.fit();h(a.onLoad)});f=true;return this},close:function(){if(f){if(h(g.onBeforeClose)===
187
- false)return this;c.fadeOut(g.closeSpeed,function(){h(g.onClose);i&&i.css({zIndex:j})});b(document).unbind("keydown.mask");c.unbind("click.mask");b(window).unbind("resize.mask");f=false}return this},fit:function(){if(f){var a=k();c.css({width:a[0],height:a[1]})}},getMask:function(){return c},isLoaded:function(){return f},getConf:function(){return g},getExposed:function(){return i}};b.fn.mask=function(a){b.mask.load(a);return this};b.fn.expose=function(a){b.mask.load(a,this);return this}})(jQuery);
188
- (function(b){function c(a){switch(a.type){case "mousemove":return b.extend(a.data,{clientX:a.clientX,clientY:a.clientY,pageX:a.pageX,pageY:a.pageY});case "DOMMouseScroll":b.extend(a,a.data);a.delta=-a.detail/3;break;case "mousewheel":a.delta=a.wheelDelta/120;break}a.type="wheel";return b.event.handle.call(this,a,a.delta)}b.fn.mousewheel=function(a){return this[a?"bind":"trigger"]("wheel",a)};b.event.special.wheel={setup:function(){b.event.add(this,d,c,{})},teardown:function(){b.event.remove(this,
189
- d,c)}};var d=!b.browser.mozilla?"mousewheel":"DOMMouseScroll"+(b.browser.version<"1.9"?" mousemove":"")})(jQuery);
190
- (function(c){function p(e,b,a){var d=this,l=e.add(this),h=e.find(a.tabs),i=b.jquery?b:e.children(b),j;h.length||(h=e.children());i.length||(i=e.parent().find(b));i.length||(i=c(b));c.extend(this,{click:function(f,g){var k=h.eq(f);if(typeof f=="string"&&f.replace("#","")){k=h.filter("[href*="+f.replace("#","")+"]");f=Math.max(h.index(k),0)}if(a.rotate){var n=h.length-1;if(f<0)return d.click(n,g);if(f>n)return d.click(0,g)}if(!k.length){if(j>=0)return d;f=a.initialIndex;k=h.eq(f)}if(f===j)return d;
191
- g=g||c.Event();g.type="onBeforeClick";l.trigger(g,[f]);if(!g.isDefaultPrevented()){o[a.effect].call(d,f,function(){g.type="onClick";l.trigger(g,[f])});j=f;h.removeClass(a.current);k.addClass(a.current);return d}},getConf:function(){return a},getTabs:function(){return h},getPanes:function(){return i},getCurrentPane:function(){return i.eq(j)},getCurrentTab:function(){return h.eq(j)},getIndex:function(){return j},next:function(){return d.click(j+1)},prev:function(){return d.click(j-1)},destroy:function(){h.unbind(a.event).removeClass(a.current);
192
- i.find("a[href^=#]").unbind("click.T");return d}});c.each("onBeforeClick,onClick".split(","),function(f,g){c.isFunction(a[g])&&c(d).bind(g,a[g]);d[g]=function(k){c(d).bind(g,k);return d}});if(a.history&&c.fn.history){c.tools.history.init(h);a.event="history"}h.each(function(f){c(this).bind(a.event,function(g){d.click(f,g);return g.preventDefault()})});i.find("a[href^=#]").bind("click.T",function(f){d.click(c(this).attr("href"),f)});if(location.hash)d.click(location.hash);else if(a.initialIndex===
193
- 0||a.initialIndex>0)d.click(a.initialIndex)}c.tools=c.tools||{version:"1.2.3"};c.tools.tabs={conf:{tabs:"a",current:"current",onBeforeClick:null,onClick:null,effect:"default",initialIndex:0,event:"click",rotate:false,history:false},addEffect:function(e,b){o[e]=b}};var o={"default":function(e,b){this.getPanes().hide().eq(e).show();b.call()},fade:function(e,b){var a=this.getConf(),d=a.fadeOutSpeed,l=this.getPanes();d?l.fadeOut(d):l.hide();l.eq(e).fadeIn(a.fadeInSpeed,b)},slide:function(e,b){this.getPanes().slideUp(200);
194
- this.getPanes().eq(e).slideDown(400,b)},ajax:function(e,b){this.getPanes().eq(0).load(this.getTabs().eq(e).attr("href"),b)}},m;c.tools.tabs.addEffect("horizontal",function(e,b){m||(m=this.getPanes().eq(0).width());this.getCurrentPane().animate({width:0},function(){c(this).hide()});this.getPanes().eq(e).animate({width:m},function(){c(this).show();b.call()})});c.fn.tabs=function(e,b){var a=this.data("tabs");if(a){a.destroy();this.removeData("tabs")}if(c.isFunction(b))b={onBeforeClick:b};b=c.extend({},
195
- c.tools.tabs.conf,b);this.each(function(){a=new p(c(this),e,b);c(this).data("tabs",a)});return b.api?a:this}})(jQuery);
196
- (function(d){function r(g,a){function p(f){var e=d(f);return e.length<2?e:g.parent().find(f)}var c=this,j=g.add(this),b=g.data("tabs"),h,l,m,n=false,o=p(a.next).click(function(){b.next()}),k=p(a.prev).click(function(){b.prev()});d.extend(c,{getTabs:function(){return b},getConf:function(){return a},play:function(){if(!h){var f=d.Event("onBeforePlay");j.trigger(f);if(f.isDefaultPrevented())return c;n=false;h=setInterval(b.next,a.interval);j.trigger("onPlay");b.next()}},pause:function(){if(!h)return c;
197
- var f=d.Event("onBeforePause");j.trigger(f);if(f.isDefaultPrevented())return c;h=clearInterval(h);m=clearInterval(m);j.trigger("onPause")},stop:function(){c.pause();n=true}});d.each("onBeforePlay,onPlay,onBeforePause,onPause".split(","),function(f,e){d.isFunction(a[e])&&c.bind(e,a[e]);c[e]=function(s){return c.bind(e,s)}});if(a.autopause){var t=b.getTabs().add(o).add(k).add(b.getPanes());t.hover(function(){c.pause();l=clearInterval(l)},function(){n||(l=setTimeout(c.play,a.interval))})}if(a.autoplay)m=
198
- setTimeout(c.play,a.interval);else c.stop();a.clickable&&b.getPanes().click(function(){b.next()});if(!b.getConf().rotate){var i=a.disabledClass;b.getIndex()||k.addClass(i);b.onBeforeClick(function(f,e){if(e){k.removeClass(i);e==b.getTabs().length-1?o.addClass(i):o.removeClass(i)}else k.addClass(i)})}}var q;q=d.tools.tabs.slideshow={conf:{next:".forward",prev:".backward",disabledClass:"disabled",autoplay:false,autopause:true,interval:3E3,clickable:true,api:false}};d.fn.slideshow=function(g){var a=
199
- this.data("slideshow");if(a)return a;g=d.extend({},q.conf,g);this.each(function(){a=new r(d(this),g);d(this).data("slideshow",a)});return g.api?a:this}})(jQuery);
200
- (function(f){function p(a,b,c){var h=c.relative?a.position().top:a.offset().top,e=c.relative?a.position().left:a.offset().left,i=c.position[0];h-=b.outerHeight()-c.offset[0];e+=a.outerWidth()+c.offset[1];var j=b.outerHeight()+a.outerHeight();if(i=="center")h+=j/2;if(i=="bottom")h+=j;i=c.position[1];a=b.outerWidth()+a.outerWidth();if(i=="center")e-=a/2;if(i=="left")e-=a;return{top:h,left:e}}function t(a,b){var c=this,h=a.add(c),e,i=0,j=0,m=a.attr("title"),q=n[b.effect],k,r=a.is(":input"),u=r&&a.is(":checkbox, :radio, select, :button, :submit"),
201
- s=a.attr("type"),l=b.events[s]||b.events[r?u?"widget":"input":"def"];if(!q)throw'Nonexistent effect "'+b.effect+'"';l=l.split(/,\s*/);if(l.length!=2)throw"Tooltip: bad events configuration for "+s;a.bind(l[0],function(d){clearTimeout(i);if(b.predelay)j=setTimeout(function(){c.show(d)},b.predelay);else c.show(d)}).bind(l[1],function(d){clearTimeout(j);if(b.delay)i=setTimeout(function(){c.hide(d)},b.delay);else c.hide(d)});if(m&&b.cancelDefault){a.removeAttr("title");a.data("title",m)}f.extend(c,{show:function(d){if(!e){if(m)e=
202
- f(b.layout).addClass(b.tipClass).appendTo(document.body).hide().append(m);else if(b.tip)e=f(b.tip).eq(0);else{e=a.next();e.length||(e=a.parent().next())}if(!e.length)throw"Cannot find tooltip for "+a;}if(c.isShown())return c;e.stop(true,true);var g=p(a,e,b);d=d||f.Event();d.type="onBeforeShow";h.trigger(d,[g]);if(d.isDefaultPrevented())return c;g=p(a,e,b);e.css({position:"absolute",top:g.top,left:g.left});k=true;q[0].call(c,function(){d.type="onShow";k="full";h.trigger(d)});g=b.events.tooltip.split(/,\s*/);
203
- e.bind(g[0],function(){clearTimeout(i);clearTimeout(j)});g[1]&&!a.is("input:not(:checkbox, :radio), textarea")&&e.bind(g[1],function(o){o.relatedTarget!=a[0]&&a.trigger(l[1].split(" ")[0])});return c},hide:function(d){if(!e||!c.isShown())return c;d=d||f.Event();d.type="onBeforeHide";h.trigger(d);if(!d.isDefaultPrevented()){k=false;n[b.effect][1].call(c,function(){d.type="onHide";k=false;h.trigger(d)});return c}},isShown:function(d){return d?k=="full":k},getConf:function(){return b},getTip:function(){return e},
204
- getTrigger:function(){return a}});f.each("onHide,onBeforeShow,onShow,onBeforeHide".split(","),function(d,g){f.isFunction(b[g])&&f(c).bind(g,b[g]);c[g]=function(o){f(c).bind(g,o);return c}})}f.tools=f.tools||{version:"1.2.3"};f.tools.tooltip={conf:{effect:"toggle",fadeOutSpeed:"fast",predelay:0,delay:30,opacity:1,tip:0,position:["top","center"],offset:[0,0],relative:false,cancelDefault:true,events:{def:"mouseenter,mouseleave",input:"focus,blur",widget:"focus mouseenter,blur mouseleave",tooltip:"mouseenter,mouseleave"},
205
- layout:"<div/>",tipClass:"tooltip"},addEffect:function(a,b,c){n[a]=[b,c]}};var n={toggle:[function(a){var b=this.getConf(),c=this.getTip();b=b.opacity;b<1&&c.css({opacity:b});c.show();a.call()},function(a){this.getTip().hide();a.call()}],fade:[function(a){var b=this.getConf();this.getTip().fadeTo(b.fadeInSpeed,b.opacity,a)},function(a){this.getTip().fadeOut(this.getConf().fadeOutSpeed,a)}]};f.fn.tooltip=function(a){var b=this.data("tooltip");if(b)return b;a=f.extend(true,{},f.tools.tooltip.conf,a);
206
- if(typeof a.position=="string")a.position=a.position.split(/,?\s/);this.each(function(){b=new t(f(this),a);f(this).data("tooltip",b)});return a.api?b:this}})(jQuery);
207
- (function(d){var i=d.tools.tooltip;d.extend(i.conf,{direction:"up",bounce:false,slideOffset:10,slideInSpeed:200,slideOutSpeed:200,slideFade:!d.browser.msie});var e={up:["-","top"],down:["+","top"],left:["-","left"],right:["+","left"]};i.addEffect("slide",function(g){var a=this.getConf(),f=this.getTip(),b=a.slideFade?{opacity:a.opacity}:{},c=e[a.direction]||e.up;b[c[1]]=c[0]+"="+a.slideOffset;a.slideFade&&f.css({opacity:0});f.show().animate(b,a.slideInSpeed,g)},function(g){var a=this.getConf(),f=a.slideOffset,
208
- b=a.slideFade?{opacity:0}:{},c=e[a.direction]||e.up,h=""+c[0];if(a.bounce)h=h=="+"?"-":"+";b[c[1]]=h+"="+f;this.getTip().animate(b,a.slideOutSpeed,function(){d(this).hide();g.call()})})})(jQuery);
209
- (function(g){function j(a){var c=g(window),d=c.width()+c.scrollLeft(),h=c.height()+c.scrollTop();return[a.offset().top<=c.scrollTop(),d<=a.offset().left+a.width(),h<=a.offset().top+a.height(),c.scrollLeft()>=a.offset().left]}function k(a){for(var c=a.length;c--;)if(a[c])return false;return true}var i=g.tools.tooltip;i.dynamic={conf:{classNames:"top right bottom left"}};g.fn.dynamic=function(a){if(typeof a=="number")a={speed:a};a=g.extend({},i.dynamic.conf,a);var c=a.classNames.split(/\s/),d;this.each(function(){var h=
210
- g(this).tooltip().onBeforeShow(function(e,f){e=this.getTip();var b=this.getConf();d||(d=[b.position[0],b.position[1],b.offset[0],b.offset[1],g.extend({},b)]);g.extend(b,d[4]);b.position=[d[0],d[1]];b.offset=[d[2],d[3]];e.css({visibility:"hidden",position:"absolute",top:f.top,left:f.left}).show();f=j(e);if(!k(f)){if(f[2]){g.extend(b,a.top);b.position[0]="top";e.addClass(c[0])}if(f[3]){g.extend(b,a.right);b.position[1]="right";e.addClass(c[1])}if(f[0]){g.extend(b,a.bottom);b.position[0]="bottom";e.addClass(c[2])}if(f[1]){g.extend(b,
211
- a.left);b.position[1]="left";e.addClass(c[3])}if(f[0]||f[2])b.offset[0]*=-1;if(f[1]||f[3])b.offset[1]*=-1}e.css({visibility:"visible"}).hide()});h.onBeforeShow(function(){var e=this.getConf();this.getTip();setTimeout(function(){e.position=[d[0],d[1]];e.offset=[d[2],d[3]]},0)});h.onHide(function(){var e=this.getTip();e.removeClass(a.classNames)});ret=h});return a.api?ret:this}})(jQuery);
212
- (function(e){function n(f,c){var a=e(c);return a.length<2?a:f.parent().find(c)}function t(f,c){var a=this,l=f.add(a),g=f.children(),k=0,m=c.vertical;j||(j=a);if(g.length>1)g=e(c.items,f);e.extend(a,{getConf:function(){return c},getIndex:function(){return k},getSize:function(){return a.getItems().size()},getNaviButtons:function(){return o.add(p)},getRoot:function(){return f},getItemWrap:function(){return g},getItems:function(){return g.children(c.item).not("."+c.clonedClass)},move:function(b,d){return a.seekTo(k+
213
- b,d)},next:function(b){return a.move(1,b)},prev:function(b){return a.move(-1,b)},begin:function(b){return a.seekTo(0,b)},end:function(b){return a.seekTo(a.getSize()-1,b)},focus:function(){return j=a},addItem:function(b){b=e(b);if(c.circular){e(".cloned:last").before(b);e(".cloned:first").replaceWith(b.clone().addClass(c.clonedClass))}else g.append(b);l.trigger("onAddItem",[b]);return a},seekTo:function(b,d,h){if(c.circular&&b===0&&k==-1&&d!==0)return a;if(!c.circular&&b<0||b>a.getSize()||b<-1)return a;
214
- var i=b;if(b.jquery)b=a.getItems().index(b);else i=a.getItems().eq(b);var q=e.Event("onBeforeSeek");if(!h){l.trigger(q,[b,d]);if(q.isDefaultPrevented()||!i.length)return a}i=m?{top:-i.position().top}:{left:-i.position().left};k=b;j=a;if(d===undefined)d=c.speed;g.animate(i,d,c.easing,h||function(){l.trigger("onSeek",[b])});return a}});e.each(["onBeforeSeek","onSeek","onAddItem"],function(b,d){e.isFunction(c[d])&&e(a).bind(d,c[d]);a[d]=function(h){e(a).bind(d,h);return a}});if(c.circular){var r=a.getItems().slice(-1).clone().prependTo(g),
215
- s=a.getItems().eq(1).clone().appendTo(g);r.add(s).addClass(c.clonedClass);a.onBeforeSeek(function(b,d,h){if(!b.isDefaultPrevented())if(d==-1){a.seekTo(r,h,function(){a.end(0)});return b.preventDefault()}else d==a.getSize()&&a.seekTo(s,h,function(){a.begin(0)})});a.seekTo(0,0)}var o=n(f,c.prev).click(function(){a.prev()}),p=n(f,c.next).click(function(){a.next()});!c.circular&&a.getSize()>1&&a.onBeforeSeek(function(b,d){setTimeout(function(){if(!b.isDefaultPrevented()){o.toggleClass(c.disabledClass,
216
- d<=0);p.toggleClass(c.disabledClass,d>=a.getSize()-1)}},1)});c.mousewheel&&e.fn.mousewheel&&f.mousewheel(function(b,d){if(c.mousewheel){a.move(d<0?1:-1,c.wheelSpeed||50);return false}});c.keyboard&&e(document).bind("keydown.scrollable",function(b){if(!(!c.keyboard||b.altKey||b.ctrlKey||e(b.target).is(":input")))if(!(c.keyboard!="static"&&j!=a)){var d=b.keyCode;if(m&&(d==38||d==40)){a.move(d==38?-1:1);return b.preventDefault()}if(!m&&(d==37||d==39)){a.move(d==37?-1:1);return b.preventDefault()}}});
217
- e(a).trigger("onBeforeSeek",[c.initialIndex])}e.tools=e.tools||{version:"1.2.3"};e.tools.scrollable={conf:{activeClass:"active",circular:false,clonedClass:"cloned",disabledClass:"disabled",easing:"swing",initialIndex:0,item:null,items:".items",keyboard:true,mousewheel:false,next:".next",prev:".prev",speed:400,vertical:false,wheelSpeed:0}};var j;e.fn.scrollable=function(f){var c=this.data("scrollable");if(c)return c;f=e.extend({},e.tools.scrollable.conf,f);this.each(function(){c=new t(e(this),f);e(this).data("scrollable",
218
- c)});return f.api?c:this}})(jQuery);
219
- (function(c){var g=c.tools.scrollable;g.autoscroll={conf:{autoplay:true,interval:3E3,autopause:true}};c.fn.autoscroll=function(d){if(typeof d=="number")d={interval:d};var b=c.extend({},g.autoscroll.conf,d),h;this.each(function(){var a=c(this).data("scrollable");if(a)h=a;var e,i,f=true;a.play=function(){if(!e){f=false;e=setInterval(function(){a.next()},b.interval);a.next()}};a.pause=function(){e=clearInterval(e)};a.stop=function(){a.pause();f=true};b.autopause&&a.getRoot().add(a.getNaviButtons()).hover(function(){a.pause();
220
- clearInterval(i)},function(){f||(i=setTimeout(a.play,b.interval))});b.autoplay&&setTimeout(a.play,b.interval)});return b.api?h:this}})(jQuery);
221
- (function(d){function p(c,g){var h=d(g);return h.length<2?h:c.parent().find(g)}var m=d.tools.scrollable;m.navigator={conf:{navi:".navi",naviItem:null,activeClass:"active",indexed:false,idPrefix:null,history:false}};d.fn.navigator=function(c){if(typeof c=="string")c={navi:c};c=d.extend({},m.navigator.conf,c);var g;this.each(function(){function h(a,b,i){e.seekTo(b);if(j){if(location.hash)location.hash=a.attr("href").replace("#","")}else return i.preventDefault()}function f(){return k.find(c.naviItem||
222
- "> *")}function n(a){var b=d("<"+(c.naviItem||"a")+"/>").click(function(i){h(d(this),a,i)}).attr("href","#"+a);a===0&&b.addClass(l);c.indexed&&b.text(a+1);c.idPrefix&&b.attr("id",c.idPrefix+a);return b.appendTo(k)}function o(a,b){a=f().eq(b.replace("#",""));a.length||(a=f().filter("[href="+b+"]"));a.click()}var e=d(this).data("scrollable"),k=p(e.getRoot(),c.navi),q=e.getNaviButtons(),l=c.activeClass,j=c.history&&d.fn.history;if(e)g=e;e.getNaviButtons=function(){return q.add(k)};f().length?f().each(function(a){d(this).click(function(b){h(d(this),
223
- a,b)})}):d.each(e.getItems(),function(a){n(a)});e.onBeforeSeek(function(a,b){setTimeout(function(){if(!a.isDefaultPrevented()){var i=f().eq(b);!a.isDefaultPrevented()&&i.length&&f().removeClass(l).eq(b).addClass(l)}},1)});e.onAddItem(function(a,b){b=n(e.getItems().index(b));j&&b.history(o)});j&&f().history(o)});return c.api?g:this}})(jQuery);
224
- (function(a){function t(d,b){var c=this,i=d.add(c),o=a(window),k,f,m,g=a.tools.expose&&(b.mask||b.expose),n=Math.random().toString().slice(10);if(g){if(typeof g=="string")g={color:g};g.closeOnClick=g.closeOnEsc=false}var p=b.target||d.attr("rel");f=p?a(p):d;if(!f.length)throw"Could not find Overlay: "+p;d&&d.index(f)==-1&&d.click(function(e){c.load(e);return e.preventDefault()});a.extend(c,{load:function(e){if(c.isOpened())return c;var h=q[b.effect];if(!h)throw'Overlay: cannot find effect : "'+b.effect+
225
- '"';b.oneInstance&&a.each(s,function(){this.close(e)});e=e||a.Event();e.type="onBeforeLoad";i.trigger(e);if(e.isDefaultPrevented())return c;m=true;g&&a(f).expose(g);var j=b.top,r=b.left,u=f.outerWidth({margin:true}),v=f.outerHeight({margin:true});if(typeof j=="string")j=j=="center"?Math.max((o.height()-v)/2,0):parseInt(j,10)/100*o.height();if(r=="center")r=Math.max((o.width()-u)/2,0);h[0].call(c,{top:j,left:r},function(){if(m){e.type="onLoad";i.trigger(e)}});g&&b.closeOnClick&&a.mask.getMask().one("click",
226
- c.close);b.closeOnClick&&a(document).bind("click."+n,function(l){a(l.target).parents(f).length||c.close(l)});b.closeOnEsc&&a(document).bind("keydown."+n,function(l){l.keyCode==27&&c.close(l)});return c},close:function(e){if(!c.isOpened())return c;e=e||a.Event();e.type="onBeforeClose";i.trigger(e);if(!e.isDefaultPrevented()){m=false;q[b.effect][1].call(c,function(){e.type="onClose";i.trigger(e)});a(document).unbind("click."+n).unbind("keydown."+n);g&&a.mask.close();return c}},getOverlay:function(){return f},
227
- getTrigger:function(){return d},getClosers:function(){return k},isOpened:function(){return m},getConf:function(){return b}});a.each("onBeforeLoad,onStart,onLoad,onBeforeClose,onClose".split(","),function(e,h){a.isFunction(b[h])&&a(c).bind(h,b[h]);c[h]=function(j){a(c).bind(h,j);return c}});k=f.find(b.close||".close");if(!k.length&&!b.close){k=a('<a class="close"></a>');f.prepend(k)}k.click(function(e){c.close(e)});b.load&&c.load()}a.tools=a.tools||{version:"1.2.3"};a.tools.overlay={addEffect:function(d,
228
- b,c){q[d]=[b,c]},conf:{close:null,closeOnClick:true,closeOnEsc:true,closeSpeed:"fast",effect:"default",fixed:!a.browser.msie||a.browser.version>6,left:"center",load:false,mask:null,oneInstance:true,speed:"normal",target:null,top:"10%"}};var s=[],q={};a.tools.overlay.addEffect("default",function(d,b){var c=this.getConf(),i=a(window);if(!c.fixed){d.top+=i.scrollTop();d.left+=i.scrollLeft()}d.position=c.fixed?"fixed":"absolute";this.getOverlay().css(d).fadeIn(c.speed,b)},function(d){this.getOverlay().fadeOut(this.getConf().closeSpeed,
229
- d)});a.fn.overlay=function(d){var b=this.data("overlay");if(b)return b;if(a.isFunction(d))d={onBeforeLoad:d};d=a.extend(true,{},a.tools.overlay.conf,d);this.each(function(){b=new t(a(this),d);s.push(b);a(this).data("overlay",b)});return d.api?b:this}})(jQuery);
230
- (function(i){function j(b){var d=b.offset();return{top:d.top+b.height()/2,left:d.left+b.width()/2}}var k=i.tools.overlay,f=i(window);i.extend(k.conf,{start:{top:null,left:null},fadeInSpeed:"fast",zIndex:9999});function n(b,d){var a=this.getOverlay(),c=this.getConf(),g=this.getTrigger(),o=this,l=a.outerWidth({margin:true}),h=a.data("img");if(!h){var e=a.css("backgroundImage");if(!e)throw"background-image CSS property not set for overlay";e=e.slice(e.indexOf("(")+1,e.indexOf(")")).replace(/\"/g,"");
231
- a.css("backgroundImage","none");h=i('<img src="'+e+'"/>');h.css({border:0,display:"none"}).width(l);i("body").append(h);a.data("img",h)}e=c.start.top||Math.round(f.height()/2);var m=c.start.left||Math.round(f.width()/2);if(g){g=j(g);e=g.top;m=g.left}h.css({position:"absolute",top:e,left:m,width:0,zIndex:c.zIndex}).show();b.top+=f.scrollTop();b.left+=f.scrollLeft();b.position="absolute";a.css(b);h.animate({top:a.css("top"),left:a.css("left"),width:l},c.speed,function(){if(c.fixed){b.top-=f.scrollTop();
232
- b.left-=f.scrollLeft();b.position="fixed";h.add(a).css(b)}a.css("zIndex",c.zIndex+1).fadeIn(c.fadeInSpeed,function(){o.isOpened()&&!i(this).index(a)?d.call():a.hide()})})}function p(b){var d=this.getOverlay().hide(),a=this.getConf(),c=this.getTrigger();d=d.data("img");var g={top:a.start.top,left:a.start.left,width:0};c&&i.extend(g,j(c));a.fixed&&d.css({position:"absolute"}).animate({top:"+="+f.scrollTop(),left:"+="+f.scrollLeft()},0);d.animate(g,a.closeSpeed,b)}k.addEffect("apple",n,p)})(jQuery);
233
- (function(d){function R(b,c){return 32-(new Date(b,c,32)).getDate()}function S(b,c){b=""+b;for(c=c||2;b.length<c;)b="0"+b;return b}function T(b,c,j){var m=b.getDate(),h=b.getDay(),t=b.getMonth();b=b.getFullYear();var f={d:m,dd:S(m),ddd:B[j].shortDays[h],dddd:B[j].days[h],m:t+1,mm:S(t+1),mmm:B[j].shortMonths[t],mmmm:B[j].months[t],yy:String(b).slice(2),yyyy:b};c=c.replace(X,function(o){return o in f?f[o]:o.slice(1,o.length-1)});return Y.html(c).html()}function y(b){return parseInt(b,10)}function U(b,
234
- c){return b.getFullYear()===c.getFullYear()&&b.getMonth()==c.getMonth()&&b.getDate()==c.getDate()}function C(b){if(b){if(b.constructor==Date)return b;if(typeof b=="string"){var c=b.split("-");if(c.length==3)return new Date(y(c[0]),y(c[1])-1,y(c[2]));if(!/^-?\d+$/.test(b))return;b=y(b)}c=new Date;c.setDate(c.getDate()+b);return c}}function Z(b,c){function j(a,e,g){l=a;D=a.getFullYear();E=a.getMonth();G=a.getDate();g=g||d.Event("api");g.type="change";H.trigger(g,[a]);if(!g.isDefaultPrevented()){b.val(T(a,
235
- e.format,e.lang));b.data("date",a);h.hide(g)}}function m(a){a.type="onShow";H.trigger(a);d(document).bind("keydown.d",function(e){var g=e.keyCode;if(g==8){b.val("");return h.hide(e)}if(g==27)return h.hide(e);if(d(V).index(g)>=0){if(!u){h.show(e);return e.preventDefault()}var i=d("#"+f.weeks+" a"),p=d("."+f.focus),q=i.index(p);p.removeClass(f.focus);if(g==74||g==40)q+=7;else if(g==75||g==38)q-=7;else if(g==76||g==39)q+=1;else if(g==72||g==37)q-=1;if(q==-1){h.addMonth(-1);p=d("#"+f.weeks+" a:last")}else if(q==
236
- 35){h.addMonth();p=d("#"+f.weeks+" a:first")}else p=i.eq(q);p.addClass(f.focus);return e.preventDefault()}if(g==34)return h.addMonth();if(g==33)return h.addMonth(-1);if(g==36)return h.today();if(g==13)d(e.target).is("select")||d("."+f.focus).click();return d([16,17,18,9]).index(g)>=0});d(document).bind("click.d",function(e){var g=e.target;if(!d(g).parents("#"+f.root).length&&g!=b[0]&&(!K||g!=K[0]))h.hide(e)})}var h=this,t=new Date,f=c.css,o=B[c.lang],k=d("#"+f.root),L=k.find("#"+f.title),K,I,J,D,
237
- E,G,l=b.attr("data-value")||c.value||b.val(),r=b.attr("min")||c.min,s=b.attr("max")||c.max,u;l=C(l)||t;r=C(r||c.yearRange[0]*365);s=C(s||c.yearRange[1]*365);if(!o)throw"Dateinput: invalid language: "+c.lang;if(b.attr("type")=="date"){var M=d("<input/>");d.each("name,readonly,disabled,value,required".split(","),function(a,e){M.attr(e,b.attr(e))});b.replaceWith(M);b=M}b.addClass(f.input);var H=b.add(h);if(!k.length){k=d("<div><div><a/><div/><a/></div><div><div/><div/></div></div>").hide().css({position:"absolute"}).attr("id",
238
- f.root);k.children().eq(0).attr("id",f.head).end().eq(1).attr("id",f.body).children().eq(0).attr("id",f.days).end().eq(1).attr("id",f.weeks).end().end().end().find("a").eq(0).attr("id",f.prev).end().eq(1).attr("id",f.next);L=k.find("#"+f.head).find("div").attr("id",f.title);if(c.selectors){var z=d("<select/>").attr("id",f.month),A=d("<select/>").attr("id",f.year);L.append(z.add(A))}for(var $=k.find("#"+f.days),N=0;N<7;N++)$.append(d("<span/>").text(o.shortDays[(N+c.firstDay)%7]));b.after(k)}if(c.trigger)K=
239
- d("<a/>").attr("href","#").addClass(f.trigger).click(function(a){h.show();return a.preventDefault()}).insertAfter(b);var O=k.find("#"+f.weeks);A=k.find("#"+f.year);z=k.find("#"+f.month);d.extend(h,{show:function(a){if(!(b.is("[readonly]")||u)){a=a||d.Event();a.type="onBeforeShow";H.trigger(a);if(!a.isDefaultPrevented()){d.each(W,function(){this.hide()});u=true;z.unbind("change").change(function(){h.setValue(A.val(),d(this).val())});A.unbind("change").change(function(){h.setValue(d(this).val(),z.val())});
240
- I=k.find("#"+f.prev).unbind("click").click(function(){I.hasClass(f.disabled)||h.addMonth(-1);return false});J=k.find("#"+f.next).unbind("click").click(function(){J.hasClass(f.disabled)||h.addMonth();return false});h.setValue(l);var e=b.position();k.css({top:e.top+b.outerHeight({margins:true})+c.offset[0],left:e.left+c.offset[1]});if(c.speed)k.show(c.speed,function(){m(a)});else{k.show();m(a)}return h}}},setValue:function(a,e,g){var i;if(parseInt(e,10)>=-1){a=y(a);e=y(e);g=y(g);i=new Date(a,e,g)}else{i=
241
- a||l;a=i.getFullYear();e=i.getMonth();g=i.getDate()}if(e==-1){e=11;a--}else if(e==12){e=0;a++}if(!u){j(i,c);return h}E=e;D=a;i=new Date(a,e,1-c.firstDay);g=i.getDay();var p=R(a,e),q=R(a,e-1),P;if(c.selectors){z.empty();d.each(o.months,function(v,F){r<new Date(a,v+1,-1)&&s>new Date(a,v,0)&&z.append(d("<option/>").html(F).attr("value",v))});A.empty();for(i=a+c.yearRange[0];i<a+c.yearRange[1];i++)r<new Date(i+1,-1,0)&&s>new Date(i,0,0)&&A.append(d("<option/>").text(i));z.val(e);A.val(a)}else L.html(o.months[e]+
242
- " "+a);O.empty();I.add(J).removeClass(f.disabled);for(var w=0,n,x;w<42;w++){n=d("<a/>");if(w%7===0){P=d("<div/>").addClass(f.week);O.append(P)}if(w<g){n.addClass(f.off);x=q-g+w+1;i=new Date(a,e-1,x)}else if(w>=g+p){n.addClass(f.off);x=w-p-g+1;i=new Date(a,e+1,x)}else{x=w-g+1;i=new Date(a,e,x);if(U(l,i))n.attr("id",f.current).addClass(f.focus);else U(t,i)&&n.attr("id",f.today)}r&&i<r&&n.add(I).addClass(f.disabled);s&&i>s&&n.add(J).addClass(f.disabled);n.attr("href","#"+x).text(x).data("date",i);P.append(n);
243
- n.click(function(v){var F=d(this);if(!F.hasClass(f.disabled)){d("#"+f.current).removeAttr("id");F.attr("id",f.current);j(F.data("date"),c,v)}return false})}f.sunday&&O.find(f.week).each(function(){var v=c.firstDay?7-c.firstDay:0;d(this).children().slice(v,v+1).addClass(f.sunday)});return h},setMin:function(a,e){r=C(a);e&&l<r&&h.setValue(r);return h},setMax:function(a,e){s=C(a);e&&l>s&&h.setValue(s);return h},today:function(){return h.setValue(t)},addDay:function(a){return this.setValue(D,E,G+(a||
244
- 1))},addMonth:function(a){return this.setValue(D,E+(a||1),G)},addYear:function(a){return this.setValue(D+(a||1),E,G)},hide:function(a){if(u){a=a||d.Event();a.type="onHide";H.trigger(a);d(document).unbind("click.d").unbind("keydown.d");if(a.isDefaultPrevented())return;k.hide();u=false}return h},getConf:function(){return c},getInput:function(){return b},getCalendar:function(){return k},getValue:function(a){return a?T(l,a,c.lang):l},isOpen:function(){return u}});d.each(["onBeforeShow","onShow","change",
245
- "onHide"],function(a,e){d.isFunction(c[e])&&d(h).bind(e,c[e]);h[e]=function(g){d(h).bind(e,g);return h}});b.bind("focus click",h.show).keydown(function(a){var e=a.keyCode;if(!u&&d(V).index(e)>=0){h.show(a);return a.preventDefault()}return a.shiftKey||a.ctrlKey||a.altKey||e==9?true:a.preventDefault()});C(b.val())&&j(l,c)}d.tools=d.tools||{version:"1.2.3"};var W=[],Q,V=[75,76,38,39,74,72,40,37],B={};Q=d.tools.dateinput={conf:{format:"mm/dd/yy",selectors:false,yearRange:[-5,5],lang:"en",offset:[0,0],
246
- speed:0,firstDay:0,min:0,max:0,trigger:false,css:{prefix:"cal",input:"date",root:0,head:0,title:0,prev:0,next:0,month:0,year:0,days:0,body:0,weeks:0,today:0,current:0,week:0,off:0,sunday:0,focus:0,disabled:0,trigger:0}},localize:function(b,c){d.each(c,function(j,m){c[j]=m.split(",")});B[b]=c}};Q.localize("en",{months:"January,February,March,April,May,June,July,August,September,October,November,December",shortMonths:"Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec",days:"Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday",
247
- shortDays:"Sun,Mon,Tue,Wed,Thu,Fri,Sat"});var X=/d{1,4}|m{1,4}|yy(?:yy)?|"[^"]*"|'[^']*'/g,Y=d("<a/>");d.expr[":"].date=function(b){var c=b.getAttribute("type");return c&&c=="date"||!!d(b).data("dateinput")};d.fn.dateinput=function(b){if(this.data("dateinput"))return this;b=d.extend(true,{},Q.conf,b);d.each(b.css,function(j,m){if(!m&&j!="prefix")b.css[j]=(b.css.prefix||"")+(m||j)});var c;this.each(function(){var j=new Z(d(this),b);W.push(j);j=j.getInput().data("dateinput",j);c=c?c.add(j):j});return c?
248
- c:this}})(jQuery);
249
- (function(e){function F(d,a){a=Math.pow(10,a);return Math.round(d*a)/a}function p(d,a){if(a=parseInt(d.css(a),10))return a;return(d=d[0].currentStyle)&&d.width&&parseInt(d.width,10)}function C(d){return(d=d.data("events"))&&d.onSlide}function G(d,a){function h(c,b,f,j){if(f===undefined)f=b/k*z;else if(j)f-=a.min;if(r)f=Math.round(f/r)*r;if(b===undefined||r)b=f*k/z;if(isNaN(f))return g;b=Math.max(0,Math.min(b,k));f=b/k*z;if(j||!n)f+=a.min;if(n)if(j)b=k-b;else f=a.max-f;f=F(f,t);var q=c.type=="click";
250
- if(D&&l!==undefined&&!q){c.type="onSlide";A.trigger(c,[f,b]);if(c.isDefaultPrevented())return g}j=q?a.speed:0;q=q?function(){c.type="change";A.trigger(c,[f])}:null;if(n){m.animate({top:b},j,q);a.progress&&B.animate({height:k-b+m.width()/2},j)}else{m.animate({left:b},j,q);a.progress&&B.animate({width:b+m.width()/2},j)}l=f;H=b;d.val(f);return g}function s(){if(n=a.vertical||p(i,"height")>p(i,"width")){k=p(i,"height")-p(m,"height");u=i.offset().top+k}else{k=p(i,"width")-p(m,"width");u=i.offset().left}}
251
- function v(){s();g.setValue(a.value||a.min)}var g=this,o=a.css,i=e("<div><div/><a href='#'/></div>").data("rangeinput",g),n,l,u,k,H;d.before(i);var m=i.addClass(o.slider).find("a").addClass(o.handle),B=i.find("div").addClass(o.progress);e.each("min,max,step,value".split(","),function(c,b){c=d.attr(b);if(parseFloat(c))a[b]=parseFloat(c,10)});var z=a.max-a.min,r=a.step=="any"?0:a.step,t=a.precision;if(t===undefined)try{t=r.toString().split(".")[1].length}catch(I){t=0}if(d.attr("type")=="range"){var w=
252
- e("<input/>");e.each("name,readonly,disabled,required".split(","),function(c,b){w.attr(b,d.attr(b))});w.val(a.value);d.replaceWith(w);d=w}d.addClass(o.input);var A=e(g).add(d),D=true;e.extend(g,{getValue:function(){return l},setValue:function(c,b){return h(b||e.Event("api"),undefined,c,true)},getConf:function(){return a},getProgress:function(){return B},getHandle:function(){return m},getInput:function(){return d},step:function(c,b){b=b||e.Event();var f=a.step=="any"?1:a.step;g.setValue(l+f*(c||1),
253
- b)},stepUp:function(c){return g.step(c||1)},stepDown:function(c){return g.step(-c||-1)}});e.each("onSlide,change".split(","),function(c,b){e.isFunction(a[b])&&e(g).bind(b,a[b]);g[b]=function(f){e(g).bind(b,f);return g}});m.drag({drag:false}).bind("dragStart",function(){D=C(e(g))||C(d)}).bind("drag",function(c,b,f){if(d.is(":disabled"))return false;h(c,n?b:f)}).bind("dragEnd",function(c){if(!c.isDefaultPrevented()){c.type="change";A.trigger(c,[l])}}).click(function(c){return c.preventDefault()});i.click(function(c){if(d.is(":disabled")||
254
- c.target==m[0])return c.preventDefault();s();var b=m.width()/2;h(c,n?k-u-b+c.pageY:c.pageX-u-b)});a.keyboard&&d.keydown(function(c){if(!d.attr("readonly")){var b=c.keyCode,f=e([75,76,38,33,39]).index(b)!=-1,j=e([74,72,40,34,37]).index(b)!=-1;if((f||j)&&!(c.shiftKey||c.altKey||c.ctrlKey)){if(f)g.step(b==33?10:1,c);else if(j)g.step(b==34?-10:-1,c);return c.preventDefault()}}});d.blur(function(c){var b=e(this).val();b!==l&&g.setValue(b,c)});e.extend(d[0],{stepUp:g.stepUp,stepDown:g.stepDown});v();k||
255
- e(window).load(v)}e.tools=e.tools||{version:"1.2.3"};var E;E=e.tools.rangeinput={conf:{min:0,max:100,step:"any",steps:0,value:0,precision:undefined,vertical:0,keyboard:true,progress:false,speed:100,css:{input:"range",slider:"slider",progress:"progress",handle:"handle"}}};var x,y;e.fn.drag=function(d){document.ondragstart=function(){return false};d=e.extend({x:true,y:true,drag:true},d);x=x||e(document).bind("mousedown mouseup",function(a){var h=e(a.target);if(a.type=="mousedown"&&h.data("drag")){var s=
256
- h.position(),v=a.pageX-s.left,g=a.pageY-s.top,o=true;x.bind("mousemove.drag",function(i){var n=i.pageX-v;i=i.pageY-g;var l={};if(d.x)l.left=n;if(d.y)l.top=i;if(o){h.trigger("dragStart");o=false}d.drag&&h.css(l);h.trigger("drag",[i,n]);y=h});a.preventDefault()}else try{y&&y.trigger("dragEnd")}finally{x.unbind("mousemove.drag");y=null}});return this.data("drag",true)};e.expr[":"].range=function(d){var a=d.getAttribute("type");return a&&a=="range"||!!e(d).filter("input").data("rangeinput")};e.fn.rangeinput=
257
- function(d){if(this.data("rangeinput"))return this;d=e.extend(true,{},E.conf,d);var a;this.each(function(){var h=new G(e(this),e.extend(true,{},d));h=h.getInput().data("rangeinput",h);a=a?a.add(h):h});return a?a:this}})(jQuery);
258
- (function(d){function v(a,b,c){var k=a.offset().top,f=a.offset().left,l=c.position.split(/,?\s+/),g=l[0];l=l[1];k-=b.outerHeight()-c.offset[0];f+=a.outerWidth()+c.offset[1];c=b.outerHeight()+a.outerHeight();if(g=="center")k+=c/2;if(g=="bottom")k+=c;a=a.outerWidth();if(l=="center")f-=(a+b.outerWidth())/2;if(l=="left")f-=a;return{top:k,left:f}}function w(a){function b(){return this.getAttribute("type")==a}b.key="[type="+a+"]";return b}function s(a,b,c){function k(g,e,j){if(!(!c.grouped&&g.length)){var h;
259
- if(j===false||d.isArray(j)){h=i.messages[e.key||e]||i.messages["*"];h=h[c.lang]||i.messages["*"].en;(e=h.match(/\$\d/g))&&d.isArray(j)&&d.each(e,function(n){h=h.replace(this,j[n])})}else h=j[c.lang]||j;g.push(h)}}var f=this,l=b.add(f);a=a.not(":button, :image, :reset, :submit");d.extend(f,{getConf:function(){return c},getForm:function(){return b},getInputs:function(){return a},invalidate:function(g,e){if(!e){var j=[];d.each(g,function(h,n){h=a.filter("[name="+h+"]");if(h.length){h.trigger("OI",[n]);
260
- j.push({input:h,messages:[n]})}});g=j;e=d.Event()}e.type="onFail";l.trigger(e,[g]);e.isDefaultPrevented()||q[c.effect][0].call(f,g,e);return f},reset:function(g){g=g||a;g.removeClass(c.errorClass).each(function(){var e=d(this).data("msg.el");if(e){e.remove();d(this).data("msg.el",null)}}).unbind(c.errorInputEvent||"");return f},destroy:function(){b.unbind(c.formEvent).unbind("reset.V");a.unbind(c.inputEvent||"").unbind("change.V");return f.reset()},checkValidity:function(g,e){g=g||a;g=g.not(":disabled");
261
- if(!g.length)return true;e=e||d.Event();e.type="onBeforeValidate";l.trigger(e,[g]);if(e.isDefaultPrevented())return e.result;var j=[],h=c.errorInputEvent+".v";g.each(function(){var p=[],m=d(this).unbind(h).data("messages",p);d.each(t,function(){var o=this,r=o[0];if(m.filter(r).length){o=o[1].call(f,m,m.val());if(o!==true){e.type="onBeforeFail";l.trigger(e,[m,r]);if(e.isDefaultPrevented())return false;var u=m.attr(c.messageAttr);if(u){p=[u];return false}else k(p,r,o)}}});if(p.length){j.push({input:m,
262
- messages:p});m.trigger("OI",[p]);c.errorInputEvent&&m.bind(h,function(o){f.checkValidity(m,o)})}if(c.singleError&&j.length)return false});var n=q[c.effect];if(!n)throw'Validator: cannot find effect "'+c.effect+'"';if(j.length){f.invalidate(j,e);return false}else{n[1].call(f,g,e);e.type="onSuccess";l.trigger(e,[g]);g.unbind(h)}return true}});d.each("onBeforeValidate,onBeforeFail,onFail,onSuccess".split(","),function(g,e){d.isFunction(c[e])&&d(f).bind(e,c[e]);f[e]=function(j){d(f).bind(e,j);return f}});
263
- c.formEvent&&b.bind(c.formEvent,function(g){if(!f.checkValidity(null,g))return g.preventDefault()});b.bind("reset.V",function(){f.reset()});a[0]&&a[0].validity&&a.each(function(){this.oninvalid=function(){return false}});if(b[0])b[0].checkValidity=f.checkValidity;c.inputEvent&&a.bind(c.inputEvent,function(g){f.checkValidity(d(this),g)});a.filter(":checkbox, select").filter("[required]").bind("change.V",function(g){var e=d(this);if(this.checked||e.is("select")&&d(this).val())q[c.effect][1].call(f,
264
- e,g)})}d.tools=d.tools||{version:"1.2.3"};var x=/\[type=([a-z]+)\]/,y=/^-?[0-9]*(\.[0-9]+)?$/,z=/^([a-z0-9_\.\-\+]+)@([\da-z\.\-]+)\.([a-z\.]{2,6})$/i,A=/^(https?:\/\/)?([\da-z\.\-]+)\.([a-z\.]{2,6})([\/\w \.\-]*)*\/?$/i,i;i=d.tools.validator={conf:{grouped:false,effect:"default",errorClass:"invalid",inputEvent:null,errorInputEvent:"keyup",formEvent:"submit",lang:"en",message:"<div/>",messageAttr:"data-message",messageClass:"error",offset:[0,0],position:"center right",singleError:false,speed:"normal"},
265
- messages:{"*":{en:"Please correct this value"}},localize:function(a,b){d.each(b,function(c,k){i.messages[c]=i.messages[c]||{};i.messages[c][a]=k})},localizeFn:function(a,b){i.messages[a]=i.messages[a]||{};d.extend(i.messages[a],b)},fn:function(a,b,c){if(d.isFunction(b))c=b;else{if(typeof b=="string")b={en:b};this.messages[a.key||a]=b}if(b=x.exec(a))a=w(b[1]);t.push([a,c])},addEffect:function(a,b,c){q[a]=[b,c]}};var t=[],q={"default":[function(a){var b=this.getConf();d.each(a,function(c,k){c=k.input;
266
- c.addClass(b.errorClass);var f=c.data("msg.el");if(!f){f=d(b.message).addClass(b.messageClass).appendTo(document.body);c.data("msg.el",f)}f.css({visibility:"hidden"}).find("span").remove();d.each(k.messages,function(l,g){d("<span/>").html(g).appendTo(f)});f.outerWidth()==f.parent().width()&&f.add(f.find("p")).css({display:"inline"});k=v(c,f,b);f.css({visibility:"visible",position:"absolute",top:k.top,left:k.left}).fadeIn(b.speed)})},function(a){var b=this.getConf();a.removeClass(b.errorClass).each(function(){var c=
267
- d(this).data("msg.el");c&&c.css({visibility:"hidden"})})}]};d.each("email,url,number".split(","),function(a,b){d.expr[":"][b]=function(c){return c.getAttribute("type")===b}});d.fn.oninvalid=function(a){return this[a?"bind":"trigger"]("OI",a)};i.fn(":email","Please enter a valid email address",function(a,b){return!b||z.test(b)});i.fn(":url","Please enter a valid URL",function(a,b){return!b||A.test(b)});i.fn(":number","Please enter a numeric value.",function(a,b){return y.test(b)});i.fn("[max]","Please enter a value smaller than $1",
268
- function(a,b){if(d.tools.dateinput&&a.is(":date"))return true;a=a.attr("max");return parseFloat(b)<=parseFloat(a)?true:[a]});i.fn("[min]","Please enter a value larger than $1",function(a,b){if(d.tools.dateinput&&a.is(":date"))return true;a=a.attr("min");return parseFloat(b)>=parseFloat(a)?true:[a]});i.fn("[required]","Please complete this mandatory field.",function(a,b){if(a.is(":checkbox"))return a.is(":checked");return!!b});i.fn("[pattern]",function(a){var b=new RegExp("^"+a.attr("pattern")+"$");
269
- return b.test(a.val())});d.fn.validator=function(a){var b=this.data("validator");if(b){b.destroy();this.removeData("validator")}a=d.extend(true,{},i.conf,a);if(this.is("form"))return this.each(function(){var c=d(this);b=new s(c.find(":input"),c,a);c.data("validator",b)});else{b=new s(this,this.eq(0).closest("form"),a);return this.data("validator",b)}}})(jQuery);
1
+ /*
2
+ * jQuery Tools 1.2.3 - The missing UI library for the Web
3
+ *
4
+ * [jquery, toolbox.flashembed, toolbox.history, toolbox.expose, toolbox.mousewheel, tabs, tabs.slideshow, tooltip, tooltip.slide, tooltip.dynamic, scrollable, scrollable.autoscroll, scrollable.navigator, overlay, overlay.apple, dateinput, rangeinput, validator]
5
+ *
6
+ * NO COPYRIGHTS OR LICENSES. DO WHAT YOU LIKE.
7
+ *
8
+ * http://flowplayer.org/tools/
9
+ *
10
+ * jQuery JavaScript Library v1.4.2
11
+ * http://jquery.com/
12
+ *
13
+ * Copyright 2010, John Resig
14
+ * Dual licensed under the MIT or GPL Version 2 licenses.
15
+ * http://docs.jquery.com/License
16
+ *
17
+ * Includes Sizzle.js
18
+ * http://sizzlejs.com/
19
+ * Copyright 2010, The Dojo Foundation
20
+ * Released under the MIT, BSD, and GPL Licenses.
21
+ *
22
+ * -----
23
+ *
24
+
25
+
26
+ * jquery.event.wheel.js - rev 1
27
+ * Copyright (c) 2008, Three Dub Media (http://threedubmedia.com)
28
+ * Liscensed under the MIT License (MIT-LICENSE.txt)
29
+ * http://www.opensource.org/licenses/mit-license.php
30
+ * Created: 2008-07-01 | Updated: 2008-07-14
31
+ *
32
+ * -----
33
+ *
34
+ * File generated: Sat Jun 12 10:02:29 GMT 2010
35
+ */
36
+ (function(A,w){function ma(){if(!c.isReady){try{s.documentElement.doScroll("left")}catch(a){setTimeout(ma,1);return}c.ready()}}function Qa(a,b){b.src?c.ajax({url:b.src,async:false,dataType:"script"}):c.globalEval(b.text||b.textContent||b.innerHTML||"");b.parentNode&&b.parentNode.removeChild(b)}function X(a,b,d,f,e,j){var i=a.length;if(typeof b==="object"){for(var o in b)X(a,o,b[o],f,e,d);return a}if(d!==w){f=!j&&f&&c.isFunction(d);for(o=0;o<i;o++)e(a[o],b,f?d.call(a[o],o,e(a[o],b)):d,j);return a}return i?
37
+ e(a[0],b):w}function J(){return(new Date).getTime()}function Y(){return false}function Z(){return true}function na(a,b,d){d[0].type=a;return c.event.handle.apply(b,d)}function oa(a){var b,d=[],f=[],e=arguments,j,i,o,k,n,r;i=c.data(this,"events");if(!(a.liveFired===this||!i||!i.live||a.button&&a.type==="click")){a.liveFired=this;var u=i.live.slice(0);for(k=0;k<u.length;k++){i=u[k];i.origType.replace(O,"")===a.type?f.push(i.selector):u.splice(k--,1)}j=c(a.target).closest(f,a.currentTarget);n=0;for(r=
38
+ j.length;n<r;n++)for(k=0;k<u.length;k++){i=u[k];if(j[n].selector===i.selector){o=j[n].elem;f=null;if(i.preType==="mouseenter"||i.preType==="mouseleave")f=c(a.relatedTarget).closest(i.selector)[0];if(!f||f!==o)d.push({elem:o,handleObj:i})}}n=0;for(r=d.length;n<r;n++){j=d[n];a.currentTarget=j.elem;a.data=j.handleObj.data;a.handleObj=j.handleObj;if(j.handleObj.origHandler.apply(j.elem,e)===false){b=false;break}}return b}}function pa(a,b){return"live."+(a&&a!=="*"?a+".":"")+b.replace(/\./g,"`").replace(/ /g,
39
+ "&")}function qa(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function ra(a,b){var d=0;b.each(function(){if(this.nodeName===(a[d]&&a[d].nodeName)){var f=c.data(a[d++]),e=c.data(this,f);if(f=f&&f.events){delete e.handle;e.events={};for(var j in f)for(var i in f[j])c.event.add(this,j,f[j][i],f[j][i].data)}}})}function sa(a,b,d){var f,e,j;b=b&&b[0]?b[0].ownerDocument||b[0]:s;if(a.length===1&&typeof a[0]==="string"&&a[0].length<512&&b===s&&!ta.test(a[0])&&(c.support.checkClone||!ua.test(a[0]))){e=
40
+ true;if(j=c.fragments[a[0]])if(j!==1)f=j}if(!f){f=b.createDocumentFragment();c.clean(a,b,f,d)}if(e)c.fragments[a[0]]=j?f:1;return{fragment:f,cacheable:e}}function K(a,b){var d={};c.each(va.concat.apply([],va.slice(0,b)),function(){d[this]=a});return d}function wa(a){return"scrollTo"in a&&a.document?a:a.nodeType===9?a.defaultView||a.parentWindow:false}var c=function(a,b){return new c.fn.init(a,b)},Ra=A.jQuery,Sa=A.$,s=A.document,T,Ta=/^[^<]*(<[\w\W]+>)[^>]*$|^#([\w-]+)$/,Ua=/^.[^:#\[\.,]*$/,Va=/\S/,
41
+ Wa=/^(\s|\u00A0)+|(\s|\u00A0)+$/g,Xa=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,P=navigator.userAgent,xa=false,Q=[],L,$=Object.prototype.toString,aa=Object.prototype.hasOwnProperty,ba=Array.prototype.push,R=Array.prototype.slice,ya=Array.prototype.indexOf;c.fn=c.prototype={init:function(a,b){var d,f;if(!a)return this;if(a.nodeType){this.context=this[0]=a;this.length=1;return this}if(a==="body"&&!b){this.context=s;this[0]=s.body;this.selector="body";this.length=1;return this}if(typeof a==="string")if((d=Ta.exec(a))&&
42
+ (d[1]||!b))if(d[1]){f=b?b.ownerDocument||b:s;if(a=Xa.exec(a))if(c.isPlainObject(b)){a=[s.createElement(a[1])];c.fn.attr.call(a,b,true)}else a=[f.createElement(a[1])];else{a=sa([d[1]],[f]);a=(a.cacheable?a.fragment.cloneNode(true):a.fragment).childNodes}return c.merge(this,a)}else{if(b=s.getElementById(d[2])){if(b.id!==d[2])return T.find(a);this.length=1;this[0]=b}this.context=s;this.selector=a;return this}else if(!b&&/^\w+$/.test(a)){this.selector=a;this.context=s;a=s.getElementsByTagName(a);return c.merge(this,
43
+ a)}else return!b||b.jquery?(b||T).find(a):c(b).find(a);else if(c.isFunction(a))return T.ready(a);if(a.selector!==w){this.selector=a.selector;this.context=a.context}return c.makeArray(a,this)},selector:"",jquery:"1.4.2",length:0,size:function(){return this.length},toArray:function(){return R.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this.slice(a)[0]:this[a]},pushStack:function(a,b,d){var f=c();c.isArray(a)?ba.apply(f,a):c.merge(f,a);f.prevObject=this;f.context=this.context;if(b===
44
+ "find")f.selector=this.selector+(this.selector?" ":"")+d;else if(b)f.selector=this.selector+"."+b+"("+d+")";return f},each:function(a,b){return c.each(this,a,b)},ready:function(a){c.bindReady();if(c.isReady)a.call(s,c);else Q&&Q.push(a);return this},eq:function(a){return a===-1?this.slice(a):this.slice(a,+a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(R.apply(this,arguments),"slice",R.call(arguments).join(","))},map:function(a){return this.pushStack(c.map(this,
45
+ function(b,d){return a.call(b,d,b)}))},end:function(){return this.prevObject||c(null)},push:ba,sort:[].sort,splice:[].splice};c.fn.init.prototype=c.fn;c.extend=c.fn.extend=function(){var a=arguments[0]||{},b=1,d=arguments.length,f=false,e,j,i,o;if(typeof a==="boolean"){f=a;a=arguments[1]||{};b=2}if(typeof a!=="object"&&!c.isFunction(a))a={};if(d===b){a=this;--b}for(;b<d;b++)if((e=arguments[b])!=null)for(j in e){i=a[j];o=e[j];if(a!==o)if(f&&o&&(c.isPlainObject(o)||c.isArray(o))){i=i&&(c.isPlainObject(i)||
46
+ c.isArray(i))?i:c.isArray(o)?[]:{};a[j]=c.extend(f,i,o)}else if(o!==w)a[j]=o}return a};c.extend({noConflict:function(a){A.$=Sa;if(a)A.jQuery=Ra;return c},isReady:false,ready:function(){if(!c.isReady){if(!s.body)return setTimeout(c.ready,13);c.isReady=true;if(Q){for(var a,b=0;a=Q[b++];)a.call(s,c);Q=null}c.fn.triggerHandler&&c(s).triggerHandler("ready")}},bindReady:function(){if(!xa){xa=true;if(s.readyState==="complete")return c.ready();if(s.addEventListener){s.addEventListener("DOMContentLoaded",
47
+ L,false);A.addEventListener("load",c.ready,false)}else if(s.attachEvent){s.attachEvent("onreadystatechange",L);A.attachEvent("onload",c.ready);var a=false;try{a=A.frameElement==null}catch(b){}s.documentElement.doScroll&&a&&ma()}}},isFunction:function(a){return $.call(a)==="[object Function]"},isArray:function(a){return $.call(a)==="[object Array]"},isPlainObject:function(a){if(!a||$.call(a)!=="[object Object]"||a.nodeType||a.setInterval)return false;if(a.constructor&&!aa.call(a,"constructor")&&!aa.call(a.constructor.prototype,
48
+ "isPrototypeOf"))return false;var b;for(b in a);return b===w||aa.call(a,b)},isEmptyObject:function(a){for(var b in a)return false;return true},error:function(a){throw a;},parseJSON:function(a){if(typeof a!=="string"||!a)return null;a=c.trim(a);if(/^[\],:{}\s]*$/.test(a.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,"@").replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,"]").replace(/(?:^|:|,)(?:\s*\[)+/g,"")))return A.JSON&&A.JSON.parse?A.JSON.parse(a):(new Function("return "+
49
+ a))();else c.error("Invalid JSON: "+a)},noop:function(){},globalEval:function(a){if(a&&Va.test(a)){var b=s.getElementsByTagName("head")[0]||s.documentElement,d=s.createElement("script");d.type="text/javascript";if(c.support.scriptEval)d.appendChild(s.createTextNode(a));else d.text=a;b.insertBefore(d,b.firstChild);b.removeChild(d)}},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,b,d){var f,e=0,j=a.length,i=j===w||c.isFunction(a);if(d)if(i)for(f in a){if(b.apply(a[f],
50
+ d)===false)break}else for(;e<j;){if(b.apply(a[e++],d)===false)break}else if(i)for(f in a){if(b.call(a[f],f,a[f])===false)break}else for(d=a[0];e<j&&b.call(d,e,d)!==false;d=a[++e]);return a},trim:function(a){return(a||"").replace(Wa,"")},makeArray:function(a,b){b=b||[];if(a!=null)a.length==null||typeof a==="string"||c.isFunction(a)||typeof a!=="function"&&a.setInterval?ba.call(b,a):c.merge(b,a);return b},inArray:function(a,b){if(b.indexOf)return b.indexOf(a);for(var d=0,f=b.length;d<f;d++)if(b[d]===
51
+ a)return d;return-1},merge:function(a,b){var d=a.length,f=0;if(typeof b.length==="number")for(var e=b.length;f<e;f++)a[d++]=b[f];else for(;b[f]!==w;)a[d++]=b[f++];a.length=d;return a},grep:function(a,b,d){for(var f=[],e=0,j=a.length;e<j;e++)!d!==!b(a[e],e)&&f.push(a[e]);return f},map:function(a,b,d){for(var f=[],e,j=0,i=a.length;j<i;j++){e=b(a[j],j,d);if(e!=null)f[f.length]=e}return f.concat.apply([],f)},guid:1,proxy:function(a,b,d){if(arguments.length===2)if(typeof b==="string"){d=a;a=d[b];b=w}else if(b&&
52
+ !c.isFunction(b)){d=b;b=w}if(!b&&a)b=function(){return a.apply(d||this,arguments)};if(a)b.guid=a.guid=a.guid||b.guid||c.guid++;return b},uaMatch:function(a){a=a.toLowerCase();a=/(webkit)[ \/]([\w.]+)/.exec(a)||/(opera)(?:.*version)?[ \/]([\w.]+)/.exec(a)||/(msie) ([\w.]+)/.exec(a)||!/compatible/.test(a)&&/(mozilla)(?:.*? rv:([\w.]+))?/.exec(a)||[];return{browser:a[1]||"",version:a[2]||"0"}},browser:{}});P=c.uaMatch(P);if(P.browser){c.browser[P.browser]=true;c.browser.version=P.version}if(c.browser.webkit)c.browser.safari=
53
+ true;if(ya)c.inArray=function(a,b){return ya.call(b,a)};T=c(s);if(s.addEventListener)L=function(){s.removeEventListener("DOMContentLoaded",L,false);c.ready()};else if(s.attachEvent)L=function(){if(s.readyState==="complete"){s.detachEvent("onreadystatechange",L);c.ready()}};(function(){c.support={};var a=s.documentElement,b=s.createElement("script"),d=s.createElement("div"),f="script"+J();d.style.display="none";d.innerHTML=" <link/><table></table><a href='/a' style='color:red;float:left;opacity:.55;'>a</a><input type='checkbox'/>";
54
+ var e=d.getElementsByTagName("*"),j=d.getElementsByTagName("a")[0];if(!(!e||!e.length||!j)){c.support={leadingWhitespace:d.firstChild.nodeType===3,tbody:!d.getElementsByTagName("tbody").length,htmlSerialize:!!d.getElementsByTagName("link").length,style:/red/.test(j.getAttribute("style")),hrefNormalized:j.getAttribute("href")==="/a",opacity:/^0.55$/.test(j.style.opacity),cssFloat:!!j.style.cssFloat,checkOn:d.getElementsByTagName("input")[0].value==="on",optSelected:s.createElement("select").appendChild(s.createElement("option")).selected,
55
+ parentNode:d.removeChild(d.appendChild(s.createElement("div"))).parentNode===null,deleteExpando:true,checkClone:false,scriptEval:false,noCloneEvent:true,boxModel:null};b.type="text/javascript";try{b.appendChild(s.createTextNode("window."+f+"=1;"))}catch(i){}a.insertBefore(b,a.firstChild);if(A[f]){c.support.scriptEval=true;delete A[f]}try{delete b.test}catch(o){c.support.deleteExpando=false}a.removeChild(b);if(d.attachEvent&&d.fireEvent){d.attachEvent("onclick",function k(){c.support.noCloneEvent=
56
+ false;d.detachEvent("onclick",k)});d.cloneNode(true).fireEvent("onclick")}d=s.createElement("div");d.innerHTML="<input type='radio' name='radiotest' checked='checked'/>";a=s.createDocumentFragment();a.appendChild(d.firstChild);c.support.checkClone=a.cloneNode(true).cloneNode(true).lastChild.checked;c(function(){var k=s.createElement("div");k.style.width=k.style.paddingLeft="1px";s.body.appendChild(k);c.boxModel=c.support.boxModel=k.offsetWidth===2;s.body.removeChild(k).style.display="none"});a=function(k){var n=
57
+ s.createElement("div");k="on"+k;var r=k in n;if(!r){n.setAttribute(k,"return;");r=typeof n[k]==="function"}return r};c.support.submitBubbles=a("submit");c.support.changeBubbles=a("change");a=b=d=e=j=null}})();c.props={"for":"htmlFor","class":"className",readonly:"readOnly",maxlength:"maxLength",cellspacing:"cellSpacing",rowspan:"rowSpan",colspan:"colSpan",tabindex:"tabIndex",usemap:"useMap",frameborder:"frameBorder"};var G="jQuery"+J(),Ya=0,za={};c.extend({cache:{},expando:G,noData:{embed:true,object:true,
58
+ applet:true},data:function(a,b,d){if(!(a.nodeName&&c.noData[a.nodeName.toLowerCase()])){a=a==A?za:a;var f=a[G],e=c.cache;if(!f&&typeof b==="string"&&d===w)return null;f||(f=++Ya);if(typeof b==="object"){a[G]=f;e[f]=c.extend(true,{},b)}else if(!e[f]){a[G]=f;e[f]={}}a=e[f];if(d!==w)a[b]=d;return typeof b==="string"?a[b]:a}},removeData:function(a,b){if(!(a.nodeName&&c.noData[a.nodeName.toLowerCase()])){a=a==A?za:a;var d=a[G],f=c.cache,e=f[d];if(b){if(e){delete e[b];c.isEmptyObject(e)&&c.removeData(a)}}else{if(c.support.deleteExpando)delete a[c.expando];
59
+ else a.removeAttribute&&a.removeAttribute(c.expando);delete f[d]}}}});c.fn.extend({data:function(a,b){if(typeof a==="undefined"&&this.length)return c.data(this[0]);else if(typeof a==="object")return this.each(function(){c.data(this,a)});var d=a.split(".");d[1]=d[1]?"."+d[1]:"";if(b===w){var f=this.triggerHandler("getData"+d[1]+"!",[d[0]]);if(f===w&&this.length)f=c.data(this[0],a);return f===w&&d[1]?this.data(d[0]):f}else return this.trigger("setData"+d[1]+"!",[d[0],b]).each(function(){c.data(this,
60
+ a,b)})},removeData:function(a){return this.each(function(){c.removeData(this,a)})}});c.extend({queue:function(a,b,d){if(a){b=(b||"fx")+"queue";var f=c.data(a,b);if(!d)return f||[];if(!f||c.isArray(d))f=c.data(a,b,c.makeArray(d));else f.push(d);return f}},dequeue:function(a,b){b=b||"fx";var d=c.queue(a,b),f=d.shift();if(f==="inprogress")f=d.shift();if(f){b==="fx"&&d.unshift("inprogress");f.call(a,function(){c.dequeue(a,b)})}}});c.fn.extend({queue:function(a,b){if(typeof a!=="string"){b=a;a="fx"}if(b===
61
+ w)return c.queue(this[0],a);return this.each(function(){var d=c.queue(this,a,b);a==="fx"&&d[0]!=="inprogress"&&c.dequeue(this,a)})},dequeue:function(a){return this.each(function(){c.dequeue(this,a)})},delay:function(a,b){a=c.fx?c.fx.speeds[a]||a:a;b=b||"fx";return this.queue(b,function(){var d=this;setTimeout(function(){c.dequeue(d,b)},a)})},clearQueue:function(a){return this.queue(a||"fx",[])}});var Aa=/[\n\t]/g,ca=/\s+/,Za=/\r/g,$a=/href|src|style/,ab=/(button|input)/i,bb=/(button|input|object|select|textarea)/i,
62
+ cb=/^(a|area)$/i,Ba=/radio|checkbox/;c.fn.extend({attr:function(a,b){return X(this,a,b,true,c.attr)},removeAttr:function(a){return this.each(function(){c.attr(this,a,"");this.nodeType===1&&this.removeAttribute(a)})},addClass:function(a){if(c.isFunction(a))return this.each(function(n){var r=c(this);r.addClass(a.call(this,n,r.attr("class")))});if(a&&typeof a==="string")for(var b=(a||"").split(ca),d=0,f=this.length;d<f;d++){var e=this[d];if(e.nodeType===1)if(e.className){for(var j=" "+e.className+" ",
63
+ i=e.className,o=0,k=b.length;o<k;o++)if(j.indexOf(" "+b[o]+" ")<0)i+=" "+b[o];e.className=c.trim(i)}else e.className=a}return this},removeClass:function(a){if(c.isFunction(a))return this.each(function(k){var n=c(this);n.removeClass(a.call(this,k,n.attr("class")))});if(a&&typeof a==="string"||a===w)for(var b=(a||"").split(ca),d=0,f=this.length;d<f;d++){var e=this[d];if(e.nodeType===1&&e.className)if(a){for(var j=(" "+e.className+" ").replace(Aa," "),i=0,o=b.length;i<o;i++)j=j.replace(" "+b[i]+" ",
64
+ " ");e.className=c.trim(j)}else e.className=""}return this},toggleClass:function(a,b){var d=typeof a,f=typeof b==="boolean";if(c.isFunction(a))return this.each(function(e){var j=c(this);j.toggleClass(a.call(this,e,j.attr("class"),b),b)});return this.each(function(){if(d==="string")for(var e,j=0,i=c(this),o=b,k=a.split(ca);e=k[j++];){o=f?o:!i.hasClass(e);i[o?"addClass":"removeClass"](e)}else if(d==="undefined"||d==="boolean"){this.className&&c.data(this,"__className__",this.className);this.className=
65
+ this.className||a===false?"":c.data(this,"__className__")||""}})},hasClass:function(a){a=" "+a+" ";for(var b=0,d=this.length;b<d;b++)if((" "+this[b].className+" ").replace(Aa," ").indexOf(a)>-1)return true;return false},val:function(a){if(a===w){var b=this[0];if(b){if(c.nodeName(b,"option"))return(b.attributes.value||{}).specified?b.value:b.text;if(c.nodeName(b,"select")){var d=b.selectedIndex,f=[],e=b.options;b=b.type==="select-one";if(d<0)return null;var j=b?d:0;for(d=b?d+1:e.length;j<d;j++){var i=
66
+ e[j];if(i.selected){a=c(i).val();if(b)return a;f.push(a)}}return f}if(Ba.test(b.type)&&!c.support.checkOn)return b.getAttribute("value")===null?"on":b.value;return(b.value||"").replace(Za,"")}return w}var o=c.isFunction(a);return this.each(function(k){var n=c(this),r=a;if(this.nodeType===1){if(o)r=a.call(this,k,n.val());if(typeof r==="number")r+="";if(c.isArray(r)&&Ba.test(this.type))this.checked=c.inArray(n.val(),r)>=0;else if(c.nodeName(this,"select")){var u=c.makeArray(r);c("option",this).each(function(){this.selected=
67
+ c.inArray(c(this).val(),u)>=0});if(!u.length)this.selectedIndex=-1}else this.value=r}})}});c.extend({attrFn:{val:true,css:true,html:true,text:true,data:true,width:true,height:true,offset:true},attr:function(a,b,d,f){if(!a||a.nodeType===3||a.nodeType===8)return w;if(f&&b in c.attrFn)return c(a)[b](d);f=a.nodeType!==1||!c.isXMLDoc(a);var e=d!==w;b=f&&c.props[b]||b;if(a.nodeType===1){var j=$a.test(b);if(b in a&&f&&!j){if(e){b==="type"&&ab.test(a.nodeName)&&a.parentNode&&c.error("type property can't be changed");
68
+ a[b]=d}if(c.nodeName(a,"form")&&a.getAttributeNode(b))return a.getAttributeNode(b).nodeValue;if(b==="tabIndex")return(b=a.getAttributeNode("tabIndex"))&&b.specified?b.value:bb.test(a.nodeName)||cb.test(a.nodeName)&&a.href?0:w;return a[b]}if(!c.support.style&&f&&b==="style"){if(e)a.style.cssText=""+d;return a.style.cssText}e&&a.setAttribute(b,""+d);a=!c.support.hrefNormalized&&f&&j?a.getAttribute(b,2):a.getAttribute(b);return a===null?w:a}return c.style(a,b,d)}});var O=/\.(.*)$/,db=function(a){return a.replace(/[^\w\s\.\|`]/g,
69
+ function(b){return"\\"+b})};c.event={add:function(a,b,d,f){if(!(a.nodeType===3||a.nodeType===8)){if(a.setInterval&&a!==A&&!a.frameElement)a=A;var e,j;if(d.handler){e=d;d=e.handler}if(!d.guid)d.guid=c.guid++;if(j=c.data(a)){var i=j.events=j.events||{},o=j.handle;if(!o)j.handle=o=function(){return typeof c!=="undefined"&&!c.event.triggered?c.event.handle.apply(o.elem,arguments):w};o.elem=a;b=b.split(" ");for(var k,n=0,r;k=b[n++];){j=e?c.extend({},e):{handler:d,data:f};if(k.indexOf(".")>-1){r=k.split(".");
70
+ k=r.shift();j.namespace=r.slice(0).sort().join(".")}else{r=[];j.namespace=""}j.type=k;j.guid=d.guid;var u=i[k],z=c.event.special[k]||{};if(!u){u=i[k]=[];if(!z.setup||z.setup.call(a,f,r,o)===false)if(a.addEventListener)a.addEventListener(k,o,false);else a.attachEvent&&a.attachEvent("on"+k,o)}if(z.add){z.add.call(a,j);if(!j.handler.guid)j.handler.guid=d.guid}u.push(j);c.event.global[k]=true}a=null}}},global:{},remove:function(a,b,d,f){if(!(a.nodeType===3||a.nodeType===8)){var e,j=0,i,o,k,n,r,u,z=c.data(a),
71
+ C=z&&z.events;if(z&&C){if(b&&b.type){d=b.handler;b=b.type}if(!b||typeof b==="string"&&b.charAt(0)==="."){b=b||"";for(e in C)c.event.remove(a,e+b)}else{for(b=b.split(" ");e=b[j++];){n=e;i=e.indexOf(".")<0;o=[];if(!i){o=e.split(".");e=o.shift();k=new RegExp("(^|\\.)"+c.map(o.slice(0).sort(),db).join("\\.(?:.*\\.)?")+"(\\.|$)")}if(r=C[e])if(d){n=c.event.special[e]||{};for(B=f||0;B<r.length;B++){u=r[B];if(d.guid===u.guid){if(i||k.test(u.namespace)){f==null&&r.splice(B--,1);n.remove&&n.remove.call(a,u)}if(f!=
72
+ null)break}}if(r.length===0||f!=null&&r.length===1){if(!n.teardown||n.teardown.call(a,o)===false)Ca(a,e,z.handle);delete C[e]}}else for(var B=0;B<r.length;B++){u=r[B];if(i||k.test(u.namespace)){c.event.remove(a,n,u.handler,B);r.splice(B--,1)}}}if(c.isEmptyObject(C)){if(b=z.handle)b.elem=null;delete z.events;delete z.handle;c.isEmptyObject(z)&&c.removeData(a)}}}}},trigger:function(a,b,d,f){var e=a.type||a;if(!f){a=typeof a==="object"?a[G]?a:c.extend(c.Event(e),a):c.Event(e);if(e.indexOf("!")>=0){a.type=
73
+ e=e.slice(0,-1);a.exclusive=true}if(!d){a.stopPropagation();c.event.global[e]&&c.each(c.cache,function(){this.events&&this.events[e]&&c.event.trigger(a,b,this.handle.elem)})}if(!d||d.nodeType===3||d.nodeType===8)return w;a.result=w;a.target=d;b=c.makeArray(b);b.unshift(a)}a.currentTarget=d;(f=c.data(d,"handle"))&&f.apply(d,b);f=d.parentNode||d.ownerDocument;try{if(!(d&&d.nodeName&&c.noData[d.nodeName.toLowerCase()]))if(d["on"+e]&&d["on"+e].apply(d,b)===false)a.result=false}catch(j){}if(!a.isPropagationStopped()&&
74
+ f)c.event.trigger(a,b,f,true);else if(!a.isDefaultPrevented()){f=a.target;var i,o=c.nodeName(f,"a")&&e==="click",k=c.event.special[e]||{};if((!k._default||k._default.call(d,a)===false)&&!o&&!(f&&f.nodeName&&c.noData[f.nodeName.toLowerCase()])){try{if(f[e]){if(i=f["on"+e])f["on"+e]=null;c.event.triggered=true;f[e]()}}catch(n){}if(i)f["on"+e]=i;c.event.triggered=false}}},handle:function(a){var b,d,f,e;a=arguments[0]=c.event.fix(a||A.event);a.currentTarget=this;b=a.type.indexOf(".")<0&&!a.exclusive;
75
+ if(!b){d=a.type.split(".");a.type=d.shift();f=new RegExp("(^|\\.)"+d.slice(0).sort().join("\\.(?:.*\\.)?")+"(\\.|$)")}e=c.data(this,"events");d=e[a.type];if(e&&d){d=d.slice(0);e=0;for(var j=d.length;e<j;e++){var i=d[e];if(b||f.test(i.namespace)){a.handler=i.handler;a.data=i.data;a.handleObj=i;i=i.handler.apply(this,arguments);if(i!==w){a.result=i;if(i===false){a.preventDefault();a.stopPropagation()}}if(a.isImmediatePropagationStopped())break}}}return a.result},props:"altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode layerX layerY metaKey newValue offsetX offsetY originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "),
76
+ fix:function(a){if(a[G])return a;var b=a;a=c.Event(b);for(var d=this.props.length,f;d;){f=this.props[--d];a[f]=b[f]}if(!a.target)a.target=a.srcElement||s;if(a.target.nodeType===3)a.target=a.target.parentNode;if(!a.relatedTarget&&a.fromElement)a.relatedTarget=a.fromElement===a.target?a.toElement:a.fromElement;if(a.pageX==null&&a.clientX!=null){b=s.documentElement;d=s.body;a.pageX=a.clientX+(b&&b.scrollLeft||d&&d.scrollLeft||0)-(b&&b.clientLeft||d&&d.clientLeft||0);a.pageY=a.clientY+(b&&b.scrollTop||
77
+ d&&d.scrollTop||0)-(b&&b.clientTop||d&&d.clientTop||0)}if(!a.which&&(a.charCode||a.charCode===0?a.charCode:a.keyCode))a.which=a.charCode||a.keyCode;if(!a.metaKey&&a.ctrlKey)a.metaKey=a.ctrlKey;if(!a.which&&a.button!==w)a.which=a.button&1?1:a.button&2?3:a.button&4?2:0;return a},guid:1E8,proxy:c.proxy,special:{ready:{setup:c.bindReady,teardown:c.noop},live:{add:function(a){c.event.add(this,a.origType,c.extend({},a,{handler:oa}))},remove:function(a){var b=true,d=a.origType.replace(O,"");c.each(c.data(this,
78
+ "events").live||[],function(){if(d===this.origType.replace(O,""))return b=false});b&&c.event.remove(this,a.origType,oa)}},beforeunload:{setup:function(a,b,d){if(this.setInterval)this.onbeforeunload=d;return false},teardown:function(a,b){if(this.onbeforeunload===b)this.onbeforeunload=null}}}};var Ca=s.removeEventListener?function(a,b,d){a.removeEventListener(b,d,false)}:function(a,b,d){a.detachEvent("on"+b,d)};c.Event=function(a){if(!this.preventDefault)return new c.Event(a);if(a&&a.type){this.originalEvent=
79
+ a;this.type=a.type}else this.type=a;this.timeStamp=J();this[G]=true};c.Event.prototype={preventDefault:function(){this.isDefaultPrevented=Z;var a=this.originalEvent;if(a){a.preventDefault&&a.preventDefault();a.returnValue=false}},stopPropagation:function(){this.isPropagationStopped=Z;var a=this.originalEvent;if(a){a.stopPropagation&&a.stopPropagation();a.cancelBubble=true}},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=Z;this.stopPropagation()},isDefaultPrevented:Y,isPropagationStopped:Y,
80
+ isImmediatePropagationStopped:Y};var Da=function(a){var b=a.relatedTarget;try{for(;b&&b!==this;)b=b.parentNode;if(b!==this){a.type=a.data;c.event.handle.apply(this,arguments)}}catch(d){}},Ea=function(a){a.type=a.data;c.event.handle.apply(this,arguments)};c.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(a,b){c.event.special[a]={setup:function(d){c.event.add(this,b,d&&d.selector?Ea:Da,a)},teardown:function(d){c.event.remove(this,b,d&&d.selector?Ea:Da)}}});if(!c.support.submitBubbles)c.event.special.submit=
81
+ {setup:function(){if(this.nodeName.toLowerCase()!=="form"){c.event.add(this,"click.specialSubmit",function(a){var b=a.target,d=b.type;if((d==="submit"||d==="image")&&c(b).closest("form").length)return na("submit",this,arguments)});c.event.add(this,"keypress.specialSubmit",function(a){var b=a.target,d=b.type;if((d==="text"||d==="password")&&c(b).closest("form").length&&a.keyCode===13)return na("submit",this,arguments)})}else return false},teardown:function(){c.event.remove(this,".specialSubmit")}};
82
+ if(!c.support.changeBubbles){var da=/textarea|input|select/i,ea,Fa=function(a){var b=a.type,d=a.value;if(b==="radio"||b==="checkbox")d=a.checked;else if(b==="select-multiple")d=a.selectedIndex>-1?c.map(a.options,function(f){return f.selected}).join("-"):"";else if(a.nodeName.toLowerCase()==="select")d=a.selectedIndex;return d},fa=function(a,b){var d=a.target,f,e;if(!(!da.test(d.nodeName)||d.readOnly)){f=c.data(d,"_change_data");e=Fa(d);if(a.type!=="focusout"||d.type!=="radio")c.data(d,"_change_data",
83
+ e);if(!(f===w||e===f))if(f!=null||e){a.type="change";return c.event.trigger(a,b,d)}}};c.event.special.change={filters:{focusout:fa,click:function(a){var b=a.target,d=b.type;if(d==="radio"||d==="checkbox"||b.nodeName.toLowerCase()==="select")return fa.call(this,a)},keydown:function(a){var b=a.target,d=b.type;if(a.keyCode===13&&b.nodeName.toLowerCase()!=="textarea"||a.keyCode===32&&(d==="checkbox"||d==="radio")||d==="select-multiple")return fa.call(this,a)},beforeactivate:function(a){a=a.target;c.data(a,
84
+ "_change_data",Fa(a))}},setup:function(){if(this.type==="file")return false;for(var a in ea)c.event.add(this,a+".specialChange",ea[a]);return da.test(this.nodeName)},teardown:function(){c.event.remove(this,".specialChange");return da.test(this.nodeName)}};ea=c.event.special.change.filters}s.addEventListener&&c.each({focus:"focusin",blur:"focusout"},function(a,b){function d(f){f=c.event.fix(f);f.type=b;return c.event.handle.call(this,f)}c.event.special[b]={setup:function(){this.addEventListener(a,
85
+ d,true)},teardown:function(){this.removeEventListener(a,d,true)}}});c.each(["bind","one"],function(a,b){c.fn[b]=function(d,f,e){if(typeof d==="object"){for(var j in d)this[b](j,f,d[j],e);return this}if(c.isFunction(f)){e=f;f=w}var i=b==="one"?c.proxy(e,function(k){c(this).unbind(k,i);return e.apply(this,arguments)}):e;if(d==="unload"&&b!=="one")this.one(d,f,e);else{j=0;for(var o=this.length;j<o;j++)c.event.add(this[j],d,i,f)}return this}});c.fn.extend({unbind:function(a,b){if(typeof a==="object"&&
86
+ !a.preventDefault)for(var d in a)this.unbind(d,a[d]);else{d=0;for(var f=this.length;d<f;d++)c.event.remove(this[d],a,b)}return this},delegate:function(a,b,d,f){return this.live(b,d,f,a)},undelegate:function(a,b,d){return arguments.length===0?this.unbind("live"):this.die(b,null,d,a)},trigger:function(a,b){return this.each(function(){c.event.trigger(a,b,this)})},triggerHandler:function(a,b){if(this[0]){a=c.Event(a);a.preventDefault();a.stopPropagation();c.event.trigger(a,b,this[0]);return a.result}},
87
+ toggle:function(a){for(var b=arguments,d=1;d<b.length;)c.proxy(a,b[d++]);return this.click(c.proxy(a,function(f){var e=(c.data(this,"lastToggle"+a.guid)||0)%d;c.data(this,"lastToggle"+a.guid,e+1);f.preventDefault();return b[e].apply(this,arguments)||false}))},hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}});var Ga={focus:"focusin",blur:"focusout",mouseenter:"mouseover",mouseleave:"mouseout"};c.each(["live","die"],function(a,b){c.fn[b]=function(d,f,e,j){var i,o=0,k,n,r=j||this.selector,
88
+ u=j?this:c(this.context);if(c.isFunction(f)){e=f;f=w}for(d=(d||"").split(" ");(i=d[o++])!=null;){j=O.exec(i);k="";if(j){k=j[0];i=i.replace(O,"")}if(i==="hover")d.push("mouseenter"+k,"mouseleave"+k);else{n=i;if(i==="focus"||i==="blur"){d.push(Ga[i]+k);i+=k}else i=(Ga[i]||i)+k;b==="live"?u.each(function(){c.event.add(this,pa(i,r),{data:f,selector:r,handler:e,origType:i,origHandler:e,preType:n})}):u.unbind(pa(i,r),e)}}return this}});c.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error".split(" "),
89
+ function(a,b){c.fn[b]=function(d){return d?this.bind(b,d):this.trigger(b)};if(c.attrFn)c.attrFn[b]=true});A.attachEvent&&!A.addEventListener&&A.attachEvent("onunload",function(){for(var a in c.cache)if(c.cache[a].handle)try{c.event.remove(c.cache[a].handle.elem)}catch(b){}});(function(){function a(g){for(var h="",l,m=0;g[m];m++){l=g[m];if(l.nodeType===3||l.nodeType===4)h+=l.nodeValue;else if(l.nodeType!==8)h+=a(l.childNodes)}return h}function b(g,h,l,m,q,p){q=0;for(var v=m.length;q<v;q++){var t=m[q];
90
+ if(t){t=t[g];for(var y=false;t;){if(t.sizcache===l){y=m[t.sizset];break}if(t.nodeType===1&&!p){t.sizcache=l;t.sizset=q}if(t.nodeName.toLowerCase()===h){y=t;break}t=t[g]}m[q]=y}}}function d(g,h,l,m,q,p){q=0;for(var v=m.length;q<v;q++){var t=m[q];if(t){t=t[g];for(var y=false;t;){if(t.sizcache===l){y=m[t.sizset];break}if(t.nodeType===1){if(!p){t.sizcache=l;t.sizset=q}if(typeof h!=="string"){if(t===h){y=true;break}}else if(k.filter(h,[t]).length>0){y=t;break}}t=t[g]}m[q]=y}}}var f=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,
91
+ e=0,j=Object.prototype.toString,i=false,o=true;[0,0].sort(function(){o=false;return 0});var k=function(g,h,l,m){l=l||[];var q=h=h||s;if(h.nodeType!==1&&h.nodeType!==9)return[];if(!g||typeof g!=="string")return l;for(var p=[],v,t,y,S,H=true,M=x(h),I=g;(f.exec(""),v=f.exec(I))!==null;){I=v[3];p.push(v[1]);if(v[2]){S=v[3];break}}if(p.length>1&&r.exec(g))if(p.length===2&&n.relative[p[0]])t=ga(p[0]+p[1],h);else for(t=n.relative[p[0]]?[h]:k(p.shift(),h);p.length;){g=p.shift();if(n.relative[g])g+=p.shift();
92
+ t=ga(g,t)}else{if(!m&&p.length>1&&h.nodeType===9&&!M&&n.match.ID.test(p[0])&&!n.match.ID.test(p[p.length-1])){v=k.find(p.shift(),h,M);h=v.expr?k.filter(v.expr,v.set)[0]:v.set[0]}if(h){v=m?{expr:p.pop(),set:z(m)}:k.find(p.pop(),p.length===1&&(p[0]==="~"||p[0]==="+")&&h.parentNode?h.parentNode:h,M);t=v.expr?k.filter(v.expr,v.set):v.set;if(p.length>0)y=z(t);else H=false;for(;p.length;){var D=p.pop();v=D;if(n.relative[D])v=p.pop();else D="";if(v==null)v=h;n.relative[D](y,v,M)}}else y=[]}y||(y=t);y||k.error(D||
93
+ g);if(j.call(y)==="[object Array]")if(H)if(h&&h.nodeType===1)for(g=0;y[g]!=null;g++){if(y[g]&&(y[g]===true||y[g].nodeType===1&&E(h,y[g])))l.push(t[g])}else for(g=0;y[g]!=null;g++)y[g]&&y[g].nodeType===1&&l.push(t[g]);else l.push.apply(l,y);else z(y,l);if(S){k(S,q,l,m);k.uniqueSort(l)}return l};k.uniqueSort=function(g){if(B){i=o;g.sort(B);if(i)for(var h=1;h<g.length;h++)g[h]===g[h-1]&&g.splice(h--,1)}return g};k.matches=function(g,h){return k(g,null,null,h)};k.find=function(g,h,l){var m,q;if(!g)return[];
94
+ for(var p=0,v=n.order.length;p<v;p++){var t=n.order[p];if(q=n.leftMatch[t].exec(g)){var y=q[1];q.splice(1,1);if(y.substr(y.length-1)!=="\\"){q[1]=(q[1]||"").replace(/\\/g,"");m=n.find[t](q,h,l);if(m!=null){g=g.replace(n.match[t],"");break}}}}m||(m=h.getElementsByTagName("*"));return{set:m,expr:g}};k.filter=function(g,h,l,m){for(var q=g,p=[],v=h,t,y,S=h&&h[0]&&x(h[0]);g&&h.length;){for(var H in n.filter)if((t=n.leftMatch[H].exec(g))!=null&&t[2]){var M=n.filter[H],I,D;D=t[1];y=false;t.splice(1,1);if(D.substr(D.length-
95
+ 1)!=="\\"){if(v===p)p=[];if(n.preFilter[H])if(t=n.preFilter[H](t,v,l,p,m,S)){if(t===true)continue}else y=I=true;if(t)for(var U=0;(D=v[U])!=null;U++)if(D){I=M(D,t,U,v);var Ha=m^!!I;if(l&&I!=null)if(Ha)y=true;else v[U]=false;else if(Ha){p.push(D);y=true}}if(I!==w){l||(v=p);g=g.replace(n.match[H],"");if(!y)return[];break}}}if(g===q)if(y==null)k.error(g);else break;q=g}return v};k.error=function(g){throw"Syntax error, unrecognized expression: "+g;};var n=k.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF-]|\\.)+)/,
96
+ CLASS:/\.((?:[\w\u00c0-\uFFFF-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF-]|\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)\3|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\((even|odd|[\dn+-]*)\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/},leftMatch:{},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(g){return g.getAttribute("href")}},
97
+ relative:{"+":function(g,h){var l=typeof h==="string",m=l&&!/\W/.test(h);l=l&&!m;if(m)h=h.toLowerCase();m=0;for(var q=g.length,p;m<q;m++)if(p=g[m]){for(;(p=p.previousSibling)&&p.nodeType!==1;);g[m]=l||p&&p.nodeName.toLowerCase()===h?p||false:p===h}l&&k.filter(h,g,true)},">":function(g,h){var l=typeof h==="string";if(l&&!/\W/.test(h)){h=h.toLowerCase();for(var m=0,q=g.length;m<q;m++){var p=g[m];if(p){l=p.parentNode;g[m]=l.nodeName.toLowerCase()===h?l:false}}}else{m=0;for(q=g.length;m<q;m++)if(p=g[m])g[m]=
98
+ l?p.parentNode:p.parentNode===h;l&&k.filter(h,g,true)}},"":function(g,h,l){var m=e++,q=d;if(typeof h==="string"&&!/\W/.test(h)){var p=h=h.toLowerCase();q=b}q("parentNode",h,m,g,p,l)},"~":function(g,h,l){var m=e++,q=d;if(typeof h==="string"&&!/\W/.test(h)){var p=h=h.toLowerCase();q=b}q("previousSibling",h,m,g,p,l)}},find:{ID:function(g,h,l){if(typeof h.getElementById!=="undefined"&&!l)return(g=h.getElementById(g[1]))?[g]:[]},NAME:function(g,h){if(typeof h.getElementsByName!=="undefined"){var l=[];
99
+ h=h.getElementsByName(g[1]);for(var m=0,q=h.length;m<q;m++)h[m].getAttribute("name")===g[1]&&l.push(h[m]);return l.length===0?null:l}},TAG:function(g,h){return h.getElementsByTagName(g[1])}},preFilter:{CLASS:function(g,h,l,m,q,p){g=" "+g[1].replace(/\\/g,"")+" ";if(p)return g;p=0;for(var v;(v=h[p])!=null;p++)if(v)if(q^(v.className&&(" "+v.className+" ").replace(/[\t\n]/g," ").indexOf(g)>=0))l||m.push(v);else if(l)h[p]=false;return false},ID:function(g){return g[1].replace(/\\/g,"")},TAG:function(g){return g[1].toLowerCase()},
100
+ CHILD:function(g){if(g[1]==="nth"){var h=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(g[2]==="even"&&"2n"||g[2]==="odd"&&"2n+1"||!/\D/.test(g[2])&&"0n+"+g[2]||g[2]);g[2]=h[1]+(h[2]||1)-0;g[3]=h[3]-0}g[0]=e++;return g},ATTR:function(g,h,l,m,q,p){h=g[1].replace(/\\/g,"");if(!p&&n.attrMap[h])g[1]=n.attrMap[h];if(g[2]==="~=")g[4]=" "+g[4]+" ";return g},PSEUDO:function(g,h,l,m,q){if(g[1]==="not")if((f.exec(g[3])||"").length>1||/^\w/.test(g[3]))g[3]=k(g[3],null,null,h);else{g=k.filter(g[3],h,l,true^q);l||m.push.apply(m,
101
+ g);return false}else if(n.match.POS.test(g[0])||n.match.CHILD.test(g[0]))return true;return g},POS:function(g){g.unshift(true);return g}},filters:{enabled:function(g){return g.disabled===false&&g.type!=="hidden"},disabled:function(g){return g.disabled===true},checked:function(g){return g.checked===true},selected:function(g){return g.selected===true},parent:function(g){return!!g.firstChild},empty:function(g){return!g.firstChild},has:function(g,h,l){return!!k(l[3],g).length},header:function(g){return/h\d/i.test(g.nodeName)},
102
+ text:function(g){return"text"===g.type},radio:function(g){return"radio"===g.type},checkbox:function(g){return"checkbox"===g.type},file:function(g){return"file"===g.type},password:function(g){return"password"===g.type},submit:function(g){return"submit"===g.type},image:function(g){return"image"===g.type},reset:function(g){return"reset"===g.type},button:function(g){return"button"===g.type||g.nodeName.toLowerCase()==="button"},input:function(g){return/input|select|textarea|button/i.test(g.nodeName)}},
103
+ setFilters:{first:function(g,h){return h===0},last:function(g,h,l,m){return h===m.length-1},even:function(g,h){return h%2===0},odd:function(g,h){return h%2===1},lt:function(g,h,l){return h<l[3]-0},gt:function(g,h,l){return h>l[3]-0},nth:function(g,h,l){return l[3]-0===h},eq:function(g,h,l){return l[3]-0===h}},filter:{PSEUDO:function(g,h,l,m){var q=h[1],p=n.filters[q];if(p)return p(g,l,h,m);else if(q==="contains")return(g.textContent||g.innerText||a([g])||"").indexOf(h[3])>=0;else if(q==="not"){h=
104
+ h[3];l=0;for(m=h.length;l<m;l++)if(h[l]===g)return false;return true}else k.error("Syntax error, unrecognized expression: "+q)},CHILD:function(g,h){var l=h[1],m=g;switch(l){case "only":case "first":for(;m=m.previousSibling;)if(m.nodeType===1)return false;if(l==="first")return true;m=g;case "last":for(;m=m.nextSibling;)if(m.nodeType===1)return false;return true;case "nth":l=h[2];var q=h[3];if(l===1&&q===0)return true;h=h[0];var p=g.parentNode;if(p&&(p.sizcache!==h||!g.nodeIndex)){var v=0;for(m=p.firstChild;m;m=
105
+ m.nextSibling)if(m.nodeType===1)m.nodeIndex=++v;p.sizcache=h}g=g.nodeIndex-q;return l===0?g===0:g%l===0&&g/l>=0}},ID:function(g,h){return g.nodeType===1&&g.getAttribute("id")===h},TAG:function(g,h){return h==="*"&&g.nodeType===1||g.nodeName.toLowerCase()===h},CLASS:function(g,h){return(" "+(g.className||g.getAttribute("class"))+" ").indexOf(h)>-1},ATTR:function(g,h){var l=h[1];g=n.attrHandle[l]?n.attrHandle[l](g):g[l]!=null?g[l]:g.getAttribute(l);l=g+"";var m=h[2];h=h[4];return g==null?m==="!=":m===
106
+ "="?l===h:m==="*="?l.indexOf(h)>=0:m==="~="?(" "+l+" ").indexOf(h)>=0:!h?l&&g!==false:m==="!="?l!==h:m==="^="?l.indexOf(h)===0:m==="$="?l.substr(l.length-h.length)===h:m==="|="?l===h||l.substr(0,h.length+1)===h+"-":false},POS:function(g,h,l,m){var q=n.setFilters[h[2]];if(q)return q(g,l,h,m)}}},r=n.match.POS;for(var u in n.match){n.match[u]=new RegExp(n.match[u].source+/(?![^\[]*\])(?![^\(]*\))/.source);n.leftMatch[u]=new RegExp(/(^(?:.|\r|\n)*?)/.source+n.match[u].source.replace(/\\(\d+)/g,function(g,
107
+ h){return"\\"+(h-0+1)}))}var z=function(g,h){g=Array.prototype.slice.call(g,0);if(h){h.push.apply(h,g);return h}return g};try{Array.prototype.slice.call(s.documentElement.childNodes,0)}catch(C){z=function(g,h){h=h||[];if(j.call(g)==="[object Array]")Array.prototype.push.apply(h,g);else if(typeof g.length==="number")for(var l=0,m=g.length;l<m;l++)h.push(g[l]);else for(l=0;g[l];l++)h.push(g[l]);return h}}var B;if(s.documentElement.compareDocumentPosition)B=function(g,h){if(!g.compareDocumentPosition||
108
+ !h.compareDocumentPosition){if(g==h)i=true;return g.compareDocumentPosition?-1:1}g=g.compareDocumentPosition(h)&4?-1:g===h?0:1;if(g===0)i=true;return g};else if("sourceIndex"in s.documentElement)B=function(g,h){if(!g.sourceIndex||!h.sourceIndex){if(g==h)i=true;return g.sourceIndex?-1:1}g=g.sourceIndex-h.sourceIndex;if(g===0)i=true;return g};else if(s.createRange)B=function(g,h){if(!g.ownerDocument||!h.ownerDocument){if(g==h)i=true;return g.ownerDocument?-1:1}var l=g.ownerDocument.createRange(),m=
109
+ h.ownerDocument.createRange();l.setStart(g,0);l.setEnd(g,0);m.setStart(h,0);m.setEnd(h,0);g=l.compareBoundaryPoints(Range.START_TO_END,m);if(g===0)i=true;return g};(function(){var g=s.createElement("div"),h="script"+(new Date).getTime();g.innerHTML="<a name='"+h+"'/>";var l=s.documentElement;l.insertBefore(g,l.firstChild);if(s.getElementById(h)){n.find.ID=function(m,q,p){if(typeof q.getElementById!=="undefined"&&!p)return(q=q.getElementById(m[1]))?q.id===m[1]||typeof q.getAttributeNode!=="undefined"&&
110
+ q.getAttributeNode("id").nodeValue===m[1]?[q]:w:[]};n.filter.ID=function(m,q){var p=typeof m.getAttributeNode!=="undefined"&&m.getAttributeNode("id");return m.nodeType===1&&p&&p.nodeValue===q}}l.removeChild(g);l=g=null})();(function(){var g=s.createElement("div");g.appendChild(s.createComment(""));if(g.getElementsByTagName("*").length>0)n.find.TAG=function(h,l){l=l.getElementsByTagName(h[1]);if(h[1]==="*"){h=[];for(var m=0;l[m];m++)l[m].nodeType===1&&h.push(l[m]);l=h}return l};g.innerHTML="<a href='#'></a>";
111
+ if(g.firstChild&&typeof g.firstChild.getAttribute!=="undefined"&&g.firstChild.getAttribute("href")!=="#")n.attrHandle.href=function(h){return h.getAttribute("href",2)};g=null})();s.querySelectorAll&&function(){var g=k,h=s.createElement("div");h.innerHTML="<p class='TEST'></p>";if(!(h.querySelectorAll&&h.querySelectorAll(".TEST").length===0)){k=function(m,q,p,v){q=q||s;if(!v&&q.nodeType===9&&!x(q))try{return z(q.querySelectorAll(m),p)}catch(t){}return g(m,q,p,v)};for(var l in g)k[l]=g[l];h=null}}();
112
+ (function(){var g=s.createElement("div");g.innerHTML="<div class='test e'></div><div class='test'></div>";if(!(!g.getElementsByClassName||g.getElementsByClassName("e").length===0)){g.lastChild.className="e";if(g.getElementsByClassName("e").length!==1){n.order.splice(1,0,"CLASS");n.find.CLASS=function(h,l,m){if(typeof l.getElementsByClassName!=="undefined"&&!m)return l.getElementsByClassName(h[1])};g=null}}})();var E=s.compareDocumentPosition?function(g,h){return!!(g.compareDocumentPosition(h)&16)}:
113
+ function(g,h){return g!==h&&(g.contains?g.contains(h):true)},x=function(g){return(g=(g?g.ownerDocument||g:0).documentElement)?g.nodeName!=="HTML":false},ga=function(g,h){var l=[],m="",q;for(h=h.nodeType?[h]:h;q=n.match.PSEUDO.exec(g);){m+=q[0];g=g.replace(n.match.PSEUDO,"")}g=n.relative[g]?g+"*":g;q=0;for(var p=h.length;q<p;q++)k(g,h[q],l);return k.filter(m,l)};c.find=k;c.expr=k.selectors;c.expr[":"]=c.expr.filters;c.unique=k.uniqueSort;c.text=a;c.isXMLDoc=x;c.contains=E})();var eb=/Until$/,fb=/^(?:parents|prevUntil|prevAll)/,
114
+ gb=/,/;R=Array.prototype.slice;var Ia=function(a,b,d){if(c.isFunction(b))return c.grep(a,function(e,j){return!!b.call(e,j,e)===d});else if(b.nodeType)return c.grep(a,function(e){return e===b===d});else if(typeof b==="string"){var f=c.grep(a,function(e){return e.nodeType===1});if(Ua.test(b))return c.filter(b,f,!d);else b=c.filter(b,f)}return c.grep(a,function(e){return c.inArray(e,b)>=0===d})};c.fn.extend({find:function(a){for(var b=this.pushStack("","find",a),d=0,f=0,e=this.length;f<e;f++){d=b.length;
115
+ c.find(a,this[f],b);if(f>0)for(var j=d;j<b.length;j++)for(var i=0;i<d;i++)if(b[i]===b[j]){b.splice(j--,1);break}}return b},has:function(a){var b=c(a);return this.filter(function(){for(var d=0,f=b.length;d<f;d++)if(c.contains(this,b[d]))return true})},not:function(a){return this.pushStack(Ia(this,a,false),"not",a)},filter:function(a){return this.pushStack(Ia(this,a,true),"filter",a)},is:function(a){return!!a&&c.filter(a,this).length>0},closest:function(a,b){if(c.isArray(a)){var d=[],f=this[0],e,j=
116
+ {},i;if(f&&a.length){e=0;for(var o=a.length;e<o;e++){i=a[e];j[i]||(j[i]=c.expr.match.POS.test(i)?c(i,b||this.context):i)}for(;f&&f.ownerDocument&&f!==b;){for(i in j){e=j[i];if(e.jquery?e.index(f)>-1:c(f).is(e)){d.push({selector:i,elem:f});delete j[i]}}f=f.parentNode}}return d}var k=c.expr.match.POS.test(a)?c(a,b||this.context):null;return this.map(function(n,r){for(;r&&r.ownerDocument&&r!==b;){if(k?k.index(r)>-1:c(r).is(a))return r;r=r.parentNode}return null})},index:function(a){if(!a||typeof a===
117
+ "string")return c.inArray(this[0],a?c(a):this.parent().children());return c.inArray(a.jquery?a[0]:a,this)},add:function(a,b){a=typeof a==="string"?c(a,b||this.context):c.makeArray(a);b=c.merge(this.get(),a);return this.pushStack(qa(a[0])||qa(b[0])?b:c.unique(b))},andSelf:function(){return this.add(this.prevObject)}});c.each({parent:function(a){return(a=a.parentNode)&&a.nodeType!==11?a:null},parents:function(a){return c.dir(a,"parentNode")},parentsUntil:function(a,b,d){return c.dir(a,"parentNode",
118
+ d)},next:function(a){return c.nth(a,2,"nextSibling")},prev:function(a){return c.nth(a,2,"previousSibling")},nextAll:function(a){return c.dir(a,"nextSibling")},prevAll:function(a){return c.dir(a,"previousSibling")},nextUntil:function(a,b,d){return c.dir(a,"nextSibling",d)},prevUntil:function(a,b,d){return c.dir(a,"previousSibling",d)},siblings:function(a){return c.sibling(a.parentNode.firstChild,a)},children:function(a){return c.sibling(a.firstChild)},contents:function(a){return c.nodeName(a,"iframe")?
119
+ a.contentDocument||a.contentWindow.document:c.makeArray(a.childNodes)}},function(a,b){c.fn[a]=function(d,f){var e=c.map(this,b,d);eb.test(a)||(f=d);if(f&&typeof f==="string")e=c.filter(f,e);e=this.length>1?c.unique(e):e;if((this.length>1||gb.test(f))&&fb.test(a))e=e.reverse();return this.pushStack(e,a,R.call(arguments).join(","))}});c.extend({filter:function(a,b,d){if(d)a=":not("+a+")";return c.find.matches(a,b)},dir:function(a,b,d){var f=[];for(a=a[b];a&&a.nodeType!==9&&(d===w||a.nodeType!==1||!c(a).is(d));){a.nodeType===
120
+ 1&&f.push(a);a=a[b]}return f},nth:function(a,b,d){b=b||1;for(var f=0;a;a=a[d])if(a.nodeType===1&&++f===b)break;return a},sibling:function(a,b){for(var d=[];a;a=a.nextSibling)a.nodeType===1&&a!==b&&d.push(a);return d}});var Ja=/ jQuery\d+="(?:\d+|null)"/g,V=/^\s+/,Ka=/(<([\w:]+)[^>]*?)\/>/g,hb=/^(?:area|br|col|embed|hr|img|input|link|meta|param)$/i,La=/<([\w:]+)/,ib=/<tbody/i,jb=/<|&#?\w+;/,ta=/<script|<object|<embed|<option|<style/i,ua=/checked\s*(?:[^=]|=\s*.checked.)/i,Ma=function(a,b,d){return hb.test(d)?
121
+ a:b+"></"+d+">"},F={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],area:[1,"<map>","</map>"],_default:[0,"",""]};F.optgroup=F.option;F.tbody=F.tfoot=F.colgroup=F.caption=F.thead;F.th=F.td;if(!c.support.htmlSerialize)F._default=[1,"div<div>","</div>"];c.fn.extend({text:function(a){if(c.isFunction(a))return this.each(function(b){var d=
122
+ c(this);d.text(a.call(this,b,d.text()))});if(typeof a!=="object"&&a!==w)return this.empty().append((this[0]&&this[0].ownerDocument||s).createTextNode(a));return c.text(this)},wrapAll:function(a){if(c.isFunction(a))return this.each(function(d){c(this).wrapAll(a.call(this,d))});if(this[0]){var b=c(a,this[0].ownerDocument).eq(0).clone(true);this[0].parentNode&&b.insertBefore(this[0]);b.map(function(){for(var d=this;d.firstChild&&d.firstChild.nodeType===1;)d=d.firstChild;return d}).append(this)}return this},
123
+ wrapInner:function(a){if(c.isFunction(a))return this.each(function(b){c(this).wrapInner(a.call(this,b))});return this.each(function(){var b=c(this),d=b.contents();d.length?d.wrapAll(a):b.append(a)})},wrap:function(a){return this.each(function(){c(this).wrapAll(a)})},unwrap:function(){return this.parent().each(function(){c.nodeName(this,"body")||c(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.appendChild(a)})},
124
+ prepend:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,false,function(b){this.parentNode.insertBefore(b,this)});else if(arguments.length){var a=c(arguments[0]);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,false,function(b){this.parentNode.insertBefore(b,
125
+ this.nextSibling)});else if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,c(arguments[0]).toArray());return a}},remove:function(a,b){for(var d=0,f;(f=this[d])!=null;d++)if(!a||c.filter(a,[f]).length){if(!b&&f.nodeType===1){c.cleanData(f.getElementsByTagName("*"));c.cleanData([f])}f.parentNode&&f.parentNode.removeChild(f)}return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++)for(b.nodeType===1&&c.cleanData(b.getElementsByTagName("*"));b.firstChild;)b.removeChild(b.firstChild);
126
+ return this},clone:function(a){var b=this.map(function(){if(!c.support.noCloneEvent&&!c.isXMLDoc(this)){var d=this.outerHTML,f=this.ownerDocument;if(!d){d=f.createElement("div");d.appendChild(this.cloneNode(true));d=d.innerHTML}return c.clean([d.replace(Ja,"").replace(/=([^="'>\s]+\/)>/g,'="$1">').replace(V,"")],f)[0]}else return this.cloneNode(true)});if(a===true){ra(this,b);ra(this.find("*"),b.find("*"))}return b},html:function(a){if(a===w)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(Ja,
127
+ ""):null;else if(typeof a==="string"&&!ta.test(a)&&(c.support.leadingWhitespace||!V.test(a))&&!F[(La.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Ka,Ma);try{for(var b=0,d=this.length;b<d;b++)if(this[b].nodeType===1){c.cleanData(this[b].getElementsByTagName("*"));this[b].innerHTML=a}}catch(f){this.empty().append(a)}}else c.isFunction(a)?this.each(function(e){var j=c(this),i=j.html();j.empty().append(function(){return a.call(this,e,i)})}):this.empty().append(a);return this},replaceWith:function(a){if(this[0]&&
128
+ this[0].parentNode){if(c.isFunction(a))return this.each(function(b){var d=c(this),f=d.html();d.replaceWith(a.call(this,b,f))});if(typeof a!=="string")a=c(a).detach();return this.each(function(){var b=this.nextSibling,d=this.parentNode;c(this).remove();b?c(b).before(a):c(d).append(a)})}else return this.pushStack(c(c.isFunction(a)?a():a),"replaceWith",a)},detach:function(a){return this.remove(a,true)},domManip:function(a,b,d){function f(u){return c.nodeName(u,"table")?u.getElementsByTagName("tbody")[0]||
129
+ u.appendChild(u.ownerDocument.createElement("tbody")):u}var e,j,i=a[0],o=[],k;if(!c.support.checkClone&&arguments.length===3&&typeof i==="string"&&ua.test(i))return this.each(function(){c(this).domManip(a,b,d,true)});if(c.isFunction(i))return this.each(function(u){var z=c(this);a[0]=i.call(this,u,b?z.html():w);z.domManip(a,b,d)});if(this[0]){e=i&&i.parentNode;e=c.support.parentNode&&e&&e.nodeType===11&&e.childNodes.length===this.length?{fragment:e}:sa(a,this,o);k=e.fragment;if(j=k.childNodes.length===
130
+ 1?(k=k.firstChild):k.firstChild){b=b&&c.nodeName(j,"tr");for(var n=0,r=this.length;n<r;n++)d.call(b?f(this[n],j):this[n],n>0||e.cacheable||this.length>1?k.cloneNode(true):k)}o.length&&c.each(o,Qa)}return this}});c.fragments={};c.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){c.fn[a]=function(d){var f=[];d=c(d);var e=this.length===1&&this[0].parentNode;if(e&&e.nodeType===11&&e.childNodes.length===1&&d.length===1){d[b](this[0]);
131
+ return this}else{e=0;for(var j=d.length;e<j;e++){var i=(e>0?this.clone(true):this).get();c.fn[b].apply(c(d[e]),i);f=f.concat(i)}return this.pushStack(f,a,d.selector)}}});c.extend({clean:function(a,b,d,f){b=b||s;if(typeof b.createElement==="undefined")b=b.ownerDocument||b[0]&&b[0].ownerDocument||s;for(var e=[],j=0,i;(i=a[j])!=null;j++){if(typeof i==="number")i+="";if(i){if(typeof i==="string"&&!jb.test(i))i=b.createTextNode(i);else if(typeof i==="string"){i=i.replace(Ka,Ma);var o=(La.exec(i)||["",
132
+ ""])[1].toLowerCase(),k=F[o]||F._default,n=k[0],r=b.createElement("div");for(r.innerHTML=k[1]+i+k[2];n--;)r=r.lastChild;if(!c.support.tbody){n=ib.test(i);o=o==="table"&&!n?r.firstChild&&r.firstChild.childNodes:k[1]==="<table>"&&!n?r.childNodes:[];for(k=o.length-1;k>=0;--k)c.nodeName(o[k],"tbody")&&!o[k].childNodes.length&&o[k].parentNode.removeChild(o[k])}!c.support.leadingWhitespace&&V.test(i)&&r.insertBefore(b.createTextNode(V.exec(i)[0]),r.firstChild);i=r.childNodes}if(i.nodeType)e.push(i);else e=
133
+ c.merge(e,i)}}if(d)for(j=0;e[j];j++)if(f&&c.nodeName(e[j],"script")&&(!e[j].type||e[j].type.toLowerCase()==="text/javascript"))f.push(e[j].parentNode?e[j].parentNode.removeChild(e[j]):e[j]);else{e[j].nodeType===1&&e.splice.apply(e,[j+1,0].concat(c.makeArray(e[j].getElementsByTagName("script"))));d.appendChild(e[j])}return e},cleanData:function(a){for(var b,d,f=c.cache,e=c.event.special,j=c.support.deleteExpando,i=0,o;(o=a[i])!=null;i++)if(d=o[c.expando]){b=f[d];if(b.events)for(var k in b.events)e[k]?
134
+ c.event.remove(o,k):Ca(o,k,b.handle);if(j)delete o[c.expando];else o.removeAttribute&&o.removeAttribute(c.expando);delete f[d]}}});var kb=/z-?index|font-?weight|opacity|zoom|line-?height/i,Na=/alpha\([^)]*\)/,Oa=/opacity=([^)]*)/,ha=/float/i,ia=/-([a-z])/ig,lb=/([A-Z])/g,mb=/^-?\d+(?:px)?$/i,nb=/^-?\d/,ob={position:"absolute",visibility:"hidden",display:"block"},pb=["Left","Right"],qb=["Top","Bottom"],rb=s.defaultView&&s.defaultView.getComputedStyle,Pa=c.support.cssFloat?"cssFloat":"styleFloat",ja=
135
+ function(a,b){return b.toUpperCase()};c.fn.css=function(a,b){return X(this,a,b,true,function(d,f,e){if(e===w)return c.curCSS(d,f);if(typeof e==="number"&&!kb.test(f))e+="px";c.style(d,f,e)})};c.extend({style:function(a,b,d){if(!a||a.nodeType===3||a.nodeType===8)return w;if((b==="width"||b==="height")&&parseFloat(d)<0)d=w;var f=a.style||a,e=d!==w;if(!c.support.opacity&&b==="opacity"){if(e){f.zoom=1;b=parseInt(d,10)+""==="NaN"?"":"alpha(opacity="+d*100+")";a=f.filter||c.curCSS(a,"filter")||"";f.filter=
136
+ Na.test(a)?a.replace(Na,b):b}return f.filter&&f.filter.indexOf("opacity=")>=0?parseFloat(Oa.exec(f.filter)[1])/100+"":""}if(ha.test(b))b=Pa;b=b.replace(ia,ja);if(e)f[b]=d;return f[b]},css:function(a,b,d,f){if(b==="width"||b==="height"){var e,j=b==="width"?pb:qb;function i(){e=b==="width"?a.offsetWidth:a.offsetHeight;f!=="border"&&c.each(j,function(){f||(e-=parseFloat(c.curCSS(a,"padding"+this,true))||0);if(f==="margin")e+=parseFloat(c.curCSS(a,"margin"+this,true))||0;else e-=parseFloat(c.curCSS(a,
137
+ "border"+this+"Width",true))||0})}a.offsetWidth!==0?i():c.swap(a,ob,i);return Math.max(0,Math.round(e))}return c.curCSS(a,b,d)},curCSS:function(a,b,d){var f,e=a.style;if(!c.support.opacity&&b==="opacity"&&a.currentStyle){f=Oa.test(a.currentStyle.filter||"")?parseFloat(RegExp.$1)/100+"":"";return f===""?"1":f}if(ha.test(b))b=Pa;if(!d&&e&&e[b])f=e[b];else if(rb){if(ha.test(b))b="float";b=b.replace(lb,"-$1").toLowerCase();e=a.ownerDocument.defaultView;if(!e)return null;if(a=e.getComputedStyle(a,null))f=
138
+ a.getPropertyValue(b);if(b==="opacity"&&f==="")f="1"}else if(a.currentStyle){d=b.replace(ia,ja);f=a.currentStyle[b]||a.currentStyle[d];if(!mb.test(f)&&nb.test(f)){b=e.left;var j=a.runtimeStyle.left;a.runtimeStyle.left=a.currentStyle.left;e.left=d==="fontSize"?"1em":f||0;f=e.pixelLeft+"px";e.left=b;a.runtimeStyle.left=j}}return f},swap:function(a,b,d){var f={};for(var e in b){f[e]=a.style[e];a.style[e]=b[e]}d.call(a);for(e in b)a.style[e]=f[e]}});if(c.expr&&c.expr.filters){c.expr.filters.hidden=function(a){var b=
139
+ a.offsetWidth,d=a.offsetHeight,f=a.nodeName.toLowerCase()==="tr";return b===0&&d===0&&!f?true:b>0&&d>0&&!f?false:c.curCSS(a,"display")==="none"};c.expr.filters.visible=function(a){return!c.expr.filters.hidden(a)}}var sb=J(),tb=/<script(.|\s)*?\/script>/gi,ub=/select|textarea/i,vb=/color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week/i,N=/=\?(&|$)/,ka=/\?/,wb=/(\?|&)_=.*?(&|$)/,xb=/^(\w+:)?\/\/([^\/?#]+)/,yb=/%20/g,zb=c.fn.load;c.fn.extend({load:function(a,b,d){if(typeof a!==
140
+ "string")return zb.call(this,a);else if(!this.length)return this;var f=a.indexOf(" ");if(f>=0){var e=a.slice(f,a.length);a=a.slice(0,f)}f="GET";if(b)if(c.isFunction(b)){d=b;b=null}else if(typeof b==="object"){b=c.param(b,c.ajaxSettings.traditional);f="POST"}var j=this;c.ajax({url:a,type:f,dataType:"html",data:b,complete:function(i,o){if(o==="success"||o==="notmodified")j.html(e?c("<div />").append(i.responseText.replace(tb,"")).find(e):i.responseText);d&&j.each(d,[i.responseText,o,i])}});return this},
141
+ serialize:function(){return c.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?c.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||ub.test(this.nodeName)||vb.test(this.type))}).map(function(a,b){a=c(this).val();return a==null?null:c.isArray(a)?c.map(a,function(d){return{name:b.name,value:d}}):{name:b.name,value:a}}).get()}});c.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),
142
+ function(a,b){c.fn[b]=function(d){return this.bind(b,d)}});c.extend({get:function(a,b,d,f){if(c.isFunction(b)){f=f||d;d=b;b=null}return c.ajax({type:"GET",url:a,data:b,success:d,dataType:f})},getScript:function(a,b){return c.get(a,null,b,"script")},getJSON:function(a,b,d){return c.get(a,b,d,"json")},post:function(a,b,d,f){if(c.isFunction(b)){f=f||d;d=b;b={}}return c.ajax({type:"POST",url:a,data:b,success:d,dataType:f})},ajaxSetup:function(a){c.extend(c.ajaxSettings,a)},ajaxSettings:{url:location.href,
143
+ global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,xhr:A.XMLHttpRequest&&(A.location.protocol!=="file:"||!A.ActiveXObject)?function(){return new A.XMLHttpRequest}:function(){try{return new A.ActiveXObject("Microsoft.XMLHTTP")}catch(a){}},accepts:{xml:"application/xml, text/xml",html:"text/html",script:"text/javascript, application/javascript",json:"application/json, text/javascript",text:"text/plain",_default:"*/*"}},lastModified:{},etag:{},ajax:function(a){function b(){e.success&&
144
+ e.success.call(k,o,i,x);e.global&&f("ajaxSuccess",[x,e])}function d(){e.complete&&e.complete.call(k,x,i);e.global&&f("ajaxComplete",[x,e]);e.global&&!--c.active&&c.event.trigger("ajaxStop")}function f(q,p){(e.context?c(e.context):c.event).trigger(q,p)}var e=c.extend(true,{},c.ajaxSettings,a),j,i,o,k=a&&a.context||e,n=e.type.toUpperCase();if(e.data&&e.processData&&typeof e.data!=="string")e.data=c.param(e.data,e.traditional);if(e.dataType==="jsonp"){if(n==="GET")N.test(e.url)||(e.url+=(ka.test(e.url)?
145
+ "&":"?")+(e.jsonp||"callback")+"=?");else if(!e.data||!N.test(e.data))e.data=(e.data?e.data+"&":"")+(e.jsonp||"callback")+"=?";e.dataType="json"}if(e.dataType==="json"&&(e.data&&N.test(e.data)||N.test(e.url))){j=e.jsonpCallback||"jsonp"+sb++;if(e.data)e.data=(e.data+"").replace(N,"="+j+"$1");e.url=e.url.replace(N,"="+j+"$1");e.dataType="script";A[j]=A[j]||function(q){o=q;b();d();A[j]=w;try{delete A[j]}catch(p){}z&&z.removeChild(C)}}if(e.dataType==="script"&&e.cache===null)e.cache=false;if(e.cache===
146
+ false&&n==="GET"){var r=J(),u=e.url.replace(wb,"$1_="+r+"$2");e.url=u+(u===e.url?(ka.test(e.url)?"&":"?")+"_="+r:"")}if(e.data&&n==="GET")e.url+=(ka.test(e.url)?"&":"?")+e.data;e.global&&!c.active++&&c.event.trigger("ajaxStart");r=(r=xb.exec(e.url))&&(r[1]&&r[1]!==location.protocol||r[2]!==location.host);if(e.dataType==="script"&&n==="GET"&&r){var z=s.getElementsByTagName("head")[0]||s.documentElement,C=s.createElement("script");C.src=e.url;if(e.scriptCharset)C.charset=e.scriptCharset;if(!j){var B=
147
+ false;C.onload=C.onreadystatechange=function(){if(!B&&(!this.readyState||this.readyState==="loaded"||this.readyState==="complete")){B=true;b();d();C.onload=C.onreadystatechange=null;z&&C.parentNode&&z.removeChild(C)}}}z.insertBefore(C,z.firstChild);return w}var E=false,x=e.xhr();if(x){e.username?x.open(n,e.url,e.async,e.username,e.password):x.open(n,e.url,e.async);try{if(e.data||a&&a.contentType)x.setRequestHeader("Content-Type",e.contentType);if(e.ifModified){c.lastModified[e.url]&&x.setRequestHeader("If-Modified-Since",
148
+ c.lastModified[e.url]);c.etag[e.url]&&x.setRequestHeader("If-None-Match",c.etag[e.url])}r||x.setRequestHeader("X-Requested-With","XMLHttpRequest");x.setRequestHeader("Accept",e.dataType&&e.accepts[e.dataType]?e.accepts[e.dataType]+", */*":e.accepts._default)}catch(ga){}if(e.beforeSend&&e.beforeSend.call(k,x,e)===false){e.global&&!--c.active&&c.event.trigger("ajaxStop");x.abort();return false}e.global&&f("ajaxSend",[x,e]);var g=x.onreadystatechange=function(q){if(!x||x.readyState===0||q==="abort"){E||
149
+ d();E=true;if(x)x.onreadystatechange=c.noop}else if(!E&&x&&(x.readyState===4||q==="timeout")){E=true;x.onreadystatechange=c.noop;i=q==="timeout"?"timeout":!c.httpSuccess(x)?"error":e.ifModified&&c.httpNotModified(x,e.url)?"notmodified":"success";var p;if(i==="success")try{o=c.httpData(x,e.dataType,e)}catch(v){i="parsererror";p=v}if(i==="success"||i==="notmodified")j||b();else c.handleError(e,x,i,p);d();q==="timeout"&&x.abort();if(e.async)x=null}};try{var h=x.abort;x.abort=function(){x&&h.call(x);
150
+ g("abort")}}catch(l){}e.async&&e.timeout>0&&setTimeout(function(){x&&!E&&g("timeout")},e.timeout);try{x.send(n==="POST"||n==="PUT"||n==="DELETE"?e.data:null)}catch(m){c.handleError(e,x,null,m);d()}e.async||g();return x}},handleError:function(a,b,d,f){if(a.error)a.error.call(a.context||a,b,d,f);if(a.global)(a.context?c(a.context):c.event).trigger("ajaxError",[b,a,f])},active:0,httpSuccess:function(a){try{return!a.status&&location.protocol==="file:"||a.status>=200&&a.status<300||a.status===304||a.status===
151
+ 1223||a.status===0}catch(b){}return false},httpNotModified:function(a,b){var d=a.getResponseHeader("Last-Modified"),f=a.getResponseHeader("Etag");if(d)c.lastModified[b]=d;if(f)c.etag[b]=f;return a.status===304||a.status===0},httpData:function(a,b,d){var f=a.getResponseHeader("content-type")||"",e=b==="xml"||!b&&f.indexOf("xml")>=0;a=e?a.responseXML:a.responseText;e&&a.documentElement.nodeName==="parsererror"&&c.error("parsererror");if(d&&d.dataFilter)a=d.dataFilter(a,b);if(typeof a==="string")if(b===
152
+ "json"||!b&&f.indexOf("json")>=0)a=c.parseJSON(a);else if(b==="script"||!b&&f.indexOf("javascript")>=0)c.globalEval(a);return a},param:function(a,b){function d(i,o){if(c.isArray(o))c.each(o,function(k,n){b||/\[\]$/.test(i)?f(i,n):d(i+"["+(typeof n==="object"||c.isArray(n)?k:"")+"]",n)});else!b&&o!=null&&typeof o==="object"?c.each(o,function(k,n){d(i+"["+k+"]",n)}):f(i,o)}function f(i,o){o=c.isFunction(o)?o():o;e[e.length]=encodeURIComponent(i)+"="+encodeURIComponent(o)}var e=[];if(b===w)b=c.ajaxSettings.traditional;
153
+ if(c.isArray(a)||a.jquery)c.each(a,function(){f(this.name,this.value)});else for(var j in a)d(j,a[j]);return e.join("&").replace(yb,"+")}});var la={},Ab=/toggle|show|hide/,Bb=/^([+-]=)?([\d+-.]+)(.*)$/,W,va=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]];c.fn.extend({show:function(a,b){if(a||a===0)return this.animate(K("show",3),a,b);else{a=0;for(b=this.length;a<b;a++){var d=c.data(this[a],"olddisplay");
154
+ this[a].style.display=d||"";if(c.css(this[a],"display")==="none"){d=this[a].nodeName;var f;if(la[d])f=la[d];else{var e=c("<"+d+" />").appendTo("body");f=e.css("display");if(f==="none")f="block";e.remove();la[d]=f}c.data(this[a],"olddisplay",f)}}a=0;for(b=this.length;a<b;a++)this[a].style.display=c.data(this[a],"olddisplay")||"";return this}},hide:function(a,b){if(a||a===0)return this.animate(K("hide",3),a,b);else{a=0;for(b=this.length;a<b;a++){var d=c.data(this[a],"olddisplay");!d&&d!=="none"&&c.data(this[a],
155
+ "olddisplay",c.css(this[a],"display"))}a=0;for(b=this.length;a<b;a++)this[a].style.display="none";return this}},_toggle:c.fn.toggle,toggle:function(a,b){var d=typeof a==="boolean";if(c.isFunction(a)&&c.isFunction(b))this._toggle.apply(this,arguments);else a==null||d?this.each(function(){var f=d?a:c(this).is(":hidden");c(this)[f?"show":"hide"]()}):this.animate(K("toggle",3),a,b);return this},fadeTo:function(a,b,d){return this.filter(":hidden").css("opacity",0).show().end().animate({opacity:b},a,d)},
156
+ animate:function(a,b,d,f){var e=c.speed(b,d,f);if(c.isEmptyObject(a))return this.each(e.complete);return this[e.queue===false?"each":"queue"](function(){var j=c.extend({},e),i,o=this.nodeType===1&&c(this).is(":hidden"),k=this;for(i in a){var n=i.replace(ia,ja);if(i!==n){a[n]=a[i];delete a[i];i=n}if(a[i]==="hide"&&o||a[i]==="show"&&!o)return j.complete.call(this);if((i==="height"||i==="width")&&this.style){j.display=c.css(this,"display");j.overflow=this.style.overflow}if(c.isArray(a[i])){(j.specialEasing=
157
+ j.specialEasing||{})[i]=a[i][1];a[i]=a[i][0]}}if(j.overflow!=null)this.style.overflow="hidden";j.curAnim=c.extend({},a);c.each(a,function(r,u){var z=new c.fx(k,j,r);if(Ab.test(u))z[u==="toggle"?o?"show":"hide":u](a);else{var C=Bb.exec(u),B=z.cur(true)||0;if(C){u=parseFloat(C[2]);var E=C[3]||"px";if(E!=="px"){k.style[r]=(u||1)+E;B=(u||1)/z.cur(true)*B;k.style[r]=B+E}if(C[1])u=(C[1]==="-="?-1:1)*u+B;z.custom(B,u,E)}else z.custom(B,u,"")}});return true})},stop:function(a,b){var d=c.timers;a&&this.queue([]);
158
+ this.each(function(){for(var f=d.length-1;f>=0;f--)if(d[f].elem===this){b&&d[f](true);d.splice(f,1)}});b||this.dequeue();return this}});c.each({slideDown:K("show",1),slideUp:K("hide",1),slideToggle:K("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"}},function(a,b){c.fn[a]=function(d,f){return this.animate(b,d,f)}});c.extend({speed:function(a,b,d){var f=a&&typeof a==="object"?a:{complete:d||!d&&b||c.isFunction(a)&&a,duration:a,easing:d&&b||b&&!c.isFunction(b)&&b};f.duration=c.fx.off?0:typeof f.duration===
159
+ "number"?f.duration:c.fx.speeds[f.duration]||c.fx.speeds._default;f.old=f.complete;f.complete=function(){f.queue!==false&&c(this).dequeue();c.isFunction(f.old)&&f.old.call(this)};return f},easing:{linear:function(a,b,d,f){return d+f*a},swing:function(a,b,d,f){return(-Math.cos(a*Math.PI)/2+0.5)*f+d}},timers:[],fx:function(a,b,d){this.options=b;this.elem=a;this.prop=d;if(!b.orig)b.orig={}}});c.fx.prototype={update:function(){this.options.step&&this.options.step.call(this.elem,this.now,this);(c.fx.step[this.prop]||
160
+ c.fx.step._default)(this);if((this.prop==="height"||this.prop==="width")&&this.elem.style)this.elem.style.display="block"},cur:function(a){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null))return this.elem[this.prop];return(a=parseFloat(c.css(this.elem,this.prop,a)))&&a>-10000?a:parseFloat(c.curCSS(this.elem,this.prop))||0},custom:function(a,b,d){function f(j){return e.step(j)}this.startTime=J();this.start=a;this.end=b;this.unit=d||this.unit||"px";this.now=this.start;
161
+ this.pos=this.state=0;var e=this;f.elem=this.elem;if(f()&&c.timers.push(f)&&!W)W=setInterval(c.fx.tick,13)},show:function(){this.options.orig[this.prop]=c.style(this.elem,this.prop);this.options.show=true;this.custom(this.prop==="width"||this.prop==="height"?1:0,this.cur());c(this.elem).show()},hide:function(){this.options.orig[this.prop]=c.style(this.elem,this.prop);this.options.hide=true;this.custom(this.cur(),0)},step:function(a){var b=J(),d=true;if(a||b>=this.options.duration+this.startTime){this.now=
162
+ this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;for(var f in this.options.curAnim)if(this.options.curAnim[f]!==true)d=false;if(d){if(this.options.display!=null){this.elem.style.overflow=this.options.overflow;a=c.data(this.elem,"olddisplay");this.elem.style.display=a?a:this.options.display;if(c.css(this.elem,"display")==="none")this.elem.style.display="block"}this.options.hide&&c(this.elem).hide();if(this.options.hide||this.options.show)for(var e in this.options.curAnim)c.style(this.elem,
163
+ e,this.options.orig[e]);this.options.complete.call(this.elem)}return false}else{e=b-this.startTime;this.state=e/this.options.duration;a=this.options.easing||(c.easing.swing?"swing":"linear");this.pos=c.easing[this.options.specialEasing&&this.options.specialEasing[this.prop]||a](this.state,e,0,1,this.options.duration);this.now=this.start+(this.end-this.start)*this.pos;this.update()}return true}};c.extend(c.fx,{tick:function(){for(var a=c.timers,b=0;b<a.length;b++)a[b]()||a.splice(b--,1);a.length||
164
+ c.fx.stop()},stop:function(){clearInterval(W);W=null},speeds:{slow:600,fast:200,_default:400},step:{opacity:function(a){c.style(a.elem,"opacity",a.now)},_default:function(a){if(a.elem.style&&a.elem.style[a.prop]!=null)a.elem.style[a.prop]=(a.prop==="width"||a.prop==="height"?Math.max(0,a.now):a.now)+a.unit;else a.elem[a.prop]=a.now}}});if(c.expr&&c.expr.filters)c.expr.filters.animated=function(a){return c.grep(c.timers,function(b){return a===b.elem}).length};c.fn.offset="getBoundingClientRect"in s.documentElement?
165
+ function(a){var b=this[0];if(a)return this.each(function(e){c.offset.setOffset(this,a,e)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return c.offset.bodyOffset(b);var d=b.getBoundingClientRect(),f=b.ownerDocument;b=f.body;f=f.documentElement;return{top:d.top+(self.pageYOffset||c.support.boxModel&&f.scrollTop||b.scrollTop)-(f.clientTop||b.clientTop||0),left:d.left+(self.pageXOffset||c.support.boxModel&&f.scrollLeft||b.scrollLeft)-(f.clientLeft||b.clientLeft||0)}}:function(a){var b=
166
+ this[0];if(a)return this.each(function(r){c.offset.setOffset(this,a,r)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return c.offset.bodyOffset(b);c.offset.initialize();var d=b.offsetParent,f=b,e=b.ownerDocument,j,i=e.documentElement,o=e.body;f=(e=e.defaultView)?e.getComputedStyle(b,null):b.currentStyle;for(var k=b.offsetTop,n=b.offsetLeft;(b=b.parentNode)&&b!==o&&b!==i;){if(c.offset.supportsFixedPosition&&f.position==="fixed")break;j=e?e.getComputedStyle(b,null):b.currentStyle;
167
+ k-=b.scrollTop;n-=b.scrollLeft;if(b===d){k+=b.offsetTop;n+=b.offsetLeft;if(c.offset.doesNotAddBorder&&!(c.offset.doesAddBorderForTableAndCells&&/^t(able|d|h)$/i.test(b.nodeName))){k+=parseFloat(j.borderTopWidth)||0;n+=parseFloat(j.borderLeftWidth)||0}f=d;d=b.offsetParent}if(c.offset.subtractsBorderForOverflowNotVisible&&j.overflow!=="visible"){k+=parseFloat(j.borderTopWidth)||0;n+=parseFloat(j.borderLeftWidth)||0}f=j}if(f.position==="relative"||f.position==="static"){k+=o.offsetTop;n+=o.offsetLeft}if(c.offset.supportsFixedPosition&&
168
+ f.position==="fixed"){k+=Math.max(i.scrollTop,o.scrollTop);n+=Math.max(i.scrollLeft,o.scrollLeft)}return{top:k,left:n}};c.offset={initialize:function(){var a=s.body,b=s.createElement("div"),d,f,e,j=parseFloat(c.curCSS(a,"marginTop",true))||0;c.extend(b.style,{position:"absolute",top:0,left:0,margin:0,border:0,width:"1px",height:"1px",visibility:"hidden"});b.innerHTML="<div style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;'><div></div></div><table style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;' cellpadding='0' cellspacing='0'><tr><td></td></tr></table>";
169
+ a.insertBefore(b,a.firstChild);d=b.firstChild;f=d.firstChild;e=d.nextSibling.firstChild.firstChild;this.doesNotAddBorder=f.offsetTop!==5;this.doesAddBorderForTableAndCells=e.offsetTop===5;f.style.position="fixed";f.style.top="20px";this.supportsFixedPosition=f.offsetTop===20||f.offsetTop===15;f.style.position=f.style.top="";d.style.overflow="hidden";d.style.position="relative";this.subtractsBorderForOverflowNotVisible=f.offsetTop===-5;this.doesNotIncludeMarginInBodyOffset=a.offsetTop!==j;a.removeChild(b);
170
+ c.offset.initialize=c.noop},bodyOffset:function(a){var b=a.offsetTop,d=a.offsetLeft;c.offset.initialize();if(c.offset.doesNotIncludeMarginInBodyOffset){b+=parseFloat(c.curCSS(a,"marginTop",true))||0;d+=parseFloat(c.curCSS(a,"marginLeft",true))||0}return{top:b,left:d}},setOffset:function(a,b,d){if(/static/.test(c.curCSS(a,"position")))a.style.position="relative";var f=c(a),e=f.offset(),j=parseInt(c.curCSS(a,"top",true),10)||0,i=parseInt(c.curCSS(a,"left",true),10)||0;if(c.isFunction(b))b=b.call(a,
171
+ d,e);d={top:b.top-e.top+j,left:b.left-e.left+i};"using"in b?b.using.call(a,d):f.css(d)}};c.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),d=this.offset(),f=/^body|html$/i.test(b[0].nodeName)?{top:0,left:0}:b.offset();d.top-=parseFloat(c.curCSS(a,"marginTop",true))||0;d.left-=parseFloat(c.curCSS(a,"marginLeft",true))||0;f.top+=parseFloat(c.curCSS(b[0],"borderTopWidth",true))||0;f.left+=parseFloat(c.curCSS(b[0],"borderLeftWidth",true))||0;return{top:d.top-
172
+ f.top,left:d.left-f.left}},offsetParent:function(){return this.map(function(){for(var a=this.offsetParent||s.body;a&&!/^body|html$/i.test(a.nodeName)&&c.css(a,"position")==="static";)a=a.offsetParent;return a})}});c.each(["Left","Top"],function(a,b){var d="scroll"+b;c.fn[d]=function(f){var e=this[0],j;if(!e)return null;if(f!==w)return this.each(function(){if(j=wa(this))j.scrollTo(!a?f:c(j).scrollLeft(),a?f:c(j).scrollTop());else this[d]=f});else return(j=wa(e))?"pageXOffset"in j?j[a?"pageYOffset":
173
+ "pageXOffset"]:c.support.boxModel&&j.document.documentElement[d]||j.document.body[d]:e[d]}});c.each(["Height","Width"],function(a,b){var d=b.toLowerCase();c.fn["inner"+b]=function(){return this[0]?c.css(this[0],d,false,"padding"):null};c.fn["outer"+b]=function(f){return this[0]?c.css(this[0],d,false,f?"margin":"border"):null};c.fn[d]=function(f){var e=this[0];if(!e)return f==null?null:this;if(c.isFunction(f))return this.each(function(j){var i=c(this);i[d](f.call(this,j,i[d]()))});return"scrollTo"in
174
+ e&&e.document?e.document.compatMode==="CSS1Compat"&&e.document.documentElement["client"+b]||e.document.body["client"+b]:e.nodeType===9?Math.max(e.documentElement["client"+b],e.body["scroll"+b],e.documentElement["scroll"+b],e.body["offset"+b],e.documentElement["offset"+b]):f===w?c.css(e,d):this.css(d,typeof f==="string"?f:f+"px")}});A.jQuery=A.$=c})(window);
175
+ (function(){function f(a,b){if(b)for(key in b)if(b.hasOwnProperty(key))a[key]=b[key];return a}function l(a,b){var c=[];for(var d in a)if(a.hasOwnProperty(d))c[d]=b(a[d]);return c}function m(a,b,c){if(e.isSupported(b.version))a.innerHTML=e.getHTML(b,c);else if(b.expressInstall&&e.isSupported([6,65]))a.innerHTML=e.getHTML(f(b,{src:b.expressInstall}),{MMredirectURL:location.href,MMplayerType:"PlugIn",MMdoctitle:document.title});else{if(!a.innerHTML.replace(/\s/g,"")){a.innerHTML="<h2>Flash version "+
176
+ b.version+" or greater is required</h2><h3>"+(g[0]>0?"Your version is "+g:"You have no flash plugin installed")+"</h3>"+(a.tagName=="A"?"<p>Click here to download latest version</p>":"<p>Download latest version from <a href='"+k+"'>here</a></p>");if(a.tagName=="A")a.onclick=function(){location.href=k}}if(b.onFail){var d=b.onFail.call(this);if(typeof d=="string")a.innerHTML=d}}if(h)window[b.id]=document.getElementById(b.id);f(this,{getRoot:function(){return a},getOptions:function(){return b},getConf:function(){return c},
177
+ getApi:function(){return a.firstChild}})}var h=document.all,k="http://www.adobe.com/go/getflashplayer",n=typeof jQuery=="function",o=/(\d+)[^\d]+(\d+)[^\d]*(\d*)/,i={width:"100%",height:"100%",id:"_"+(""+Math.random()).slice(9),allowfullscreen:true,allowscriptaccess:"always",quality:"high",version:[3,0],onFail:null,expressInstall:null,w3c:false,cachebusting:false};window.attachEvent&&window.attachEvent("onbeforeunload",function(){__flash_unloadHandler=function(){};__flash_savedUnloadHandler=function(){}});
178
+ window.flashembed=function(a,b,c){if(typeof a=="string")a=document.getElementById(a.replace("#",""));if(a){if(typeof b=="string")b={src:b};return new m(a,f(f({},i),b),c)}};var e=f(window.flashembed,{conf:i,getVersion:function(){var a;try{a=navigator.plugins["Shockwave Flash"].description.slice(16)}catch(b){try{var c=new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7");a=c&&c.GetVariable("$version")}catch(d){}}return(a=o.exec(a))?[a[1],a[3]]:[0,0]},asString:function(a){if(a===null||a===undefined)return null;
179
+ var b=typeof a;if(b=="object"&&a.push)b="array";switch(b){case "string":a=a.replace(new RegExp('(["\\\\])',"g"),"\\$1");a=a.replace(/^\s?(\d+\.?\d+)%/,"$1pct");return'"'+a+'"';case "array":return"["+l(a,function(d){return e.asString(d)}).join(",")+"]";case "function":return'"function()"';case "object":b=[];for(var c in a)a.hasOwnProperty(c)&&b.push('"'+c+'":'+e.asString(a[c]));return"{"+b.join(",")+"}"}return String(a).replace(/\s/g," ").replace(/\'/g,'"')},getHTML:function(a,b){a=f({},a);var c='<object width="'+
180
+ a.width+'" height="'+a.height+'" id="'+a.id+'" name="'+a.id+'"';if(a.cachebusting)a.src+=(a.src.indexOf("?")!=-1?"&":"?")+Math.random();c+=a.w3c||!h?' data="'+a.src+'" type="application/x-shockwave-flash"':' classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"';c+=">";if(a.w3c||h)c+='<param name="movie" value="'+a.src+'" />';a.width=a.height=a.id=a.w3c=a.src=null;a.onFail=a.version=a.expressInstall=null;for(var d in a)if(a[d])c+='<param name="'+d+'" value="'+a[d]+'" />';a="";if(b){for(var j in b)if(b[j]){d=
181
+ b[j];a+=j+"="+(/function|object/.test(typeof d)?e.asString(d):d)+"&"}a=a.slice(0,-1);c+='<param name="flashvars" value=\''+a+"' />"}c+="</object>";return c},isSupported:function(a){return g[0]>a[0]||g[0]==a[0]&&g[1]>=a[1]}}),g=e.getVersion();if(n){jQuery.tools=jQuery.tools||{version:"1.2.3"};jQuery.tools.flashembed={conf:i};jQuery.fn.flashembed=function(a,b){return this.each(function(){$(this).data("flashembed",flashembed(this,a,b))})}}})();
182
+ (function(b){function h(c){if(c){var a=d.contentWindow.document;a.open().close();a.location.hash=c}}var g,d,f,i;b.tools=b.tools||{version:"1.2.3"};b.tools.history={init:function(c){if(!i){if(b.browser.msie&&b.browser.version<"8"){if(!d){d=b("<iframe/>").attr("src","javascript:false;").hide().get(0);b("body").append(d);setInterval(function(){var a=d.contentWindow.document;a=a.location.hash;g!==a&&b.event.trigger("hash",a)},100);h(location.hash||"#")}}else setInterval(function(){var a=location.hash;
183
+ a!==g&&b.event.trigger("hash",a)},100);f=!f?c:f.add(c);c.click(function(a){var e=b(this).attr("href");d&&h(e);if(e.slice(0,1)!="#"){location.href="#"+e;return a.preventDefault()}});i=true}}};b(window).bind("hash",function(c,a){a?f.filter(function(){var e=b(this).attr("href");return e==a||e==a.replace("#","")}).trigger("history",[a]):f.eq(0).trigger("history",[a]);g=a;window.location.hash=g});b.fn.history=function(c){b.tools.history.init(this);return this.bind("history",c)}})(jQuery);
184
+ (function(b){function k(){if(b.browser.msie){var a=b(document).height(),d=b(window).height();return[window.innerWidth||document.documentElement.clientWidth||document.body.clientWidth,a-d<20?d:a]}return[b(document).width(),b(document).height()]}function h(a){if(a)return a.call(b.mask)}b.tools=b.tools||{version:"1.2.3"};var l;l=b.tools.expose={conf:{maskId:"exposeMask",loadSpeed:"slow",closeSpeed:"fast",closeOnClick:true,closeOnEsc:true,zIndex:9998,opacity:0.8,startOpacity:0,color:"#fff",onLoad:null,
185
+ onClose:null}};var c,i,f,g,j;b.mask={load:function(a,d){if(f)return this;if(typeof a=="string")a={color:a};a=a||g;g=a=b.extend(b.extend({},l.conf),a);c=b("#"+a.maskId);if(!c.length){c=b("<div/>").attr("id",a.maskId);b("body").append(c)}var m=k();c.css({position:"absolute",top:0,left:0,width:m[0],height:m[1],display:"none",opacity:a.startOpacity,zIndex:a.zIndex});a.color&&c.css("backgroundColor",a.color);if(h(a.onBeforeLoad)===false)return this;a.closeOnEsc&&b(document).bind("keydown.mask",function(e){e.keyCode==
186
+ 27&&b.mask.close(e)});a.closeOnClick&&c.bind("click.mask",function(e){b.mask.close(e)});b(window).bind("resize.mask",function(){b.mask.fit()});if(d&&d.length){j=d.eq(0).css("zIndex");b.each(d,function(){var e=b(this);/relative|absolute|fixed/i.test(e.css("position"))||e.css("position","relative")});i=d.css({zIndex:Math.max(a.zIndex+1,j=="auto"?0:j)})}c.css({display:"block"}).fadeTo(a.loadSpeed,a.opacity,function(){b.mask.fit();h(a.onLoad)});f=true;return this},close:function(){if(f){if(h(g.onBeforeClose)===
187
+ false)return this;c.fadeOut(g.closeSpeed,function(){h(g.onClose);i&&i.css({zIndex:j})});b(document).unbind("keydown.mask");c.unbind("click.mask");b(window).unbind("resize.mask");f=false}return this},fit:function(){if(f){var a=k();c.css({width:a[0],height:a[1]})}},getMask:function(){return c},isLoaded:function(){return f},getConf:function(){return g},getExposed:function(){return i}};b.fn.mask=function(a){b.mask.load(a);return this};b.fn.expose=function(a){b.mask.load(a,this);return this}})(jQuery);
188
+ (function(b){function c(a){switch(a.type){case "mousemove":return b.extend(a.data,{clientX:a.clientX,clientY:a.clientY,pageX:a.pageX,pageY:a.pageY});case "DOMMouseScroll":b.extend(a,a.data);a.delta=-a.detail/3;break;case "mousewheel":a.delta=a.wheelDelta/120;break}a.type="wheel";return b.event.handle.call(this,a,a.delta)}b.fn.mousewheel=function(a){return this[a?"bind":"trigger"]("wheel",a)};b.event.special.wheel={setup:function(){b.event.add(this,d,c,{})},teardown:function(){b.event.remove(this,
189
+ d,c)}};var d=!b.browser.mozilla?"mousewheel":"DOMMouseScroll"+(b.browser.version<"1.9"?" mousemove":"")})(jQuery);
190
+ (function(c){function p(e,b,a){var d=this,l=e.add(this),h=e.find(a.tabs),i=b.jquery?b:e.children(b),j;h.length||(h=e.children());i.length||(i=e.parent().find(b));i.length||(i=c(b));c.extend(this,{click:function(f,g){var k=h.eq(f);if(typeof f=="string"&&f.replace("#","")){k=h.filter("[href*="+f.replace("#","")+"]");f=Math.max(h.index(k),0)}if(a.rotate){var n=h.length-1;if(f<0)return d.click(n,g);if(f>n)return d.click(0,g)}if(!k.length){if(j>=0)return d;f=a.initialIndex;k=h.eq(f)}if(f===j)return d;
191
+ g=g||c.Event();g.type="onBeforeClick";l.trigger(g,[f]);if(!g.isDefaultPrevented()){o[a.effect].call(d,f,function(){g.type="onClick";l.trigger(g,[f])});j=f;h.removeClass(a.current);k.addClass(a.current);return d}},getConf:function(){return a},getTabs:function(){return h},getPanes:function(){return i},getCurrentPane:function(){return i.eq(j)},getCurrentTab:function(){return h.eq(j)},getIndex:function(){return j},next:function(){return d.click(j+1)},prev:function(){return d.click(j-1)},destroy:function(){h.unbind(a.event).removeClass(a.current);
192
+ i.find("a[href^=#]").unbind("click.T");return d}});c.each("onBeforeClick,onClick".split(","),function(f,g){c.isFunction(a[g])&&c(d).bind(g,a[g]);d[g]=function(k){c(d).bind(g,k);return d}});if(a.history&&c.fn.history){c.tools.history.init(h);a.event="history"}h.each(function(f){c(this).bind(a.event,function(g){d.click(f,g);return g.preventDefault()})});i.find("a[href^=#]").bind("click.T",function(f){d.click(c(this).attr("href"),f)});if(location.hash)d.click(location.hash);else if(a.initialIndex===
193
+ 0||a.initialIndex>0)d.click(a.initialIndex)}c.tools=c.tools||{version:"1.2.3"};c.tools.tabs={conf:{tabs:"a",current:"current",onBeforeClick:null,onClick:null,effect:"default",initialIndex:0,event:"click",rotate:false,history:false},addEffect:function(e,b){o[e]=b}};var o={"default":function(e,b){this.getPanes().hide().eq(e).show();b.call()},fade:function(e,b){var a=this.getConf(),d=a.fadeOutSpeed,l=this.getPanes();d?l.fadeOut(d):l.hide();l.eq(e).fadeIn(a.fadeInSpeed,b)},slide:function(e,b){this.getPanes().slideUp(200);
194
+ this.getPanes().eq(e).slideDown(400,b)},ajax:function(e,b){this.getPanes().eq(0).load(this.getTabs().eq(e).attr("href"),b)}},m;c.tools.tabs.addEffect("horizontal",function(e,b){m||(m=this.getPanes().eq(0).width());this.getCurrentPane().animate({width:0},function(){c(this).hide()});this.getPanes().eq(e).animate({width:m},function(){c(this).show();b.call()})});c.fn.tabs=function(e,b){var a=this.data("tabs");if(a){a.destroy();this.removeData("tabs")}if(c.isFunction(b))b={onBeforeClick:b};b=c.extend({},
195
+ c.tools.tabs.conf,b);this.each(function(){a=new p(c(this),e,b);c(this).data("tabs",a)});return b.api?a:this}})(jQuery);
196
+ (function(d){function r(g,a){function p(f){var e=d(f);return e.length<2?e:g.parent().find(f)}var c=this,j=g.add(this),b=g.data("tabs"),h,l,m,n=false,o=p(a.next).click(function(){b.next()}),k=p(a.prev).click(function(){b.prev()});d.extend(c,{getTabs:function(){return b},getConf:function(){return a},play:function(){if(!h){var f=d.Event("onBeforePlay");j.trigger(f);if(f.isDefaultPrevented())return c;n=false;h=setInterval(b.next,a.interval);j.trigger("onPlay");b.next()}},pause:function(){if(!h)return c;
197
+ var f=d.Event("onBeforePause");j.trigger(f);if(f.isDefaultPrevented())return c;h=clearInterval(h);m=clearInterval(m);j.trigger("onPause")},stop:function(){c.pause();n=true}});d.each("onBeforePlay,onPlay,onBeforePause,onPause".split(","),function(f,e){d.isFunction(a[e])&&c.bind(e,a[e]);c[e]=function(s){return c.bind(e,s)}});if(a.autopause){var t=b.getTabs().add(o).add(k).add(b.getPanes());t.hover(function(){c.pause();l=clearInterval(l)},function(){n||(l=setTimeout(c.play,a.interval))})}if(a.autoplay)m=
198
+ setTimeout(c.play,a.interval);else c.stop();a.clickable&&b.getPanes().click(function(){b.next()});if(!b.getConf().rotate){var i=a.disabledClass;b.getIndex()||k.addClass(i);b.onBeforeClick(function(f,e){if(e){k.removeClass(i);e==b.getTabs().length-1?o.addClass(i):o.removeClass(i)}else k.addClass(i)})}}var q;q=d.tools.tabs.slideshow={conf:{next:".forward",prev:".backward",disabledClass:"disabled",autoplay:false,autopause:true,interval:3E3,clickable:true,api:false}};d.fn.slideshow=function(g){var a=
199
+ this.data("slideshow");if(a)return a;g=d.extend({},q.conf,g);this.each(function(){a=new r(d(this),g);d(this).data("slideshow",a)});return g.api?a:this}})(jQuery);
200
+ (function(f){function p(a,b,c){var h=c.relative?a.position().top:a.offset().top,e=c.relative?a.position().left:a.offset().left,i=c.position[0];h-=b.outerHeight()-c.offset[0];e+=a.outerWidth()+c.offset[1];var j=b.outerHeight()+a.outerHeight();if(i=="center")h+=j/2;if(i=="bottom")h+=j;i=c.position[1];a=b.outerWidth()+a.outerWidth();if(i=="center")e-=a/2;if(i=="left")e-=a;return{top:h,left:e}}function t(a,b){var c=this,h=a.add(c),e,i=0,j=0,m=a.attr("title"),q=n[b.effect],k,r=a.is(":input"),u=r&&a.is(":checkbox, :radio, select, :button, :submit"),
201
+ s=a.attr("type"),l=b.events[s]||b.events[r?u?"widget":"input":"def"];if(!q)throw'Nonexistent effect "'+b.effect+'"';l=l.split(/,\s*/);if(l.length!=2)throw"Tooltip: bad events configuration for "+s;a.bind(l[0],function(d){clearTimeout(i);if(b.predelay)j=setTimeout(function(){c.show(d)},b.predelay);else c.show(d)}).bind(l[1],function(d){clearTimeout(j);if(b.delay)i=setTimeout(function(){c.hide(d)},b.delay);else c.hide(d)});if(m&&b.cancelDefault){a.removeAttr("title");a.data("title",m)}f.extend(c,{show:function(d){if(!e){if(m)e=
202
+ f(b.layout).addClass(b.tipClass).appendTo(document.body).hide().append(m);else if(b.tip)e=f(b.tip).eq(0);else{e=a.next();e.length||(e=a.parent().next())}if(!e.length)throw"Cannot find tooltip for "+a;}if(c.isShown())return c;e.stop(true,true);var g=p(a,e,b);d=d||f.Event();d.type="onBeforeShow";h.trigger(d,[g]);if(d.isDefaultPrevented())return c;g=p(a,e,b);e.css({position:"absolute",top:g.top,left:g.left});k=true;q[0].call(c,function(){d.type="onShow";k="full";h.trigger(d)});g=b.events.tooltip.split(/,\s*/);
203
+ e.bind(g[0],function(){clearTimeout(i);clearTimeout(j)});g[1]&&!a.is("input:not(:checkbox, :radio), textarea")&&e.bind(g[1],function(o){o.relatedTarget!=a[0]&&a.trigger(l[1].split(" ")[0])});return c},hide:function(d){if(!e||!c.isShown())return c;d=d||f.Event();d.type="onBeforeHide";h.trigger(d);if(!d.isDefaultPrevented()){k=false;n[b.effect][1].call(c,function(){d.type="onHide";k=false;h.trigger(d)});return c}},isShown:function(d){return d?k=="full":k},getConf:function(){return b},getTip:function(){return e},
204
+ getTrigger:function(){return a}});f.each("onHide,onBeforeShow,onShow,onBeforeHide".split(","),function(d,g){f.isFunction(b[g])&&f(c).bind(g,b[g]);c[g]=function(o){f(c).bind(g,o);return c}})}f.tools=f.tools||{version:"1.2.3"};f.tools.tooltip={conf:{effect:"toggle",fadeOutSpeed:"fast",predelay:0,delay:30,opacity:1,tip:0,position:["top","center"],offset:[0,0],relative:false,cancelDefault:true,events:{def:"mouseenter,mouseleave",input:"focus,blur",widget:"focus mouseenter,blur mouseleave",tooltip:"mouseenter,mouseleave"},
205
+ layout:"<div/>",tipClass:"tooltip"},addEffect:function(a,b,c){n[a]=[b,c]}};var n={toggle:[function(a){var b=this.getConf(),c=this.getTip();b=b.opacity;b<1&&c.css({opacity:b});c.show();a.call()},function(a){this.getTip().hide();a.call()}],fade:[function(a){var b=this.getConf();this.getTip().fadeTo(b.fadeInSpeed,b.opacity,a)},function(a){this.getTip().fadeOut(this.getConf().fadeOutSpeed,a)}]};f.fn.tooltip=function(a){var b=this.data("tooltip");if(b)return b;a=f.extend(true,{},f.tools.tooltip.conf,a);
206
+ if(typeof a.position=="string")a.position=a.position.split(/,?\s/);this.each(function(){b=new t(f(this),a);f(this).data("tooltip",b)});return a.api?b:this}})(jQuery);
207
+ (function(d){var i=d.tools.tooltip;d.extend(i.conf,{direction:"up",bounce:false,slideOffset:10,slideInSpeed:200,slideOutSpeed:200,slideFade:!d.browser.msie});var e={up:["-","top"],down:["+","top"],left:["-","left"],right:["+","left"]};i.addEffect("slide",function(g){var a=this.getConf(),f=this.getTip(),b=a.slideFade?{opacity:a.opacity}:{},c=e[a.direction]||e.up;b[c[1]]=c[0]+"="+a.slideOffset;a.slideFade&&f.css({opacity:0});f.show().animate(b,a.slideInSpeed,g)},function(g){var a=this.getConf(),f=a.slideOffset,
208
+ b=a.slideFade?{opacity:0}:{},c=e[a.direction]||e.up,h=""+c[0];if(a.bounce)h=h=="+"?"-":"+";b[c[1]]=h+"="+f;this.getTip().animate(b,a.slideOutSpeed,function(){d(this).hide();g.call()})})})(jQuery);
209
+ (function(g){function j(a){var c=g(window),d=c.width()+c.scrollLeft(),h=c.height()+c.scrollTop();return[a.offset().top<=c.scrollTop(),d<=a.offset().left+a.width(),h<=a.offset().top+a.height(),c.scrollLeft()>=a.offset().left]}function k(a){for(var c=a.length;c--;)if(a[c])return false;return true}var i=g.tools.tooltip;i.dynamic={conf:{classNames:"top right bottom left"}};g.fn.dynamic=function(a){if(typeof a=="number")a={speed:a};a=g.extend({},i.dynamic.conf,a);var c=a.classNames.split(/\s/),d;this.each(function(){var h=
210
+ g(this).tooltip().onBeforeShow(function(e,f){e=this.getTip();var b=this.getConf();d||(d=[b.position[0],b.position[1],b.offset[0],b.offset[1],g.extend({},b)]);g.extend(b,d[4]);b.position=[d[0],d[1]];b.offset=[d[2],d[3]];e.css({visibility:"hidden",position:"absolute",top:f.top,left:f.left}).show();f=j(e);if(!k(f)){if(f[2]){g.extend(b,a.top);b.position[0]="top";e.addClass(c[0])}if(f[3]){g.extend(b,a.right);b.position[1]="right";e.addClass(c[1])}if(f[0]){g.extend(b,a.bottom);b.position[0]="bottom";e.addClass(c[2])}if(f[1]){g.extend(b,
211
+ a.left);b.position[1]="left";e.addClass(c[3])}if(f[0]||f[2])b.offset[0]*=-1;if(f[1]||f[3])b.offset[1]*=-1}e.css({visibility:"visible"}).hide()});h.onBeforeShow(function(){var e=this.getConf();this.getTip();setTimeout(function(){e.position=[d[0],d[1]];e.offset=[d[2],d[3]]},0)});h.onHide(function(){var e=this.getTip();e.removeClass(a.classNames)});ret=h});return a.api?ret:this}})(jQuery);
212
+ (function(e){function n(f,c){var a=e(c);return a.length<2?a:f.parent().find(c)}function t(f,c){var a=this,l=f.add(a),g=f.children(),k=0,m=c.vertical;j||(j=a);if(g.length>1)g=e(c.items,f);e.extend(a,{getConf:function(){return c},getIndex:function(){return k},getSize:function(){return a.getItems().size()},getNaviButtons:function(){return o.add(p)},getRoot:function(){return f},getItemWrap:function(){return g},getItems:function(){return g.children(c.item).not("."+c.clonedClass)},move:function(b,d){return a.seekTo(k+
213
+ b,d)},next:function(b){return a.move(1,b)},prev:function(b){return a.move(-1,b)},begin:function(b){return a.seekTo(0,b)},end:function(b){return a.seekTo(a.getSize()-1,b)},focus:function(){return j=a},addItem:function(b){b=e(b);if(c.circular){e(".cloned:last").before(b);e(".cloned:first").replaceWith(b.clone().addClass(c.clonedClass))}else g.append(b);l.trigger("onAddItem",[b]);return a},seekTo:function(b,d,h){if(c.circular&&b===0&&k==-1&&d!==0)return a;if(!c.circular&&b<0||b>a.getSize()||b<-1)return a;
214
+ var i=b;if(b.jquery)b=a.getItems().index(b);else i=a.getItems().eq(b);var q=e.Event("onBeforeSeek");if(!h){l.trigger(q,[b,d]);if(q.isDefaultPrevented()||!i.length)return a}i=m?{top:-i.position().top}:{left:-i.position().left};k=b;j=a;if(d===undefined)d=c.speed;g.animate(i,d,c.easing,h||function(){l.trigger("onSeek",[b])});return a}});e.each(["onBeforeSeek","onSeek","onAddItem"],function(b,d){e.isFunction(c[d])&&e(a).bind(d,c[d]);a[d]=function(h){e(a).bind(d,h);return a}});if(c.circular){var r=a.getItems().slice(-1).clone().prependTo(g),
215
+ s=a.getItems().eq(1).clone().appendTo(g);r.add(s).addClass(c.clonedClass);a.onBeforeSeek(function(b,d,h){if(!b.isDefaultPrevented())if(d==-1){a.seekTo(r,h,function(){a.end(0)});return b.preventDefault()}else d==a.getSize()&&a.seekTo(s,h,function(){a.begin(0)})});a.seekTo(0,0)}var o=n(f,c.prev).click(function(){a.prev()}),p=n(f,c.next).click(function(){a.next()});!c.circular&&a.getSize()>1&&a.onBeforeSeek(function(b,d){setTimeout(function(){if(!b.isDefaultPrevented()){o.toggleClass(c.disabledClass,
216
+ d<=0);p.toggleClass(c.disabledClass,d>=a.getSize()-1)}},1)});c.mousewheel&&e.fn.mousewheel&&f.mousewheel(function(b,d){if(c.mousewheel){a.move(d<0?1:-1,c.wheelSpeed||50);return false}});c.keyboard&&e(document).bind("keydown.scrollable",function(b){if(!(!c.keyboard||b.altKey||b.ctrlKey||e(b.target).is(":input")))if(!(c.keyboard!="static"&&j!=a)){var d=b.keyCode;if(m&&(d==38||d==40)){a.move(d==38?-1:1);return b.preventDefault()}if(!m&&(d==37||d==39)){a.move(d==37?-1:1);return b.preventDefault()}}});
217
+ e(a).trigger("onBeforeSeek",[c.initialIndex])}e.tools=e.tools||{version:"1.2.3"};e.tools.scrollable={conf:{activeClass:"active",circular:false,clonedClass:"cloned",disabledClass:"disabled",easing:"swing",initialIndex:0,item:null,items:".items",keyboard:true,mousewheel:false,next:".next",prev:".prev",speed:400,vertical:false,wheelSpeed:0}};var j;e.fn.scrollable=function(f){var c=this.data("scrollable");if(c)return c;f=e.extend({},e.tools.scrollable.conf,f);this.each(function(){c=new t(e(this),f);e(this).data("scrollable",
218
+ c)});return f.api?c:this}})(jQuery);
219
+ (function(c){var g=c.tools.scrollable;g.autoscroll={conf:{autoplay:true,interval:3E3,autopause:true}};c.fn.autoscroll=function(d){if(typeof d=="number")d={interval:d};var b=c.extend({},g.autoscroll.conf,d),h;this.each(function(){var a=c(this).data("scrollable");if(a)h=a;var e,i,f=true;a.play=function(){if(!e){f=false;e=setInterval(function(){a.next()},b.interval);a.next()}};a.pause=function(){e=clearInterval(e)};a.stop=function(){a.pause();f=true};b.autopause&&a.getRoot().add(a.getNaviButtons()).hover(function(){a.pause();
220
+ clearInterval(i)},function(){f||(i=setTimeout(a.play,b.interval))});b.autoplay&&setTimeout(a.play,b.interval)});return b.api?h:this}})(jQuery);
221
+ (function(d){function p(c,g){var h=d(g);return h.length<2?h:c.parent().find(g)}var m=d.tools.scrollable;m.navigator={conf:{navi:".navi",naviItem:null,activeClass:"active",indexed:false,idPrefix:null,history:false}};d.fn.navigator=function(c){if(typeof c=="string")c={navi:c};c=d.extend({},m.navigator.conf,c);var g;this.each(function(){function h(a,b,i){e.seekTo(b);if(j){if(location.hash)location.hash=a.attr("href").replace("#","")}else return i.preventDefault()}function f(){return k.find(c.naviItem||
222
+ "> *")}function n(a){var b=d("<"+(c.naviItem||"a")+"/>").click(function(i){h(d(this),a,i)}).attr("href","#"+a);a===0&&b.addClass(l);c.indexed&&b.text(a+1);c.idPrefix&&b.attr("id",c.idPrefix+a);return b.appendTo(k)}function o(a,b){a=f().eq(b.replace("#",""));a.length||(a=f().filter("[href="+b+"]"));a.click()}var e=d(this).data("scrollable"),k=p(e.getRoot(),c.navi),q=e.getNaviButtons(),l=c.activeClass,j=c.history&&d.fn.history;if(e)g=e;e.getNaviButtons=function(){return q.add(k)};f().length?f().each(function(a){d(this).click(function(b){h(d(this),
223
+ a,b)})}):d.each(e.getItems(),function(a){n(a)});e.onBeforeSeek(function(a,b){setTimeout(function(){if(!a.isDefaultPrevented()){var i=f().eq(b);!a.isDefaultPrevented()&&i.length&&f().removeClass(l).eq(b).addClass(l)}},1)});e.onAddItem(function(a,b){b=n(e.getItems().index(b));j&&b.history(o)});j&&f().history(o)});return c.api?g:this}})(jQuery);
224
+ (function(a){function t(d,b){var c=this,i=d.add(c),o=a(window),k,f,m,g=a.tools.expose&&(b.mask||b.expose),n=Math.random().toString().slice(10);if(g){if(typeof g=="string")g={color:g};g.closeOnClick=g.closeOnEsc=false}var p=b.target||d.attr("rel");f=p?a(p):d;if(!f.length)throw"Could not find Overlay: "+p;d&&d.index(f)==-1&&d.click(function(e){c.load(e);return e.preventDefault()});a.extend(c,{load:function(e){if(c.isOpened())return c;var h=q[b.effect];if(!h)throw'Overlay: cannot find effect : "'+b.effect+
225
+ '"';b.oneInstance&&a.each(s,function(){this.close(e)});e=e||a.Event();e.type="onBeforeLoad";i.trigger(e);if(e.isDefaultPrevented())return c;m=true;g&&a(f).expose(g);var j=b.top,r=b.left,u=f.outerWidth({margin:true}),v=f.outerHeight({margin:true});if(typeof j=="string")j=j=="center"?Math.max((o.height()-v)/2,0):parseInt(j,10)/100*o.height();if(r=="center")r=Math.max((o.width()-u)/2,0);h[0].call(c,{top:j,left:r},function(){if(m){e.type="onLoad";i.trigger(e)}});g&&b.closeOnClick&&a.mask.getMask().one("click",
226
+ c.close);b.closeOnClick&&a(document).bind("click."+n,function(l){a(l.target).parents(f).length||c.close(l)});b.closeOnEsc&&a(document).bind("keydown."+n,function(l){l.keyCode==27&&c.close(l)});return c},close:function(e){if(!c.isOpened())return c;e=e||a.Event();e.type="onBeforeClose";i.trigger(e);if(!e.isDefaultPrevented()){m=false;q[b.effect][1].call(c,function(){e.type="onClose";i.trigger(e)});a(document).unbind("click."+n).unbind("keydown."+n);g&&a.mask.close();return c}},getOverlay:function(){return f},
227
+ getTrigger:function(){return d},getClosers:function(){return k},isOpened:function(){return m},getConf:function(){return b}});a.each("onBeforeLoad,onStart,onLoad,onBeforeClose,onClose".split(","),function(e,h){a.isFunction(b[h])&&a(c).bind(h,b[h]);c[h]=function(j){a(c).bind(h,j);return c}});k=f.find(b.close||".close");if(!k.length&&!b.close){k=a('<a class="close"></a>');f.prepend(k)}k.click(function(e){c.close(e)});b.load&&c.load()}a.tools=a.tools||{version:"1.2.3"};a.tools.overlay={addEffect:function(d,
228
+ b,c){q[d]=[b,c]},conf:{close:null,closeOnClick:true,closeOnEsc:true,closeSpeed:"fast",effect:"default",fixed:!a.browser.msie||a.browser.version>6,left:"center",load:false,mask:null,oneInstance:true,speed:"normal",target:null,top:"10%"}};var s=[],q={};a.tools.overlay.addEffect("default",function(d,b){var c=this.getConf(),i=a(window);if(!c.fixed){d.top+=i.scrollTop();d.left+=i.scrollLeft()}d.position=c.fixed?"fixed":"absolute";this.getOverlay().css(d).fadeIn(c.speed,b)},function(d){this.getOverlay().fadeOut(this.getConf().closeSpeed,
229
+ d)});a.fn.overlay=function(d){var b=this.data("overlay");if(b)return b;if(a.isFunction(d))d={onBeforeLoad:d};d=a.extend(true,{},a.tools.overlay.conf,d);this.each(function(){b=new t(a(this),d);s.push(b);a(this).data("overlay",b)});return d.api?b:this}})(jQuery);
230
+ (function(i){function j(b){var d=b.offset();return{top:d.top+b.height()/2,left:d.left+b.width()/2}}var k=i.tools.overlay,f=i(window);i.extend(k.conf,{start:{top:null,left:null},fadeInSpeed:"fast",zIndex:9999});function n(b,d){var a=this.getOverlay(),c=this.getConf(),g=this.getTrigger(),o=this,l=a.outerWidth({margin:true}),h=a.data("img");if(!h){var e=a.css("backgroundImage");if(!e)throw"background-image CSS property not set for overlay";e=e.slice(e.indexOf("(")+1,e.indexOf(")")).replace(/\"/g,"");
231
+ a.css("backgroundImage","none");h=i('<img src="'+e+'"/>');h.css({border:0,display:"none"}).width(l);i("body").append(h);a.data("img",h)}e=c.start.top||Math.round(f.height()/2);var m=c.start.left||Math.round(f.width()/2);if(g){g=j(g);e=g.top;m=g.left}h.css({position:"absolute",top:e,left:m,width:0,zIndex:c.zIndex}).show();b.top+=f.scrollTop();b.left+=f.scrollLeft();b.position="absolute";a.css(b);h.animate({top:a.css("top"),left:a.css("left"),width:l},c.speed,function(){if(c.fixed){b.top-=f.scrollTop();
232
+ b.left-=f.scrollLeft();b.position="fixed";h.add(a).css(b)}a.css("zIndex",c.zIndex+1).fadeIn(c.fadeInSpeed,function(){o.isOpened()&&!i(this).index(a)?d.call():a.hide()})})}function p(b){var d=this.getOverlay().hide(),a=this.getConf(),c=this.getTrigger();d=d.data("img");var g={top:a.start.top,left:a.start.left,width:0};c&&i.extend(g,j(c));a.fixed&&d.css({position:"absolute"}).animate({top:"+="+f.scrollTop(),left:"+="+f.scrollLeft()},0);d.animate(g,a.closeSpeed,b)}k.addEffect("apple",n,p)})(jQuery);
233
+ (function(d){function R(b,c){return 32-(new Date(b,c,32)).getDate()}function S(b,c){b=""+b;for(c=c||2;b.length<c;)b="0"+b;return b}function T(b,c,j){var m=b.getDate(),h=b.getDay(),t=b.getMonth();b=b.getFullYear();var f={d:m,dd:S(m),ddd:B[j].shortDays[h],dddd:B[j].days[h],m:t+1,mm:S(t+1),mmm:B[j].shortMonths[t],mmmm:B[j].months[t],yy:String(b).slice(2),yyyy:b};c=c.replace(X,function(o){return o in f?f[o]:o.slice(1,o.length-1)});return Y.html(c).html()}function y(b){return parseInt(b,10)}function U(b,
234
+ c){return b.getFullYear()===c.getFullYear()&&b.getMonth()==c.getMonth()&&b.getDate()==c.getDate()}function C(b){if(b){if(b.constructor==Date)return b;if(typeof b=="string"){var c=b.split("-");if(c.length==3)return new Date(y(c[0]),y(c[1])-1,y(c[2]));if(!/^-?\d+$/.test(b))return;b=y(b)}c=new Date;c.setDate(c.getDate()+b);return c}}function Z(b,c){function j(a,e,g){l=a;D=a.getFullYear();E=a.getMonth();G=a.getDate();g=g||d.Event("api");g.type="change";H.trigger(g,[a]);if(!g.isDefaultPrevented()){b.val(T(a,
235
+ e.format,e.lang));b.data("date",a);h.hide(g)}}function m(a){a.type="onShow";H.trigger(a);d(document).bind("keydown.d",function(e){var g=e.keyCode;if(g==8){b.val("");return h.hide(e)}if(g==27)return h.hide(e);if(d(V).index(g)>=0){if(!u){h.show(e);return e.preventDefault()}var i=d("#"+f.weeks+" a"),p=d("."+f.focus),q=i.index(p);p.removeClass(f.focus);if(g==74||g==40)q+=7;else if(g==75||g==38)q-=7;else if(g==76||g==39)q+=1;else if(g==72||g==37)q-=1;if(q==-1){h.addMonth(-1);p=d("#"+f.weeks+" a:last")}else if(q==
236
+ 35){h.addMonth();p=d("#"+f.weeks+" a:first")}else p=i.eq(q);p.addClass(f.focus);return e.preventDefault()}if(g==34)return h.addMonth();if(g==33)return h.addMonth(-1);if(g==36)return h.today();if(g==13)d(e.target).is("select")||d("."+f.focus).click();return d([16,17,18,9]).index(g)>=0});d(document).bind("click.d",function(e){var g=e.target;if(!d(g).parents("#"+f.root).length&&g!=b[0]&&(!K||g!=K[0]))h.hide(e)})}var h=this,t=new Date,f=c.css,o=B[c.lang],k=d("#"+f.root),L=k.find("#"+f.title),K,I,J,D,
237
+ E,G,l=b.attr("data-value")||c.value||b.val(),r=b.attr("min")||c.min,s=b.attr("max")||c.max,u;l=C(l)||t;r=C(r||c.yearRange[0]*365);s=C(s||c.yearRange[1]*365);if(!o)throw"Dateinput: invalid language: "+c.lang;if(b.attr("type")=="date"){var M=d("<input/>");d.each("name,readonly,disabled,value,required".split(","),function(a,e){M.attr(e,b.attr(e))});b.replaceWith(M);b=M}b.addClass(f.input);var H=b.add(h);if(!k.length){k=d("<div><div><a/><div/><a/></div><div><div/><div/></div></div>").hide().css({position:"absolute"}).attr("id",
238
+ f.root);k.children().eq(0).attr("id",f.head).end().eq(1).attr("id",f.body).children().eq(0).attr("id",f.days).end().eq(1).attr("id",f.weeks).end().end().end().find("a").eq(0).attr("id",f.prev).end().eq(1).attr("id",f.next);L=k.find("#"+f.head).find("div").attr("id",f.title);if(c.selectors){var z=d("<select/>").attr("id",f.month),A=d("<select/>").attr("id",f.year);L.append(z.add(A))}for(var $=k.find("#"+f.days),N=0;N<7;N++)$.append(d("<span/>").text(o.shortDays[(N+c.firstDay)%7]));b.after(k)}if(c.trigger)K=
239
+ d("<a/>").attr("href","#").addClass(f.trigger).click(function(a){h.show();return a.preventDefault()}).insertAfter(b);var O=k.find("#"+f.weeks);A=k.find("#"+f.year);z=k.find("#"+f.month);d.extend(h,{show:function(a){if(!(b.is("[readonly]")||u)){a=a||d.Event();a.type="onBeforeShow";H.trigger(a);if(!a.isDefaultPrevented()){d.each(W,function(){this.hide()});u=true;z.unbind("change").change(function(){h.setValue(A.val(),d(this).val())});A.unbind("change").change(function(){h.setValue(d(this).val(),z.val())});
240
+ I=k.find("#"+f.prev).unbind("click").click(function(){I.hasClass(f.disabled)||h.addMonth(-1);return false});J=k.find("#"+f.next).unbind("click").click(function(){J.hasClass(f.disabled)||h.addMonth();return false});h.setValue(l);var e=b.position();k.css({top:e.top+b.outerHeight({margins:true})+c.offset[0],left:e.left+c.offset[1]});if(c.speed)k.show(c.speed,function(){m(a)});else{k.show();m(a)}return h}}},setValue:function(a,e,g){var i;if(parseInt(e,10)>=-1){a=y(a);e=y(e);g=y(g);i=new Date(a,e,g)}else{i=
241
+ a||l;a=i.getFullYear();e=i.getMonth();g=i.getDate()}if(e==-1){e=11;a--}else if(e==12){e=0;a++}if(!u){j(i,c);return h}E=e;D=a;i=new Date(a,e,1-c.firstDay);g=i.getDay();var p=R(a,e),q=R(a,e-1),P;if(c.selectors){z.empty();d.each(o.months,function(v,F){r<new Date(a,v+1,-1)&&s>new Date(a,v,0)&&z.append(d("<option/>").html(F).attr("value",v))});A.empty();for(i=a+c.yearRange[0];i<a+c.yearRange[1];i++)r<new Date(i+1,-1,0)&&s>new Date(i,0,0)&&A.append(d("<option/>").text(i));z.val(e);A.val(a)}else L.html(o.months[e]+
242
+ " "+a);O.empty();I.add(J).removeClass(f.disabled);for(var w=0,n,x;w<42;w++){n=d("<a/>");if(w%7===0){P=d("<div/>").addClass(f.week);O.append(P)}if(w<g){n.addClass(f.off);x=q-g+w+1;i=new Date(a,e-1,x)}else if(w>=g+p){n.addClass(f.off);x=w-p-g+1;i=new Date(a,e+1,x)}else{x=w-g+1;i=new Date(a,e,x);if(U(l,i))n.attr("id",f.current).addClass(f.focus);else U(t,i)&&n.attr("id",f.today)}r&&i<r&&n.add(I).addClass(f.disabled);s&&i>s&&n.add(J).addClass(f.disabled);n.attr("href","#"+x).text(x).data("date",i);P.append(n);
243
+ n.click(function(v){var F=d(this);if(!F.hasClass(f.disabled)){d("#"+f.current).removeAttr("id");F.attr("id",f.current);j(F.data("date"),c,v)}return false})}f.sunday&&O.find(f.week).each(function(){var v=c.firstDay?7-c.firstDay:0;d(this).children().slice(v,v+1).addClass(f.sunday)});return h},setMin:function(a,e){r=C(a);e&&l<r&&h.setValue(r);return h},setMax:function(a,e){s=C(a);e&&l>s&&h.setValue(s);return h},today:function(){return h.setValue(t)},addDay:function(a){return this.setValue(D,E,G+(a||
244
+ 1))},addMonth:function(a){return this.setValue(D,E+(a||1),G)},addYear:function(a){return this.setValue(D+(a||1),E,G)},hide:function(a){if(u){a=a||d.Event();a.type="onHide";H.trigger(a);d(document).unbind("click.d").unbind("keydown.d");if(a.isDefaultPrevented())return;k.hide();u=false}return h},getConf:function(){return c},getInput:function(){return b},getCalendar:function(){return k},getValue:function(a){return a?T(l,a,c.lang):l},isOpen:function(){return u}});d.each(["onBeforeShow","onShow","change",
245
+ "onHide"],function(a,e){d.isFunction(c[e])&&d(h).bind(e,c[e]);h[e]=function(g){d(h).bind(e,g);return h}});b.bind("focus click",h.show).keydown(function(a){var e=a.keyCode;if(!u&&d(V).index(e)>=0){h.show(a);return a.preventDefault()}return a.shiftKey||a.ctrlKey||a.altKey||e==9?true:a.preventDefault()});C(b.val())&&j(l,c)}d.tools=d.tools||{version:"1.2.3"};var W=[],Q,V=[75,76,38,39,74,72,40,37],B={};Q=d.tools.dateinput={conf:{format:"mm/dd/yy",selectors:false,yearRange:[-5,5],lang:"en",offset:[0,0],
246
+ speed:0,firstDay:0,min:0,max:0,trigger:false,css:{prefix:"cal",input:"date",root:0,head:0,title:0,prev:0,next:0,month:0,year:0,days:0,body:0,weeks:0,today:0,current:0,week:0,off:0,sunday:0,focus:0,disabled:0,trigger:0}},localize:function(b,c){d.each(c,function(j,m){c[j]=m.split(",")});B[b]=c}};Q.localize("en",{months:"January,February,March,April,May,June,July,August,September,October,November,December",shortMonths:"Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec",days:"Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday",
247
+ shortDays:"Sun,Mon,Tue,Wed,Thu,Fri,Sat"});var X=/d{1,4}|m{1,4}|yy(?:yy)?|"[^"]*"|'[^']*'/g,Y=d("<a/>");d.expr[":"].date=function(b){var c=b.getAttribute("type");return c&&c=="date"||!!d(b).data("dateinput")};d.fn.dateinput=function(b){if(this.data("dateinput"))return this;b=d.extend(true,{},Q.conf,b);d.each(b.css,function(j,m){if(!m&&j!="prefix")b.css[j]=(b.css.prefix||"")+(m||j)});var c;this.each(function(){var j=new Z(d(this),b);W.push(j);j=j.getInput().data("dateinput",j);c=c?c.add(j):j});return c?
248
+ c:this}})(jQuery);
249
+ (function(e){function F(d,a){a=Math.pow(10,a);return Math.round(d*a)/a}function p(d,a){if(a=parseInt(d.css(a),10))return a;return(d=d[0].currentStyle)&&d.width&&parseInt(d.width,10)}function C(d){return(d=d.data("events"))&&d.onSlide}function G(d,a){function h(c,b,f,j){if(f===undefined)f=b/k*z;else if(j)f-=a.min;if(r)f=Math.round(f/r)*r;if(b===undefined||r)b=f*k/z;if(isNaN(f))return g;b=Math.max(0,Math.min(b,k));f=b/k*z;if(j||!n)f+=a.min;if(n)if(j)b=k-b;else f=a.max-f;f=F(f,t);var q=c.type=="click";
250
+ if(D&&l!==undefined&&!q){c.type="onSlide";A.trigger(c,[f,b]);if(c.isDefaultPrevented())return g}j=q?a.speed:0;q=q?function(){c.type="change";A.trigger(c,[f])}:null;if(n){m.animate({top:b},j,q);a.progress&&B.animate({height:k-b+m.width()/2},j)}else{m.animate({left:b},j,q);a.progress&&B.animate({width:b+m.width()/2},j)}l=f;H=b;d.val(f);return g}function s(){if(n=a.vertical||p(i,"height")>p(i,"width")){k=p(i,"height")-p(m,"height");u=i.offset().top+k}else{k=p(i,"width")-p(m,"width");u=i.offset().left}}
251
+ function v(){s();g.setValue(a.value||a.min)}var g=this,o=a.css,i=e("<div><div/><a href='#'/></div>").data("rangeinput",g),n,l,u,k,H;d.before(i);var m=i.addClass(o.slider).find("a").addClass(o.handle),B=i.find("div").addClass(o.progress);e.each("min,max,step,value".split(","),function(c,b){c=d.attr(b);if(parseFloat(c))a[b]=parseFloat(c,10)});var z=a.max-a.min,r=a.step=="any"?0:a.step,t=a.precision;if(t===undefined)try{t=r.toString().split(".")[1].length}catch(I){t=0}if(d.attr("type")=="range"){var w=
252
+ e("<input/>");e.each("name,readonly,disabled,required".split(","),function(c,b){w.attr(b,d.attr(b))});w.val(a.value);d.replaceWith(w);d=w}d.addClass(o.input);var A=e(g).add(d),D=true;e.extend(g,{getValue:function(){return l},setValue:function(c,b){return h(b||e.Event("api"),undefined,c,true)},getConf:function(){return a},getProgress:function(){return B},getHandle:function(){return m},getInput:function(){return d},step:function(c,b){b=b||e.Event();var f=a.step=="any"?1:a.step;g.setValue(l+f*(c||1),
253
+ b)},stepUp:function(c){return g.step(c||1)},stepDown:function(c){return g.step(-c||-1)}});e.each("onSlide,change".split(","),function(c,b){e.isFunction(a[b])&&e(g).bind(b,a[b]);g[b]=function(f){e(g).bind(b,f);return g}});m.drag({drag:false}).bind("dragStart",function(){D=C(e(g))||C(d)}).bind("drag",function(c,b,f){if(d.is(":disabled"))return false;h(c,n?b:f)}).bind("dragEnd",function(c){if(!c.isDefaultPrevented()){c.type="change";A.trigger(c,[l])}}).click(function(c){return c.preventDefault()});i.click(function(c){if(d.is(":disabled")||
254
+ c.target==m[0])return c.preventDefault();s();var b=m.width()/2;h(c,n?k-u-b+c.pageY:c.pageX-u-b)});a.keyboard&&d.keydown(function(c){if(!d.attr("readonly")){var b=c.keyCode,f=e([75,76,38,33,39]).index(b)!=-1,j=e([74,72,40,34,37]).index(b)!=-1;if((f||j)&&!(c.shiftKey||c.altKey||c.ctrlKey)){if(f)g.step(b==33?10:1,c);else if(j)g.step(b==34?-10:-1,c);return c.preventDefault()}}});d.blur(function(c){var b=e(this).val();b!==l&&g.setValue(b,c)});e.extend(d[0],{stepUp:g.stepUp,stepDown:g.stepDown});v();k||
255
+ e(window).load(v)}e.tools=e.tools||{version:"1.2.3"};var E;E=e.tools.rangeinput={conf:{min:0,max:100,step:"any",steps:0,value:0,precision:undefined,vertical:0,keyboard:true,progress:false,speed:100,css:{input:"range",slider:"slider",progress:"progress",handle:"handle"}}};var x,y;e.fn.drag=function(d){document.ondragstart=function(){return false};d=e.extend({x:true,y:true,drag:true},d);x=x||e(document).bind("mousedown mouseup",function(a){var h=e(a.target);if(a.type=="mousedown"&&h.data("drag")){var s=
256
+ h.position(),v=a.pageX-s.left,g=a.pageY-s.top,o=true;x.bind("mousemove.drag",function(i){var n=i.pageX-v;i=i.pageY-g;var l={};if(d.x)l.left=n;if(d.y)l.top=i;if(o){h.trigger("dragStart");o=false}d.drag&&h.css(l);h.trigger("drag",[i,n]);y=h});a.preventDefault()}else try{y&&y.trigger("dragEnd")}finally{x.unbind("mousemove.drag");y=null}});return this.data("drag",true)};e.expr[":"].range=function(d){var a=d.getAttribute("type");return a&&a=="range"||!!e(d).filter("input").data("rangeinput")};e.fn.rangeinput=
257
+ function(d){if(this.data("rangeinput"))return this;d=e.extend(true,{},E.conf,d);var a;this.each(function(){var h=new G(e(this),e.extend(true,{},d));h=h.getInput().data("rangeinput",h);a=a?a.add(h):h});return a?a:this}})(jQuery);
258
+ (function(d){function v(a,b,c){var k=a.offset().top,f=a.offset().left,l=c.position.split(/,?\s+/),g=l[0];l=l[1];k-=b.outerHeight()-c.offset[0];f+=a.outerWidth()+c.offset[1];c=b.outerHeight()+a.outerHeight();if(g=="center")k+=c/2;if(g=="bottom")k+=c;a=a.outerWidth();if(l=="center")f-=(a+b.outerWidth())/2;if(l=="left")f-=a;return{top:k,left:f}}function w(a){function b(){return this.getAttribute("type")==a}b.key="[type="+a+"]";return b}function s(a,b,c){function k(g,e,j){if(!(!c.grouped&&g.length)){var h;
259
+ if(j===false||d.isArray(j)){h=i.messages[e.key||e]||i.messages["*"];h=h[c.lang]||i.messages["*"].en;(e=h.match(/\$\d/g))&&d.isArray(j)&&d.each(e,function(n){h=h.replace(this,j[n])})}else h=j[c.lang]||j;g.push(h)}}var f=this,l=b.add(f);a=a.not(":button, :image, :reset, :submit");d.extend(f,{getConf:function(){return c},getForm:function(){return b},getInputs:function(){return a},invalidate:function(g,e){if(!e){var j=[];d.each(g,function(h,n){h=a.filter("[name="+h+"]");if(h.length){h.trigger("OI",[n]);
260
+ j.push({input:h,messages:[n]})}});g=j;e=d.Event()}e.type="onFail";l.trigger(e,[g]);e.isDefaultPrevented()||q[c.effect][0].call(f,g,e);return f},reset:function(g){g=g||a;g.removeClass(c.errorClass).each(function(){var e=d(this).data("msg.el");if(e){e.remove();d(this).data("msg.el",null)}}).unbind(c.errorInputEvent||"");return f},destroy:function(){b.unbind(c.formEvent).unbind("reset.V");a.unbind(c.inputEvent||"").unbind("change.V");return f.reset()},checkValidity:function(g,e){g=g||a;g=g.not(":disabled");
261
+ if(!g.length)return true;e=e||d.Event();e.type="onBeforeValidate";l.trigger(e,[g]);if(e.isDefaultPrevented())return e.result;var j=[],h=c.errorInputEvent+".v";g.each(function(){var p=[],m=d(this).unbind(h).data("messages",p);d.each(t,function(){var o=this,r=o[0];if(m.filter(r).length){o=o[1].call(f,m,m.val());if(o!==true){e.type="onBeforeFail";l.trigger(e,[m,r]);if(e.isDefaultPrevented())return false;var u=m.attr(c.messageAttr);if(u){p=[u];return false}else k(p,r,o)}}});if(p.length){j.push({input:m,
262
+ messages:p});m.trigger("OI",[p]);c.errorInputEvent&&m.bind(h,function(o){f.checkValidity(m,o)})}if(c.singleError&&j.length)return false});var n=q[c.effect];if(!n)throw'Validator: cannot find effect "'+c.effect+'"';if(j.length){f.invalidate(j,e);return false}else{n[1].call(f,g,e);e.type="onSuccess";l.trigger(e,[g]);g.unbind(h)}return true}});d.each("onBeforeValidate,onBeforeFail,onFail,onSuccess".split(","),function(g,e){d.isFunction(c[e])&&d(f).bind(e,c[e]);f[e]=function(j){d(f).bind(e,j);return f}});
263
+ c.formEvent&&b.bind(c.formEvent,function(g){if(!f.checkValidity(null,g))return g.preventDefault()});b.bind("reset.V",function(){f.reset()});a[0]&&a[0].validity&&a.each(function(){this.oninvalid=function(){return false}});if(b[0])b[0].checkValidity=f.checkValidity;c.inputEvent&&a.bind(c.inputEvent,function(g){f.checkValidity(d(this),g)});a.filter(":checkbox, select").filter("[required]").bind("change.V",function(g){var e=d(this);if(this.checked||e.is("select")&&d(this).val())q[c.effect][1].call(f,
264
+ e,g)})}d.tools=d.tools||{version:"1.2.3"};var x=/\[type=([a-z]+)\]/,y=/^-?[0-9]*(\.[0-9]+)?$/,z=/^([a-z0-9_\.\-\+]+)@([\da-z\.\-]+)\.([a-z\.]{2,6})$/i,A=/^(https?:\/\/)?([\da-z\.\-]+)\.([a-z\.]{2,6})([\/\w \.\-]*)*\/?$/i,i;i=d.tools.validator={conf:{grouped:false,effect:"default",errorClass:"invalid",inputEvent:null,errorInputEvent:"keyup",formEvent:"submit",lang:"en",message:"<div/>",messageAttr:"data-message",messageClass:"error",offset:[0,0],position:"center right",singleError:false,speed:"normal"},
265
+ messages:{"*":{en:"Please correct this value"}},localize:function(a,b){d.each(b,function(c,k){i.messages[c]=i.messages[c]||{};i.messages[c][a]=k})},localizeFn:function(a,b){i.messages[a]=i.messages[a]||{};d.extend(i.messages[a],b)},fn:function(a,b,c){if(d.isFunction(b))c=b;else{if(typeof b=="string")b={en:b};this.messages[a.key||a]=b}if(b=x.exec(a))a=w(b[1]);t.push([a,c])},addEffect:function(a,b,c){q[a]=[b,c]}};var t=[],q={"default":[function(a){var b=this.getConf();d.each(a,function(c,k){c=k.input;
266
+ c.addClass(b.errorClass);var f=c.data("msg.el");if(!f){f=d(b.message).addClass(b.messageClass).appendTo(document.body);c.data("msg.el",f)}f.css({visibility:"hidden"}).find("span").remove();d.each(k.messages,function(l,g){d("<span/>").html(g).appendTo(f)});f.outerWidth()==f.parent().width()&&f.add(f.find("p")).css({display:"inline"});k=v(c,f,b);f.css({visibility:"visible",position:"absolute",top:k.top,left:k.left}).fadeIn(b.speed)})},function(a){var b=this.getConf();a.removeClass(b.errorClass).each(function(){var c=
267
+ d(this).data("msg.el");c&&c.css({visibility:"hidden"})})}]};d.each("email,url,number".split(","),function(a,b){d.expr[":"][b]=function(c){return c.getAttribute("type")===b}});d.fn.oninvalid=function(a){return this[a?"bind":"trigger"]("OI",a)};i.fn(":email","Please enter a valid email address",function(a,b){return!b||z.test(b)});i.fn(":url","Please enter a valid URL",function(a,b){return!b||A.test(b)});i.fn(":number","Please enter a numeric value.",function(a,b){return y.test(b)});i.fn("[max]","Please enter a value smaller than $1",
268
+ function(a,b){if(d.tools.dateinput&&a.is(":date"))return true;a=a.attr("max");return parseFloat(b)<=parseFloat(a)?true:[a]});i.fn("[min]","Please enter a value larger than $1",function(a,b){if(d.tools.dateinput&&a.is(":date"))return true;a=a.attr("min");return parseFloat(b)>=parseFloat(a)?true:[a]});i.fn("[required]","Please complete this mandatory field.",function(a,b){if(a.is(":checkbox"))return a.is(":checked");return!!b});i.fn("[pattern]",function(a){var b=new RegExp("^"+a.attr("pattern")+"$");
269
+ return b.test(a.val())});d.fn.validator=function(a){var b=this.data("validator");if(b){b.destroy();this.removeData("validator")}a=d.extend(true,{},i.conf,a);if(this.is("form"))return this.each(function(){var c=d(this);b=new s(c.find(":input"),c,a);c.data("validator",b)});else{b=new s(this,this.eq(0).closest("form"),a);return this.data("validator",b)}}})(jQuery);
js/jquery.ui.dialog.js CHANGED
@@ -1,827 +1,827 @@
1
- /*
2
- * jQuery UI Dialog 1.8.4
3
- *
4
- * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
5
- * Dual licensed under the MIT or GPL Version 2 licenses.
6
- * http://jquery.org/license
7
- *
8
- * http://docs.jquery.com/UI/Dialog
9
- *
10
- * Depends:
11
- * jquery.ui.core.js
12
- * jquery.ui.widget.js
13
- * jquery.ui.button.js
14
- * jquery.ui.draggable.js
15
- * jquery.ui.mouse.js
16
- * jquery.ui.position.js
17
- * jquery.ui.resizable.js
18
- */
19
- (function( $, undefined ) {
20
-
21
- var uiDialogClasses =
22
- 'ui-dialog ' +
23
- 'ui-widget ' +
24
- 'ui-widget-content ' +
25
- 'ui-corner-all ';
26
-
27
- $.widget("ui.dialog", {
28
- options: {
29
- autoOpen: true,
30
- buttons: {},
31
- closeOnEscape: true,
32
- closeText: 'close',
33
- dialogClass: '',
34
- draggable: true,
35
- hide: null,
36
- height: 'auto',
37
- maxHeight: false,
38
- maxWidth: false,
39
- minHeight: 150,
40
- minWidth: 150,
41
- modal: false,
42
- position: {
43
- my: 'center',
44
- at: 'center',
45
- of: window,
46
- collision: 'fit',
47
- // ensure that the titlebar is never outside the document
48
- using: function(pos) {
49
- var topOffset = $(this).css(pos).offset().top;
50
- if (topOffset < 0) {
51
- $(this).css('top', pos.top - topOffset);
52
- }
53
- }
54
- },
55
- resizable: true,
56
- show: null,
57
- stack: true,
58
- title: '',
59
- width: 300,
60
- zIndex: 1000
61
- },
62
-
63
- _create: function() {
64
- this.originalTitle = this.element.attr('title');
65
- // #5742 - .attr() might return a DOMElement
66
- if ( typeof this.originalTitle !== "string" ) {
67
- this.originalTitle = "";
68
- }
69
-
70
- var self = this,
71
- options = self.options,
72
-
73
- title = options.title || self.originalTitle || '&#160;',
74
- titleId = $.ui.dialog.getTitleId(self.element),
75
-
76
- uiDialog = (self.uiDialog = $('<div></div>'))
77
- .appendTo(document.body)
78
- .hide()
79
- .addClass(uiDialogClasses + options.dialogClass)
80
- .css({
81
- zIndex: options.zIndex
82
- })
83
- // setting tabIndex makes the div focusable
84
- // setting outline to 0 prevents a border on focus in Mozilla
85
- .attr('tabIndex', -1).css('outline', 0).keydown(function(event) {
86
- if (options.closeOnEscape && event.keyCode &&
87
- event.keyCode === $.ui.keyCode.ESCAPE) {
88
-
89
- self.close(event);
90
- event.preventDefault();
91
- }
92
- })
93
- .attr({
94
- role: 'dialog',
95
- 'aria-labelledby': titleId
96
- })
97
- .mousedown(function(event) {
98
- self.moveToTop(false, event);
99
- }),
100
-
101
- uiDialogContent = self.element
102
- .show()
103
- .removeAttr('title')
104
- .addClass(
105
- 'ui-dialog-content ' +
106
- 'ui-widget-content')
107
- .appendTo(uiDialog),
108
-
109
- uiDialogTitlebar = (self.uiDialogTitlebar = $('<div></div>'))
110
- .addClass(
111
- 'ui-dialog-titlebar ' +
112
- 'ui-widget-header ' +
113
- 'ui-corner-all ' +
114
- 'ui-helper-clearfix'
115
- )
116
- .prependTo(uiDialog),
117
-
118
- uiDialogTitlebarClose = $('<a href="#"></a>')
119
- .addClass(
120
- 'ui-dialog-titlebar-close ' +
121
- 'ui-corner-all'
122
- )
123
- .attr('role', 'button')
124
- .hover(
125
- function() {
126
- uiDialogTitlebarClose.addClass('ui-state-hover');
127
- },
128
- function() {
129
- uiDialogTitlebarClose.removeClass('ui-state-hover');
130
- }
131
- )
132
- .focus(function() {
133
- uiDialogTitlebarClose.addClass('ui-state-focus');
134
- })
135
- .blur(function() {
136
- uiDialogTitlebarClose.removeClass('ui-state-focus');
137
- })
138
- .click(function(event) {
139
- self.close(event);
140
- return false;
141
- })
142
- .appendTo(uiDialogTitlebar),
143
-
144
- uiDialogTitlebarCloseText = (self.uiDialogTitlebarCloseText = $('<span></span>'))
145
- .addClass(
146
- 'ui-icon ' +
147
- 'ui-icon-closethick'
148
- )
149
- .text(options.closeText)
150
- .appendTo(uiDialogTitlebarClose),
151
-
152
- uiDialogTitle = $('<span></span>')
153
- .addClass('ui-dialog-title')
154
- .attr('id', titleId)
155
- .html(title)
156
- .prependTo(uiDialogTitlebar);
157
-
158
- //handling of deprecated beforeclose (vs beforeClose) option
159
- //Ticket #4669 http://dev.jqueryui.com/ticket/4669
160
- //TODO: remove in 1.9pre
161
- if ($.isFunction(options.beforeclose) && !$.isFunction(options.beforeClose)) {
162
- options.beforeClose = options.beforeclose;
163
- }
164
-
165
- uiDialogTitlebar.find("*").add(uiDialogTitlebar).disableSelection();
166
-
167
- if (options.draggable && $.fn.draggable) {
168
- self._makeDraggable();
169
- }
170
- if (options.resizable && $.fn.resizable) {
171
- self._makeResizable();
172
- }
173
-
174
- self._createButtons(options.buttons);
175
- self._isOpen = false;
176
-
177
- if ($.fn.bgiframe) {
178
- uiDialog.bgiframe();
179
- }
180
- },
181
-
182
- _init: function() {
183
- if ( this.options.autoOpen ) {
184
- this.open();
185
- }
186
- },
187
-
188
- destroy: function() {
189
- var self = this;
190
-
191
- if (self.overlay) {
192
- self.overlay.destroy();
193
- }
194
- self.uiDialog.hide();
195
- self.element
196
- .unbind('.dialog')
197
- .removeData('dialog')
198
- .removeClass('ui-dialog-content ui-widget-content')
199
- .hide().appendTo('body');
200
- self.uiDialog.remove();
201
-
202
- if (self.originalTitle) {
203
- self.element.attr('title', self.originalTitle);
204
- }
205
-
206
- return self;
207
- },
208
-
209
- widget: function() {
210
- return this.uiDialog;
211
- },
212
-
213
- close: function(event) {
214
- var self = this,
215
- maxZ;
216
-
217
- if (false === self._trigger('beforeClose', event)) {
218
- return;
219
- }
220
-
221
- if (self.overlay) {
222
- self.overlay.destroy();
223
- }
224
- self.uiDialog.unbind('keypress.ui-dialog');
225
-
226
- self._isOpen = false;
227
-
228
- if (self.options.hide) {
229
- self.uiDialog.hide(self.options.hide, function() {
230
- self._trigger('close', event);
231
- });
232
- } else {
233
- self.uiDialog.hide();
234
- self._trigger('close', event);
235
- }
236
-
237
- $.ui.dialog.overlay.resize();
238
-
239
- // adjust the maxZ to allow other modal dialogs to continue to work (see #4309)
240
- if (self.options.modal) {
241
- maxZ = 0;
242
- $('.ui-dialog').each(function() {
243
- if (this !== self.uiDialog[0]) {
244
- maxZ = Math.max(maxZ, $(this).css('z-index'));
245
- }
246
- });
247
- $.ui.dialog.maxZ = maxZ;
248
- }
249
-
250
- return self;
251
- },
252
-
253
- isOpen: function() {
254
- return this._isOpen;
255
- },
256
-
257
- // the force parameter allows us to move modal dialogs to their correct
258
- // position on open
259
- moveToTop: function(force, event) {
260
- var self = this,
261
- options = self.options,
262
- saveScroll;
263
-
264
- if ((options.modal && !force) ||
265
- (!options.stack && !options.modal)) {
266
- return self._trigger('focus', event);
267
- }
268
-
269
- if (options.zIndex > $.ui.dialog.maxZ) {
270
- $.ui.dialog.maxZ = options.zIndex;
271
- }
272
- if (self.overlay) {
273
- $.ui.dialog.maxZ += 1;
274
- self.overlay.$el.css('z-index', $.ui.dialog.overlay.maxZ = $.ui.dialog.maxZ);
275
- }
276
-
277
- //Save and then restore scroll since Opera 9.5+ resets when parent z-Index is changed.
278
- // http://ui.jquery.com/bugs/ticket/3193
279
- saveScroll = { scrollTop: self.element.attr('scrollTop'), scrollLeft: self.element.attr('scrollLeft') };
280
- $.ui.dialog.maxZ += 1;
281
- self.uiDialog.css('z-index', $.ui.dialog.maxZ);
282
- self.element.attr(saveScroll);
283
- self._trigger('focus', event);
284
-
285
- return self;
286
- },
287
-
288
- open: function() {
289
- if (this._isOpen) { return; }
290
-
291
- var self = this,
292
- options = self.options,
293
- uiDialog = self.uiDialog;
294
-
295
- self.overlay = options.modal ? new $.ui.dialog.overlay(self) : null;
296
- if (uiDialog.next().length) {
297
- uiDialog.appendTo('body');
298
- }
299
- self._size();
300
- self._position(options.position);
301
- uiDialog.show(options.show);
302
- self.moveToTop(true);
303
-
304
- // prevent tabbing out of modal dialogs
305
- if (options.modal) {
306
- uiDialog.bind('keypress.ui-dialog', function(event) {
307
- if (event.keyCode !== $.ui.keyCode.TAB) {
308
- return;
309
- }
310
-
311
- var tabbables = $(':tabbable', this),
312
- first = tabbables.filter(':first'),
313
- last = tabbables.filter(':last');
314
-
315
- if (event.target === last[0] && !event.shiftKey) {
316
- first.focus(1);
317
- return false;
318
- } else if (event.target === first[0] && event.shiftKey) {
319
- last.focus(1);
320
- return false;
321
- }
322
- });
323
- }
324
-
325
- // set focus to the first tabbable element in the content area or the first button
326
- // if there are no tabbable elements, set focus on the dialog itself
327
- $(self.element.find(':tabbable').get().concat(
328
- uiDialog.find('.ui-dialog-buttonpane :tabbable').get().concat(
329
- uiDialog.get()))).eq(0).focus();
330
-
331
- self._trigger('open');
332
- self._isOpen = true;
333
-
334
- return self;
335
- },
336
-
337
- _createButtons: function(buttons) {
338
- var self = this,
339
- hasButtons = false,
340
- uiDialogButtonPane = $('<div></div>')
341
- .addClass(
342
- 'ui-dialog-buttonpane ' +
343
- 'ui-widget-content ' +
344
- 'ui-helper-clearfix'
345
- ),
346
- uiButtonSet = $( "<div></div>" )
347
- .addClass( "ui-dialog-buttonset" )
348
- .appendTo( uiDialogButtonPane );
349
-
350
- // if we already have a button pane, remove it
351
- self.uiDialog.find('.ui-dialog-buttonpane').remove();
352
-
353
- if (typeof buttons === 'object' && buttons !== null) {
354
- $.each(buttons, function() {
355
- return !(hasButtons = true);
356
- });
357
- }
358
- if (hasButtons) {
359
- $.each(buttons, function(name, fn) {
360
- var button = $('<button type="button"></button>')
361
- .text(name)
362
- .click(function() { fn.apply(self.element[0], arguments); })
363
- .appendTo(uiButtonSet);
364
- if ($.fn.button) {
365
- button.button();
366
- }
367
- });
368
- uiDialogButtonPane.appendTo(self.uiDialog);
369
- }
370
- },
371
-
372
- _makeDraggable: function() {
373
- var self = this,
374
- options = self.options,
375
- doc = $(document),
376
- heightBeforeDrag;
377
-
378
- function filteredUi(ui) {
379
- return {
380
- position: ui.position,
381
- offset: ui.offset
382
- };
383
- }
384
-
385
- self.uiDialog.draggable({
386
- cancel: '.ui-dialog-content, .ui-dialog-titlebar-close',
387
- handle: '.ui-dialog-titlebar',
388
- containment: 'document',
389
- start: function(event, ui) {
390
- heightBeforeDrag = options.height === "auto" ? "auto" : $(this).height();
391
- $(this).height($(this).height()).addClass("ui-dialog-dragging");
392
- self._trigger('dragStart', event, filteredUi(ui));
393
- },
394
- drag: function(event, ui) {
395
- self._trigger('drag', event, filteredUi(ui));
396
- },
397
- stop: function(event, ui) {
398
- options.position = [ui.position.left - doc.scrollLeft(),
399
- ui.position.top - doc.scrollTop()];
400
- $(this).removeClass("ui-dialog-dragging").height(heightBeforeDrag);
401
- self._trigger('dragStop', event, filteredUi(ui));
402
- $.ui.dialog.overlay.resize();
403
- }
404
- });
405
- },
406
-
407
- _makeResizable: function(handles) {
408
- handles = (handles === undefined ? this.options.resizable : handles);
409
- var self = this,
410
- options = self.options,
411
- // .ui-resizable has position: relative defined in the stylesheet
412
- // but dialogs have to use absolute or fixed positioning
413
- position = self.uiDialog.css('position'),
414
- resizeHandles = (typeof handles === 'string' ?
415
- handles :
416
- 'n,e,s,w,se,sw,ne,nw'
417
- );
418
-
419
- function filteredUi(ui) {
420
- return {
421
- originalPosition: ui.originalPosition,
422
- originalSize: ui.originalSize,
423
- position: ui.position,
424
- size: ui.size
425
- };
426
- }
427
-
428
- self.uiDialog.resizable({
429
- cancel: '.ui-dialog-content',
430
- containment: 'document',
431
- alsoResize: self.element,
432
- maxWidth: options.maxWidth,
433
- maxHeight: options.maxHeight,
434
- minWidth: options.minWidth,
435
- minHeight: self._minHeight(),
436
- handles: resizeHandles,
437
- start: function(event, ui) {
438
- $(this).addClass("ui-dialog-resizing");
439
- self._trigger('resizeStart', event, filteredUi(ui));
440
- },
441
- resize: function(event, ui) {
442
- self._trigger('resize', event, filteredUi(ui));
443
- },
444
- stop: function(event, ui) {
445
- $(this).removeClass("ui-dialog-resizing");
446
- options.height = $(this).height();
447
- options.width = $(this).width();
448
- self._trigger('resizeStop', event, filteredUi(ui));
449
- $.ui.dialog.overlay.resize();
450
- }
451
- })
452
- .css('position', position)
453
- .find('.ui-resizable-se').addClass('ui-icon ui-icon-grip-diagonal-se');
454
- },
455
-
456
- _minHeight: function() {
457
- var options = this.options;
458
-
459
- if (options.height === 'auto') {
460
- return options.minHeight;
461
- } else {
462
- return Math.min(options.minHeight, options.height);
463
- }
464
- },
465
-
466
- _position: function(position) {
467
- var myAt = [],
468
- offset = [0, 0],
469
- isVisible;
470
-
471
- if (position) {
472
- // deep extending converts arrays to objects in jQuery <= 1.3.2 :-(
473
- // if (typeof position == 'string' || $.isArray(position)) {
474
- // myAt = $.isArray(position) ? position : position.split(' ');
475
-
476
- if (typeof position === 'string' || (typeof position === 'object' && '0' in position)) {
477
- myAt = position.split ? position.split(' ') : [position[0], position[1]];
478
- if (myAt.length === 1) {
479
- myAt[1] = myAt[0];
480
- }
481
-
482
- $.each(['left', 'top'], function(i, offsetPosition) {
483
- if (+myAt[i] === myAt[i]) {
484
- offset[i] = myAt[i];
485
- myAt[i] = offsetPosition;
486
- }
487
- });
488
-
489
- position = {
490
- my: myAt.join(" "),
491
- at: myAt.join(" "),
492
- offset: offset.join(" ")
493
- };
494
- }
495
-
496
- position = $.extend({}, $.ui.dialog.prototype.options.position, position);
497
- } else {
498
- position = $.ui.dialog.prototype.options.position;
499
- }
500
-
501
- // need to show the dialog to get the actual offset in the position plugin
502
- isVisible = this.uiDialog.is(':visible');
503
- if (!isVisible) {
504
- this.uiDialog.show();
505
- }
506
- this.uiDialog
507
- // workaround for jQuery bug #5781 http://dev.jquery.com/ticket/5781
508
- .css({ top: 0, left: 0 })
509
- .position(position);
510
- if (!isVisible) {
511
- this.uiDialog.hide();
512
- }
513
- },
514
-
515
- _setOption: function(key, value){
516
- var self = this,
517
- uiDialog = self.uiDialog,
518
- isResizable = uiDialog.is(':data(resizable)'),
519
- resize = false;
520
-
521
- switch (key) {
522
- //handling of deprecated beforeclose (vs beforeClose) option
523
- //Ticket #4669 http://dev.jqueryui.com/ticket/4669
524
- //TODO: remove in 1.9pre
525
- case "beforeclose":
526
- key = "beforeClose";
527
- break;
528
- case "buttons":
529
- self._createButtons(value);
530
- resize = true;
531
- break;
532
- case "closeText":
533
- // convert whatever was passed in to a string, for text() to not throw up
534
- self.uiDialogTitlebarCloseText.text("" + value);
535
- break;
536
- case "dialogClass":
537
- uiDialog
538
- .removeClass(self.options.dialogClass)
539
- .addClass(uiDialogClasses + value);
540
- break;
541
- case "disabled":
542
- if (value) {
543
- uiDialog.addClass('ui-dialog-disabled');
544
- } else {
545
- uiDialog.removeClass('ui-dialog-disabled');
546
- }
547
- break;
548
- case "draggable":
549
- if (value) {
550
- self._makeDraggable();
551
- } else {
552
- uiDialog.draggable('destroy');
553
- }
554
- break;
555
- case "height":
556
- resize = true;
557
- break;
558
- case "maxHeight":
559
- if (isResizable) {
560
- uiDialog.resizable('option', 'maxHeight', value);
561
- }
562
- resize = true;
563
- break;
564
- case "maxWidth":
565
- if (isResizable) {
566
- uiDialog.resizable('option', 'maxWidth', value);
567
- }
568
- resize = true;
569
- break;
570
- case "minHeight":
571
- if (isResizable) {
572
- uiDialog.resizable('option', 'minHeight', value);
573
- }
574
- resize = true;
575
- break;
576
- case "minWidth":
577
- if (isResizable) {
578
- uiDialog.resizable('option', 'minWidth', value);
579
- }
580
- resize = true;
581
- break;
582
- case "position":
583
- self._position(value);
584
- break;
585
- case "resizable":
586
- // currently resizable, becoming non-resizable
587
- if (isResizable && !value) {
588
- uiDialog.resizable('destroy');
589
- }
590
-
591
- // currently resizable, changing handles
592
- if (isResizable && typeof value === 'string') {
593
- uiDialog.resizable('option', 'handles', value);
594
- }
595
-
596
- // currently non-resizable, becoming resizable
597
- if (!isResizable && value !== false) {
598
- self._makeResizable(value);
599
- }
600
- break;
601
- case "title":
602
- // convert whatever was passed in o a string, for html() to not throw up
603
- $(".ui-dialog-title", self.uiDialogTitlebar).html("" + (value || '&#160;'));
604
- break;
605
- case "width":
606
- resize = true;
607
- break;
608
- }
609
-
610
- $.Widget.prototype._setOption.apply(self, arguments);
611
- if (resize) {
612
- self._size();
613
- }
614
- },
615
-
616
- _size: function() {
617
- /* If the user has resized the dialog, the .ui-dialog and .ui-dialog-content
618
- * divs will both have width and height set, so we need to reset them
619
- */
620
- var options = this.options,
621
- nonContentHeight;
622
-
623
- // reset content sizing
624
- // hide for non content measurement because height: 0 doesn't work in IE quirks mode (see #4350)
625
- this.element.css({
626
- width: 'auto',
627
- minHeight: 0,
628
- height: 0
629
- });
630
-
631
- if (options.minWidth > options.width) {
632
- options.width = options.minWidth;
633
- }
634
-
635
- // reset wrapper sizing
636
- // determine the height of all the non-content elements
637
- nonContentHeight = this.uiDialog.css({
638
- height: 'auto',
639
- width: options.width
640
- })
641
- .height();
642
-
643
- this.element
644
- .css(options.height === 'auto' ? {
645
- minHeight: Math.max(options.minHeight - nonContentHeight, 0),
646
- height: 'auto'
647
- } : {
648
- minHeight: 0,
649
- height: Math.max(options.height - nonContentHeight, 0)
650
- })
651
- .show();
652
-
653
- if (this.uiDialog.is(':data(resizable)')) {
654
- this.uiDialog.resizable('option', 'minHeight', this._minHeight());
655
- }
656
- }
657
- });
658
-
659
- $.extend($.ui.dialog, {
660
- version: "1.8.4",
661
-
662
- uuid: 0,
663
- maxZ: 0,
664
-
665
- getTitleId: function($el) {
666
- var id = $el.attr('id');
667
- if (!id) {
668
- this.uuid += 1;
669
- id = this.uuid;
670
- }
671
- return 'ui-dialog-title-' + id;
672
- },
673
-
674
- overlay: function(dialog) {
675
- this.$el = $.ui.dialog.overlay.create(dialog);
676
- }
677
- });
678
-
679
- $.extend($.ui.dialog.overlay, {
680
- instances: [],
681
- // reuse old instances due to IE memory leak with alpha transparency (see #5185)
682
- oldInstances: [],
683
- maxZ: 0,
684
- events: $.map('focus,mousedown,mouseup,keydown,keypress,click'.split(','),
685
- function(event) { return event + '.dialog-overlay'; }).join(' '),
686
- create: function(dialog) {
687
- if (this.instances.length === 0) {
688
- // prevent use of anchors and inputs
689
- // we use a setTimeout in case the overlay is created from an
690
- // event that we're going to be cancelling (see #2804)
691
- setTimeout(function() {
692
- // handle $(el).dialog().dialog('close') (see #4065)
693
- if ($.ui.dialog.overlay.instances.length) {
694
- $(document).bind($.ui.dialog.overlay.events, function(event) {
695
- // stop events if the z-index of the target is < the z-index of the overlay
696
- return ($(event.target).zIndex() >= $.ui.dialog.overlay.maxZ);
697
- });
698
- }
699
- }, 1);
700
-
701
- // allow closing by pressing the escape key
702
- $(document).bind('keydown.dialog-overlay', function(event) {
703
- if (dialog.options.closeOnEscape && event.keyCode &&
704
- event.keyCode === $.ui.keyCode.ESCAPE) {
705
-
706
- dialog.close(event);
707
- event.preventDefault();
708
- }
709
- });
710
-
711
- // handle window resize
712
- $(window).bind('resize.dialog-overlay', $.ui.dialog.overlay.resize);
713
- }
714
-
715
- var $el = (this.oldInstances.pop() || $('<div></div>').addClass('ui-widget-overlay'))
716
- .appendTo(document.body)
717
- .css({
718
- width: this.width(),
719
- height: this.height()
720
- });
721
-
722
- if ($.fn.bgiframe) {
723
- $el.bgiframe();
724
- }
725
-
726
- this.instances.push($el);
727
- return $el;
728
- },
729
-
730
- destroy: function($el) {
731
- this.oldInstances.push(this.instances.splice($.inArray($el, this.instances), 1)[0]);
732
-
733
- if (this.instances.length === 0) {
734
- $([document, window]).unbind('.dialog-overlay');
735
- }
736
-
737
- $el.remove();
738
-
739
- // adjust the maxZ to allow other modal dialogs to continue to work (see #4309)
740
- var maxZ = 0;
741
- $.each(this.instances, function() {
742
- maxZ = Math.max(maxZ, this.css('z-index'));
743
- });
744
- this.maxZ = maxZ;
745
- },
746
-
747
- height: function() {
748
- var scrollHeight,
749
- offsetHeight;
750
- // handle IE 6
751
- if ($.browser.msie && $.browser.version < 7) {
752
- scrollHeight = Math.max(
753
- document.documentElement.scrollHeight,
754
- document.body.scrollHeight
755
- );
756
- offsetHeight = Math.max(
757
- document.documentElement.offsetHeight,
758
- document.body.offsetHeight
759
- );
760
-
761
- if (scrollHeight < offsetHeight) {
762
- return $(window).height() + 'px';
763
- } else {
764
- return scrollHeight + 'px';
765
- }
766
- // handle "good" browsers
767
- } else {
768
- return $(document).height() + 'px';
769
- }
770
- },
771
-
772
- width: function() {
773
- var scrollWidth,
774
- offsetWidth;
775
- // handle IE 6
776
- if ($.browser.msie && $.browser.version < 7) {
777
- scrollWidth = Math.max(
778
- document.documentElement.scrollWidth,
779
- document.body.scrollWidth
780
- );
781
- offsetWidth = Math.max(
782
- document.documentElement.offsetWidth,
783
- document.body.offsetWidth
784
- );
785
-
786
- if (scrollWidth < offsetWidth) {
787
- return $(window).width() + 'px';
788
- } else {
789
- return scrollWidth + 'px';
790
- }
791
- // handle "good" browsers
792
- } else {
793
- return $(document).width() + 'px';
794
- }
795
- },
796
-
797
- resize: function() {
798
- /* If the dialog is draggable and the user drags it past the
799
- * right edge of the window, the document becomes wider so we
800
- * need to stretch the overlay. If the user then drags the
801
- * dialog back to the left, the document will become narrower,
802
- * so we need to shrink the overlay to the appropriate size.
803
- * This is handled by shrinking the overlay before setting it
804
- * to the full document size.
805
- */
806
- var $overlays = $([]);
807
- $.each($.ui.dialog.overlay.instances, function() {
808
- $overlays = $overlays.add(this);
809
- });
810
-
811
- $overlays.css({
812
- width: 0,
813
- height: 0
814
- }).css({
815
- width: $.ui.dialog.overlay.width(),
816
- height: $.ui.dialog.overlay.height()
817
- });
818
- }
819
- });
820
-
821
- $.extend($.ui.dialog.overlay.prototype, {
822
- destroy: function() {
823
- $.ui.dialog.overlay.destroy(this.$el);
824
- }
825
- });
826
-
827
- }(jQuery));
1
+ /*
2
+ * jQuery UI Dialog 1.8.4
3
+ *
4
+ * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
5
+ * Dual licensed under the MIT or GPL Version 2 licenses.
6
+ * http://jquery.org/license
7
+ *
8
+ * http://docs.jquery.com/UI/Dialog
9
+ *
10
+ * Depends:
11
+ * jquery.ui.core.js
12
+ * jquery.ui.widget.js
13
+ * jquery.ui.button.js
14
+ * jquery.ui.draggable.js
15
+ * jquery.ui.mouse.js
16
+ * jquery.ui.position.js
17
+ * jquery.ui.resizable.js
18
+ */
19
+ (function( $, undefined ) {
20
+
21
+ var uiDialogClasses =
22
+ 'ui-dialog ' +
23
+ 'ui-widget ' +
24
+ 'ui-widget-content ' +
25
+ 'ui-corner-all ';
26
+
27
+ $.widget("ui.dialog", {
28
+ options: {
29
+ autoOpen: true,
30
+ buttons: {},
31
+ closeOnEscape: true,
32
+ closeText: 'close',
33
+ dialogClass: '',
34
+ draggable: true,
35
+ hide: null,
36
+ height: 'auto',
37
+ maxHeight: false,
38
+ maxWidth: false,
39
+ minHeight: 150,
40
+ minWidth: 150,
41
+ modal: false,
42
+ position: {
43
+ my: 'center',
44
+ at: 'center',
45
+ of: window,
46
+ collision: 'fit',
47
+ // ensure that the titlebar is never outside the document
48
+ using: function(pos) {
49
+ var topOffset = $(this).css(pos).offset().top;
50
+ if (topOffset < 0) {
51
+ $(this).css('top', pos.top - topOffset);
52
+ }
53
+ }
54
+ },
55
+ resizable: true,
56
+ show: null,
57
+ stack: true,
58
+ title: '',
59
+ width: 300,
60
+ zIndex: 1000
61
+ },
62
+
63
+ _create: function() {
64
+ this.originalTitle = this.element.attr('title');
65
+ // #5742 - .attr() might return a DOMElement
66
+ if ( typeof this.originalTitle !== "string" ) {
67
+ this.originalTitle = "";
68
+ }
69
+
70
+ var self = this,
71
+ options = self.options,
72
+
73
+ title = options.title || self.originalTitle || '&#160;',
74
+ titleId = $.ui.dialog.getTitleId(self.element),
75
+
76
+ uiDialog = (self.uiDialog = $('<div></div>'))
77
+ .appendTo(document.body)
78
+ .hide()
79
+ .addClass(uiDialogClasses + options.dialogClass)
80
+ .css({
81
+ zIndex: options.zIndex
82
+ })
83
+ // setting tabIndex makes the div focusable
84
+ // setting outline to 0 prevents a border on focus in Mozilla
85
+ .attr('tabIndex', -1).css('outline', 0).keydown(function(event) {
86
+ if (options.closeOnEscape && event.keyCode &&
87
+ event.keyCode === $.ui.keyCode.ESCAPE) {
88
+
89
+ self.close(event);
90
+ event.preventDefault();
91
+ }
92
+ })
93
+ .attr({
94
+ role: 'dialog',
95
+ 'aria-labelledby': titleId
96
+ })
97
+ .mousedown(function(event) {
98
+ self.moveToTop(false, event);
99
+ }),
100
+
101
+ uiDialogContent = self.element
102
+ .show()
103
+ .removeAttr('title')
104
+ .addClass(
105
+ 'ui-dialog-content ' +
106
+ 'ui-widget-content')
107
+ .appendTo(uiDialog),
108
+
109
+ uiDialogTitlebar = (self.uiDialogTitlebar = $('<div></div>'))
110
+ .addClass(
111
+ 'ui-dialog-titlebar ' +
112
+ 'ui-widget-header ' +
113
+ 'ui-corner-all ' +
114
+ 'ui-helper-clearfix'
115
+ )
116
+ .prependTo(uiDialog),
117
+
118
+ uiDialogTitlebarClose = $('<a href="#"></a>')
119
+ .addClass(
120
+ 'ui-dialog-titlebar-close ' +
121
+ 'ui-corner-all'
122
+ )
123
+ .attr('role', 'button')
124
+ .hover(
125
+ function() {
126
+ uiDialogTitlebarClose.addClass('ui-state-hover');
127
+ },
128
+ function() {
129
+ uiDialogTitlebarClose.removeClass('ui-state-hover');
130
+ }
131
+ )
132
+ .focus(function() {
133
+ uiDialogTitlebarClose.addClass('ui-state-focus');
134
+ })
135
+ .blur(function() {
136
+ uiDialogTitlebarClose.removeClass('ui-state-focus');
137
+ })
138
+ .click(function(event) {
139
+ self.close(event);
140
+ return false;
141
+ })
142
+ .appendTo(uiDialogTitlebar),
143
+
144
+ uiDialogTitlebarCloseText = (self.uiDialogTitlebarCloseText = $('<span></span>'))
145
+ .addClass(
146
+ 'ui-icon ' +
147
+ 'ui-icon-closethick'
148
+ )
149
+ .text(options.closeText)
150
+ .appendTo(uiDialogTitlebarClose),
151
+
152
+ uiDialogTitle = $('<span></span>')
153
+ .addClass('ui-dialog-title')
154
+ .attr('id', titleId)
155
+ .html(title)
156
+ .prependTo(uiDialogTitlebar);
157
+
158
+ //handling of deprecated beforeclose (vs beforeClose) option
159
+ //Ticket #4669 http://dev.jqueryui.com/ticket/4669
160
+ //TODO: remove in 1.9pre
161
+ if ($.isFunction(options.beforeclose) && !$.isFunction(options.beforeClose)) {
162
+ options.beforeClose = options.beforeclose;
163
+ }
164
+
165
+ uiDialogTitlebar.find("*").add(uiDialogTitlebar).disableSelection();
166
+
167
+ if (options.draggable && $.fn.draggable) {
168
+ self._makeDraggable();
169
+ }
170
+ if (options.resizable && $.fn.resizable) {
171
+ self._makeResizable();
172
+ }
173
+
174
+ self._createButtons(options.buttons);
175
+ self._isOpen = false;
176
+
177
+ if ($.fn.bgiframe) {
178
+ uiDialog.bgiframe();
179
+ }
180
+ },
181
+
182
+ _init: function() {
183
+ if ( this.options.autoOpen ) {
184
+ this.open();
185
+ }
186
+ },
187
+
188
+ destroy: function() {
189
+ var self = this;
190
+
191
+ if (self.overlay) {
192
+ self.overlay.destroy();
193
+ }
194
+ self.uiDialog.hide();
195
+ self.element
196
+ .unbind('.dialog')
197
+ .removeData('dialog')
198
+ .removeClass('ui-dialog-content ui-widget-content')
199
+ .hide().appendTo('body');
200
+ self.uiDialog.remove();
201
+
202
+ if (self.originalTitle) {
203
+ self.element.attr('title', self.originalTitle);
204
+ }
205
+
206
+ return self;
207
+ },
208
+
209
+ widget: function() {
210
+ return this.uiDialog;
211
+ },
212
+
213
+ close: function(event) {
214
+ var self = this,
215
+ maxZ;
216
+
217
+ if (false === self._trigger('beforeClose', event)) {
218
+ return;
219
+ }
220
+
221
+ if (self.overlay) {
222
+ self.overlay.destroy();
223
+ }
224
+ self.uiDialog.unbind('keypress.ui-dialog');
225
+
226
+ self._isOpen = false;
227
+
228
+ if (self.options.hide) {
229
+ self.uiDialog.hide(self.options.hide, function() {
230
+ self._trigger('close', event);
231
+ });
232
+ } else {
233
+ self.uiDialog.hide();
234
+ self._trigger('close', event);
235
+ }
236
+
237
+ $.ui.dialog.overlay.resize();
238
+
239
+ // adjust the maxZ to allow other modal dialogs to continue to work (see #4309)
240
+ if (self.options.modal) {
241
+ maxZ = 0;
242
+ $('.ui-dialog').each(function() {
243
+ if (this !== self.uiDialog[0]) {
244
+ maxZ = Math.max(maxZ, $(this).css('z-index'));
245
+ }
246
+ });
247
+ $.ui.dialog.maxZ = maxZ;
248
+ }
249
+
250
+ return self;
251
+ },
252
+
253
+ isOpen: function() {
254
+ return this._isOpen;
255
+ },
256
+
257
+ // the force parameter allows us to move modal dialogs to their correct
258
+ // position on open
259
+ moveToTop: function(force, event) {
260
+ var self = this,
261
+ options = self.options,
262
+ saveScroll;
263
+
264
+ if ((options.modal && !force) ||
265
+ (!options.stack && !options.modal)) {
266
+ return self._trigger('focus', event);
267
+ }
268
+
269
+ if (options.zIndex > $.ui.dialog.maxZ) {
270
+ $.ui.dialog.maxZ = options.zIndex;
271
+ }
272
+ if (self.overlay) {
273
+ $.ui.dialog.maxZ += 1;
274
+ self.overlay.$el.css('z-index', $.ui.dialog.overlay.maxZ = $.ui.dialog.maxZ);
275
+ }
276
+
277
+ //Save and then restore scroll since Opera 9.5+ resets when parent z-Index is changed.
278
+ // http://ui.jquery.com/bugs/ticket/3193
279
+ saveScroll = { scrollTop: self.element.attr('scrollTop'), scrollLeft: self.element.attr('scrollLeft') };
280
+ $.ui.dialog.maxZ += 1;
281
+ self.uiDialog.css('z-index', $.ui.dialog.maxZ);
282
+ self.element.attr(saveScroll);
283
+ self._trigger('focus', event);
284
+
285
+ return self;
286
+ },
287
+
288
+ open: function() {
289
+ if (this._isOpen) { return; }
290
+
291
+ var self = this,
292
+ options = self.options,
293
+ uiDialog = self.uiDialog;
294
+
295
+ self.overlay = options.modal ? new $.ui.dialog.overlay(self) : null;
296
+ if (uiDialog.next().length) {
297
+ uiDialog.appendTo('body');
298
+ }
299
+ self._size();
300
+ self._position(options.position);
301
+ uiDialog.show(options.show);
302
+ self.moveToTop(true);
303
+
304
+ // prevent tabbing out of modal dialogs
305
+ if (options.modal) {
306
+ uiDialog.bind('keypress.ui-dialog', function(event) {
307
+ if (event.keyCode !== $.ui.keyCode.TAB) {
308
+ return;
309
+ }
310
+
311
+ var tabbables = $(':tabbable', this),
312
+ first = tabbables.filter(':first'),
313
+ last = tabbables.filter(':last');
314
+
315
+ if (event.target === last[0] && !event.shiftKey) {
316
+ first.focus(1);
317
+ return false;
318
+ } else if (event.target === first[0] && event.shiftKey) {
319
+ last.focus(1);
320
+ return false;
321
+ }
322
+ });
323
+ }
324
+
325
+ // set focus to the first tabbable element in the content area or the first button
326
+ // if there are no tabbable elements, set focus on the dialog itself
327
+ $(self.element.find(':tabbable').get().concat(
328
+ uiDialog.find('.ui-dialog-buttonpane :tabbable').get().concat(
329
+ uiDialog.get()))).eq(0).focus();
330
+
331
+ self._trigger('open');
332
+ self._isOpen = true;
333
+
334
+ return self;
335
+ },
336
+
337
+ _createButtons: function(buttons) {
338
+ var self = this,
339
+ hasButtons = false,
340
+ uiDialogButtonPane = $('<div></div>')
341
+ .addClass(
342
+ 'ui-dialog-buttonpane ' +
343
+ 'ui-widget-content ' +
344
+ 'ui-helper-clearfix'
345
+ ),
346
+ uiButtonSet = $( "<div></div>" )
347
+ .addClass( "ui-dialog-buttonset" )
348
+ .appendTo( uiDialogButtonPane );
349
+
350
+ // if we already have a button pane, remove it
351
+ self.uiDialog.find('.ui-dialog-buttonpane').remove();
352
+
353
+ if (typeof buttons === 'object' && buttons !== null) {
354
+ $.each(buttons, function() {
355
+ return !(hasButtons = true);
356
+ });
357
+ }
358
+ if (hasButtons) {
359
+ $.each(buttons, function(name, fn) {
360
+ var button = $('<button type="button"></button>')
361
+ .text(name)
362
+ .click(function() { fn.apply(self.element[0], arguments); })
363
+ .appendTo(uiButtonSet);
364
+ if ($.fn.button) {
365
+ button.button();
366
+ }
367
+ });
368
+ uiDialogButtonPane.appendTo(self.uiDialog);
369
+ }
370
+ },
371
+
372
+ _makeDraggable: function() {
373
+ var self = this,
374
+ options = self.options,
375
+ doc = $(document),
376
+ heightBeforeDrag;
377
+
378
+ function filteredUi(ui) {
379
+ return {
380
+ position: ui.position,
381
+ offset: ui.offset
382
+ };
383
+ }
384
+
385
+ self.uiDialog.draggable({
386
+ cancel: '.ui-dialog-content, .ui-dialog-titlebar-close',
387
+ handle: '.ui-dialog-titlebar',
388
+ containment: 'document',
389
+ start: function(event, ui) {
390
+ heightBeforeDrag = options.height === "auto" ? "auto" : $(this).height();
391
+ $(this).height($(this).height()).addClass("ui-dialog-dragging");
392
+ self._trigger('dragStart', event, filteredUi(ui));
393
+ },
394
+ drag: function(event, ui) {
395
+ self._trigger('drag', event, filteredUi(ui));
396
+ },
397
+ stop: function(event, ui) {
398
+ options.position = [ui.position.left - doc.scrollLeft(),
399
+ ui.position.top - doc.scrollTop()];
400
+ $(this).removeClass("ui-dialog-dragging").height(heightBeforeDrag);
401
+ self._trigger('dragStop', event, filteredUi(ui));
402
+ $.ui.dialog.overlay.resize();
403
+ }
404
+ });
405
+ },
406
+
407
+ _makeResizable: function(handles) {
408
+ handles = (handles === undefined ? this.options.resizable : handles);
409
+ var self = this,
410
+ options = self.options,
411
+ // .ui-resizable has position: relative defined in the stylesheet
412
+ // but dialogs have to use absolute or fixed positioning
413
+ position = self.uiDialog.css('position'),
414
+ resizeHandles = (typeof handles === 'string' ?
415
+ handles :
416
+ 'n,e,s,w,se,sw,ne,nw'
417
+ );
418
+
419
+ function filteredUi(ui) {
420
+ return {
421
+ originalPosition: ui.originalPosition,
422
+ originalSize: ui.originalSize,
423
+ position: ui.position,
424
+ size: ui.size
425
+ };
426
+ }
427
+
428
+ self.uiDialog.resizable({
429
+ cancel: '.ui-dialog-content',
430
+ containment: 'document',
431
+ alsoResize: self.element,
432
+ maxWidth: options.maxWidth,
433
+ maxHeight: options.maxHeight,
434
+ minWidth: options.minWidth,
435
+ minHeight: self._minHeight(),
436
+ handles: resizeHandles,
437
+ start: function(event, ui) {
438
+ $(this).addClass("ui-dialog-resizing");
439
+ self._trigger('resizeStart', event, filteredUi(ui));
440
+ },
441
+ resize: function(event, ui) {
442
+ self._trigger('resize', event, filteredUi(ui));
443
+ },
444
+ stop: function(event, ui) {
445
+ $(this).removeClass("ui-dialog-resizing");
446
+ options.height = $(this).height();
447
+ options.width = $(this).width();
448
+ self._trigger('resizeStop', event, filteredUi(ui));
449
+ $.ui.dialog.overlay.resize();
450
+ }
451
+ })
452
+ .css('position', position)
453
+ .find('.ui-resizable-se').addClass('ui-icon ui-icon-grip-diagonal-se');
454
+ },
455
+
456
+ _minHeight: function() {
457
+ var options = this.options;
458
+
459
+ if (options.height === 'auto') {
460
+ return options.minHeight;
461
+ } else {
462
+ return Math.min(options.minHeight, options.height);
463
+ }
464
+ },
465
+
466
+ _position: function(position) {
467
+ var myAt = [],
468
+ offset = [0, 0],
469
+ isVisible;
470
+
471
+ if (position) {
472
+ // deep extending converts arrays to objects in jQuery <= 1.3.2 :-(
473
+ // if (typeof position == 'string' || $.isArray(position)) {
474
+ // myAt = $.isArray(position) ? position : position.split(' ');
475
+
476
+ if (typeof position === 'string' || (typeof position === 'object' && '0' in position)) {
477
+ myAt = position.split ? position.split(' ') : [position[0], position[1]];
478
+ if (myAt.length === 1) {
479
+ myAt[1] = myAt[0];
480
+ }
481
+
482
+ $.each(['left', 'top'], function(i, offsetPosition) {
483
+ if (+myAt[i] === myAt[i]) {
484
+ offset[i] = myAt[i];
485
+ myAt[i] = offsetPosition;
486
+ }
487
+ });
488
+
489
+ position = {
490
+ my: myAt.join(" "),
491
+ at: myAt.join(" "),
492
+ offset: offset.join(" ")
493
+ };
494
+ }
495
+
496
+ position = $.extend({}, $.ui.dialog.prototype.options.position, position);
497
+ } else {
498
+ position = $.ui.dialog.prototype.options.position;
499
+ }
500
+
501
+ // need to show the dialog to get the actual offset in the position plugin
502
+ isVisible = this.uiDialog.is(':visible');
503
+ if (!isVisible) {
504
+ this.uiDialog.show();
505
+ }
506
+ this.uiDialog
507
+ // workaround for jQuery bug #5781 http://dev.jquery.com/ticket/5781
508
+ .css({ top: 0, left: 0 })
509
+ .position(position);
510
+ if (!isVisible) {
511
+ this.uiDialog.hide();
512
+ }
513
+ },
514
+
515
+ _setOption: function(key, value){
516
+ var self = this,
517
+ uiDialog = self.uiDialog,
518
+ isResizable = uiDialog.is(':data(resizable)'),
519
+ resize = false;
520
+
521
+ switch (key) {
522
+ //handling of deprecated beforeclose (vs beforeClose) option
523
+ //Ticket #4669 http://dev.jqueryui.com/ticket/4669
524
+ //TODO: remove in 1.9pre
525
+ case "beforeclose":
526
+ key = "beforeClose";
527
+ break;
528
+ case "buttons":
529
+ self._createButtons(value);
530
+ resize = true;
531
+ break;
532
+ case "closeText":
533
+ // convert whatever was passed in to a string, for text() to not throw up
534
+ self.uiDialogTitlebarCloseText.text("" + value);
535
+ break;
536
+ case "dialogClass":
537
+ uiDialog
538
+ .removeClass(self.options.dialogClass)
539
+ .addClass(uiDialogClasses + value);
540
+ break;
541
+ case "disabled":
542
+ if (value) {
543
+ uiDialog.addClass('ui-dialog-disabled');
544
+ } else {
545
+ uiDialog.removeClass('ui-dialog-disabled');
546
+ }
547
+ break;
548
+ case "draggable":
549
+ if (value) {
550
+ self._makeDraggable();
551
+ } else {
552
+ uiDialog.draggable('destroy');
553
+ }
554
+ break;
555
+ case "height":
556
+ resize = true;
557
+ break;
558
+ case "maxHeight":
559
+ if (isResizable) {
560
+ uiDialog.resizable('option', 'maxHeight', value);
561
+ }
562
+ resize = true;
563
+ break;
564
+ case "maxWidth":
565
+ if (isResizable) {
566
+ uiDialog.resizable('option', 'maxWidth', value);
567
+ }
568
+ resize = true;
569
+ break;
570
+ case "minHeight":
571
+ if (isResizable) {
572
+ uiDialog.resizable('option', 'minHeight', value);
573
+ }
574
+ resize = true;
575
+ break;
576
+ case "minWidth":
577
+ if (isResizable) {
578
+ uiDialog.resizable('option', 'minWidth', value);
579
+ }
580
+ resize = true;
581
+ break;
582
+ case "position":
583
+ self._position(value);
584
+ break;
585
+ case "resizable":
586
+ // currently resizable, becoming non-resizable
587
+ if (isResizable && !value) {
588
+ uiDialog.resizable('destroy');
589
+ }
590
+
591
+ // currently resizable, changing handles
592
+ if (isResizable && typeof value === 'string') {
593
+ uiDialog.resizable('option', 'handles', value);
594
+ }
595
+
596
+ // currently non-resizable, becoming resizable
597
+ if (!isResizable && value !== false) {
598
+ self._makeResizable(value);
599
+ }
600
+ break;
601
+ case "title":
602
+ // convert whatever was passed in o a string, for html() to not throw up
603
+ $(".ui-dialog-title", self.uiDialogTitlebar).html("" + (value || '&#160;'));
604
+ break;
605
+ case "width":
606
+ resize = true;
607
+ break;
608
+ }
609
+
610
+ $.Widget.prototype._setOption.apply(self, arguments);
611
+ if (resize) {
612
+ self._size();
613
+ }
614
+ },
615
+
616
+ _size: function() {
617
+ /* If the user has resized the dialog, the .ui-dialog and .ui-dialog-content
618
+ * divs will both have width and height set, so we need to reset them
619
+ */
620
+ var options = this.options,
621
+ nonContentHeight;
622
+
623
+ // reset content sizing
624
+ // hide for non content measurement because height: 0 doesn't work in IE quirks mode (see #4350)
625
+ this.element.css({
626
+ width: 'auto',
627
+ minHeight: 0,
628
+ height: 0
629
+ });
630
+
631
+ if (options.minWidth > options.width) {
632
+ options.width = options.minWidth;
633
+ }
634
+
635
+ // reset wrapper sizing
636
+ // determine the height of all the non-content elements
637
+ nonContentHeight = this.uiDialog.css({
638
+ height: 'auto',
639
+ width: options.width
640
+ })
641
+ .height();
642
+
643
+ this.element
644
+ .css(options.height === 'auto' ? {
645
+ minHeight: Math.max(options.minHeight - nonContentHeight, 0),
646
+ height: 'auto'
647
+ } : {
648
+ minHeight: 0,
649
+ height: Math.max(options.height - nonContentHeight, 0)
650
+ })
651
+ .show();
652
+
653
+ if (this.uiDialog.is(':data(resizable)')) {
654
+ this.uiDialog.resizable('option', 'minHeight', this._minHeight());
655
+ }
656
+ }
657
+ });
658
+
659
+ $.extend($.ui.dialog, {
660
+ version: "1.8.4",
661
+
662
+ uuid: 0,
663
+ maxZ: 0,
664
+
665
+ getTitleId: function($el) {
666
+ var id = $el.attr('id');
667
+ if (!id) {
668
+ this.uuid += 1;
669
+ id = this.uuid;
670
+ }
671
+ return 'ui-dialog-title-' + id;
672
+ },
673
+
674
+ overlay: function(dialog) {
675
+ this.$el = $.ui.dialog.overlay.create(dialog);
676
+ }
677
+ });
678
+
679
+ $.extend($.ui.dialog.overlay, {
680
+ instances: [],
681
+ // reuse old instances due to IE memory leak with alpha transparency (see #5185)
682
+ oldInstances: [],
683
+ maxZ: 0,
684
+ events: $.map('focus,mousedown,mouseup,keydown,keypress,click'.split(','),
685
+ function(event) { return event + '.dialog-overlay'; }).join(' '),
686
+ create: function(dialog) {
687
+ if (this.instances.length === 0) {
688
+ // prevent use of anchors and inputs
689
+ // we use a setTimeout in case the overlay is created from an
690
+ // event that we're going to be cancelling (see #2804)
691
+ setTimeout(function() {
692
+ // handle $(el).dialog().dialog('close') (see #4065)
693
+ if ($.ui.dialog.overlay.instances.length) {
694
+ $(document).bind($.ui.dialog.overlay.events, function(event) {
695
+ // stop events if the z-index of the target is < the z-index of the overlay
696
+ return ($(event.target).zIndex() >= $.ui.dialog.overlay.maxZ);
697
+ });
698
+ }
699
+ }, 1);
700
+
701
+ // allow closing by pressing the escape key
702
+ $(document).bind('keydown.dialog-overlay', function(event) {
703
+ if (dialog.options.closeOnEscape && event.keyCode &&
704
+ event.keyCode === $.ui.keyCode.ESCAPE) {
705
+
706
+ dialog.close(event);
707
+ event.preventDefault();
708
+ }
709
+ });
710
+
711
+ // handle window resize
712
+ $(window).bind('resize.dialog-overlay', $.ui.dialog.overlay.resize);
713
+ }
714
+
715
+ var $el = (this.oldInstances.pop() || $('<div></div>').addClass('ui-widget-overlay'))
716
+ .appendTo(document.body)
717
+ .css({
718
+ width: this.width(),
719
+ height: this.height()
720
+ });
721
+
722
+ if ($.fn.bgiframe) {
723
+ $el.bgiframe();
724
+ }
725
+
726
+ this.instances.push($el);
727
+ return $el;
728
+ },
729
+
730
+ destroy: function($el) {
731
+ this.oldInstances.push(this.instances.splice($.inArray($el, this.instances), 1)[0]);
732
+
733
+ if (this.instances.length === 0) {
734
+ $([document, window]).unbind('.dialog-overlay');
735
+ }
736
+
737
+ $el.remove();
738
+
739
+ // adjust the maxZ to allow other modal dialogs to continue to work (see #4309)
740
+ var maxZ = 0;
741
+ $.each(this.instances, function() {
742
+ maxZ = Math.max(maxZ, this.css('z-index'));
743
+ });
744
+ this.maxZ = maxZ;
745
+ },
746
+
747
+ height: function() {
748
+ var scrollHeight,
749
+ offsetHeight;
750
+ // handle IE 6
751
+ if ($.browser.msie && $.browser.version < 7) {
752
+ scrollHeight = Math.max(
753
+ document.documentElement.scrollHeight,
754
+ document.body.scrollHeight
755
+ );
756
+ offsetHeight = Math.max(
757
+ document.documentElement.offsetHeight,
758
+ document.body.offsetHeight
759
+ );
760
+
761
+ if (scrollHeight < offsetHeight) {
762
+ return $(window).height() + 'px';
763
+ } else {
764
+ return scrollHeight + 'px';
765
+ }
766
+ // handle "good" browsers
767
+ } else {
768
+ return $(document).height() + 'px';
769
+ }
770
+ },
771
+
772
+ width: function() {
773
+ var scrollWidth,
774
+ offsetWidth;
775
+ // handle IE 6
776
+ if ($.browser.msie && $.browser.version < 7) {
777
+ scrollWidth = Math.max(
778
+ document.documentElement.scrollWidth,
779
+ document.body.scrollWidth
780
+ );
781
+ offsetWidth = Math.max(
782
+ document.documentElement.offsetWidth,
783
+ document.body.offsetWidth
784
+ );
785
+
786
+ if (scrollWidth < offsetWidth) {
787
+ return $(window).width() + 'px';
788
+ } else {
789
+ return scrollWidth + 'px';
790
+ }
791
+ // handle "good" browsers
792
+ } else {
793
+ return $(document).width() + 'px';
794
+ }
795
+ },
796
+
797
+ resize: function() {
798
+ /* If the dialog is draggable and the user drags it past the
799
+ * right edge of the window, the document becomes wider so we
800
+ * need to stretch the overlay. If the user then drags the
801
+ * dialog back to the left, the document will become narrower,
802
+ * so we need to shrink the overlay to the appropriate size.
803
+ * This is handled by shrinking the overlay before setting it
804
+ * to the full document size.
805
+ */
806
+ var $overlays = $([]);
807
+ $.each($.ui.dialog.overlay.instances, function() {
808
+ $overlays = $overlays.add(this);
809
+ });
810
+
811
+ $overlays.css({
812
+ width: 0,
813
+ height: 0
814
+ }).css({
815
+ width: $.ui.dialog.overlay.width(),
816
+ height: $.ui.dialog.overlay.height()
817
+ });
818
+ }
819
+ });
820
+
821
+ $.extend($.ui.dialog.overlay.prototype, {
822
+ destroy: function() {
823
+ $.ui.dialog.overlay.destroy(this.$el);
824
+ }
825
+ });
826
+
827
+ }(jQuery));
js/jquery.ui.js ADDED
@@ -0,0 +1,401 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /*!
2
+ * jQuery UI 1.8.6
3
+ *
4
+ * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
5
+ * Dual licensed under the MIT or GPL Version 2 licenses.
6
+ * http://jquery.org/license
7
+ *
8
+ * http://docs.jquery.com/UI
9
+ */
10
+ (function(b,c){function f(g){return!b(g).parents().andSelf().filter(function(){return b.curCSS(this,"visibility")==="hidden"||b.expr.filters.hidden(this)}).length}b.ui=b.ui||{};if(!b.ui.version){b.extend(b.ui,{version:"1.8.6",keyCode:{ALT:18,BACKSPACE:8,CAPS_LOCK:20,COMMA:188,COMMAND:91,COMMAND_LEFT:91,COMMAND_RIGHT:93,CONTROL:17,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,INSERT:45,LEFT:37,MENU:93,NUMPAD_ADD:107,NUMPAD_DECIMAL:110,NUMPAD_DIVIDE:111,NUMPAD_ENTER:108,NUMPAD_MULTIPLY:106,
11
+ NUMPAD_SUBTRACT:109,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SHIFT:16,SPACE:32,TAB:9,UP:38,WINDOWS:91}});b.fn.extend({_focus:b.fn.focus,focus:function(g,e){return typeof g==="number"?this.each(function(){var a=this;setTimeout(function(){b(a).focus();e&&e.call(a)},g)}):this._focus.apply(this,arguments)},scrollParent:function(){var g;g=b.browser.msie&&/(static|relative)/.test(this.css("position"))||/absolute/.test(this.css("position"))?this.parents().filter(function(){return/(relative|absolute|fixed)/.test(b.curCSS(this,
12
+ "position",1))&&/(auto|scroll)/.test(b.curCSS(this,"overflow",1)+b.curCSS(this,"overflow-y",1)+b.curCSS(this,"overflow-x",1))}).eq(0):this.parents().filter(function(){return/(auto|scroll)/.test(b.curCSS(this,"overflow",1)+b.curCSS(this,"overflow-y",1)+b.curCSS(this,"overflow-x",1))}).eq(0);return/fixed/.test(this.css("position"))||!g.length?b(document):g},zIndex:function(g){if(g!==c)return this.css("zIndex",g);if(this.length){g=b(this[0]);for(var e;g.length&&g[0]!==document;){e=g.css("position");
13
+ if(e==="absolute"||e==="relative"||e==="fixed"){e=parseInt(g.css("zIndex"),10);if(!isNaN(e)&&e!==0)return e}g=g.parent()}}return 0},disableSelection:function(){return this.bind((b.support.selectstart?"selectstart":"mousedown")+".ui-disableSelection",function(g){g.preventDefault()})},enableSelection:function(){return this.unbind(".ui-disableSelection")}});b.each(["Width","Height"],function(g,e){function a(j,n,q,l){b.each(d,function(){n-=parseFloat(b.curCSS(j,"padding"+this,true))||0;if(q)n-=parseFloat(b.curCSS(j,
14
+ "border"+this+"Width",true))||0;if(l)n-=parseFloat(b.curCSS(j,"margin"+this,true))||0});return n}var d=e==="Width"?["Left","Right"]:["Top","Bottom"],h=e.toLowerCase(),i={innerWidth:b.fn.innerWidth,innerHeight:b.fn.innerHeight,outerWidth:b.fn.outerWidth,outerHeight:b.fn.outerHeight};b.fn["inner"+e]=function(j){if(j===c)return i["inner"+e].call(this);return this.each(function(){b(this).css(h,a(this,j)+"px")})};b.fn["outer"+e]=function(j,n){if(typeof j!=="number")return i["outer"+e].call(this,j);return this.each(function(){b(this).css(h,
15
+ a(this,j,true,n)+"px")})}});b.extend(b.expr[":"],{data:function(g,e,a){return!!b.data(g,a[3])},focusable:function(g){var e=g.nodeName.toLowerCase(),a=b.attr(g,"tabindex");if("area"===e){e=g.parentNode;a=e.name;if(!g.href||!a||e.nodeName.toLowerCase()!=="map")return false;g=b("img[usemap=#"+a+"]")[0];return!!g&&f(g)}return(/input|select|textarea|button|object/.test(e)?!g.disabled:"a"==e?g.href||!isNaN(a):!isNaN(a))&&f(g)},tabbable:function(g){var e=b.attr(g,"tabindex");return(isNaN(e)||e>=0)&&b(g).is(":focusable")}});
16
+ b(function(){var g=document.body,e=g.appendChild(e=document.createElement("div"));b.extend(e.style,{minHeight:"100px",height:"auto",padding:0,borderWidth:0});b.support.minHeight=e.offsetHeight===100;b.support.selectstart="onselectstart"in e;g.removeChild(e).style.display="none"});b.extend(b.ui,{plugin:{add:function(g,e,a){g=b.ui[g].prototype;for(var d in a){g.plugins[d]=g.plugins[d]||[];g.plugins[d].push([e,a[d]])}},call:function(g,e,a){if((e=g.plugins[e])&&g.element[0].parentNode)for(var d=0;d<e.length;d++)g.options[e[d][0]]&&
17
+ e[d][1].apply(g.element,a)}},contains:function(g,e){return document.compareDocumentPosition?g.compareDocumentPosition(e)&16:g!==e&&g.contains(e)},hasScroll:function(g,e){if(b(g).css("overflow")==="hidden")return false;e=e&&e==="left"?"scrollLeft":"scrollTop";var a=false;if(g[e]>0)return true;g[e]=1;a=g[e]>0;g[e]=0;return a},isOverAxis:function(g,e,a){return g>e&&g<e+a},isOver:function(g,e,a,d,h,i){return b.ui.isOverAxis(g,a,h)&&b.ui.isOverAxis(e,d,i)}})}})(jQuery);
18
+ (function(b,c){if(b.cleanData){var f=b.cleanData;b.cleanData=function(e){for(var a=0,d;(d=e[a])!=null;a++)b(d).triggerHandler("remove");f(e)}}else{var g=b.fn.remove;b.fn.remove=function(e,a){return this.each(function(){if(!a)if(!e||b.filter(e,[this]).length)b("*",this).add([this]).each(function(){b(this).triggerHandler("remove")});return g.call(b(this),e,a)})}}b.widget=function(e,a,d){var h=e.split(".")[0],i;e=e.split(".")[1];i=h+"-"+e;if(!d){d=a;a=b.Widget}b.expr[":"][i]=function(j){return!!b.data(j,
19
+ e)};b[h]=b[h]||{};b[h][e]=function(j,n){arguments.length&&this._createWidget(j,n)};a=new a;a.options=b.extend(true,{},a.options);b[h][e].prototype=b.extend(true,a,{namespace:h,widgetName:e,widgetEventPrefix:b[h][e].prototype.widgetEventPrefix||e,widgetBaseClass:i},d);b.widget.bridge(e,b[h][e])};b.widget.bridge=function(e,a){b.fn[e]=function(d){var h=typeof d==="string",i=Array.prototype.slice.call(arguments,1),j=this;d=!h&&i.length?b.extend.apply(null,[true,d].concat(i)):d;if(h&&d.charAt(0)==="_")return j;
20
+ h?this.each(function(){var n=b.data(this,e),q=n&&b.isFunction(n[d])?n[d].apply(n,i):n;if(q!==n&&q!==c){j=q;return false}}):this.each(function(){var n=b.data(this,e);n?n.option(d||{})._init():b.data(this,e,new a(d,this))});return j}};b.Widget=function(e,a){arguments.length&&this._createWidget(e,a)};b.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",options:{disabled:false},_createWidget:function(e,a){b.data(a,this.widgetName,this);this.element=b(a);this.options=b.extend(true,{},this.options,
21
+ this._getCreateOptions(),e);var d=this;this.element.bind("remove."+this.widgetName,function(){d.destroy()});this._create();this._trigger("create");this._init()},_getCreateOptions:function(){return b.metadata&&b.metadata.get(this.element[0])[this.widgetName]},_create:function(){},_init:function(){},destroy:function(){this.element.unbind("."+this.widgetName).removeData(this.widgetName);this.widget().unbind("."+this.widgetName).removeAttr("aria-disabled").removeClass(this.widgetBaseClass+"-disabled ui-state-disabled")},
22
+ widget:function(){return this.element},option:function(e,a){var d=e;if(arguments.length===0)return b.extend({},this.options);if(typeof e==="string"){if(a===c)return this.options[e];d={};d[e]=a}this._setOptions(d);return this},_setOptions:function(e){var a=this;b.each(e,function(d,h){a._setOption(d,h)});return this},_setOption:function(e,a){this.options[e]=a;if(e==="disabled")this.widget()[a?"addClass":"removeClass"](this.widgetBaseClass+"-disabled ui-state-disabled").attr("aria-disabled",a);return this},
23
+ enable:function(){return this._setOption("disabled",false)},disable:function(){return this._setOption("disabled",true)},_trigger:function(e,a,d){var h=this.options[e];a=b.Event(a);a.type=(e===this.widgetEventPrefix?e:this.widgetEventPrefix+e).toLowerCase();d=d||{};if(a.originalEvent){e=b.event.props.length;for(var i;e;){i=b.event.props[--e];a[i]=a.originalEvent[i]}}this.element.trigger(a,d);return!(b.isFunction(h)&&h.call(this.element[0],a,d)===false||a.isDefaultPrevented())}}})(jQuery);
24
+ (function(b){b.widget("ui.mouse",{options:{cancel:":input,option",distance:1,delay:0},_mouseInit:function(){var c=this;this.element.bind("mousedown."+this.widgetName,function(f){return c._mouseDown(f)}).bind("click."+this.widgetName,function(f){if(c._preventClickEvent){c._preventClickEvent=false;f.stopImmediatePropagation();return false}});this.started=false},_mouseDestroy:function(){this.element.unbind("."+this.widgetName)},_mouseDown:function(c){c.originalEvent=c.originalEvent||{};if(!c.originalEvent.mouseHandled){this._mouseStarted&&
25
+ this._mouseUp(c);this._mouseDownEvent=c;var f=this,g=c.which==1,e=typeof this.options.cancel=="string"?b(c.target).parents().add(c.target).filter(this.options.cancel).length:false;if(!g||e||!this._mouseCapture(c))return true;this.mouseDelayMet=!this.options.delay;if(!this.mouseDelayMet)this._mouseDelayTimer=setTimeout(function(){f.mouseDelayMet=true},this.options.delay);if(this._mouseDistanceMet(c)&&this._mouseDelayMet(c)){this._mouseStarted=this._mouseStart(c)!==false;if(!this._mouseStarted){c.preventDefault();
26
+ return true}}this._mouseMoveDelegate=function(a){return f._mouseMove(a)};this._mouseUpDelegate=function(a){return f._mouseUp(a)};b(document).bind("mousemove."+this.widgetName,this._mouseMoveDelegate).bind("mouseup."+this.widgetName,this._mouseUpDelegate);c.preventDefault();return c.originalEvent.mouseHandled=true}},_mouseMove:function(c){if(b.browser.msie&&!(document.documentMode>=9)&&!c.button)return this._mouseUp(c);if(this._mouseStarted){this._mouseDrag(c);return c.preventDefault()}if(this._mouseDistanceMet(c)&&
27
+ this._mouseDelayMet(c))(this._mouseStarted=this._mouseStart(this._mouseDownEvent,c)!==false)?this._mouseDrag(c):this._mouseUp(c);return!this._mouseStarted},_mouseUp:function(c){b(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate);if(this._mouseStarted){this._mouseStarted=false;this._preventClickEvent=c.target==this._mouseDownEvent.target;this._mouseStop(c)}return false},_mouseDistanceMet:function(c){return Math.max(Math.abs(this._mouseDownEvent.pageX-
28
+ c.pageX),Math.abs(this._mouseDownEvent.pageY-c.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return true}})})(jQuery);
29
+ (function(b){b.widget("ui.draggable",b.ui.mouse,{widgetEventPrefix:"drag",options:{addClasses:true,appendTo:"parent",axis:false,connectToSortable:false,containment:false,cursor:"auto",cursorAt:false,grid:false,handle:false,helper:"original",iframeFix:false,opacity:false,refreshPositions:false,revert:false,revertDuration:500,scope:"default",scroll:true,scrollSensitivity:20,scrollSpeed:20,snap:false,snapMode:"both",snapTolerance:20,stack:false,zIndex:false},_create:function(){if(this.options.helper==
30
+ "original"&&!/^(?:r|a|f)/.test(this.element.css("position")))this.element[0].style.position="relative";this.options.addClasses&&this.element.addClass("ui-draggable");this.options.disabled&&this.element.addClass("ui-draggable-disabled");this._mouseInit()},destroy:function(){if(this.element.data("draggable")){this.element.removeData("draggable").unbind(".draggable").removeClass("ui-draggable ui-draggable-dragging ui-draggable-disabled");this._mouseDestroy();return this}},_mouseCapture:function(c){var f=
31
+ this.options;if(this.helper||f.disabled||b(c.target).is(".ui-resizable-handle"))return false;this.handle=this._getHandle(c);if(!this.handle)return false;return true},_mouseStart:function(c){var f=this.options;this.helper=this._createHelper(c);this._cacheHelperProportions();if(b.ui.ddmanager)b.ui.ddmanager.current=this;this._cacheMargins();this.cssPosition=this.helper.css("position");this.scrollParent=this.helper.scrollParent();this.offset=this.positionAbs=this.element.offset();this.offset={top:this.offset.top-
32
+ this.margins.top,left:this.offset.left-this.margins.left};b.extend(this.offset,{click:{left:c.pageX-this.offset.left,top:c.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()});this.originalPosition=this.position=this._generatePosition(c);this.originalPageX=c.pageX;this.originalPageY=c.pageY;f.cursorAt&&this._adjustOffsetFromHelper(f.cursorAt);f.containment&&this._setContainment();if(this._trigger("start",c)===false){this._clear();return false}this._cacheHelperProportions();
33
+ b.ui.ddmanager&&!f.dropBehaviour&&b.ui.ddmanager.prepareOffsets(this,c);this.helper.addClass("ui-draggable-dragging");this._mouseDrag(c,true);return true},_mouseDrag:function(c,f){this.position=this._generatePosition(c);this.positionAbs=this._convertPositionTo("absolute");if(!f){f=this._uiHash();if(this._trigger("drag",c,f)===false){this._mouseUp({});return false}this.position=f.position}if(!this.options.axis||this.options.axis!="y")this.helper[0].style.left=this.position.left+"px";if(!this.options.axis||
34
+ this.options.axis!="x")this.helper[0].style.top=this.position.top+"px";b.ui.ddmanager&&b.ui.ddmanager.drag(this,c);return false},_mouseStop:function(c){var f=false;if(b.ui.ddmanager&&!this.options.dropBehaviour)f=b.ui.ddmanager.drop(this,c);if(this.dropped){f=this.dropped;this.dropped=false}if(!this.element[0]||!this.element[0].parentNode)return false;if(this.options.revert=="invalid"&&!f||this.options.revert=="valid"&&f||this.options.revert===true||b.isFunction(this.options.revert)&&this.options.revert.call(this.element,
35
+ f)){var g=this;b(this.helper).animate(this.originalPosition,parseInt(this.options.revertDuration,10),function(){g._trigger("stop",c)!==false&&g._clear()})}else this._trigger("stop",c)!==false&&this._clear();return false},cancel:function(){this.helper.is(".ui-draggable-dragging")?this._mouseUp({}):this._clear();return this},_getHandle:function(c){var f=!this.options.handle||!b(this.options.handle,this.element).length?true:false;b(this.options.handle,this.element).find("*").andSelf().each(function(){if(this==
36
+ c.target)f=true});return f},_createHelper:function(c){var f=this.options;c=b.isFunction(f.helper)?b(f.helper.apply(this.element[0],[c])):f.helper=="clone"?this.element.clone():this.element;c.parents("body").length||c.appendTo(f.appendTo=="parent"?this.element[0].parentNode:f.appendTo);c[0]!=this.element[0]&&!/(fixed|absolute)/.test(c.css("position"))&&c.css("position","absolute");return c},_adjustOffsetFromHelper:function(c){if(typeof c=="string")c=c.split(" ");if(b.isArray(c))c={left:+c[0],top:+c[1]||
37
+ 0};if("left"in c)this.offset.click.left=c.left+this.margins.left;if("right"in c)this.offset.click.left=this.helperProportions.width-c.right+this.margins.left;if("top"in c)this.offset.click.top=c.top+this.margins.top;if("bottom"in c)this.offset.click.top=this.helperProportions.height-c.bottom+this.margins.top},_getParentOffset:function(){this.offsetParent=this.helper.offsetParent();var c=this.offsetParent.offset();if(this.cssPosition=="absolute"&&this.scrollParent[0]!=document&&b.ui.contains(this.scrollParent[0],
38
+ this.offsetParent[0])){c.left+=this.scrollParent.scrollLeft();c.top+=this.scrollParent.scrollTop()}if(this.offsetParent[0]==document.body||this.offsetParent[0].tagName&&this.offsetParent[0].tagName.toLowerCase()=="html"&&b.browser.msie)c={top:0,left:0};return{top:c.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:c.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if(this.cssPosition=="relative"){var c=this.element.position();return{top:c.top-
39
+ (parseInt(this.helper.css("top"),10)||0)+this.scrollParent.scrollTop(),left:c.left-(parseInt(this.helper.css("left"),10)||0)+this.scrollParent.scrollLeft()}}else return{top:0,left:0}},_cacheMargins:function(){this.margins={left:parseInt(this.element.css("marginLeft"),10)||0,top:parseInt(this.element.css("marginTop"),10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var c=this.options;if(c.containment==
40
+ "parent")c.containment=this.helper[0].parentNode;if(c.containment=="document"||c.containment=="window")this.containment=[0-this.offset.relative.left-this.offset.parent.left,0-this.offset.relative.top-this.offset.parent.top,b(c.containment=="document"?document:window).width()-this.helperProportions.width-this.margins.left,(b(c.containment=="document"?document:window).height()||document.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top];if(!/^(document|window|parent)$/.test(c.containment)&&
41
+ c.containment.constructor!=Array){var f=b(c.containment)[0];if(f){c=b(c.containment).offset();var g=b(f).css("overflow")!="hidden";this.containment=[c.left+(parseInt(b(f).css("borderLeftWidth"),10)||0)+(parseInt(b(f).css("paddingLeft"),10)||0)-this.margins.left,c.top+(parseInt(b(f).css("borderTopWidth"),10)||0)+(parseInt(b(f).css("paddingTop"),10)||0)-this.margins.top,c.left+(g?Math.max(f.scrollWidth,f.offsetWidth):f.offsetWidth)-(parseInt(b(f).css("borderLeftWidth"),10)||0)-(parseInt(b(f).css("paddingRight"),
42
+ 10)||0)-this.helperProportions.width-this.margins.left,c.top+(g?Math.max(f.scrollHeight,f.offsetHeight):f.offsetHeight)-(parseInt(b(f).css("borderTopWidth"),10)||0)-(parseInt(b(f).css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top]}}else if(c.containment.constructor==Array)this.containment=c.containment},_convertPositionTo:function(c,f){if(!f)f=this.position;c=c=="absolute"?1:-1;var g=this.cssPosition=="absolute"&&!(this.scrollParent[0]!=document&&b.ui.contains(this.scrollParent[0],
43
+ this.offsetParent[0]))?this.offsetParent:this.scrollParent,e=/(html|body)/i.test(g[0].tagName);return{top:f.top+this.offset.relative.top*c+this.offset.parent.top*c-(b.browser.safari&&b.browser.version<526&&this.cssPosition=="fixed"?0:(this.cssPosition=="fixed"?-this.scrollParent.scrollTop():e?0:g.scrollTop())*c),left:f.left+this.offset.relative.left*c+this.offset.parent.left*c-(b.browser.safari&&b.browser.version<526&&this.cssPosition=="fixed"?0:(this.cssPosition=="fixed"?-this.scrollParent.scrollLeft():
44
+ e?0:g.scrollLeft())*c)}},_generatePosition:function(c){var f=this.options,g=this.cssPosition=="absolute"&&!(this.scrollParent[0]!=document&&b.ui.contains(this.scrollParent[0],this.offsetParent[0]))?this.offsetParent:this.scrollParent,e=/(html|body)/i.test(g[0].tagName),a=c.pageX,d=c.pageY;if(this.originalPosition){if(this.containment){if(c.pageX-this.offset.click.left<this.containment[0])a=this.containment[0]+this.offset.click.left;if(c.pageY-this.offset.click.top<this.containment[1])d=this.containment[1]+
45
+ this.offset.click.top;if(c.pageX-this.offset.click.left>this.containment[2])a=this.containment[2]+this.offset.click.left;if(c.pageY-this.offset.click.top>this.containment[3])d=this.containment[3]+this.offset.click.top}if(f.grid){d=this.originalPageY+Math.round((d-this.originalPageY)/f.grid[1])*f.grid[1];d=this.containment?!(d-this.offset.click.top<this.containment[1]||d-this.offset.click.top>this.containment[3])?d:!(d-this.offset.click.top<this.containment[1])?d-f.grid[1]:d+f.grid[1]:d;a=this.originalPageX+
46
+ Math.round((a-this.originalPageX)/f.grid[0])*f.grid[0];a=this.containment?!(a-this.offset.click.left<this.containment[0]||a-this.offset.click.left>this.containment[2])?a:!(a-this.offset.click.left<this.containment[0])?a-f.grid[0]:a+f.grid[0]:a}}return{top:d-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+(b.browser.safari&&b.browser.version<526&&this.cssPosition=="fixed"?0:this.cssPosition=="fixed"?-this.scrollParent.scrollTop():e?0:g.scrollTop()),left:a-this.offset.click.left-
47
+ this.offset.relative.left-this.offset.parent.left+(b.browser.safari&&b.browser.version<526&&this.cssPosition=="fixed"?0:this.cssPosition=="fixed"?-this.scrollParent.scrollLeft():e?0:g.scrollLeft())}},_clear:function(){this.helper.removeClass("ui-draggable-dragging");this.helper[0]!=this.element[0]&&!this.cancelHelperRemoval&&this.helper.remove();this.helper=null;this.cancelHelperRemoval=false},_trigger:function(c,f,g){g=g||this._uiHash();b.ui.plugin.call(this,c,[f,g]);if(c=="drag")this.positionAbs=
48
+ this._convertPositionTo("absolute");return b.Widget.prototype._trigger.call(this,c,f,g)},plugins:{},_uiHash:function(){return{helper:this.helper,position:this.position,originalPosition:this.originalPosition,offset:this.positionAbs}}});b.extend(b.ui.draggable,{version:"1.8.6"});b.ui.plugin.add("draggable","connectToSortable",{start:function(c,f){var g=b(this).data("draggable"),e=g.options,a=b.extend({},f,{item:g.element});g.sortables=[];b(e.connectToSortable).each(function(){var d=b.data(this,"sortable");
49
+ if(d&&!d.options.disabled){g.sortables.push({instance:d,shouldRevert:d.options.revert});d._refreshItems();d._trigger("activate",c,a)}})},stop:function(c,f){var g=b(this).data("draggable"),e=b.extend({},f,{item:g.element});b.each(g.sortables,function(){if(this.instance.isOver){this.instance.isOver=0;g.cancelHelperRemoval=true;this.instance.cancelHelperRemoval=false;if(this.shouldRevert)this.instance.options.revert=true;this.instance._mouseStop(c);this.instance.options.helper=this.instance.options._helper;
50
+ g.options.helper=="original"&&this.instance.currentItem.css({top:"auto",left:"auto"})}else{this.instance.cancelHelperRemoval=false;this.instance._trigger("deactivate",c,e)}})},drag:function(c,f){var g=b(this).data("draggable"),e=this;b.each(g.sortables,function(){this.instance.positionAbs=g.positionAbs;this.instance.helperProportions=g.helperProportions;this.instance.offset.click=g.offset.click;if(this.instance._intersectsWith(this.instance.containerCache)){if(!this.instance.isOver){this.instance.isOver=
51
+ 1;this.instance.currentItem=b(e).clone().appendTo(this.instance.element).data("sortable-item",true);this.instance.options._helper=this.instance.options.helper;this.instance.options.helper=function(){return f.helper[0]};c.target=this.instance.currentItem[0];this.instance._mouseCapture(c,true);this.instance._mouseStart(c,true,true);this.instance.offset.click.top=g.offset.click.top;this.instance.offset.click.left=g.offset.click.left;this.instance.offset.parent.left-=g.offset.parent.left-this.instance.offset.parent.left;
52
+ this.instance.offset.parent.top-=g.offset.parent.top-this.instance.offset.parent.top;g._trigger("toSortable",c);g.dropped=this.instance.element;g.currentItem=g.element;this.instance.fromOutside=g}this.instance.currentItem&&this.instance._mouseDrag(c)}else if(this.instance.isOver){this.instance.isOver=0;this.instance.cancelHelperRemoval=true;this.instance.options.revert=false;this.instance._trigger("out",c,this.instance._uiHash(this.instance));this.instance._mouseStop(c,true);this.instance.options.helper=
53
+ this.instance.options._helper;this.instance.currentItem.remove();this.instance.placeholder&&this.instance.placeholder.remove();g._trigger("fromSortable",c);g.dropped=false}})}});b.ui.plugin.add("draggable","cursor",{start:function(){var c=b("body"),f=b(this).data("draggable").options;if(c.css("cursor"))f._cursor=c.css("cursor");c.css("cursor",f.cursor)},stop:function(){var c=b(this).data("draggable").options;c._cursor&&b("body").css("cursor",c._cursor)}});b.ui.plugin.add("draggable","iframeFix",{start:function(){var c=
54
+ b(this).data("draggable").options;b(c.iframeFix===true?"iframe":c.iframeFix).each(function(){b('<div class="ui-draggable-iframeFix" style="background: #fff;"></div>').css({width:this.offsetWidth+"px",height:this.offsetHeight+"px",position:"absolute",opacity:"0.001",zIndex:1E3}).css(b(this).offset()).appendTo("body")})},stop:function(){b("div.ui-draggable-iframeFix").each(function(){this.parentNode.removeChild(this)})}});b.ui.plugin.add("draggable","opacity",{start:function(c,f){c=b(f.helper);f=b(this).data("draggable").options;
55
+ if(c.css("opacity"))f._opacity=c.css("opacity");c.css("opacity",f.opacity)},stop:function(c,f){c=b(this).data("draggable").options;c._opacity&&b(f.helper).css("opacity",c._opacity)}});b.ui.plugin.add("draggable","scroll",{start:function(){var c=b(this).data("draggable");if(c.scrollParent[0]!=document&&c.scrollParent[0].tagName!="HTML")c.overflowOffset=c.scrollParent.offset()},drag:function(c){var f=b(this).data("draggable"),g=f.options,e=false;if(f.scrollParent[0]!=document&&f.scrollParent[0].tagName!=
56
+ "HTML"){if(!g.axis||g.axis!="x")if(f.overflowOffset.top+f.scrollParent[0].offsetHeight-c.pageY<g.scrollSensitivity)f.scrollParent[0].scrollTop=e=f.scrollParent[0].scrollTop+g.scrollSpeed;else if(c.pageY-f.overflowOffset.top<g.scrollSensitivity)f.scrollParent[0].scrollTop=e=f.scrollParent[0].scrollTop-g.scrollSpeed;if(!g.axis||g.axis!="y")if(f.overflowOffset.left+f.scrollParent[0].offsetWidth-c.pageX<g.scrollSensitivity)f.scrollParent[0].scrollLeft=e=f.scrollParent[0].scrollLeft+g.scrollSpeed;else if(c.pageX-
57
+ f.overflowOffset.left<g.scrollSensitivity)f.scrollParent[0].scrollLeft=e=f.scrollParent[0].scrollLeft-g.scrollSpeed}else{if(!g.axis||g.axis!="x")if(c.pageY-b(document).scrollTop()<g.scrollSensitivity)e=b(document).scrollTop(b(document).scrollTop()-g.scrollSpeed);else if(b(window).height()-(c.pageY-b(document).scrollTop())<g.scrollSensitivity)e=b(document).scrollTop(b(document).scrollTop()+g.scrollSpeed);if(!g.axis||g.axis!="y")if(c.pageX-b(document).scrollLeft()<g.scrollSensitivity)e=b(document).scrollLeft(b(document).scrollLeft()-
58
+ g.scrollSpeed);else if(b(window).width()-(c.pageX-b(document).scrollLeft())<g.scrollSensitivity)e=b(document).scrollLeft(b(document).scrollLeft()+g.scrollSpeed)}e!==false&&b.ui.ddmanager&&!g.dropBehaviour&&b.ui.ddmanager.prepareOffsets(f,c)}});b.ui.plugin.add("draggable","snap",{start:function(){var c=b(this).data("draggable"),f=c.options;c.snapElements=[];b(f.snap.constructor!=String?f.snap.items||":data(draggable)":f.snap).each(function(){var g=b(this),e=g.offset();this!=c.element[0]&&c.snapElements.push({item:this,
59
+ width:g.outerWidth(),height:g.outerHeight(),top:e.top,left:e.left})})},drag:function(c,f){for(var g=b(this).data("draggable"),e=g.options,a=e.snapTolerance,d=f.offset.left,h=d+g.helperProportions.width,i=f.offset.top,j=i+g.helperProportions.height,n=g.snapElements.length-1;n>=0;n--){var q=g.snapElements[n].left,l=q+g.snapElements[n].width,k=g.snapElements[n].top,m=k+g.snapElements[n].height;if(q-a<d&&d<l+a&&k-a<i&&i<m+a||q-a<d&&d<l+a&&k-a<j&&j<m+a||q-a<h&&h<l+a&&k-a<i&&i<m+a||q-a<h&&h<l+a&&k-a<j&&
60
+ j<m+a){if(e.snapMode!="inner"){var o=Math.abs(k-j)<=a,p=Math.abs(m-i)<=a,s=Math.abs(q-h)<=a,r=Math.abs(l-d)<=a;if(o)f.position.top=g._convertPositionTo("relative",{top:k-g.helperProportions.height,left:0}).top-g.margins.top;if(p)f.position.top=g._convertPositionTo("relative",{top:m,left:0}).top-g.margins.top;if(s)f.position.left=g._convertPositionTo("relative",{top:0,left:q-g.helperProportions.width}).left-g.margins.left;if(r)f.position.left=g._convertPositionTo("relative",{top:0,left:l}).left-g.margins.left}var u=
61
+ o||p||s||r;if(e.snapMode!="outer"){o=Math.abs(k-i)<=a;p=Math.abs(m-j)<=a;s=Math.abs(q-d)<=a;r=Math.abs(l-h)<=a;if(o)f.position.top=g._convertPositionTo("relative",{top:k,left:0}).top-g.margins.top;if(p)f.position.top=g._convertPositionTo("relative",{top:m-g.helperProportions.height,left:0}).top-g.margins.top;if(s)f.position.left=g._convertPositionTo("relative",{top:0,left:q}).left-g.margins.left;if(r)f.position.left=g._convertPositionTo("relative",{top:0,left:l-g.helperProportions.width}).left-g.margins.left}if(!g.snapElements[n].snapping&&
62
+ (o||p||s||r||u))g.options.snap.snap&&g.options.snap.snap.call(g.element,c,b.extend(g._uiHash(),{snapItem:g.snapElements[n].item}));g.snapElements[n].snapping=o||p||s||r||u}else{g.snapElements[n].snapping&&g.options.snap.release&&g.options.snap.release.call(g.element,c,b.extend(g._uiHash(),{snapItem:g.snapElements[n].item}));g.snapElements[n].snapping=false}}}});b.ui.plugin.add("draggable","stack",{start:function(){var c=b(this).data("draggable").options;c=b.makeArray(b(c.stack)).sort(function(g,e){return(parseInt(b(g).css("zIndex"),
63
+ 10)||0)-(parseInt(b(e).css("zIndex"),10)||0)});if(c.length){var f=parseInt(c[0].style.zIndex)||0;b(c).each(function(g){this.style.zIndex=f+g});this[0].style.zIndex=f+c.length}}});b.ui.plugin.add("draggable","zIndex",{start:function(c,f){c=b(f.helper);f=b(this).data("draggable").options;if(c.css("zIndex"))f._zIndex=c.css("zIndex");c.css("zIndex",f.zIndex)},stop:function(c,f){c=b(this).data("draggable").options;c._zIndex&&b(f.helper).css("zIndex",c._zIndex)}})})(jQuery);
64
+ (function(b){b.widget("ui.droppable",{widgetEventPrefix:"drop",options:{accept:"*",activeClass:false,addClasses:true,greedy:false,hoverClass:false,scope:"default",tolerance:"intersect"},_create:function(){var c=this.options,f=c.accept;this.isover=0;this.isout=1;this.accept=b.isFunction(f)?f:function(g){return g.is(f)};this.proportions={width:this.element[0].offsetWidth,height:this.element[0].offsetHeight};b.ui.ddmanager.droppables[c.scope]=b.ui.ddmanager.droppables[c.scope]||[];b.ui.ddmanager.droppables[c.scope].push(this);
65
+ c.addClasses&&this.element.addClass("ui-droppable")},destroy:function(){for(var c=b.ui.ddmanager.droppables[this.options.scope],f=0;f<c.length;f++)c[f]==this&&c.splice(f,1);this.element.removeClass("ui-droppable ui-droppable-disabled").removeData("droppable").unbind(".droppable");return this},_setOption:function(c,f){if(c=="accept")this.accept=b.isFunction(f)?f:function(g){return g.is(f)};b.Widget.prototype._setOption.apply(this,arguments)},_activate:function(c){var f=b.ui.ddmanager.current;this.options.activeClass&&
66
+ this.element.addClass(this.options.activeClass);f&&this._trigger("activate",c,this.ui(f))},_deactivate:function(c){var f=b.ui.ddmanager.current;this.options.activeClass&&this.element.removeClass(this.options.activeClass);f&&this._trigger("deactivate",c,this.ui(f))},_over:function(c){var f=b.ui.ddmanager.current;if(!(!f||(f.currentItem||f.element)[0]==this.element[0]))if(this.accept.call(this.element[0],f.currentItem||f.element)){this.options.hoverClass&&this.element.addClass(this.options.hoverClass);
67
+ this._trigger("over",c,this.ui(f))}},_out:function(c){var f=b.ui.ddmanager.current;if(!(!f||(f.currentItem||f.element)[0]==this.element[0]))if(this.accept.call(this.element[0],f.currentItem||f.element)){this.options.hoverClass&&this.element.removeClass(this.options.hoverClass);this._trigger("out",c,this.ui(f))}},_drop:function(c,f){var g=f||b.ui.ddmanager.current;if(!g||(g.currentItem||g.element)[0]==this.element[0])return false;var e=false;this.element.find(":data(droppable)").not(".ui-draggable-dragging").each(function(){var a=
68
+ b.data(this,"droppable");if(a.options.greedy&&!a.options.disabled&&a.options.scope==g.options.scope&&a.accept.call(a.element[0],g.currentItem||g.element)&&b.ui.intersect(g,b.extend(a,{offset:a.element.offset()}),a.options.tolerance)){e=true;return false}});if(e)return false;if(this.accept.call(this.element[0],g.currentItem||g.element)){this.options.activeClass&&this.element.removeClass(this.options.activeClass);this.options.hoverClass&&this.element.removeClass(this.options.hoverClass);this._trigger("drop",
69
+ c,this.ui(g));return this.element}return false},ui:function(c){return{draggable:c.currentItem||c.element,helper:c.helper,position:c.position,offset:c.positionAbs}}});b.extend(b.ui.droppable,{version:"1.8.6"});b.ui.intersect=function(c,f,g){if(!f.offset)return false;var e=(c.positionAbs||c.position.absolute).left,a=e+c.helperProportions.width,d=(c.positionAbs||c.position.absolute).top,h=d+c.helperProportions.height,i=f.offset.left,j=i+f.proportions.width,n=f.offset.top,q=n+f.proportions.height;
70
+ switch(g){case "fit":return i<=e&&a<=j&&n<=d&&h<=q;case "intersect":return i<e+c.helperProportions.width/2&&a-c.helperProportions.width/2<j&&n<d+c.helperProportions.height/2&&h-c.helperProportions.height/2<q;case "pointer":return b.ui.isOver((c.positionAbs||c.position.absolute).top+(c.clickOffset||c.offset.click).top,(c.positionAbs||c.position.absolute).left+(c.clickOffset||c.offset.click).left,n,i,f.proportions.height,f.proportions.width);case "touch":return(d>=n&&d<=q||h>=n&&h<=q||d<n&&h>q)&&(e>=
71
+ i&&e<=j||a>=i&&a<=j||e<i&&a>j);default:return false}};b.ui.ddmanager={current:null,droppables:{"default":[]},prepareOffsets:function(c,f){var g=b.ui.ddmanager.droppables[c.options.scope]||[],e=f?f.type:null,a=(c.currentItem||c.element).find(":data(droppable)").andSelf(),d=0;a:for(;d<g.length;d++)if(!(g[d].options.disabled||c&&!g[d].accept.call(g[d].element[0],c.currentItem||c.element))){for(var h=0;h<a.length;h++)if(a[h]==g[d].element[0]){g[d].proportions.height=0;continue a}g[d].visible=g[d].element.css("display")!=
72
+ "none";if(g[d].visible){g[d].offset=g[d].element.offset();g[d].proportions={width:g[d].element[0].offsetWidth,height:g[d].element[0].offsetHeight};e=="mousedown"&&g[d]._activate.call(g[d],f)}}},drop:function(c,f){var g=false;b.each(b.ui.ddmanager.droppables[c.options.scope]||[],function(){if(this.options){if(!this.options.disabled&&this.visible&&b.ui.intersect(c,this,this.options.tolerance))g=g||this._drop.call(this,f);if(!this.options.disabled&&this.visible&&this.accept.call(this.element[0],c.currentItem||
73
+ c.element)){this.isout=1;this.isover=0;this._deactivate.call(this,f)}}});return g},drag:function(c,f){c.options.refreshPositions&&b.ui.ddmanager.prepareOffsets(c,f);b.each(b.ui.ddmanager.droppables[c.options.scope]||[],function(){if(!(this.options.disabled||this.greedyChild||!this.visible)){var g=b.ui.intersect(c,this,this.options.tolerance);if(g=!g&&this.isover==1?"isout":g&&this.isover==0?"isover":null){var e;if(this.options.greedy){var a=this.element.parents(":data(droppable):eq(0)");if(a.length){e=
74
+ b.data(a[0],"droppable");e.greedyChild=g=="isover"?1:0}}if(e&&g=="isover"){e.isover=0;e.isout=1;e._out.call(e,f)}this[g]=1;this[g=="isout"?"isover":"isout"]=0;this[g=="isover"?"_over":"_out"].call(this,f);if(e&&g=="isout"){e.isout=0;e.isover=1;e._over.call(e,f)}}}})}}})(jQuery);
75
+ (function(b){b.widget("ui.resizable",b.ui.mouse,{widgetEventPrefix:"resize",options:{alsoResize:false,animate:false,animateDuration:"slow",animateEasing:"swing",aspectRatio:false,autoHide:false,containment:false,ghost:false,grid:false,handles:"e,s,se",helper:false,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:1E3},_create:function(){var g=this,e=this.options;this.element.addClass("ui-resizable");b.extend(this,{_aspectRatio:!!e.aspectRatio,aspectRatio:e.aspectRatio,originalElement:this.element,
76
+ _proportionallyResizeElements:[],_helper:e.helper||e.ghost||e.animate?e.helper||"ui-resizable-helper":null});if(this.element[0].nodeName.match(/canvas|textarea|input|select|button|img/i)){/relative/.test(this.element.css("position"))&&b.browser.opera&&this.element.css({position:"relative",top:"auto",left:"auto"});this.element.wrap(b('<div class="ui-wrapper" style="overflow: hidden;"></div>').css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),
77
+ top:this.element.css("top"),left:this.element.css("left")}));this.element=this.element.parent().data("resizable",this.element.data("resizable"));this.elementIsWrapper=true;this.element.css({marginLeft:this.originalElement.css("marginLeft"),marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom")});this.originalElement.css({marginLeft:0,marginTop:0,marginRight:0,marginBottom:0});this.originalResizeStyle=
78
+ this.originalElement.css("resize");this.originalElement.css("resize","none");this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"}));this.originalElement.css({margin:this.originalElement.css("margin")});this._proportionallyResize()}this.handles=e.handles||(!b(".ui-resizable-handle",this.element).length?"e,s,se":{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",
79
+ nw:".ui-resizable-nw"});if(this.handles.constructor==String){if(this.handles=="all")this.handles="n,e,s,w,se,sw,ne,nw";var a=this.handles.split(",");this.handles={};for(var d=0;d<a.length;d++){var h=b.trim(a[d]),i=b('<div class="ui-resizable-handle '+("ui-resizable-"+h)+'"></div>');/sw|se|ne|nw/.test(h)&&i.css({zIndex:++e.zIndex});"se"==h&&i.addClass("ui-icon ui-icon-gripsmall-diagonal-se");this.handles[h]=".ui-resizable-"+h;this.element.append(i)}}this._renderAxis=function(j){j=j||this.element;for(var n in this.handles){if(this.handles[n].constructor==
80
+ String)this.handles[n]=b(this.handles[n],this.element).show();if(this.elementIsWrapper&&this.originalElement[0].nodeName.match(/textarea|input|select|button/i)){var q=b(this.handles[n],this.element),l=0;l=/sw|ne|nw|se|n|s/.test(n)?q.outerHeight():q.outerWidth();q=["padding",/ne|nw|n/.test(n)?"Top":/se|sw|s/.test(n)?"Bottom":/^e$/.test(n)?"Right":"Left"].join("");j.css(q,l);this._proportionallyResize()}b(this.handles[n])}};this._renderAxis(this.element);this._handles=b(".ui-resizable-handle",this.element).disableSelection();
81
+ this._handles.mouseover(function(){if(!g.resizing){if(this.className)var j=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i);g.axis=j&&j[1]?j[1]:"se"}});if(e.autoHide){this._handles.hide();b(this.element).addClass("ui-resizable-autohide").hover(function(){b(this).removeClass("ui-resizable-autohide");g._handles.show()},function(){if(!g.resizing){b(this).addClass("ui-resizable-autohide");g._handles.hide()}})}this._mouseInit()},destroy:function(){this._mouseDestroy();var g=function(a){b(a).removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing").removeData("resizable").unbind(".resizable").find(".ui-resizable-handle").remove()};
82
+ if(this.elementIsWrapper){g(this.element);var e=this.element;e.after(this.originalElement.css({position:e.css("position"),width:e.outerWidth(),height:e.outerHeight(),top:e.css("top"),left:e.css("left")})).remove()}this.originalElement.css("resize",this.originalResizeStyle);g(this.originalElement);return this},_mouseCapture:function(g){var e=false;for(var a in this.handles)if(b(this.handles[a])[0]==g.target)e=true;return!this.options.disabled&&e},_mouseStart:function(g){var e=this.options,a=this.element.position(),
83
+ d=this.element;this.resizing=true;this.documentScroll={top:b(document).scrollTop(),left:b(document).scrollLeft()};if(d.is(".ui-draggable")||/absolute/.test(d.css("position")))d.css({position:"absolute",top:a.top,left:a.left});b.browser.opera&&/relative/.test(d.css("position"))&&d.css({position:"relative",top:"auto",left:"auto"});this._renderProxy();a=c(this.helper.css("left"));var h=c(this.helper.css("top"));if(e.containment){a+=b(e.containment).scrollLeft()||0;h+=b(e.containment).scrollTop()||0}this.offset=
84
+ this.helper.offset();this.position={left:a,top:h};this.size=this._helper?{width:d.outerWidth(),height:d.outerHeight()}:{width:d.width(),height:d.height()};this.originalSize=this._helper?{width:d.outerWidth(),height:d.outerHeight()}:{width:d.width(),height:d.height()};this.originalPosition={left:a,top:h};this.sizeDiff={width:d.outerWidth()-d.width(),height:d.outerHeight()-d.height()};this.originalMousePosition={left:g.pageX,top:g.pageY};this.aspectRatio=typeof e.aspectRatio=="number"?e.aspectRatio:
85
+ this.originalSize.width/this.originalSize.height||1;e=b(".ui-resizable-"+this.axis).css("cursor");b("body").css("cursor",e=="auto"?this.axis+"-resize":e);d.addClass("ui-resizable-resizing");this._propagate("start",g);return true},_mouseDrag:function(g){var e=this.helper,a=this.originalMousePosition,d=this._change[this.axis];if(!d)return false;a=d.apply(this,[g,g.pageX-a.left||0,g.pageY-a.top||0]);if(this._aspectRatio||g.shiftKey)a=this._updateRatio(a,g);a=this._respectSize(a,g);this._propagate("resize",
86
+ g);e.css({top:this.position.top+"px",left:this.position.left+"px",width:this.size.width+"px",height:this.size.height+"px"});!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize();this._updateCache(a);this._trigger("resize",g,this.ui());return false},_mouseStop:function(g){this.resizing=false;var e=this.options,a=this;if(this._helper){var d=this._proportionallyResizeElements,h=d.length&&/textarea/i.test(d[0].nodeName);d=h&&b.ui.hasScroll(d[0],"left")?0:a.sizeDiff.height;
87
+ h={width:a.size.width-(h?0:a.sizeDiff.width),height:a.size.height-d};d=parseInt(a.element.css("left"),10)+(a.position.left-a.originalPosition.left)||null;var i=parseInt(a.element.css("top"),10)+(a.position.top-a.originalPosition.top)||null;e.animate||this.element.css(b.extend(h,{top:i,left:d}));a.helper.height(a.size.height);a.helper.width(a.size.width);this._helper&&!e.animate&&this._proportionallyResize()}b("body").css("cursor","auto");this.element.removeClass("ui-resizable-resizing");this._propagate("stop",
88
+ g);this._helper&&this.helper.remove();return false},_updateCache:function(g){this.offset=this.helper.offset();if(f(g.left))this.position.left=g.left;if(f(g.top))this.position.top=g.top;if(f(g.height))this.size.height=g.height;if(f(g.width))this.size.width=g.width},_updateRatio:function(g){var e=this.position,a=this.size,d=this.axis;if(g.height)g.width=a.height*this.aspectRatio;else if(g.width)g.height=a.width/this.aspectRatio;if(d=="sw"){g.left=e.left+(a.width-g.width);g.top=null}if(d=="nw"){g.top=
89
+ e.top+(a.height-g.height);g.left=e.left+(a.width-g.width)}return g},_respectSize:function(g){var e=this.options,a=this.axis,d=f(g.width)&&e.maxWidth&&e.maxWidth<g.width,h=f(g.height)&&e.maxHeight&&e.maxHeight<g.height,i=f(g.width)&&e.minWidth&&e.minWidth>g.width,j=f(g.height)&&e.minHeight&&e.minHeight>g.height;if(i)g.width=e.minWidth;if(j)g.height=e.minHeight;if(d)g.width=e.maxWidth;if(h)g.height=e.maxHeight;var n=this.originalPosition.left+this.originalSize.width,q=this.position.top+this.size.height,
90
+ l=/sw|nw|w/.test(a);a=/nw|ne|n/.test(a);if(i&&l)g.left=n-e.minWidth;if(d&&l)g.left=n-e.maxWidth;if(j&&a)g.top=q-e.minHeight;if(h&&a)g.top=q-e.maxHeight;if((e=!g.width&&!g.height)&&!g.left&&g.top)g.top=null;else if(e&&!g.top&&g.left)g.left=null;return g},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var g=this.helper||this.element,e=0;e<this._proportionallyResizeElements.length;e++){var a=this._proportionallyResizeElements[e];if(!this.borderDif){var d=[a.css("borderTopWidth"),
91
+ a.css("borderRightWidth"),a.css("borderBottomWidth"),a.css("borderLeftWidth")],h=[a.css("paddingTop"),a.css("paddingRight"),a.css("paddingBottom"),a.css("paddingLeft")];this.borderDif=b.map(d,function(i,j){i=parseInt(i,10)||0;j=parseInt(h[j],10)||0;return i+j})}b.browser.msie&&(b(g).is(":hidden")||b(g).parents(":hidden").length)||a.css({height:g.height()-this.borderDif[0]-this.borderDif[2]||0,width:g.width()-this.borderDif[1]-this.borderDif[3]||0})}},_renderProxy:function(){var g=this.options;this.elementOffset=
92
+ this.element.offset();if(this._helper){this.helper=this.helper||b('<div style="overflow:hidden;"></div>');var e=b.browser.msie&&b.browser.version<7,a=e?1:0;e=e?2:-1;this.helper.addClass(this._helper).css({width:this.element.outerWidth()+e,height:this.element.outerHeight()+e,position:"absolute",left:this.elementOffset.left-a+"px",top:this.elementOffset.top-a+"px",zIndex:++g.zIndex});this.helper.appendTo("body").disableSelection()}else this.helper=this.element},_change:{e:function(g,e){return{width:this.originalSize.width+
93
+ e}},w:function(g,e){return{left:this.originalPosition.left+e,width:this.originalSize.width-e}},n:function(g,e,a){return{top:this.originalPosition.top+a,height:this.originalSize.height-a}},s:function(g,e,a){return{height:this.originalSize.height+a}},se:function(g,e,a){return b.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[g,e,a]))},sw:function(g,e,a){return b.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[g,e,a]))},ne:function(g,e,a){return b.extend(this._change.n.apply(this,
94
+ arguments),this._change.e.apply(this,[g,e,a]))},nw:function(g,e,a){return b.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[g,e,a]))}},_propagate:function(g,e){b.ui.plugin.call(this,g,[e,this.ui()]);g!="resize"&&this._trigger(g,e,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}});b.extend(b.ui.resizable,
95
+ {version:"1.8.6"});b.ui.plugin.add("resizable","alsoResize",{start:function(){var g=b(this).data("resizable").options,e=function(a){b(a).each(function(){var d=b(this);d.data("resizable-alsoresize",{width:parseInt(d.width(),10),height:parseInt(d.height(),10),left:parseInt(d.css("left"),10),top:parseInt(d.css("top"),10),position:d.css("position")})})};if(typeof g.alsoResize=="object"&&!g.alsoResize.parentNode)if(g.alsoResize.length){g.alsoResize=g.alsoResize[0];e(g.alsoResize)}else b.each(g.alsoResize,
96
+ function(a){e(a)});else e(g.alsoResize)},resize:function(g,e){var a=b(this).data("resizable");g=a.options;var d=a.originalSize,h=a.originalPosition,i={height:a.size.height-d.height||0,width:a.size.width-d.width||0,top:a.position.top-h.top||0,left:a.position.left-h.left||0},j=function(n,q){b(n).each(function(){var l=b(this),k=b(this).data("resizable-alsoresize"),m={},o=q&&q.length?q:l.parents(e.originalElement[0]).length?["width","height"]:["width","height","top","left"];b.each(o,function(p,s){if((p=
97
+ (k[s]||0)+(i[s]||0))&&p>=0)m[s]=p||null});if(b.browser.opera&&/relative/.test(l.css("position"))){a._revertToRelativePosition=true;l.css({position:"absolute",top:"auto",left:"auto"})}l.css(m)})};typeof g.alsoResize=="object"&&!g.alsoResize.nodeType?b.each(g.alsoResize,function(n,q){j(n,q)}):j(g.alsoResize)},stop:function(){var g=b(this).data("resizable"),e=g.options,a=function(d){b(d).each(function(){var h=b(this);h.css({position:h.data("resizable-alsoresize").position})})};if(g._revertToRelativePosition){g._revertToRelativePosition=
98
+ false;typeof e.alsoResize=="object"&&!e.alsoResize.nodeType?b.each(e.alsoResize,function(d){a(d)}):a(e.alsoResize)}b(this).removeData("resizable-alsoresize")}});b.ui.plugin.add("resizable","animate",{stop:function(g){var e=b(this).data("resizable"),a=e.options,d=e._proportionallyResizeElements,h=d.length&&/textarea/i.test(d[0].nodeName),i=h&&b.ui.hasScroll(d[0],"left")?0:e.sizeDiff.height;h={width:e.size.width-(h?0:e.sizeDiff.width),height:e.size.height-i};i=parseInt(e.element.css("left"),10)+(e.position.left-
99
+ e.originalPosition.left)||null;var j=parseInt(e.element.css("top"),10)+(e.position.top-e.originalPosition.top)||null;e.element.animate(b.extend(h,j&&i?{top:j,left:i}:{}),{duration:a.animateDuration,easing:a.animateEasing,step:function(){var n={width:parseInt(e.element.css("width"),10),height:parseInt(e.element.css("height"),10),top:parseInt(e.element.css("top"),10),left:parseInt(e.element.css("left"),10)};d&&d.length&&b(d[0]).css({width:n.width,height:n.height});e._updateCache(n);e._propagate("resize",
100
+ g)}})}});b.ui.plugin.add("resizable","containment",{start:function(){var g=b(this).data("resizable"),e=g.element,a=g.options.containment;if(e=a instanceof b?a.get(0):/parent/.test(a)?e.parent().get(0):a){g.containerElement=b(e);if(/document/.test(a)||a==document){g.containerOffset={left:0,top:0};g.containerPosition={left:0,top:0};g.parentData={element:b(document),left:0,top:0,width:b(document).width(),height:b(document).height()||document.body.parentNode.scrollHeight}}else{var d=b(e),h=[];b(["Top",
101
+ "Right","Left","Bottom"]).each(function(n,q){h[n]=c(d.css("padding"+q))});g.containerOffset=d.offset();g.containerPosition=d.position();g.containerSize={height:d.innerHeight()-h[3],width:d.innerWidth()-h[1]};a=g.containerOffset;var i=g.containerSize.height,j=g.containerSize.width;j=b.ui.hasScroll(e,"left")?e.scrollWidth:j;i=b.ui.hasScroll(e)?e.scrollHeight:i;g.parentData={element:e,left:a.left,top:a.top,width:j,height:i}}}},resize:function(g){var e=b(this).data("resizable"),a=e.options,d=e.containerOffset,
102
+ h=e.position;g=e._aspectRatio||g.shiftKey;var i={top:0,left:0},j=e.containerElement;if(j[0]!=document&&/static/.test(j.css("position")))i=d;if(h.left<(e._helper?d.left:0)){e.size.width+=e._helper?e.position.left-d.left:e.position.left-i.left;if(g)e.size.height=e.size.width/a.aspectRatio;e.position.left=a.helper?d.left:0}if(h.top<(e._helper?d.top:0)){e.size.height+=e._helper?e.position.top-d.top:e.position.top;if(g)e.size.width=e.size.height*a.aspectRatio;e.position.top=e._helper?d.top:0}e.offset.left=
103
+ e.parentData.left+e.position.left;e.offset.top=e.parentData.top+e.position.top;a=Math.abs((e._helper?e.offset.left-i.left:e.offset.left-i.left)+e.sizeDiff.width);d=Math.abs((e._helper?e.offset.top-i.top:e.offset.top-d.top)+e.sizeDiff.height);h=e.containerElement.get(0)==e.element.parent().get(0);i=/relative|absolute/.test(e.containerElement.css("position"));if(h&&i)a-=e.parentData.left;if(a+e.size.width>=e.parentData.width){e.size.width=e.parentData.width-a;if(g)e.size.height=e.size.width/e.aspectRatio}if(d+
104
+ e.size.height>=e.parentData.height){e.size.height=e.parentData.height-d;if(g)e.size.width=e.size.height*e.aspectRatio}},stop:function(){var g=b(this).data("resizable"),e=g.options,a=g.containerOffset,d=g.containerPosition,h=g.containerElement,i=b(g.helper),j=i.offset(),n=i.outerWidth()-g.sizeDiff.width;i=i.outerHeight()-g.sizeDiff.height;g._helper&&!e.animate&&/relative/.test(h.css("position"))&&b(this).css({left:j.left-d.left-a.left,width:n,height:i});g._helper&&!e.animate&&/static/.test(h.css("position"))&&
105
+ b(this).css({left:j.left-d.left-a.left,width:n,height:i})}});b.ui.plugin.add("resizable","ghost",{start:function(){var g=b(this).data("resizable"),e=g.options,a=g.size;g.ghost=g.originalElement.clone();g.ghost.css({opacity:0.25,display:"block",position:"relative",height:a.height,width:a.width,margin:0,left:0,top:0}).addClass("ui-resizable-ghost").addClass(typeof e.ghost=="string"?e.ghost:"");g.ghost.appendTo(g.helper)},resize:function(){var g=b(this).data("resizable");g.ghost&&g.ghost.css({position:"relative",
106
+ height:g.size.height,width:g.size.width})},stop:function(){var g=b(this).data("resizable");g.ghost&&g.helper&&g.helper.get(0).removeChild(g.ghost.get(0))}});b.ui.plugin.add("resizable","grid",{resize:function(){var g=b(this).data("resizable"),e=g.options,a=g.size,d=g.originalSize,h=g.originalPosition,i=g.axis;e.grid=typeof e.grid=="number"?[e.grid,e.grid]:e.grid;var j=Math.round((a.width-d.width)/(e.grid[0]||1))*(e.grid[0]||1);e=Math.round((a.height-d.height)/(e.grid[1]||1))*(e.grid[1]||1);if(/^(se|s|e)$/.test(i)){g.size.width=
107
+ d.width+j;g.size.height=d.height+e}else if(/^(ne)$/.test(i)){g.size.width=d.width+j;g.size.height=d.height+e;g.position.top=h.top-e}else{if(/^(sw)$/.test(i)){g.size.width=d.width+j;g.size.height=d.height+e}else{g.size.width=d.width+j;g.size.height=d.height+e;g.position.top=h.top-e}g.position.left=h.left-j}}});var c=function(g){return parseInt(g,10)||0},f=function(g){return!isNaN(parseInt(g,10))}})(jQuery);
108
+ (function(b){b.widget("ui.selectable",b.ui.mouse,{options:{appendTo:"body",autoRefresh:true,distance:0,filter:"*",tolerance:"touch"},_create:function(){var c=this;this.element.addClass("ui-selectable");this.dragged=false;var f;this.refresh=function(){f=b(c.options.filter,c.element[0]);f.each(function(){var g=b(this),e=g.offset();b.data(this,"selectable-item",{element:this,$element:g,left:e.left,top:e.top,right:e.left+g.outerWidth(),bottom:e.top+g.outerHeight(),startselected:false,selected:g.hasClass("ui-selected"),
109
+ selecting:g.hasClass("ui-selecting"),unselecting:g.hasClass("ui-unselecting")})})};this.refresh();this.selectees=f.addClass("ui-selectee");this._mouseInit();this.helper=b("<div class='ui-selectable-helper'></div>")},destroy:function(){this.selectees.removeClass("ui-selectee").removeData("selectable-item");this.element.removeClass("ui-selectable ui-selectable-disabled").removeData("selectable").unbind(".selectable");this._mouseDestroy();return this},_mouseStart:function(c){var f=this;this.opos=[c.pageX,
110
+ c.pageY];if(!this.options.disabled){var g=this.options;this.selectees=b(g.filter,this.element[0]);this._trigger("start",c);b(g.appendTo).append(this.helper);this.helper.css({left:c.clientX,top:c.clientY,width:0,height:0});g.autoRefresh&&this.refresh();this.selectees.filter(".ui-selected").each(function(){var e=b.data(this,"selectable-item");e.startselected=true;if(!c.metaKey){e.$element.removeClass("ui-selected");e.selected=false;e.$element.addClass("ui-unselecting");e.unselecting=true;f._trigger("unselecting",
111
+ c,{unselecting:e.element})}});b(c.target).parents().andSelf().each(function(){var e=b.data(this,"selectable-item");if(e){var a=!c.metaKey||!e.$element.hasClass("ui-selected");e.$element.removeClass(a?"ui-unselecting":"ui-selected").addClass(a?"ui-selecting":"ui-unselecting");e.unselecting=!a;e.selecting=a;(e.selected=a)?f._trigger("selecting",c,{selecting:e.element}):f._trigger("unselecting",c,{unselecting:e.element});return false}})}},_mouseDrag:function(c){var f=this;this.dragged=true;if(!this.options.disabled){var g=
112
+ this.options,e=this.opos[0],a=this.opos[1],d=c.pageX,h=c.pageY;if(e>d){var i=d;d=e;e=i}if(a>h){i=h;h=a;a=i}this.helper.css({left:e,top:a,width:d-e,height:h-a});this.selectees.each(function(){var j=b.data(this,"selectable-item");if(!(!j||j.element==f.element[0])){var n=false;if(g.tolerance=="touch")n=!(j.left>d||j.right<e||j.top>h||j.bottom<a);else if(g.tolerance=="fit")n=j.left>e&&j.right<d&&j.top>a&&j.bottom<h;if(n){if(j.selected){j.$element.removeClass("ui-selected");j.selected=false}if(j.unselecting){j.$element.removeClass("ui-unselecting");
113
+ j.unselecting=false}if(!j.selecting){j.$element.addClass("ui-selecting");j.selecting=true;f._trigger("selecting",c,{selecting:j.element})}}else{if(j.selecting)if(c.metaKey&&j.startselected){j.$element.removeClass("ui-selecting");j.selecting=false;j.$element.addClass("ui-selected");j.selected=true}else{j.$element.removeClass("ui-selecting");j.selecting=false;if(j.startselected){j.$element.addClass("ui-unselecting");j.unselecting=true}f._trigger("unselecting",c,{unselecting:j.element})}if(j.selected)if(!c.metaKey&&
114
+ !j.startselected){j.$element.removeClass("ui-selected");j.selected=false;j.$element.addClass("ui-unselecting");j.unselecting=true;f._trigger("unselecting",c,{unselecting:j.element})}}}});return false}},_mouseStop:function(c){var f=this;this.dragged=false;b(".ui-unselecting",this.element[0]).each(function(){var g=b.data(this,"selectable-item");g.$element.removeClass("ui-unselecting");g.unselecting=false;g.startselected=false;f._trigger("unselected",c,{unselected:g.element})});b(".ui-selecting",this.element[0]).each(function(){var g=
115
+ b.data(this,"selectable-item");g.$element.removeClass("ui-selecting").addClass("ui-selected");g.selecting=false;g.selected=true;g.startselected=true;f._trigger("selected",c,{selected:g.element})});this._trigger("stop",c);this.helper.remove();return false}});b.extend(b.ui.selectable,{version:"1.8.6"})})(jQuery);
116
+ (function(b){b.widget("ui.sortable",b.ui.mouse,{widgetEventPrefix:"sort",options:{appendTo:"parent",axis:false,connectWith:false,containment:false,cursor:"auto",cursorAt:false,dropOnEmpty:true,forcePlaceholderSize:false,forceHelperSize:false,grid:false,handle:false,helper:"original",items:"> *",opacity:false,placeholder:false,revert:false,scroll:true,scrollSensitivity:20,scrollSpeed:20,scope:"default",tolerance:"intersect",zIndex:1E3},_create:function(){this.containerCache={};this.element.addClass("ui-sortable");
117
+ this.refresh();this.floating=this.items.length?/left|right/.test(this.items[0].item.css("float")):false;this.offset=this.element.offset();this._mouseInit()},destroy:function(){this.element.removeClass("ui-sortable ui-sortable-disabled").removeData("sortable").unbind(".sortable");this._mouseDestroy();for(var c=this.items.length-1;c>=0;c--)this.items[c].item.removeData("sortable-item");return this},_setOption:function(c,f){if(c==="disabled"){this.options[c]=f;this.widget()[f?"addClass":"removeClass"]("ui-sortable-disabled")}else b.Widget.prototype._setOption.apply(this,
118
+ arguments)},_mouseCapture:function(c,f){if(this.reverting)return false;if(this.options.disabled||this.options.type=="static")return false;this._refreshItems(c);var g=null,e=this;b(c.target).parents().each(function(){if(b.data(this,"sortable-item")==e){g=b(this);return false}});if(b.data(c.target,"sortable-item")==e)g=b(c.target);if(!g)return false;if(this.options.handle&&!f){var a=false;b(this.options.handle,g).find("*").andSelf().each(function(){if(this==c.target)a=true});if(!a)return false}this.currentItem=
119
+ g;this._removeCurrentsFromItems();return true},_mouseStart:function(c,f,g){f=this.options;var e=this;this.currentContainer=this;this.refreshPositions();this.helper=this._createHelper(c);this._cacheHelperProportions();this._cacheMargins();this.scrollParent=this.helper.scrollParent();this.offset=this.currentItem.offset();this.offset={top:this.offset.top-this.margins.top,left:this.offset.left-this.margins.left};this.helper.css("position","absolute");this.cssPosition=this.helper.css("position");b.extend(this.offset,
120
+ {click:{left:c.pageX-this.offset.left,top:c.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()});this.originalPosition=this._generatePosition(c);this.originalPageX=c.pageX;this.originalPageY=c.pageY;f.cursorAt&&this._adjustOffsetFromHelper(f.cursorAt);this.domPosition={prev:this.currentItem.prev()[0],parent:this.currentItem.parent()[0]};this.helper[0]!=this.currentItem[0]&&this.currentItem.hide();this._createPlaceholder();f.containment&&this._setContainment();
121
+ if(f.cursor){if(b("body").css("cursor"))this._storedCursor=b("body").css("cursor");b("body").css("cursor",f.cursor)}if(f.opacity){if(this.helper.css("opacity"))this._storedOpacity=this.helper.css("opacity");this.helper.css("opacity",f.opacity)}if(f.zIndex){if(this.helper.css("zIndex"))this._storedZIndex=this.helper.css("zIndex");this.helper.css("zIndex",f.zIndex)}if(this.scrollParent[0]!=document&&this.scrollParent[0].tagName!="HTML")this.overflowOffset=this.scrollParent.offset();this._trigger("start",
122
+ c,this._uiHash());this._preserveHelperProportions||this._cacheHelperProportions();if(!g)for(g=this.containers.length-1;g>=0;g--)this.containers[g]._trigger("activate",c,e._uiHash(this));if(b.ui.ddmanager)b.ui.ddmanager.current=this;b.ui.ddmanager&&!f.dropBehaviour&&b.ui.ddmanager.prepareOffsets(this,c);this.dragging=true;this.helper.addClass("ui-sortable-helper");this._mouseDrag(c);return true},_mouseDrag:function(c){this.position=this._generatePosition(c);this.positionAbs=this._convertPositionTo("absolute");
123
+ if(!this.lastPositionAbs)this.lastPositionAbs=this.positionAbs;if(this.options.scroll){var f=this.options,g=false;if(this.scrollParent[0]!=document&&this.scrollParent[0].tagName!="HTML"){if(this.overflowOffset.top+this.scrollParent[0].offsetHeight-c.pageY<f.scrollSensitivity)this.scrollParent[0].scrollTop=g=this.scrollParent[0].scrollTop+f.scrollSpeed;else if(c.pageY-this.overflowOffset.top<f.scrollSensitivity)this.scrollParent[0].scrollTop=g=this.scrollParent[0].scrollTop-f.scrollSpeed;if(this.overflowOffset.left+
124
+ this.scrollParent[0].offsetWidth-c.pageX<f.scrollSensitivity)this.scrollParent[0].scrollLeft=g=this.scrollParent[0].scrollLeft+f.scrollSpeed;else if(c.pageX-this.overflowOffset.left<f.scrollSensitivity)this.scrollParent[0].scrollLeft=g=this.scrollParent[0].scrollLeft-f.scrollSpeed}else{if(c.pageY-b(document).scrollTop()<f.scrollSensitivity)g=b(document).scrollTop(b(document).scrollTop()-f.scrollSpeed);else if(b(window).height()-(c.pageY-b(document).scrollTop())<f.scrollSensitivity)g=b(document).scrollTop(b(document).scrollTop()+
125
+ f.scrollSpeed);if(c.pageX-b(document).scrollLeft()<f.scrollSensitivity)g=b(document).scrollLeft(b(document).scrollLeft()-f.scrollSpeed);else if(b(window).width()-(c.pageX-b(document).scrollLeft())<f.scrollSensitivity)g=b(document).scrollLeft(b(document).scrollLeft()+f.scrollSpeed)}g!==false&&b.ui.ddmanager&&!f.dropBehaviour&&b.ui.ddmanager.prepareOffsets(this,c)}this.positionAbs=this._convertPositionTo("absolute");if(!this.options.axis||this.options.axis!="y")this.helper[0].style.left=this.position.left+
126
+ "px";if(!this.options.axis||this.options.axis!="x")this.helper[0].style.top=this.position.top+"px";for(f=this.items.length-1;f>=0;f--){g=this.items[f];var e=g.item[0],a=this._intersectsWithPointer(g);if(a)if(e!=this.currentItem[0]&&this.placeholder[a==1?"next":"prev"]()[0]!=e&&!b.ui.contains(this.placeholder[0],e)&&(this.options.type=="semi-dynamic"?!b.ui.contains(this.element[0],e):true)){this.direction=a==1?"down":"up";if(this.options.tolerance=="pointer"||this._intersectsWithSides(g))this._rearrange(c,
127
+ g);else break;this._trigger("change",c,this._uiHash());break}}this._contactContainers(c);b.ui.ddmanager&&b.ui.ddmanager.drag(this,c);this._trigger("sort",c,this._uiHash());this.lastPositionAbs=this.positionAbs;return false},_mouseStop:function(c,f){if(c){b.ui.ddmanager&&!this.options.dropBehaviour&&b.ui.ddmanager.drop(this,c);if(this.options.revert){var g=this;f=g.placeholder.offset();g.reverting=true;b(this.helper).animate({left:f.left-this.offset.parent.left-g.margins.left+(this.offsetParent[0]==
128
+ document.body?0:this.offsetParent[0].scrollLeft),top:f.top-this.offset.parent.top-g.margins.top+(this.offsetParent[0]==document.body?0:this.offsetParent[0].scrollTop)},parseInt(this.options.revert,10)||500,function(){g._clear(c)})}else this._clear(c,f);return false}},cancel:function(){var c=this;if(this.dragging){this._mouseUp();this.options.helper=="original"?this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper"):this.currentItem.show();for(var f=this.containers.length-1;f>=0;f--){this.containers[f]._trigger("deactivate",
129
+ null,c._uiHash(this));if(this.containers[f].containerCache.over){this.containers[f]._trigger("out",null,c._uiHash(this));this.containers[f].containerCache.over=0}}}this.placeholder[0].parentNode&&this.placeholder[0].parentNode.removeChild(this.placeholder[0]);this.options.helper!="original"&&this.helper&&this.helper[0].parentNode&&this.helper.remove();b.extend(this,{helper:null,dragging:false,reverting:false,_noFinalSort:null});this.domPosition.prev?b(this.domPosition.prev).after(this.currentItem):
130
+ b(this.domPosition.parent).prepend(this.currentItem);return this},serialize:function(c){var f=this._getItemsAsjQuery(c&&c.connected),g=[];c=c||{};b(f).each(function(){var e=(b(c.item||this).attr(c.attribute||"id")||"").match(c.expression||/(.+)[-=_](.+)/);if(e)g.push((c.key||e[1]+"[]")+"="+(c.key&&c.expression?e[1]:e[2]))});!g.length&&c.key&&g.push(c.key+"=");return g.join("&")},toArray:function(c){var f=this._getItemsAsjQuery(c&&c.connected),g=[];c=c||{};f.each(function(){g.push(b(c.item||this).attr(c.attribute||
131
+ "id")||"")});return g},_intersectsWith:function(c){var f=this.positionAbs.left,g=f+this.helperProportions.width,e=this.positionAbs.top,a=e+this.helperProportions.height,d=c.left,h=d+c.width,i=c.top,j=i+c.height,n=this.offset.click.top,q=this.offset.click.left;n=e+n>i&&e+n<j&&f+q>d&&f+q<h;return this.options.tolerance=="pointer"||this.options.forcePointerForContainers||this.options.tolerance!="pointer"&&this.helperProportions[this.floating?"width":"height"]>c[this.floating?"width":"height"]?n:d<f+
132
+ this.helperProportions.width/2&&g-this.helperProportions.width/2<h&&i<e+this.helperProportions.height/2&&a-this.helperProportions.height/2<j},_intersectsWithPointer:function(c){var f=b.ui.isOverAxis(this.positionAbs.top+this.offset.click.top,c.top,c.height);c=b.ui.isOverAxis(this.positionAbs.left+this.offset.click.left,c.left,c.width);f=f&&c;c=this._getDragVerticalDirection();var g=this._getDragHorizontalDirection();if(!f)return false;return this.floating?g&&g=="right"||c=="down"?2:1:c&&(c=="down"?
133
+ 2:1)},_intersectsWithSides:function(c){var f=b.ui.isOverAxis(this.positionAbs.top+this.offset.click.top,c.top+c.height/2,c.height);c=b.ui.isOverAxis(this.positionAbs.left+this.offset.click.left,c.left+c.width/2,c.width);var g=this._getDragVerticalDirection(),e=this._getDragHorizontalDirection();return this.floating&&e?e=="right"&&c||e=="left"&&!c:g&&(g=="down"&&f||g=="up"&&!f)},_getDragVerticalDirection:function(){var c=this.positionAbs.top-this.lastPositionAbs.top;return c!=0&&(c>0?"down":"up")},
134
+ _getDragHorizontalDirection:function(){var c=this.positionAbs.left-this.lastPositionAbs.left;return c!=0&&(c>0?"right":"left")},refresh:function(c){this._refreshItems(c);this.refreshPositions();return this},_connectWith:function(){var c=this.options;return c.connectWith.constructor==String?[c.connectWith]:c.connectWith},_getItemsAsjQuery:function(c){var f=[],g=[],e=this._connectWith();if(e&&c)for(c=e.length-1;c>=0;c--)for(var a=b(e[c]),d=a.length-1;d>=0;d--){var h=b.data(a[d],"sortable");if(h&&h!=
135
+ this&&!h.options.disabled)g.push([b.isFunction(h.options.items)?h.options.items.call(h.element):b(h.options.items,h.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),h])}g.push([b.isFunction(this.options.items)?this.options.items.call(this.element,null,{options:this.options,item:this.currentItem}):b(this.options.items,this.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),this]);for(c=g.length-1;c>=0;c--)g[c][0].each(function(){f.push(this)});return b(f)},_removeCurrentsFromItems:function(){for(var c=
136
+ this.currentItem.find(":data(sortable-item)"),f=0;f<this.items.length;f++)for(var g=0;g<c.length;g++)c[g]==this.items[f].item[0]&&this.items.splice(f,1)},_refreshItems:function(c){this.items=[];this.containers=[this];var f=this.items,g=[[b.isFunction(this.options.items)?this.options.items.call(this.element[0],c,{item:this.currentItem}):b(this.options.items,this.element),this]],e=this._connectWith();if(e)for(var a=e.length-1;a>=0;a--)for(var d=b(e[a]),h=d.length-1;h>=0;h--){var i=b.data(d[h],"sortable");
137
+ if(i&&i!=this&&!i.options.disabled){g.push([b.isFunction(i.options.items)?i.options.items.call(i.element[0],c,{item:this.currentItem}):b(i.options.items,i.element),i]);this.containers.push(i)}}for(a=g.length-1;a>=0;a--){c=g[a][1];e=g[a][0];h=0;for(d=e.length;h<d;h++){i=b(e[h]);i.data("sortable-item",c);f.push({item:i,instance:c,width:0,height:0,left:0,top:0})}}},refreshPositions:function(c){if(this.offsetParent&&this.helper)this.offset.parent=this._getParentOffset();for(var f=this.items.length-1;f>=
138
+ 0;f--){var g=this.items[f],e=this.options.toleranceElement?b(this.options.toleranceElement,g.item):g.item;if(!c){g.width=e.outerWidth();g.height=e.outerHeight()}e=e.offset();g.left=e.left;g.top=e.top}if(this.options.custom&&this.options.custom.refreshContainers)this.options.custom.refreshContainers.call(this);else for(f=this.containers.length-1;f>=0;f--){e=this.containers[f].element.offset();this.containers[f].containerCache.left=e.left;this.containers[f].containerCache.top=e.top;this.containers[f].containerCache.width=
139
+ this.containers[f].element.outerWidth();this.containers[f].containerCache.height=this.containers[f].element.outerHeight()}return this},_createPlaceholder:function(c){var f=c||this,g=f.options;if(!g.placeholder||g.placeholder.constructor==String){var e=g.placeholder;g.placeholder={element:function(){var a=b(document.createElement(f.currentItem[0].nodeName)).addClass(e||f.currentItem[0].className+" ui-sortable-placeholder").removeClass("ui-sortable-helper")[0];if(!e)a.style.visibility="hidden";return a},
140
+ update:function(a,d){if(!(e&&!g.forcePlaceholderSize)){d.height()||d.height(f.currentItem.innerHeight()-parseInt(f.currentItem.css("paddingTop")||0,10)-parseInt(f.currentItem.css("paddingBottom")||0,10));d.width()||d.width(f.currentItem.innerWidth()-parseInt(f.currentItem.css("paddingLeft")||0,10)-parseInt(f.currentItem.css("paddingRight")||0,10))}}}}f.placeholder=b(g.placeholder.element.call(f.element,f.currentItem));f.currentItem.after(f.placeholder);g.placeholder.update(f,f.placeholder)},_contactContainers:function(c){for(var f=
141
+ null,g=null,e=this.containers.length-1;e>=0;e--)if(!b.ui.contains(this.currentItem[0],this.containers[e].element[0]))if(this._intersectsWith(this.containers[e].containerCache)){if(!(f&&b.ui.contains(this.containers[e].element[0],f.element[0]))){f=this.containers[e];g=e}}else if(this.containers[e].containerCache.over){this.containers[e]._trigger("out",c,this._uiHash(this));this.containers[e].containerCache.over=0}if(f)if(this.containers.length===1){this.containers[g]._trigger("over",c,this._uiHash(this));
142
+ this.containers[g].containerCache.over=1}else if(this.currentContainer!=this.containers[g]){f=1E4;e=null;for(var a=this.positionAbs[this.containers[g].floating?"left":"top"],d=this.items.length-1;d>=0;d--)if(b.ui.contains(this.containers[g].element[0],this.items[d].item[0])){var h=this.items[d][this.containers[g].floating?"left":"top"];if(Math.abs(h-a)<f){f=Math.abs(h-a);e=this.items[d]}}if(e||this.options.dropOnEmpty){this.currentContainer=this.containers[g];e?this._rearrange(c,e,null,true):this._rearrange(c,
143
+ null,this.containers[g].element,true);this._trigger("change",c,this._uiHash());this.containers[g]._trigger("change",c,this._uiHash(this));this.options.placeholder.update(this.currentContainer,this.placeholder);this.containers[g]._trigger("over",c,this._uiHash(this));this.containers[g].containerCache.over=1}}},_createHelper:function(c){var f=this.options;c=b.isFunction(f.helper)?b(f.helper.apply(this.element[0],[c,this.currentItem])):f.helper=="clone"?this.currentItem.clone():this.currentItem;c.parents("body").length||
144
+ b(f.appendTo!="parent"?f.appendTo:this.currentItem[0].parentNode)[0].appendChild(c[0]);if(c[0]==this.currentItem[0])this._storedCSS={width:this.currentItem[0].style.width,height:this.currentItem[0].style.height,position:this.currentItem.css("position"),top:this.currentItem.css("top"),left:this.currentItem.css("left")};if(c[0].style.width==""||f.forceHelperSize)c.width(this.currentItem.width());if(c[0].style.height==""||f.forceHelperSize)c.height(this.currentItem.height());return c},_adjustOffsetFromHelper:function(c){if(typeof c==
145
+ "string")c=c.split(" ");if(b.isArray(c))c={left:+c[0],top:+c[1]||0};if("left"in c)this.offset.click.left=c.left+this.margins.left;if("right"in c)this.offset.click.left=this.helperProportions.width-c.right+this.margins.left;if("top"in c)this.offset.click.top=c.top+this.margins.top;if("bottom"in c)this.offset.click.top=this.helperProportions.height-c.bottom+this.margins.top},_getParentOffset:function(){this.offsetParent=this.helper.offsetParent();var c=this.offsetParent.offset();if(this.cssPosition==
146
+ "absolute"&&this.scrollParent[0]!=document&&b.ui.contains(this.scrollParent[0],this.offsetParent[0])){c.left+=this.scrollParent.scrollLeft();c.top+=this.scrollParent.scrollTop()}if(this.offsetParent[0]==document.body||this.offsetParent[0].tagName&&this.offsetParent[0].tagName.toLowerCase()=="html"&&b.browser.msie)c={top:0,left:0};return{top:c.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:c.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if(this.cssPosition==
147
+ "relative"){var c=this.currentItem.position();return{top:c.top-(parseInt(this.helper.css("top"),10)||0)+this.scrollParent.scrollTop(),left:c.left-(parseInt(this.helper.css("left"),10)||0)+this.scrollParent.scrollLeft()}}else return{top:0,left:0}},_cacheMargins:function(){this.margins={left:parseInt(this.currentItem.css("marginLeft"),10)||0,top:parseInt(this.currentItem.css("marginTop"),10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},
148
+ _setContainment:function(){var c=this.options;if(c.containment=="parent")c.containment=this.helper[0].parentNode;if(c.containment=="document"||c.containment=="window")this.containment=[0-this.offset.relative.left-this.offset.parent.left,0-this.offset.relative.top-this.offset.parent.top,b(c.containment=="document"?document:window).width()-this.helperProportions.width-this.margins.left,(b(c.containment=="document"?document:window).height()||document.body.parentNode.scrollHeight)-this.helperProportions.height-
149
+ this.margins.top];if(!/^(document|window|parent)$/.test(c.containment)){var f=b(c.containment)[0];c=b(c.containment).offset();var g=b(f).css("overflow")!="hidden";this.containment=[c.left+(parseInt(b(f).css("borderLeftWidth"),10)||0)+(parseInt(b(f).css("paddingLeft"),10)||0)-this.margins.left,c.top+(parseInt(b(f).css("borderTopWidth"),10)||0)+(parseInt(b(f).css("paddingTop"),10)||0)-this.margins.top,c.left+(g?Math.max(f.scrollWidth,f.offsetWidth):f.offsetWidth)-(parseInt(b(f).css("borderLeftWidth"),
150
+ 10)||0)-(parseInt(b(f).css("paddingRight"),10)||0)-this.he