NextCellent Gallery – NextGEN Legacy - Version 1.9.25

Version Description

  • 2015-01-26 =

What's in it for you?

  • Fix for zup upload (Niko Strijbol)
  • More visual upgrade message (Niko Strijbol)
  • Preserve gallery's manual sort order in nggtags shortcode (Frank P. Walentynowicz)
  • Add a description field when adding a gallery (Niko Strijbol)
  • Show ID when editing a gallery (Niko Strijbol)
  • Fix for long album names (Niko Strijbol)
  • Update and fix translations (Niko Strijbol)
  • Improved Wordpress Integration (Niko Strijbol)
  • Image manipulation corrections (Frank P. Walentynowicz)
  • Fix manual sort (Niko Strijbol)
  • Fixes for multiuser (Niko Strijbol)
  • Slideshow Flash retired, replaced with CSS slideshow (Niko Strijbol)
  • Code refactoring and optimization (Fernando Zorrilla S.M.)
  • Adding QUnit for Javascript Unit testing (Fernando Zorrilla S.M.)

VERY IMPORTANT: Read ON!

NextCellent Gallery provides backward compatibility for older NextGEN until version 1.9.13 .

  • this plugin will gracefully deactivate if detects NextGEN is working (any version) to avoid compatibility issues.

  • Please remember to READ THE FAQ!!! Issues for failing to read the FAQ will be IGNORED!!!

  • If you like it, please spread the word and rate it accordingly. I guess a lot of annoyed users can take advantage of NextCellent. Thank you!

  • WE APPRECIATE YOUR FEEDBACK. Be our voice and comment it!!!!

Download this release

Release Info

Developer WPReady
Plugin Icon NextCellent Gallery – NextGEN Legacy
Version 1.9.25
Comparing to
See all releases

Code changes from version 1.9.23 to 1.9.25

admin/addgallery.php CHANGED
@@ -35,8 +35,9 @@ class nggAddGallery {
35
  wp_die(__('Cheatin’ uh?'));
36
 
37
  $newgallery = esc_attr( $_POST['galleryname']);
 
38
  if ( !empty($newgallery) )
39
- nggAdmin::create_gallery($newgallery, $defaultpath);
40
  }
41
 
42
  if ( isset($_POST['zipupload']) ){
@@ -379,6 +380,11 @@ class nggAddGallery {
379
  <?php } ?>
380
  <p class="description"><?php _e('Allowed characters for file and folder names are', 'nggallery') ;?>: a-z, A-Z, 0-9, -, _</p></td>
381
  </tr>
 
 
 
 
 
382
  <?php do_action('ngg_add_new_gallery_form'); ?>
383
  </table>
384
  <div class="submit"><input class="button-primary" type="submit" name= "addgallery" value="<?php _e('Add gallery', 'nggallery') ;?>"/></div>
@@ -423,7 +429,7 @@ class nggAddGallery {
423
  <br /><?php if ( (is_multisite()) && wpmu_enable_function('wpmuQuotaCheck') ) display_space_usage(); ?></td>
424
  </tr>
425
  </table>
426
- <div class="submit"><input class="button-primary" onclick="checkForm('zipgalselect'); checkZipFile()" type="submit" name= "zipupload" value="<?php _e('Start upload', 'nggallery') ;?>"/></div>
427
  </form>
428
  <?php
429
  }
35
  wp_die(__('Cheatin&#8217; uh?'));
36
 
37
  $newgallery = esc_attr( $_POST['galleryname']);
38
+ $description = esc_attr( $_POST['gallerydesc']);
39
  if ( !empty($newgallery) )
40
+ nggAdmin::create_gallery($newgallery, $defaultpath, true, $description);
41
  }
42
 
43
  if ( isset($_POST['zipupload']) ){
380
  <?php } ?>
381
  <p class="description"><?php _e('Allowed characters for file and folder names are', 'nggallery') ;?>: a-z, A-Z, 0-9, -, _</p></td>
382
  </tr>
383
+ <tr>
384
+ <th scope="row"><?php _e('Description', 'nggallery') ;?>:</th>
385
+ <td><textarea name="gallerydesc" id="gallerydesc" cols="50" rows="3"></textarea>
386
+ <p class="description"><?php _e('Add a description. This is optional and can be changed later.', 'nggallery') ;?></p></td>
387
+ </tr>
388
  <?php do_action('ngg_add_new_gallery_form'); ?>
389
  </table>
390
  <div class="submit"><input class="button-primary" type="submit" name= "addgallery" value="<?php _e('Add gallery', 'nggallery') ;?>"/></div>
429
  <br /><?php if ( (is_multisite()) && wpmu_enable_function('wpmuQuotaCheck') ) display_space_usage(); ?></td>
430
  </tr>
431
  </table>
432
+ <div class="submit"><input class="button-primary" onclick="checkZipFile()" type="submit" name= "zipupload" value="<?php _e('Start upload', 'nggallery') ;?>"/></div>
433
  </form>
434
  <?php
435
  }
admin/admin.php CHANGED
@@ -1,4 +1,5 @@
1
  <?php
 
2
  /**
3
  * nggAdminPanel - Admin Section for NextGEN Gallery
4
  *
@@ -7,31 +8,28 @@
7
  *
8
  * @since 1.0.0
9
  */
10
- class nggAdminPanel{
11
 
12
  // constructor
13
  function __construct() {
14
 
15
  // Add the admin menu
16
- add_action( 'admin_menu', array (&$this, 'add_menu') );
17
- add_action( 'admin_bar_menu', array(&$this, 'admin_bar_menu'), 99 );
18
- add_action( 'network_admin_menu', array (&$this, 'add_network_admin_menu') );
19
 
20
  // Add the script and style files
21
- add_action('admin_print_scripts', array(&$this, 'load_scripts') );
22
- add_action('admin_print_styles', array(&$this, 'load_styles') );
23
 
24
  // Try to detect plugins that embed their own jQuery and jQuery UI
25
  // libraries and load them in NGG's admin pages
26
- add_action('admin_enqueue_scripts', array(&$this, 'buffer_scripts'), 0);
27
- add_action('admin_print_scripts', array(&$this, 'output_scripts'), PHP_INT_MAX);
28
 
29
- //TODO: remove after release of Wordpress 3.3
30
- add_filter('contextual_help', array(&$this, 'show_help'), 10, 2);
31
- add_filter('current_screen', array(&$this, 'edit_current_screen'));
32
 
33
- // Add WPML hook to register description / alt text for translation
34
- add_action('ngg_image_updated', array('nggGallery', 'RegisterString') );
35
 
36
  }
37
 
@@ -39,65 +37,66 @@ class nggAdminPanel{
39
  * If a NGG page is being requested, we buffer any rendering of <script>
40
  * tags to detect conflicts and remove them if need be
41
  */
42
- function buffer_scripts()
43
- {
44
  // Is this a NGG admin page?
45
- if (isset($_REQUEST['page']) && strpos($_REQUEST['page'] ,'nggallery') !== FALSE) {
46
  ob_start();
47
  }
48
  }
49
 
50
- function output_scripts()
51
- {
52
  // Is this a NGG admin page?
53
- if (isset($_REQUEST['page']) && strpos($_REQUEST['page'] ,'nggallery') !== FALSE) {
54
- $plugin_folder = NGGFOLDER;
55
- $skipjs_count = 0;
56
- $html = ob_get_contents();
57
  ob_end_clean();
58
 
59
- if (!defined('NGG_JQUERY_CONFLICT_DETECTION')) {
60
- define('NGG_JQUERY_CONFLICT_DETECTION', TRUE);
61
  }
62
 
63
- if (NGG_JQUERY_CONFLICT_DETECTION) {
64
  // Detect custom jQuery script
65
- if (preg_match_all("/<script.*wp-content.*jquery[-_\.](min\.)?js.*<\script>/", $html, $matches, PREG_SET_ORDER)) {
66
- foreach ($matches as $match) {
67
- $old_script = array_shift($match);
68
- if (strpos($old_script, NGGFOLDER) === FALSE)
69
- $html = str_replace($old_script, '', $html);
 
70
  }
71
  }
72
 
73
  // Detect custom jQuery UI script and remove
74
- if (preg_match_all("/<script.*wp-content.*jquery[-_\.]ui.*<\/script>/", $html, $matches, PREG_SET_ORDER)) {
75
- $detected_jquery_ui = TRUE;
76
- foreach ($matches as $match) {
77
- $old_script = array_shift($match);
78
- if (strpos($old_script, NGGFOLDER) === FALSE)
79
- $html = str_replace($old_script, '', $html);
 
80
  }
81
  }
82
 
83
- if (isset($_REQUEST['skipjs'])) {
84
- foreach ($_REQUEST['skipjs'] as $js) {
85
- $js = preg_quote($js);
86
- if (preg_match_all("#<script.*{$js}.*</script>#", $html, $matches, PREG_SET_ORDER)) {
87
- foreach ($matches as $match) {
88
- $old_script = array_shift($match);
89
- if (strpos($old_script, NGGFOLDER) === FALSE)
90
- $html = str_replace($old_script, '', $html);
 
91
  }
92
  }
93
  }
94
- $skipjs_count = count($_REQUEST['skipjs']);
95
  }
96
 
97
 
98
  // Use WordPress built-in version of jQuery
99
- $jquery_url = includes_url('js/jquery/jquery.js');
100
- $html = implode('', array(
101
  "<script type='text/javascript' src='{$jquery_url}'></script>\n",
102
  "<script type='text/javascript'>
103
  window.onerror = function(msg, url, line){
@@ -113,158 +112,180 @@ class nggAdminPanel{
113
  return true;
114
  };</script>\n",
115
  $html
116
- ));
117
  }
118
 
119
  echo $html;
120
  }
121
  }
122
 
123
- // integrate the menu
124
- function add_menu() {
125
- if ( get_bloginfo( 'version' ) >= 3.8 ) {
126
- add_menu_page( __( 'Galleries', 'nggallery' ), __( 'Galleries', 'nggallery' ), 'NextGEN Gallery overview', NGGFOLDER, array (&$this, 'show_menu'), 'dashicons-format-gallery' );
127
- } else {
128
- add_menu_page( __( 'Galleries', 'nggallery' ), __( 'Galleries', 'nggallery' ), 'NextGEN Gallery overview', NGGFOLDER, array (&$this, 'show_menu'), path_join(NGGALLERY_URLPATH, 'admin/images/nextgen_16_color.png') );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
129
  }
130
- add_submenu_page( NGGFOLDER , __('Overview', 'nggallery'), __('Overview', 'nggallery'), 'NextGEN Gallery overview', NGGFOLDER, array (&$this, 'show_menu'));
131
- add_submenu_page( NGGFOLDER , __('Add Gallery / Images', 'nggallery'), __('Add Gallery / Images', 'nggallery'), 'NextGEN Upload images', 'nggallery-add-gallery', array (&$this, 'show_menu'));
132
- add_submenu_page( NGGFOLDER , __('Galleries', 'nggallery'), __('Galleries', 'nggallery'), 'NextGEN Manage gallery', 'nggallery-manage-gallery', array (&$this, 'show_menu'));
133
- add_submenu_page( NGGFOLDER , __('Albums', 'nggallery'), __('Albums', 'nggallery'), 'NextGEN Edit album', 'nggallery-manage-album', array (&$this, 'show_menu'));
134
- add_submenu_page( NGGFOLDER , __('Tags', 'nggallery'), __('Tags', 'nggallery'), 'NextGEN Manage tags', 'nggallery-tags', array (&$this, 'show_menu'));
135
- add_submenu_page( NGGFOLDER , __('Settings', 'nggallery'), __('Settings', 'nggallery'), 'NextGEN Change options', 'nggallery-options', array (&$this, 'show_menu'));
136
- if ( wpmu_enable_function('wpmuStyle') )
137
- add_submenu_page( NGGFOLDER , __('Style', 'nggallery'), __('Style', 'nggallery'), 'NextGEN Change style', 'nggallery-style', array (&$this, 'show_menu'));
138
- if ( wpmu_enable_function('wpmuRoles') || is_super_admin() )
139
- add_submenu_page( NGGFOLDER , __('Roles', 'nggallery'), __('Roles', 'nggallery'), 'activate_plugins', 'nggallery-roles', array (&$this, 'show_menu'));
140
- add_submenu_page( NGGFOLDER , __('About this Gallery', 'nggallery'), __('About', 'nggallery'), 'NextGEN Gallery overview', 'nggallery-about', array (&$this, 'show_menu'));
141
-
142
- if ( !is_multisite() || is_super_admin() )
143
- add_submenu_page( NGGFOLDER , __('Reset / Uninstall', 'nggallery'), __('Reset / Uninstall', 'nggallery'), 'activate_plugins', 'nggallery-setup', array (&$this, 'show_menu'));
144
 
145
  //register the column fields
146
  $this->register_columns();
147
  }
148
 
149
  // integrate the network menu
150
- function add_network_admin_menu() {
 
 
 
 
 
151
 
152
- add_menu_page( __('Galleries', 'nggallery' ), __('Galleries', 'nggallery' ), 'nggallery-wpmu', NGGFOLDER, array (&$this, 'show_network_settings'), path_join(NGGALLERY_URLPATH, 'admin/images/nextgen_16_color.png') );
153
- add_submenu_page( NGGFOLDER , __('Network settings', 'nggallery'), __('Network settings', 'nggallery'), 'nggallery-wpmu', NGGFOLDER, array (&$this, 'show_network_settings'));
154
- add_submenu_page( NGGFOLDER , __('Reset / Uninstall', 'nggallery'), __('Reset / Uninstall', 'nggallery'), 'activate_plugins', 'nggallery-setup', array (&$this, 'show_menu'));
155
  }
156
-
157
- /**
158
- * Adding NextGEN Gallery to the Admin bar
159
- *
160
- * @since 1.9.0
161
- *
162
- * @return void
163
- */
164
-
165
- function admin_bar_menu() {
166
- // If the current user can't write posts, this is all of no use, so let's not output an admin menu
167
- if ( !current_user_can('NextGEN Gallery overview') )
168
- return;
169
-
170
- global $wp_admin_bar;
171
-
172
- $wp_admin_bar->add_menu( array( 'id' => 'ngg-menu', 'title' => __( 'Gallery' ), 'href' => admin_url('admin.php?page='. NGGFOLDER) ) );
173
- $wp_admin_bar->add_menu( array( 'parent' => 'ngg-menu', 'id' => 'ngg-menu-overview', 'title' => __('Overview', 'nggallery'), 'href' => admin_url('admin.php?page='. NGGFOLDER) ) );
174
- if ( current_user_can('NextGEN Upload images') )
175
- $wp_admin_bar->add_menu( array( 'parent' => 'ngg-menu', 'id' => 'ngg-menu-add-gallery', 'title' => __('Add Gallery / Images', 'nggallery'), 'href' => admin_url('admin.php?page=nggallery-add-gallery') ) );
176
- if ( current_user_can('NextGEN Manage gallery') )
177
- $wp_admin_bar->add_menu( array( 'parent' => 'ngg-menu', 'id' => 'ngg-menu-manage-gallery', 'title' => __('Gallery', 'nggallery'), 'href' => admin_url('admin.php?page=nggallery-manage-gallery') ) );
178
- if ( current_user_can('NextGEN Edit album') )
179
- $wp_admin_bar->add_menu( array( 'parent' => 'ngg-menu', 'id' => 'ngg-menu-manage-album', 'title' => __( 'Albums', 'nggallery' ), 'href' => admin_url('admin.php?page=nggallery-manage-album') ) );
180
- if ( current_user_can('NextGEN Manage tags') )
181
- $wp_admin_bar->add_menu( array( 'parent' => 'ngg-menu', 'id' => 'ngg-menu-tags', 'title' => __('Tags', 'nggallery'), 'href' => admin_url('admin.php?page=nggallery-tags') ) );
182
- if ( current_user_can('NextGEN Change options') )
183
- $wp_admin_bar->add_menu( array( 'parent' => 'ngg-menu', 'id' => 'ngg-menu-options', 'title' => __('Settings', 'nggallery'), 'href' => admin_url('admin.php?page=nggallery-options') ) );
184
- if ( wpmu_enable_function('wpmuStyle') && ( current_user_can('NextGEN Change style') ))
185
- $wp_admin_bar->add_menu( array( 'parent' => 'ngg-menu', 'id' => 'ngg-menu-style', 'title' => __('Style', 'nggallery'), 'href' => admin_url('admin.php?page=nggallery-style') ) );
186
- $wp_admin_bar->add_menu( array( 'parent' => 'ngg-menu', 'id' => 'ngg-menu-about', 'title' => __('About', 'nggallery'), 'href' => admin_url('admin.php?page=nggallery-about') ) );
187
- }
188
 
189
- // show the network page
190
- function show_network_settings() {
191
- include_once ( dirname (__FILE__) . '/style.php' );
192
- include_once ( dirname (__FILE__) . '/wpmu.php' );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
193
  nggallery_wpmu_setup();
194
- }
195
 
196
  // load the script for the defined page and load only this code
197
- //20140515: removed donation code (not in use)
198
  function show_menu() {
199
 
200
  global $ngg;
201
-
202
- // check for upgrade and show upgrade screen
203
- if( get_option( 'ngg_db_version' ) != NGG_DBVERSION ) {
204
- include_once ( dirname (__FILE__) . '/functions.php' );
205
- include_once ( dirname (__FILE__) . '/upgrade.php' );
206
- nggallery_upgrade_page();
207
- return;
208
- }
209
 
210
  // Set installation date
211
- if( empty($ngg->options['installDate']) ) {
212
  $ngg->options['installDate'] = time();
213
- update_option('ngg_options', $ngg->options);
214
  }
215
 
216
- switch ($_GET['page']){
217
  case "nggallery-add-gallery" :
218
- include_once ( dirname (__FILE__) . '/functions.php' ); // admin functions
219
- include_once ( dirname (__FILE__) . '/addgallery.php' ); // nggallery_admin_add_gallery
220
  $ngg->addgallery_page = new nggAddGallery ();
221
  $ngg->addgallery_page->controller();
222
  break;
223
  case "nggallery-manage-gallery" :
224
- include_once ( dirname (__FILE__) . '/functions.php' ); // admin functions
225
- include_once ( dirname (__FILE__) . '/manage.php' ); // nggallery_admin_manage_gallery
226
  // Initate the Manage Gallery page
227
  $ngg->manage_page = new nggManageGallery ();
228
  // Render the output now, because you cannot access a object during the constructor is not finished
229
  $ngg->manage_page->controller();
230
  break;
231
  case "nggallery-manage-album" :
232
- include_once ( dirname (__FILE__) . '/album.php' ); // nggallery_admin_manage_album
233
  $ngg->manage_album = new nggManageAlbum ();
234
  $ngg->manage_album->controller();
235
  break;
236
  case "nggallery-options" :
237
- include_once ( dirname (__FILE__) . '/settings.php' ); // nggallery_admin_options
238
  $ngg->option_page = new nggOptions ();
239
  $ngg->option_page->controller();
240
  break;
241
  case "nggallery-tags" :
242
- include_once ( dirname (__FILE__) . '/tags.php' ); // nggallery_admin_tags
243
  break;
244
  case "nggallery-style" :
245
- include_once ( dirname (__FILE__) . '/style.php' ); // nggallery_admin_style
246
  $ngg->nggallery_style = new NGG_Style ();
247
  $ngg->nggallery_style->controller();
248
  break;
249
  case "nggallery-setup" :
250
- include_once ( dirname (__FILE__) . '/setup.php' ); // nggallery_admin_setup
251
  nggallery_admin_setup();
252
  break;
253
  case "nggallery-roles" :
254
- include_once ( dirname (__FILE__) . '/roles.php' ); // nggallery_admin_roles
255
  nggallery_admin_roles();
256
  break;
257
  case "nggallery-import" :
258
- include_once ( dirname (__FILE__) . '/myimport.php' ); // nggallery_admin_import
259
  nggallery_admin_import();
260
  break;
261
  case "nggallery-about" :
262
- include_once ( dirname (__FILE__) . '/about.php' ); // nggallery_admin_about
263
  nggallery_admin_about();
264
  break;
265
  case "nggallery" :
266
  default :
267
- include_once ( dirname (__FILE__) . '/overview.php' ); // nggallery_admin_overview
268
  nggallery_admin_overview();
269
  break;
270
  }
@@ -274,52 +295,54 @@ class nggAdminPanel{
274
  global $wp_version;
275
 
276
  // no need to go on if it's not a plugin page
277
- if( !isset($_GET['page']) )
278
  return;
 
279
 
280
- wp_register_script('ngg-ajax', NGGALLERY_URLPATH . 'admin/js/ngg.ajax.js', array('jquery'), '1.4.1');
281
- wp_localize_script('ngg-ajax', 'nggAjaxSetup', array(
282
- 'url' => admin_url('admin-ajax.php'),
283
- 'action' => 'ngg_ajax_operation',
284
- 'operation' => '',
285
- 'nonce' => wp_create_nonce( 'ngg-ajax' ),
286
- 'ids' => '',
287
- 'permission' => __('You do not have the correct permission', 'nggallery'),
288
- 'error' => __('Unexpected Error', 'nggallery'),
289
- 'failure' => __('A failure occurred', 'nggallery')
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
290
  ) );
291
- wp_register_script( 'ngg-plupload-handler', NGGALLERY_URLPATH .'admin/js/plupload.handler.js', array('plupload-all'), '0.0.1' );
292
- wp_localize_script( 'ngg-plupload-handler', 'pluploadL10n', array(
293
- 'queue_limit_exceeded' => __('You have attempted to queue too many files.'),
294
- 'file_exceeds_size_limit' => __('This file exceeds the maximum upload size for this site.'),
295
- 'zero_byte_file' => __('This file is empty. Please try another.'),
296
- 'invalid_filetype' => __('This file type is not allowed. Please try another.'),
297
- 'not_an_image' => __('This file is not an image. Please try another.'),
298
- 'image_memory_exceeded' => __('Memory exceeded. Please try another smaller file.'),
299
- 'image_dimensions_exceeded' => __('This is larger than the maximum size. Please try another.'),
300
- 'default_error' => __('An error occurred in the upload. Please try again later.'),
301
- 'missing_upload_url' => __('There was a configuration error. Please contact the server administrator.'),
302
- 'upload_limit_exceeded' => __('You may only upload 1 file.'),
303
- 'http_error' => __('HTTP error.'),
304
- 'upload_failed' => __('Upload failed.'),
305
- 'io_error' => __('IO error.'),
306
- 'security_error' => __('Security error.'),
307
- 'file_cancelled' => __('File canceled.'),
308
- 'upload_stopped' => __('Upload stopped.'),
309
- 'dismiss' => __('Dismiss'),
310
- 'crunching' => __('Crunching&hellip;'),
311
- 'deleted' => __('moved to the trash.'),
312
- 'error_uploading' => __('&#8220;%s&#8221; has failed to upload due to an error'),
313
- 'no_gallery' => __('You didn\'t select a gallery!','nggallery')
314
- ) );
315
- wp_register_script('ngg-progressbar', NGGALLERY_URLPATH .'admin/js/ngg.progressbar.js', array('jquery'), '2.0.1');
316
- wp_register_script('jquery-ui-autocomplete', NGGALLERY_URLPATH .'admin/js/jquery.ui.autocomplete.min.js', array('jquery-ui-core', 'jquery-ui-widget'), '1.8.15');
317
-
318
- switch ($_GET['page']) {
319
  case NGGFOLDER :
320
  wp_enqueue_script( 'postbox' );
321
  add_thickbox();
322
- break;
323
  case "nggallery-manage-gallery" :
324
  wp_enqueue_script( 'postbox' );
325
  wp_enqueue_script( 'ngg-ajax' );
@@ -327,162 +350,244 @@ class nggAdminPanel{
327
  wp_enqueue_script( 'jquery-ui-dialog' );
328
  wp_enqueue_script( 'jquery-ui-sortable' );
329
  wp_enqueue_script( 'jquery-ui-datepicker' );
330
- wp_register_script('shutter', NGGALLERY_URLPATH .'shutter/shutter-reloaded.js', false ,'1.3.2');
331
- wp_localize_script('shutter', 'shutterSettings', array(
332
- 'msgLoading' => __('L O A D I N G', 'nggallery'),
333
- 'msgClose' => __('Click to Close', 'nggallery'),
334
- 'imageCount' => '1'
335
- ) );
336
- wp_enqueue_script( 'shutter' );
337
- break;
338
  case "nggallery-manage-album" :
339
- wp_enqueue_script( 'jquery-ui-autocomplete' );
340
- wp_enqueue_script( 'jquery-ui-dialog' );
341
- wp_enqueue_script( 'jquery-ui-sortable' );
342
- wp_enqueue_script( 'ngg-autocomplete', NGGALLERY_URLPATH .'admin/js/ngg.autocomplete.js', array('jquery-ui-autocomplete'), '1.0.1');
343
- break;
344
  case "nggallery-options" :
345
  wp_enqueue_script( 'jquery-ui-tabs' );
346
- //wp_enqueue_script( 'ngg-colorpicker', NGGALLERY_URLPATH .'admin/js/colorpicker/js/colorpicker.js', array('jquery'), '1.0');
347
- break;
348
  case "nggallery-add-gallery" :
349
  wp_enqueue_script( 'jquery-ui-tabs' );
350
  wp_enqueue_script( 'ngg-plupload-handler' );
351
  wp_enqueue_script( 'ngg-ajax' );
352
  wp_enqueue_script( 'ngg-progressbar' );
353
- wp_enqueue_script( 'jquery-ui-dialog' );
354
- wp_enqueue_script( 'jqueryFileTree', NGGALLERY_URLPATH .'admin/js/jqueryFileTree/jqueryFileTree.js', array('jquery'), '1.0.1' );
355
- break;
356
  case "nggallery-style" :
357
  wp_enqueue_script( 'codepress' );
358
- break;
359
 
360
  }
361
  }
362
 
 
 
 
363
  function load_styles() {
364
- // load the icon for the navigation menu
365
- wp_enqueue_style( 'nggmenu', NGGALLERY_URLPATH .'admin/css/menu.css', array() );
366
- wp_register_style( 'nggadmin', NGGALLERY_URLPATH .'admin/css/nggadmin.css', false, '2.8.1', 'screen' );
367
- wp_register_style( 'ngg-jqueryui', NGGALLERY_URLPATH .'admin/css/jquery.ui.css', false, '1.8.5', 'screen' );
368
 
369
- // no need to go on if it's not a plugin page
370
- if( !isset($_GET['page']) )
371
  return;
 
372
 
373
- switch ($_GET['page']) {
374
  case NGGFOLDER :
375
  wp_enqueue_style( 'thickbox' );
376
  case "nggallery-about" :
377
  wp_enqueue_style( 'nggadmin' );
378
- //TODO:Remove after WP 3.3 release
379
- if ( !defined('IS_WP_3_3') )
380
- wp_admin_css( 'css/dashboard' );
381
- break;
382
  case "nggallery-add-gallery" :
383
  wp_enqueue_style( 'ngg-jqueryui' );
384
- wp_enqueue_style( 'jqueryFileTree', NGGALLERY_URLPATH .'admin/js/jqueryFileTree/jqueryFileTree.css', false, '1.0.1', 'screen' );
385
- break;
386
  case "nggallery-options" :
387
- wp_enqueue_style( 'nggtabs', NGGALLERY_URLPATH .'admin/css/jquery.ui.tabs.css', false, '2.5.0', 'screen' );
388
  wp_enqueue_style( 'nggadmin' );
389
- break;
 
390
  case "nggallery-manage-gallery" :
391
- wp_enqueue_style('shutter', NGGALLERY_URLPATH .'shutter/shutter-reloaded.css', false, '1.3.2', 'screen');
392
- wp_enqueue_style( 'datepicker', NGGALLERY_URLPATH .'admin/css/jquery.ui.datepicker.css', false, '1.8.2', 'screen' );
393
  case "nggallery-roles" :
394
- break;
395
  case "nggallery-manage-album" :
396
  wp_enqueue_style( 'ngg-jqueryui' );
397
  wp_enqueue_style( 'nggadmin' );
398
- break;
399
  case "nggallery-tags" :
400
- wp_enqueue_style( 'nggtags', NGGALLERY_URLPATH .'admin/css/tags-admin.css', false, '2.6.1', 'screen' );
401
  break;
402
  case "nggallery-style" :
403
- break;
404
- }
405
- }
406
-
407
- function show_help($help, $screen) {
408
-
409
- // since WP3.0 it's an object
410
- if ( is_object($screen) )
411
- $screen = $screen->id;
412
-
413
- $link = '';
414
- // menu title is localized...
415
- $i18n = strtolower ( _n( 'Gallery', 'Galleries', 1, 'nggallery' ) );
416
-
417
- switch ($screen) {
418
- case 'toplevel_page_' . NGGFOLDER :
419
- $link = __('<a href="http://www.wpgetready.com" target="_blank">Introduction</a>', 'nggallery');
420
- break;
421
- case "{$i18n}_page_nggallery-about" :
422
- $link = __('<a href="http://www.nextgen-gallery.com/languages" target="_blank">Languages</a>', 'nggallery');
423
- break;
424
- }
425
-
426
- if ( !empty($link) ) {
427
- $help = '<h5>' . __('Get help with NextCellent Gallery', 'nggallery') . '</h5>';
428
- $help .= '<div class="metabox-prefs">';
429
- $help .= $link;
430
- $help .= "</div>\n";
431
- $help .= '<h5>' . __('More Help & Info', 'nggallery') . '</h5>';
432
- $help .= '<div class="metabox-prefs">';
433
- $help .= __('<a href="http://wordpress.org/tags/nextcellent-gallery-nextgen-legacy" target="_blank">Support Forums</a>', 'nggallery');
434
- $help .= ' | <a href="http://wordpress.org/plugins/nextcellent-gallery-nextgen-legacy/" target="_blank">' . __('Download latest version', 'nggallery') . '</a>';
435
- $help .= "</div>\n";
436
  }
437
-
438
- return $help;
439
  }
440
 
441
- /**
442
- * New wrapper for WordPress 3.3, so contextual help will be added to the admin bar
443
- * Rework this see http://wpdevel.wordpress.com/2011/12/06/help-and-screen-api-changes-in-3-3/
444
- *
445
- * @since 1.9.0
446
- * @param object $screen
447
- * @return void
448
- */
449
- function add_contextual_help($screen) {
450
-
451
- $help = $this->show_help('', $screen);
452
- //add_contextual_help( $screen, $help );
453
- }
454
-
455
  /**
456
- * We need to manipulate the current_screen name so that we can show the correct column screen options
 
 
457
  *
458
- * @since 1.8.0
459
- * @param object $screen
460
- * @return object $screen
461
  */
462
- function edit_current_screen($screen) {
463
-
464
- if ( is_string($screen) )
465
- $screen = convert_to_screen($screen);
466
 
467
  // menu title is localized, so we need to change the toplevel name
468
- $i18n = strtolower ( _n( 'Gallery', 'Galleries', 1, 'nggallery' ) );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
469
 
470
- switch ($screen->id) {
 
 
 
 
 
471
  case "{$i18n}_page_nggallery-manage-gallery" :
472
  // we would like to have screen option only at the manage images / gallery page
473
- if ( isset ($_POST['sortGallery']) )
474
- $screen = $screen;
475
- else if ( (isset($_GET['mode']) && $_GET['mode'] == 'edit') || isset ($_POST['backToGallery']) )
476
  $screen->base = $screen->id = 'nggallery-manage-images';
477
- else if ( (isset($_GET['mode']) && $_GET['mode'] == 'sort') )
478
- $screen = $screen;
479
- else
480
  $screen->base = $screen->id = 'nggallery-manage-gallery';
481
- break;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
482
  }
483
 
484
- if ( defined('IS_WP_3_3') )
485
- $this->add_contextual_help($screen);
 
 
 
 
486
 
487
  return $screen;
488
  }
@@ -493,21 +598,23 @@ class nggAdminPanel{
493
  * @return void
494
  */
495
  function register_columns() {
496
- include_once ( dirname (__FILE__) . '/manage-images.php' );
497
 
498
- $wp_list_table = new _NGG_Images_List_Table('nggallery-manage-images');
499
 
500
- include_once ( dirname (__FILE__) . '/manage-galleries.php' );
501
 
502
- $wp_list_table = new _NGG_Galleries_List_Table('nggallery-manage-gallery');
503
  }
504
  }
505
 
506
- function wpmu_enable_function($value) {
507
- if (is_multisite()) {
508
- $ngg_options = get_site_option('ngg_options');
509
- return $ngg_options[$value];
 
510
  }
 
511
  // if this is not WPMU, enable it !
512
  return true;
513
  }
1
  <?php
2
+
3
  /**
4
  * nggAdminPanel - Admin Section for NextGEN Gallery
5
  *
8
  *
9
  * @since 1.0.0
10
  */
11
+ class nggAdminPanel {
12
 
13
  // constructor
14
  function __construct() {
15
 
16
  // Add the admin menu
17
+ add_action( 'admin_menu', array( &$this, 'add_menu' ) );
18
+ add_action( 'network_admin_menu', array( &$this, 'add_network_admin_menu' ) );
 
19
 
20
  // Add the script and style files
21
+ add_action( 'admin_print_scripts', array( &$this, 'load_scripts' ) );
22
+ add_action( 'admin_print_styles', array( &$this, 'load_styles' ) );
23
 
24
  // Try to detect plugins that embed their own jQuery and jQuery UI
25
  // libraries and load them in NGG's admin pages
26
+ add_action( 'admin_enqueue_scripts', array( &$this, 'buffer_scripts' ), 0 );
27
+ add_action( 'admin_print_scripts', array( &$this, 'output_scripts' ), PHP_INT_MAX );
28
 
29
+ add_filter( 'current_screen', array( &$this, 'edit_current_screen' ) );
 
 
30
 
31
+ // Add WPML hook to register description / alt text for translation
32
+ add_action( 'ngg_image_updated', array( 'nggGallery', 'RegisterString' ) );
33
 
34
  }
35
 
37
  * If a NGG page is being requested, we buffer any rendering of <script>
38
  * tags to detect conflicts and remove them if need be
39
  */
40
+ function buffer_scripts() {
 
41
  // Is this a NGG admin page?
42
+ if ( isset( $_REQUEST['page'] ) && strpos( $_REQUEST['page'], 'nggallery' ) !== false ) {
43
  ob_start();
44
  }
45
  }
46
 
47
+ function output_scripts() {
 
48
  // Is this a NGG admin page?
49
+ if ( isset( $_REQUEST['page'] ) && strpos( $_REQUEST['page'], 'nggallery' ) !== false ) {
50
+ $plugin_folder = NGGFOLDER;
51
+ $skipjs_count = 0;
52
+ $html = ob_get_contents();
53
  ob_end_clean();
54
 
55
+ if ( ! defined( 'NGG_JQUERY_CONFLICT_DETECTION' ) ) {
56
+ define( 'NGG_JQUERY_CONFLICT_DETECTION', true );
57
  }
58
 
59
+ if ( NGG_JQUERY_CONFLICT_DETECTION ) {
60
  // Detect custom jQuery script
61
+ if ( preg_match_all( "/<script.*wp-content.*jquery[-_\.](min\.)?js.*<\script>/", $html, $matches, PREG_SET_ORDER ) ) {
62
+ foreach ( $matches as $match ) {
63
+ $old_script = array_shift( $match );
64
+ if ( strpos( $old_script, NGGFOLDER ) === false ) {
65
+ $html = str_replace( $old_script, '', $html );
66
+ }
67
  }
68
  }
69
 
70
  // Detect custom jQuery UI script and remove
71
+ if ( preg_match_all( "/<script.*wp-content.*jquery[-_\.]ui.*<\/script>/", $html, $matches, PREG_SET_ORDER ) ) {
72
+ $detected_jquery_ui = true;
73
+ foreach ( $matches as $match ) {
74
+ $old_script = array_shift( $match );
75
+ if ( strpos( $old_script, NGGFOLDER ) === false ) {
76
+ $html = str_replace( $old_script, '', $html );
77
+ }
78
  }
79
  }
80
 
81
+ if ( isset( $_REQUEST['skipjs'] ) ) {
82
+ foreach ( $_REQUEST['skipjs'] as $js ) {
83
+ $js = preg_quote( $js );
84
+ if ( preg_match_all( "#<script.*{$js}.*</script>#", $html, $matches, PREG_SET_ORDER ) ) {
85
+ foreach ( $matches as $match ) {
86
+ $old_script = array_shift( $match );
87
+ if ( strpos( $old_script, NGGFOLDER ) === false ) {
88
+ $html = str_replace( $old_script, '', $html );
89
+ }
90
  }
91
  }
92
  }
93
+ $skipjs_count = count( $_REQUEST['skipjs'] );
94
  }
95
 
96
 
97
  // Use WordPress built-in version of jQuery
98
+ $jquery_url = includes_url( 'js/jquery/jquery.js' );
99
+ $html = implode( '', array(
100
  "<script type='text/javascript' src='{$jquery_url}'></script>\n",
101
  "<script type='text/javascript'>
102
  window.onerror = function(msg, url, line){
112
  return true;
113
  };</script>\n",
114
  $html
115
+ ) );
116
  }
117
 
118
  echo $html;
119
  }
120
  }
121
 
122
+
123
+
124
+ /**
125
+ * Enable dash icons for WP latest versions. See https://developer.wordpress.org/resource/dashicons/#format-gallery
126
+ * @param $wp_version defaults to current WP version
127
+ * @return string
128
+ */
129
+
130
+ function get_icon_gallery($wp_version='') {
131
+ if (empty($wp_version)) {
132
+ $wp_version= get_bloginfo( 'version' ) ; //get WP Version
133
+ }
134
+ if ( $wp_version >= 3.8 ) {
135
+ return 'dashicons-format-gallery'; //new style
136
+ }
137
+ //older style
138
+ return path_join( NGGALLERY_URLPATH, 'admin/images/nextgen_16_color.png' );
139
+ }
140
+ /**
141
+ * Integrate the menu
142
+ *
143
+ */
144
+ function add_menu() {
145
+ add_menu_page( __( 'Galleries', 'nggallery' ), __( 'Galleries', 'nggallery' ),
146
+ 'NextGEN Gallery overview', NGGFOLDER, array(&$this,'show_menu'), $this->get_icon_gallery());
147
+
148
+ add_submenu_page( NGGFOLDER, __( 'Overview', 'nggallery' ), __( 'Overview', 'nggallery' ), 'NextGEN Gallery overview',
149
+ NGGFOLDER, array(&$this,'show_menu' ) );
150
+
151
+ add_submenu_page( NGGFOLDER, __( 'Add Gallery / Images', 'nggallery' ), __( 'Add Gallery / Images', 'nggallery' ), 'NextGEN Upload images' , 'nggallery-add-gallery',
152
+ array( &$this, 'show_menu' ) );
153
+
154
+ add_submenu_page( NGGFOLDER, __( 'Galleries', 'nggallery' ) , __( 'Galleries', 'nggallery' ) , 'NextGEN Manage gallery', 'nggallery-manage-gallery',
155
+ array( &$this, 'show_menu' ) );
156
+
157
+ add_submenu_page( NGGFOLDER, __( 'Albums', 'nggallery' ) , __( 'Albums', 'nggallery' ) , 'NextGEN Edit album' , 'nggallery-manage-album',
158
+ array( &$this, 'show_menu' ) );
159
+
160
+ add_submenu_page( NGGFOLDER, __( 'Tags', 'nggallery' ) , __( 'Tags', 'nggallery' ) , 'NextGEN Manage tags' , 'nggallery-tags',
161
+ array( &$this, 'show_menu' ) );
162
+
163
+ add_submenu_page( NGGFOLDER, __( 'Settings', 'nggallery' ) , __( 'Settings', 'nggallery' ) , 'NextGEN Change options', 'nggallery-options',
164
+ array( &$this, 'show_menu' ) );
165
+
166
+ if ( wpmu_enable_function( 'wpmuStyle' ) ) {
167
+ add_submenu_page( NGGFOLDER, __( 'Style', 'nggallery' ), __( 'Style', 'nggallery' ), 'NextGEN Change style', 'nggallery-style',
168
+ array( &$this, 'show_menu' ) );
169
+ }
170
+ if ( wpmu_enable_function( 'wpmuRoles' ) || is_super_admin() ) {
171
+ add_submenu_page( NGGFOLDER, __( 'Roles', 'nggallery' ), __( 'Roles', 'nggallery' ), 'activate_plugins', 'nggallery-roles',
172
+ array( &$this, 'show_menu' ) );
173
+ }
174
+ add_submenu_page( NGGFOLDER, __( 'About this Gallery', 'nggallery' ) , __( 'About', 'nggallery' ) , 'NextGEN Gallery overview', 'nggallery-about',
175
+ array( &$this, 'show_menu' ) );
176
+
177
+ if ( ! is_multisite() || is_super_admin() ) {
178
+ add_submenu_page( NGGFOLDER, __( 'Reset / Uninstall', 'nggallery' ), __( 'Reset / Uninstall', 'nggallery' ), 'activate_plugins', 'nggallery-setup',
179
+ array( &$this, 'show_menu' ) );
180
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
181
 
182
  //register the column fields
183
  $this->register_columns();
184
  }
185
 
186
  // integrate the network menu
187
+ function add_network_admin_menu() {
188
+ add_menu_page( __( 'Galleries', 'nggallery' ), __( 'Galleries', 'nggallery' ), 'nggallery-wpmu',
189
+ NGGFOLDER, array(&$this,'show_network_settings'), $this->get_icon_gallery() );
190
+
191
+ add_submenu_page( NGGFOLDER, __( 'Network settings', 'nggallery' ), __( 'Network settings', 'nggallery' ), 'nggallery-wpmu',
192
+ NGGFOLDER, array(&$this, 'show_network_settings' ) );
193
 
194
+ add_submenu_page( NGGFOLDER, __( 'Reset / Uninstall', 'nggallery' ), __( 'Reset / Uninstall', 'nggallery' ), 'activate_plugins',
195
+ 'nggallery-setup', array(&$this, 'show_menu') );
 
196
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
197
 
198
+ /**
199
+ * Maybe show an upgrade page.
200
+ */
201
+ private function show_upgrade_page() {
202
+
203
+ global $ngg;
204
+
205
+ // check for upgrade and show upgrade screen
206
+ if ( get_option( 'ngg_db_version' ) != NGG_DBVERSION ) {
207
+ include_once( dirname( __FILE__ ) . '/functions.php' );
208
+ include_once( dirname( __FILE__ ) . '/upgrade.php' );
209
+ nggallery_upgrade_page();
210
+
211
+ exit;
212
+ }
213
+ }
214
+
215
+ // show the network page
216
+ function show_network_settings() {
217
+ $this->show_upgrade_page();
218
+ include_once( dirname( __FILE__ ) . '/style.php' );
219
+ include_once( dirname( __FILE__ ) . '/wpmu.php' );
220
  nggallery_wpmu_setup();
221
+ }
222
 
223
  // load the script for the defined page and load only this code
224
+ //20140515: removed donation code (not in use)
225
  function show_menu() {
226
 
227
  global $ngg;
228
+
229
+ $this->show_upgrade_page();
 
 
 
 
 
 
230
 
231
  // Set installation date
232
+ if ( empty( $ngg->options['installDate'] ) ) {
233
  $ngg->options['installDate'] = time();
234
+ update_option( 'ngg_options', $ngg->options );
235
  }
236
 
237
+ switch ( $_GET['page'] ) {
238
  case "nggallery-add-gallery" :
239
+ include_once( dirname( __FILE__ ) . '/functions.php' ); // admin functions
240
+ include_once( dirname( __FILE__ ) . '/addgallery.php' ); // nggallery_admin_add_gallery
241
  $ngg->addgallery_page = new nggAddGallery ();
242
  $ngg->addgallery_page->controller();
243
  break;
244
  case "nggallery-manage-gallery" :
245
+ include_once( dirname( __FILE__ ) . '/functions.php' ); // admin functions
246
+ include_once( dirname( __FILE__ ) . '/manage.php' ); // nggallery_admin_manage_gallery
247
  // Initate the Manage Gallery page
248
  $ngg->manage_page = new nggManageGallery ();
249
  // Render the output now, because you cannot access a object during the constructor is not finished
250
  $ngg->manage_page->controller();
251
  break;
252
  case "nggallery-manage-album" :
253
+ include_once( dirname( __FILE__ ) . '/album.php' ); // nggallery_admin_manage_album
254
  $ngg->manage_album = new nggManageAlbum ();
255
  $ngg->manage_album->controller();
256
  break;
257
  case "nggallery-options" :
258
+ include_once( dirname( __FILE__ ) . '/settings.php' ); // nggallery_admin_options
259
  $ngg->option_page = new nggOptions ();
260
  $ngg->option_page->controller();
261
  break;
262
  case "nggallery-tags" :
263
+ include_once( dirname( __FILE__ ) . '/tags.php' ); // nggallery_admin_tags
264
  break;
265
  case "nggallery-style" :
266
+ include_once( dirname( __FILE__ ) . '/style.php' ); // nggallery_admin_style
267
  $ngg->nggallery_style = new NGG_Style ();
268
  $ngg->nggallery_style->controller();
269
  break;
270
  case "nggallery-setup" :
271
+ include_once( dirname( __FILE__ ) . '/setup.php' ); // nggallery_admin_setup
272
  nggallery_admin_setup();
273
  break;
274
  case "nggallery-roles" :
275
+ include_once( dirname( __FILE__ ) . '/roles.php' ); // nggallery_admin_roles
276
  nggallery_admin_roles();
277
  break;
278
  case "nggallery-import" :
279
+ include_once( dirname( __FILE__ ) . '/myimport.php' ); // nggallery_admin_import
280
  nggallery_admin_import();
281
  break;
282
  case "nggallery-about" :
283
+ include_once( dirname( __FILE__ ) . '/about.php' ); // nggallery_admin_about
284
  nggallery_admin_about();
285
  break;
286
  case "nggallery" :
287
  default :
288
+ include_once( dirname( __FILE__ ) . '/overview.php' ); // nggallery_admin_overview
289
  nggallery_admin_overview();
290
  break;
291
  }
295
  global $wp_version;
296
 
297
  // no need to go on if it's not a plugin page
298
+ if ( ! isset( $_GET['page'] ) ) {
299
  return;
300
+ }
301
 
302
+ wp_register_script( 'ngg-ajax', NGGALLERY_URLPATH . 'admin/js/ngg.ajax.js', array( 'jquery' ), '1.4.1' );
303
+ wp_localize_script( 'ngg-ajax', 'nggAjaxSetup', array(
304
+ 'url' => admin_url( 'admin-ajax.php' ),
305
+ 'action' => 'ngg_ajax_operation',
306
+ 'operation' => '',
307
+ 'nonce' => wp_create_nonce( 'ngg-ajax' ),
308
+ 'ids' => '',
309
+ 'permission' => __( 'You do not have the correct permission', 'nggallery' ),
310
+ 'error' => __( 'Unexpected Error', 'nggallery' ),
311
+ 'failure' => __( 'A failure occurred', 'nggallery' )
312
+ ) );
313
+ wp_register_script( 'ngg-plupload-handler', NGGALLERY_URLPATH . 'admin/js/plupload.handler.js', array( 'plupload-all' ), '0.0.1' );
314
+ wp_localize_script( 'ngg-plupload-handler', 'pluploadL10n', array(
315
+ 'queue_limit_exceeded' => __( 'You have attempted to queue too many files.' ),
316
+ 'file_exceeds_size_limit' => __( 'This file exceeds the maximum upload size for this site.' ),
317
+ 'zero_byte_file' => __( 'This file is empty. Please try another.' ),
318
+ 'invalid_filetype' => __( 'This file type is not allowed. Please try another.' ),
319
+ 'not_an_image' => __( 'This file is not an image. Please try another.' ),
320
+ 'image_memory_exceeded' => __( 'Memory exceeded. Please try another smaller file.' ),
321
+ 'image_dimensions_exceeded' => __( 'This is larger than the maximum size. Please try another.' ),
322
+ 'default_error' => __( 'An error occurred in the upload. Please try again later.' ),
323
+ 'missing_upload_url' => __( 'There was a configuration error. Please contact the server administrator.' ),
324
+ 'upload_limit_exceeded' => __( 'You may only upload 1 file.' ),
325
+ 'http_error' => __( 'HTTP error.' ),
326
+ 'upload_failed' => __( 'Upload failed.' ),
327
+ 'io_error' => __( 'IO error.' ),
328
+ 'security_error' => __( 'Security error.' ),
329
+ 'file_cancelled' => __( 'File canceled.' ),
330
+ 'upload_stopped' => __( 'Upload stopped.' ),
331
+ 'dismiss' => __( 'Dismiss' ),
332
+ 'crunching' => __( 'Crunching&hellip;' ),
333
+ 'deleted' => __( 'moved to the trash.' ),
334
+ 'error_uploading' => __( '&#8220;%s&#8221; has failed to upload due to an error' ),
335
+ 'no_gallery' => __( 'You didn\'t select a gallery!', 'nggallery' )
336
  ) );
337
+ wp_register_script( 'ngg-progressbar', NGGALLERY_URLPATH . 'admin/js/ngg.progressbar.js', array( 'jquery' ), '2.0.1' );
338
+ wp_register_script( 'jquery-ui-autocomplete', NGGALLERY_URLPATH . 'admin/js/jquery.ui.autocomplete.min.js',
339
+ array('jquery-ui-core','jquery-ui-widget'), '1.8.15' );
340
+
341
+ switch ( $_GET['page'] ) {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
342
  case NGGFOLDER :
343
  wp_enqueue_script( 'postbox' );
344
  add_thickbox();
345
+ break;
346
  case "nggallery-manage-gallery" :
347
  wp_enqueue_script( 'postbox' );
348
  wp_enqueue_script( 'ngg-ajax' );
350
  wp_enqueue_script( 'jquery-ui-dialog' );
351
  wp_enqueue_script( 'jquery-ui-sortable' );
352
  wp_enqueue_script( 'jquery-ui-datepicker' );
353
+ wp_register_script( 'shutter', NGGALLERY_URLPATH . 'shutter/shutter-reloaded.js', false, '1.3.2' );
354
+ wp_localize_script( 'shutter', 'shutterSettings', array(
355
+ 'msgLoading' => __( 'L O A D I N G', 'nggallery' ),
356
+ 'msgClose' => __( 'Click to Close', 'nggallery' ),
357
+ 'imageCount' => '1'
358
+ ) );
359
+ wp_enqueue_script( 'shutter' );
360
+ break;
361
  case "nggallery-manage-album" :
362
+ wp_enqueue_script( 'jquery-ui-autocomplete' );
363
+ wp_enqueue_script( 'jquery-ui-dialog' );
364
+ wp_enqueue_script( 'jquery-ui-sortable' );
365
+ wp_enqueue_script( 'ngg-autocomplete', NGGALLERY_URLPATH . 'admin/js/ngg.autocomplete.js', array( 'jquery-ui-autocomplete' ), '1.0.1' );
366
+ break;
367
  case "nggallery-options" :
368
  wp_enqueue_script( 'jquery-ui-tabs' );
369
+ wp_enqueue_script( 'wp-color-picker' );
370
+ break;
371
  case "nggallery-add-gallery" :
372
  wp_enqueue_script( 'jquery-ui-tabs' );
373
  wp_enqueue_script( 'ngg-plupload-handler' );
374
  wp_enqueue_script( 'ngg-ajax' );
375
  wp_enqueue_script( 'ngg-progressbar' );
376
+ wp_enqueue_script( 'jquery-ui-dialog' );
377
+ wp_enqueue_script( 'jqueryFileTree', NGGALLERY_URLPATH . 'admin/js/jqueryFileTree/jqueryFileTree.js', array( 'jquery' ), '1.0.1' );
378
+ break;
379
  case "nggallery-style" :
380
  wp_enqueue_script( 'codepress' );
381
+ break;
382
 
383
  }
384
  }
385
 
386
+ /**
387
+ * Load the icon for the navigation menu
388
+ */
389
  function load_styles() {
390
+ wp_enqueue_style ( 'nggmenu' , NGGALLERY_URLPATH . 'admin/css/menu.css', array() );
391
+ wp_register_style( 'nggadmin' , NGGALLERY_URLPATH . 'admin/css/nggadmin.css', false, '2.8.1', 'screen' );
392
+ wp_register_style( 'ngg-jqueryui', NGGALLERY_URLPATH . 'admin/css/jquery.ui.css', false, '1.8.5', 'screen' );
 
393
 
394
+ // no need to go on if it's not a plugin page
395
+ if ( ! isset( $_GET['page'] ) ) {
396
  return;
397
+ }
398
 
399
+ switch ( $_GET['page'] ) {
400
  case NGGFOLDER :
401
  wp_enqueue_style( 'thickbox' );
402
  case "nggallery-about" :
403
  wp_enqueue_style( 'nggadmin' );
404
+ break;
 
 
 
405
  case "nggallery-add-gallery" :
406
  wp_enqueue_style( 'ngg-jqueryui' );
407
+ wp_enqueue_style( 'jqueryFileTree', NGGALLERY_URLPATH . 'admin/js/jqueryFileTree/jqueryFileTree.css', false, '1.0.1', 'screen' );
 
408
  case "nggallery-options" :
409
+ wp_enqueue_style( 'nggtabs', NGGALLERY_URLPATH . 'admin/css/jquery.ui.tabs.css', false, '2.5.0', 'screen' );
410
  wp_enqueue_style( 'nggadmin' );
411
+ wp_enqueue_style( 'wp-color-picker' );
412
+ break;
413
  case "nggallery-manage-gallery" :
414
+ wp_enqueue_style( 'shutter', NGGALLERY_URLPATH . 'shutter/shutter-reloaded.css', false, '1.3.2', 'screen' );
415
+ wp_enqueue_style( 'datepicker', NGGALLERY_URLPATH . 'admin/css/jquery.ui.datepicker.css', false, '1.8.2', 'screen' );
416
  case "nggallery-roles" :
 
417
  case "nggallery-manage-album" :
418
  wp_enqueue_style( 'ngg-jqueryui' );
419
  wp_enqueue_style( 'nggadmin' );
420
+ break;
421
  case "nggallery-tags" :
422
+ wp_enqueue_style( 'nggtags', NGGALLERY_URLPATH . 'admin/css/tags-admin.css', false, '2.6.1', 'screen' );
423
  break;
424
  case "nggallery-style" :
425
+ break;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
426
  }
 
 
427
  }
428
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
429
  /**
430
+ * Add help and options to the correct screens
431
+ *
432
+ * @since 1.9.24
433
  *
434
+ * @param object $screen The current screen.
435
+ *
436
+ * @return object $screen The current screen.
437
  */
438
+ function edit_current_screen( $screen ) {
 
 
 
439
 
440
  // menu title is localized, so we need to change the toplevel name
441
+ $i18n = strtolower( __( 'Galleries', 'nggallery' ) );
442
+
443
+ switch ( $screen->id ) {
444
+ case 'toplevel_page_' . NGGFOLDER :
445
+ //The tab content
446
+ $help = '<p>' . __( 'Welcome to your NextCellent Dashboard! This screen gives you all kinds of information about NextCellent at glance. You can get help for any screen by clicking the Help tab in the upper corner.' ) . '</p>';
447
+ //Add the tab
448
+ $screen->add_help_tab( array(
449
+ 'id' => $screen->id . '-welcome',
450
+ 'title' => 'Overview',
451
+ 'content' => $help
452
+ ) );
453
+
454
+ //The tab content
455
+ $help = '<p>' . __( 'The boxes on your overview screen are:', 'nggallery' ) . '</p>';
456
+ $help .= '<p><strong>' . __( 'At a Glance', 'nggallery' ) . '</strong> - ' . __( 'Shows some general information about your site, such as the number of pictures, albums and galleries.', 'nggallery' ) . '</p>';
457
+ $help .= '<p><strong>' . __( 'Latest News', 'nggallery' ) . '</strong> - ' . __( 'The latest NextCellent news.', 'nggallery' ) . '</p>';
458
+ if ( ! is_multisite() || is_super_admin() ) {
459
+ $help .= '<p><strong>' . __( 'Related plugins', 'nggallery' ) . '</strong> - ' . __( 'Shows plugins that extend NextCellent.', 'nggallery' ) . ' <strong>' . __( 'Pay attention', 'nggallery' ) . '</strong>: ' . __( 'third parties plugins that are compatible with NGG may not be 100% compatible with NextCellent Gallery!', 'nggallery' ) . '</p>';
460
+ }
461
+ $help .= '<p><strong>' . __( 'Help me help YOU!', 'nggallery' ) . '</strong> - ' . __( 'Shows general information about he plugin and some links.', 'nggallery' ) . '</p>';
462
+ if ( ! ( get_locale() == 'en_US' ) ) {
463
+ $help .= '<p><strong>' . __( 'Translation', 'nggallery' ) . '</strong> - ' . __( 'View information about the current translation.' ) . '</p>';
464
+ }
465
+ if ( ! is_multisite() || is_super_admin() ) {
466
+ $help .= '<p><strong>' . __( 'Server Settings', 'nggallery' ) . '</strong> - ' . __( 'Show all the server settings!.', 'nggallery' ) . '</p>';
467
+ $help .= '<p><strong>' . __( 'Plugin Check', 'nggallery' ) . '</strong> - ' . __( 'Check if there are known errors in your installation.', 'nggallery' ) . '</p>';
468
+ }
469
+ //Add the tab
470
+ $screen->add_help_tab( array(
471
+ 'id' => $screen->id . '-content',
472
+ 'title' => 'Content',
473
+ 'content' => $help
474
+ ) );
475
+ break;
476
+ case "{$i18n}_page_nggallery-add-gallery" :
477
+
478
+ global $nggdb;
479
+ $gallerylist = $nggdb->find_all_galleries( 'gid', 'DESC' ); //look for galleries
480
+
481
+ $help = '<p>' . __( 'On this page you can add galleries and pictures to those galleries.', 'nggallery' ) . '</p>';
482
+ if ( nggGallery::current_user_can( 'NextGEN Add new gallery' ) ) {
483
+ $help .= '<p><strong>' . __( 'New gallery', 'nggallery' ) . '</strong> - ' . __( 'Add new galleries to NextCellent.', 'nggallery' ) . '</p>';
484
+ }
485
+ if ( empty ( $gallerylist ) ) {
486
+ $help .= '<p><strong>' . __( 'You must add a gallery before adding images!', 'nggallery' ) . '</strong>';
487
+ } else {
488
+ $help .= '<p><strong>' . __( 'Images', 'nggallery' ) . '</strong> - ' . __( 'Add new images to a gallery.', 'nggallery' ) . '</p>';
489
+ }
490
+ if ( wpmu_enable_function( 'wpmuZipUpload' ) && nggGallery::current_user_can( 'NextGEN Upload a zip' ) && ! empty ( $gallerylist ) ) {
491
+ $help .= '<p><strong>' . __( 'ZIP file', 'nggallery' ) . '</strong> - ' . __( 'Add images from a ZIP file.', 'nggallery' ) . '</p>';
492
+ }
493
+ if ( wpmu_enable_function( 'wpmuImportFolder' ) && nggGallery::current_user_can( 'NextGEN Import image folder' ) ) {
494
+ $help .= '<p><strong>' . __( 'Import folder', 'nggallery' ) . '</strong> - ' . __( 'Import a folder from the server as a new gallery.', 'nggallery' ) . '</p>';
495
+ }
496
 
497
+ $screen->add_help_tab( array(
498
+ 'id' => $screen->id . '-general',
499
+ 'title' => 'Add things',
500
+ 'content' => $help
501
+ ) );
502
+ break;
503
  case "{$i18n}_page_nggallery-manage-gallery" :
504
  // we would like to have screen option only at the manage images / gallery page
505
+ if ( ( isset( $_GET['mode'] ) && $_GET['mode'] == 'edit' ) || isset ( $_POST['backToGallery'] ) ) {
 
 
506
  $screen->base = $screen->id = 'nggallery-manage-images';
507
+ } else {
 
 
508
  $screen->base = $screen->id = 'nggallery-manage-gallery';
509
+ }
510
+
511
+ $help = '<p>' . __( 'Manage your images and galleries.', 'nggallery' ) . '</p>';
512
+
513
+ $screen->add_help_tab( array(
514
+ 'id' => $screen->id . '-general',
515
+ 'title' => 'Manage everything',
516
+ 'content' => $help
517
+ ) );
518
+ break;
519
+ case "{$i18n}_page_nggallery-manage-album" :
520
+ $help = '<p>' . __( 'Organize your galleries into albums.', 'nggallery' ) . '</p><p>' . __( 'First select an album from the dropdown and then drag the galleries you want to add or remove from the selected album.', 'nggallery' ) . '</p>';
521
+
522
+ $screen->add_help_tab( array(
523
+ 'id' => $screen->id . '-general',
524
+ 'title' => 'Organize everything',
525
+ 'content' => $help
526
+ ) );
527
+ break;
528
+ case "{$i18n}_page_nggallery-tags" :
529
+ $help = '<p>' . __( 'Organize your pictures with tags.', 'nggallery' ) . '</p><p>' . __( 'Rename, delete and edit tags. Use the rename function to merge tags.', 'nggallery' ) . '</p>';
530
+
531
+ $screen->add_help_tab( array(
532
+ 'id' => $screen->id . '-general',
533
+ 'title' => 'Organize pictures',
534
+ 'content' => $help
535
+ ) );
536
+ break;
537
+ case "{$i18n}_page_nggallery-options" :
538
+ $help = '<p>' . __( 'Edit all of NextCellent\'s options. The options are sorted in multiple categories.', 'nggallery' ) . '</p>';
539
+ $help .= '<p><strong>' . __( 'General', 'nggallery' ) . '</strong> - ' . __( 'General NextCellent options. Contains options for permalinks and related images.', 'nggallery' ) . '</p>';
540
+ $help .= '<p><strong>' . __( 'Images', 'nggallery' ) . '</strong> - ' . __( 'All image-related options. Also contains options for thumbnails.', 'nggallery' ) . '</p>';
541
+ $help .= '<p><strong>' . __( 'Gallery', 'nggallery' ) . '</strong> - ' . __( 'Everything about galleries. From sorting options to the number of images, it\'s all in here.', 'nggallery' ) . '</p>';
542
+ $help .= '<p><strong>' . __( 'Effects', 'nggallery' ) . '</strong> - ' . __( 'Make your gallery look beautiful.', 'nggallery' ) . '</p>';
543
+ $help .= '<p><strong>' . __( 'Watermark', 'nggallery' ) . '</strong> - ' . __( 'Who doesn\'t want theft-proof images?', 'nggallery' ) . '</p>';
544
+ $help .= '<p><strong>' . __( 'Slideshow', 'nggallery' ) . '</strong> - ' . __( 'Edit options for the slideshow.', 'nggallery' ) . '</p>';
545
+ $help .= '<p>' . __( 'Don\'t forget to press save!', 'nggallery' ) . '</p>';
546
+
547
+ $screen->add_help_tab( array(
548
+ 'id' => $screen->id . '-general',
549
+ 'title' => 'Edit options',
550
+ 'content' => $help
551
+ ) );
552
+ break;
553
+ case "{$i18n}_page_nggallery-style" :
554
+ $help = '<p>' . __( 'You can edit the css file to adjust how your gallery looks.', 'nggallery' ) . '</p>';
555
+ $help .= '<p>' . __( 'When you save an edited file, NextCellent automatically saves it as a copy in the folder ngg_styles. This protects your changes from upgrades.', 'nggallery' ) . '</p>';
556
+
557
+ $screen->add_help_tab( array(
558
+ 'id' => $screen->id . '-general',
559
+ 'title' => 'Style your gallery',
560
+ 'content' => $help
561
+ ) );
562
+ break;
563
+ case "{$i18n}_page_nggallery-roles" :
564
+ $help = '<p>' . __( 'You can assign the lowest user role that has access to a certain feature. Needless to say, all greater user roles will also have access to that feature.', 'nggallery' ) . '</p>';
565
+ $help .= '<p>' . __( 'NextCellent also works with various plugins that extend the default roles capabilities.', 'nggallery' ) . '</p>';
566
+
567
+ $screen->add_help_tab( array(
568
+ 'id' => $screen->id . '-general',
569
+ 'title' => 'Grant permissions',
570
+ 'content' => $help
571
+ ) );
572
+ break;
573
+ case "{$i18n}_page_nggallery-setup" :
574
+ $help = '<p>' . __( 'If \'someone\' messed with your settings (yeah, definitely not you), you can reset them here.', 'nggallery' ) . '</p>';
575
+ $help .= '<p><b>' . __( 'Attention!', 'nggallery' ) . '</b> ' . __( 'You should not use the Uninstall Plugin button, unless you know what you\'re doing! It should never be necessary to press it.', 'nggallery' ) . '</p>';
576
+
577
+ $screen->add_help_tab( array(
578
+ 'id' => $screen->id . '-general',
579
+ 'title' => 'Reset',
580
+ 'content' => $help
581
+ ) );
582
+ break;
583
  }
584
 
585
+ //Set the sidebar (same on all pages)
586
+ $screen->set_help_sidebar(
587
+ '<p><strong>' . __( 'For more information:', 'nggallery' ) . '</strong></p>' .
588
+ '<p><a href="http://codex.wordpress.org/Plugins_Editor_Screen" target="_blank">' . __( 'Support Forums', 'nggallery' ) . '</a></p>' .
589
+ '<p><a href="https://bitbucket.org/wpgetready/nextcellent" target="_blank">' . __( 'Source Code', 'nggallery' ) . '</a></p>'
590
+ );
591
 
592
  return $screen;
593
  }
598
  * @return void
599
  */
600
  function register_columns() {
601
+ include_once( dirname( __FILE__ ) . '/manage-images.php' );
602
 
603
+ $wp_list_table = new _NGG_Images_List_Table( 'nggallery-manage-images' );
604
 
605
+ include_once( dirname( __FILE__ ) . '/manage-galleries.php' );
606
 
607
+ $wp_list_table = new _NGG_Galleries_List_Table( 'nggallery-manage-gallery' );
608
  }
609
  }
610
 
611
+ function wpmu_enable_function( $value ) {
612
+ if ( is_multisite() ) {
613
+ $ngg_options = get_site_option( 'ngg_options' );
614
+
615
+ return $ngg_options[ $value ];
616
  }
617
+
618
  // if this is not WPMU, enable it !
619
  return true;
620
  }
admin/album.php CHANGED
@@ -377,7 +377,7 @@ function showDialog() {
377
  $album = $this->albums[$this->currentID];
378
  ?>
379
  <div class="widget-top">
380
- <h3><?php esc_html_e('Album ID', 'nggallery'); ?> <?php echo $album->id . ' : ' . esc_html( $album->name ); ?> </h3>
381
  </div>
382
  <div id="galleryContainer" class="widget-holder target">
383
  <?php
@@ -544,9 +544,9 @@ function showDialog() {
544
  </div>
545
  <div class="itemContent">
546
  ' . $preview_image . '
547
- <p><strong>' . __('Name', 'nggallery') . ' : </strong>' . esc_html ( nggGallery::i18n( $obj['name'] ) ). '</p>
548
- <p><strong>' . __('Title', 'nggallery') . ' : </strong>' . esc_html ( nggGallery::i18n( $obj['title'] ) ) . '</p>
549
- <p><strong>' . __('Page', 'nggallery'). ' : </strong>' . esc_html ( nggGallery::i18n( $obj['pagenname'] ) ) . '</p>
550
  ' . apply_filters('ngg_display_album_item_content', '', $obj) . '
551
  </div>
552
  </div>
377
  $album = $this->albums[$this->currentID];
378
  ?>
379
  <div class="widget-top">
380
+ <h3><?php esc_html_e('Album ID', 'nggallery'); ?> <?php echo $album->id . ': ' . esc_html( $album->name ); ?> </h3>
381
  </div>
382
  <div id="galleryContainer" class="widget-holder target">
383
  <?php
544
  </div>
545
  <div class="itemContent">
546
  ' . $preview_image . '
547
+ <p><strong>' . __('Name', 'nggallery') . ': </strong>' . esc_html ( nggGallery::i18n( $obj['name'] ) ). '</p>
548
+ <p><strong>' . __('Title', 'nggallery') . ': </strong>' . esc_html ( nggGallery::i18n( $obj['title'] ) ) . '</p>
549
+ <p><strong>' . __('Page', 'nggallery'). ': </strong>' . esc_html ( nggGallery::i18n( $obj['pagenname'] ) ) . '</p>
550
  ' . apply_filters('ngg_display_album_item_content', '', $obj) . '
551
  </div>
552
  </div>
admin/css/nggadmin.css CHANGED
@@ -344,6 +344,8 @@ div .innerhandle {
344
  border: 0;
345
  margin: 0;
346
  padding: 0;
 
 
347
  }
348
 
349
  .inlinepicture
344
  border: 0;
345
  margin: 0;
346
  padding: 0;
347
+ overflow-x: hidden;
348
+ text-overflow: ellipsis;
349
  }
350
 
351
  .inlinepicture
admin/functions.php CHANGED
@@ -13,33 +13,35 @@ if(preg_match('#' . basename(__FILE__) . '#', $_SERVER['PHP_SELF'])) { die('You
13
  class nggAdmin{
14
 
15
  /**
16
- * create a new gallery & folder
17
- *
18
- * @class nggAdmin
19
- * @param string $name of the gallery
20
- * @param string $defaultpath
21
- * @param bool $output if the function should show an error messsage or not
22
- * @return
 
 
 
 
23
  */
24
- static function create_gallery($title, $defaultpath, $output = true) {
 
25
 
26
  global $user_ID;
27
 
28
- // get the current user ID
29
- get_currentuserinfo();
30
-
31
- //cleanup pathname
32
- $name = sanitize_file_name( sanitize_title($title) );
33
  $name = apply_filters('ngg_gallery_name', $name);
34
- $nggRoot = WINABSPATH . $defaultpath;
35
- $txt = '';
36
-
37
- // No gallery name ?
38
- if ( empty($name) ) {
39
  if ($output) nggGallery::show_error( __('No valid gallery name!', 'nggallery') );
40
  return false;
41
  }
42
-
 
 
 
43
  // check for main folder
44
  if ( !is_dir($nggRoot) ) {
45
  if ( !wp_mkdir_p( $nggRoot ) ) {
@@ -58,30 +60,31 @@ class nggAdmin{
58
  return false;
59
  }
60
 
61
- // 1. Check for existing folder
62
- if ( is_dir(WINABSPATH . $defaultpath . $name ) && !(SAFE_MODE) ) {
63
  $suffix = 1;
64
  do {
65
  $alt_name = substr ($name, 0, 200 - ( strlen( $suffix ) + 1 ) ) . "_$suffix";
66
- $dir_check = is_dir(WINABSPATH . $defaultpath . $alt_name );
67
  $suffix++;
68
  } while ( $dir_check );
69
  $name = $alt_name;
70
  }
71
  // define relative path to gallery inside wp root folder
72
  $nggpath = $defaultpath . $name;
73
-
74
  // 2. Create new gallery folder
75
- if ( !wp_mkdir_p (WINABSPATH . $nggpath) )
 
76
  $txt = __('Unable to create directory ', 'nggallery') . esc_html( $nggpath ) . '!<br />';
77
 
78
  // 3. Check folder permission
79
- if ( !is_writeable(WINABSPATH . $nggpath ) )
80
  $txt .= __('Directory', 'nggallery').' <strong>' . esc_html( $nggpath ) . '</strong> '.__('is not writeable !', 'nggallery').'<br />';
81
 
82
  // 4. Now create thumbnail folder inside
83
- if ( !is_dir(WINABSPATH . $nggpath . '/thumbs') ) {
84
- if ( !wp_mkdir_p ( WINABSPATH . $nggpath . '/thumbs') )
85
  $txt .= __('Unable to create directory ', 'nggallery').' <strong>' . esc_html( $nggpath ) . '/thumbs !</strong>';
86
  }
87
 
@@ -96,15 +99,16 @@ class nggAdmin{
96
  if ( !empty($txt) ) {
97
  if (SAFE_MODE) {
98
  // for safe_mode , better delete folder, both folder must be created manually
99
- @rmdir(WINABSPATH . $nggpath . '/thumbs');
100
- @rmdir(WINABSPATH . $nggpath);
101
  }
102
  if ($output) nggGallery::show_error($txt);
103
  return false;
104
  }
105
-
106
- // now add the gallery to the database
107
- $galleryID = nggdb::add_gallery($title, $nggpath, '', 0, 0, $user_ID );
 
108
  // here you can inject a custom function
109
  do_action('ngg_created_new_gallery', $galleryID);
110
 
@@ -119,7 +123,7 @@ class nggAdmin{
119
  $message .= __('Edit gallery','nggallery');
120
  $message .= '</a>';
121
 
122
- if ($output) nggGallery::show_message($message);
123
  }
124
  return true;
125
  }
13
  class nggAdmin{
14
 
15
  /**
16
+ * Create a new gallery in a new folder
17
+ *
18
+ *
19
+ * @param string $title The gallery name.
20
+ * @param string $defaultpath The path where the gallery should be added.
21
+ * @param bool $output (optional) If the function should show an error messsage or not.
22
+ * @param string $description (optional) The gallery description.
23
+ *
24
+ * @since 1.9.24 Added the description parameter.
25
+ *
26
+ * @return bool|int True if successful, otherwise false.$galleryID if is successful and output = false)
27
  */
28
+
29
+ static function create_gallery($title, $defaultpath, $output = true, $description = '') {
30
 
31
  global $user_ID;
32
 
33
+ get_currentuserinfo(); //get current user ID & sets global object $current_user
34
+ $name = sanitize_file_name( sanitize_title($title) ); //cleanup pathname
 
 
 
35
  $name = apply_filters('ngg_gallery_name', $name);
36
+
37
+ if ( empty($name) ) { // No gallery name ?
 
 
 
38
  if ($output) nggGallery::show_error( __('No valid gallery name!', 'nggallery') );
39
  return false;
40
  }
41
+
42
+ $txt = '';
43
+ $nggRoot = WINABSPATH . $defaultpath;
44
+
45
  // check for main folder
46
  if ( !is_dir($nggRoot) ) {
47
  if ( !wp_mkdir_p( $nggRoot ) ) {
60
  return false;
61
  }
62
 
63
+ // 1. Check for existing folder, if it already exists, create new one with suffix
64
+ if ( is_dir($nggRoot . $name ) && !(SAFE_MODE) ) {
65
  $suffix = 1;
66
  do {
67
  $alt_name = substr ($name, 0, 200 - ( strlen( $suffix ) + 1 ) ) . "_$suffix";
68
+ $dir_check = is_dir($nggRoot . $alt_name );
69
  $suffix++;
70
  } while ( $dir_check );
71
  $name = $alt_name;
72
  }
73
  // define relative path to gallery inside wp root folder
74
  $nggpath = $defaultpath . $name;
75
+ $win_nggpath = WINABSPATH . $nggpath;
76
  // 2. Create new gallery folder
77
+
78
+ if ( !wp_mkdir_p ($win_nggpath) )
79
  $txt = __('Unable to create directory ', 'nggallery') . esc_html( $nggpath ) . '!<br />';
80
 
81
  // 3. Check folder permission
82
+ if ( !is_writeable($win_nggpath) )
83
  $txt .= __('Directory', 'nggallery').' <strong>' . esc_html( $nggpath ) . '</strong> '.__('is not writeable !', 'nggallery').'<br />';
84
 
85
  // 4. Now create thumbnail folder inside
86
+ if ( !is_dir($win_nggpath . '/thumbs') ) {
87
+ if ( !wp_mkdir_p ( $win_nggpath . '/thumbs') )
88
  $txt .= __('Unable to create directory ', 'nggallery').' <strong>' . esc_html( $nggpath ) . '/thumbs !</strong>';
89
  }
90
 
99
  if ( !empty($txt) ) {
100
  if (SAFE_MODE) {
101
  // for safe_mode , better delete folder, both folder must be created manually
102
+ @rmdir($win_nggpath . '/thumbs');
103
+ @rmdir($win_nggpath);
104
  }
105
  if ($output) nggGallery::show_error($txt);
106
  return false;
107
  }
108
+
109
+ //clean the description and add the gallery
110
+ $description = nggGallery::suppress_injection($description);
111
+ $galleryID = nggdb::add_gallery($title, $nggpath, $description, 0, 0, $user_ID );
112
  // here you can inject a custom function
113
  do_action('ngg_created_new_gallery', $galleryID);
114
 
123
  $message .= __('Edit gallery','nggallery');
124
  $message .= '</a>';
125
 
126
+ nggGallery::show_message($message);
127
  }
128
  return true;
129
  }
admin/install.php CHANGED
@@ -133,6 +133,7 @@ function ngg_default_options() {
133
  $ngg_options['imageMagickDir'] = '/usr/local/bin/'; // default path to ImageMagick
134
  $ngg_options['useMediaRSS'] = false; // activate the global Media RSS file
135
  $ngg_options['usePicLens'] = false; // activate the PicLens Link for galleries
 
136
 
137
  // Tags / categories
138
  $ngg_options['activateTags'] = false; // append related images
@@ -153,7 +154,7 @@ function ngg_default_options() {
153
  $ngg_options['imgAutoResize'] = false; // Resize after upload
154
 
155
  // Gallery Settings
156
- $ngg_options['galImages'] = '20'; // Number of images per page
157
  $ngg_options['galPagedGalleries'] = 0; // Number of galleries per page (in a album)
158
  $ngg_options['galColumns'] = 0; // Number of columns for the gallery
159
  $ngg_options['galShowSlide'] = true; // Show slideshow
@@ -183,27 +184,20 @@ function ngg_default_options() {
183
  $ngg_options['wmColor'] = '000000'; // Font Color
184
  $ngg_options['wmOpaque'] = '100'; // Font Opaque
185
 
186
- // Image Rotator settings
187
- $ngg_options['enableIR'] = false;
188
- $ngg_options['slideFx'] = 'fade';
189
- $ngg_options['irURL'] = path_join(NGGALLERY_URLPATH, 'imagerotator.swf');
190
- $ngg_options['irXHTMLvalid'] = false;
191
- $ngg_options['irAudio'] = '';
192
- $ngg_options['irWidth'] = 320;
193
- $ngg_options['irHeight'] = 240;
194
- $ngg_options['irShuffle'] = true;
195
- $ngg_options['irLinkfromdisplay'] = true;
196
- $ngg_options['irShownavigation'] = false;
197
- $ngg_options['irShowicons'] = false;
198
- $ngg_options['irWatermark'] = false;
199
- $ngg_options['irOverstretch'] = 'true';
200
- $ngg_options['irRotatetime'] = 10;
201
- $ngg_options['irTransition'] = 'random';
202
- $ngg_options['irKenburns'] = false;
203
- $ngg_options['irBackcolor'] = '000000';
204
- $ngg_options['irFrontcolor'] = 'FFFFFF';
205
- $ngg_options['irLightcolor'] = 'CC0000';
206
- $ngg_options['irScreencolor'] = '000000';
207
 
208
  // CSS Style
209
  $ngg_options['activateCSS'] = true; // activate the CSS file
133
  $ngg_options['imageMagickDir'] = '/usr/local/bin/'; // default path to ImageMagick
134
  $ngg_options['useMediaRSS'] = false; // activate the global Media RSS file
135
  $ngg_options['usePicLens'] = false; // activate the PicLens Link for galleries
136
+ $ngg_options['silentUpdate'] = false; //If the database should be updated silently.
137
 
138
  // Tags / categories
139
  $ngg_options['activateTags'] = false; // append related images
154
  $ngg_options['imgAutoResize'] = false; // Resize after upload
155
 
156
  // Gallery Settings
157
+ $ngg_options['galImages'] = 20; // Number of images per page
158
  $ngg_options['galPagedGalleries'] = 0; // Number of galleries per page (in a album)
159
  $ngg_options['galColumns'] = 0; // Number of columns for the gallery
160
  $ngg_options['galShowSlide'] = true; // Show slideshow
184
  $ngg_options['wmColor'] = '000000'; // Font Color
185
  $ngg_options['wmOpaque'] = '100'; // Font Opaque
186
 
187
+ // Slideshow settings
188
+ $ngg_options['slideFx'] = 'fadeIn'; //The effect
189
+ $ngg_options['irWidth'] = 320; //Width (in px)
190
+ $ngg_options['irHeight'] = 240; //Height (in px)
191
+ $ngg_options['irAutoDim'] = true; //Automatically set the dimensions.
192
+ $ngg_options['irRotatetime'] = 3; //Duration (in seconds)
193
+ $ngg_options['irLoop'] = true; //Loop or not
194
+ $ngg_options['irDrag'] = true; //Enable drag or not
195
+ $ngg_options['irNavigation'] = false; //Show navigation
196
+ $ngg_options['irNavigationDots'] = false; //Show navigation dots
197
+ $ngg_options['irAutoplay'] = true; //Autoplay
198
+ $ngg_options['irAutoplayHover'] = true; //Pause on hover
199
+ $ngg_options['irNumber'] = 20; //Number of images when random or latest
200
+ $ngg_options['irClick'] = true; //Go to next on click.
 
 
 
 
 
 
 
201
 
202
  // CSS Style
203
  $ngg_options['activateCSS'] = true; // activate the CSS file
admin/js/jquery.MultiFile.js DELETED
@@ -1,535 +0,0 @@
1
- /*
2
- ### jQuery Multiple File Upload Plugin v1.46 - 2009-05-12 ###
3
- * Home: http://www.fyneworks.com/jquery/multiple-file-upload/
4
- * Code: http://code.google.com/p/jquery-multifile-plugin/
5
- *
6
- * Dual licensed under the MIT and GPL licenses:
7
- * http://www.opensource.org/licenses/mit-license.php
8
- * http://www.gnu.org/licenses/gpl.html
9
- ###
10
- */
11
-
12
- /*# AVOID COLLISIONS #*/
13
- ;if(window.jQuery) (function($){
14
- /*# AVOID COLLISIONS #*/
15
-
16
- // plugin initialization
17
- $.fn.MultiFile = function(options){
18
- if(this.length==0) return this; // quick fail
19
-
20
- // Handle API methods
21
- if(typeof arguments[0]=='string'){
22
- // Perform API methods on individual elements
23
- if(this.length>1){
24
- var args = arguments;
25
- return this.each(function(){
26
- $.fn.MultiFile.apply($(this), args);
27
- });
28
- };
29
- // Invoke API method handler
30
- $.fn.MultiFile[arguments[0]].apply(this, $.makeArray(arguments).slice(1) || []);
31
- // Quick exit...
32
- return this;
33
- };
34
-
35
- // Initialize options for this call
36
- var options = $.extend(
37
- {}/* new object */,
38
- $.fn.MultiFile.options/* default options */,
39
- options || {} /* just-in-time options */
40
- );
41
-
42
- // Empty Element Fix!!!
43
- // this code will automatically intercept native form submissions
44
- // and disable empty file elements
45
- $('form')
46
- .not('MultiFile-intercepted')
47
- .addClass('MultiFile-intercepted')
48
- .submit($.fn.MultiFile.disableEmpty);
49
-
50
- //### http://plugins.jquery.com/node/1363
51
- // utility method to integrate this plugin with others...
52
- if($.fn.MultiFile.options.autoIntercept){
53
- $.fn.MultiFile.intercept( $.fn.MultiFile.options.autoIntercept /* array of methods to intercept */ );
54
- $.fn.MultiFile.options.autoIntercept = null; /* only run this once */
55
- };
56
-
57
- // loop through each matched element
58
- this
59
- .not('.MultiFile-applied')
60
- .addClass('MultiFile-applied')
61
- .each(function(){
62
- //#####################################################################
63
- // MAIN PLUGIN FUNCTIONALITY - START
64
- //#####################################################################
65
-
66
- // BUG 1251 FIX: http://plugins.jquery.com/project/comments/add/1251
67
- // variable group_count would repeat itself on multiple calls to the plugin.
68
- // this would cause a conflict with multiple elements
69
- // changes scope of variable to global so id will be unique over n calls
70
- window.MultiFile = (window.MultiFile || 0) + 1;
71
- var group_count = window.MultiFile;
72
-
73
- // Copy parent attributes - Thanks to Jonas Wagner
74
- // we will use this one to create new input elements
75
- var MultiFile = {e:this, E:$(this), clone:$(this).clone()};
76
-
77
- //===
78
-
79
- //# USE CONFIGURATION
80
- if(typeof options=='number') options = {max:options};
81
- var o = $.extend({},
82
- $.fn.MultiFile.options,
83
- options || {},
84
- ($.metadata? MultiFile.E.metadata(): ($.meta?MultiFile.E.data():null)) || {}, /* metadata options */
85
- {} /* internals */
86
- );
87
- // limit number of files that can be selected?
88
- if(!(o.max>0) /*IsNull(MultiFile.max)*/){
89
- o.max = MultiFile.E.attr('maxlength');
90
- if(!(o.max>0) /*IsNull(MultiFile.max)*/){
91
- o.max = (String(MultiFile.e.className.match(/\b(max|limit)\-([0-9]+)\b/gi) || ['']).match(/[0-9]+/gi) || [''])[0];
92
- if(!(o.max>0)) o.max = -1;
93
- else o.max = String(o.max).match(/[0-9]+/gi)[0];
94
- }
95
- };
96
- o.max = new Number(o.max);
97
- // limit extensions?
98
- o.accept = o.accept || MultiFile.E.attr('accept') || '';
99
- if(!o.accept){
100
- o.accept = (MultiFile.e.className.match(/\b(accept\-[\w\|]+)\b/gi)) || '';
101
- o.accept = new String(o.accept).replace(/^(accept|ext)\-/i,'');
102
- };
103
-
104
- //===
105
-
106
- // APPLY CONFIGURATION
107
- $.extend(MultiFile, o || {});
108
- MultiFile.STRING = $.extend({},$.fn.MultiFile.options.STRING,MultiFile.STRING);
109
-
110
- //===
111
-
112
- //#########################################
113
- // PRIVATE PROPERTIES/METHODS
114
- $.extend(MultiFile, {
115
- n: 0, // How many elements are currently selected?
116
- slaves: [], files: [],
117
- instanceKey: MultiFile.e.id || 'MultiFile'+String(group_count), // Instance Key?
118
- generateID: function(z){ return MultiFile.instanceKey + (z>0 ?'_F'+String(z):''); },
119
- trigger: function(event, element){
120
- var handler = MultiFile[event], value = $(element).attr('value');
121
- if(handler){
122
- var returnValue = handler(element, value, MultiFile);
123
- if( returnValue!=null ) return returnValue;
124
- }
125
- return true;
126
- }
127
- });
128
-
129
- //===
130
-
131
- // Setup dynamic regular expression for extension validation
132
- // - thanks to John-Paul Bader: http://smyck.de/2006/08/11/javascript-dynamic-regular-expresions/
133
- if(String(MultiFile.accept).length>1){
134
- MultiFile.accept = MultiFile.accept.replace(/\W+/g,'|').replace(/^\W|\W$/g,'');
135
- MultiFile.rxAccept = new RegExp('\\.('+(MultiFile.accept?MultiFile.accept:'')+')$','gi');
136
- };
137
-
138
- //===
139
-
140
- // Create wrapper to hold our file list
141
- MultiFile.wrapID = MultiFile.instanceKey+'_wrap'; // Wrapper ID?
142
- MultiFile.E.wrap('<div class="MultiFile-wrap" id="'+MultiFile.wrapID+'"></div>');
143
- MultiFile.wrapper = $('#'+MultiFile.wrapID+'');
144
-
145
- //===
146
-
147
- // MultiFile MUST have a name - default: file1[], file2[], file3[]
148
- MultiFile.e.name = MultiFile.e.name || 'file'+ group_count +'[]';
149
-
150
- //===
151
-
152
- if(!MultiFile.list){
153
- // Create a wrapper for the list
154
- // * OPERA BUG: NO_MODIFICATION_ALLOWED_ERR ('list' is a read-only property)
155
- // this change allows us to keep the files in the order they were selected
156
- MultiFile.wrapper.append( '<div class="MultiFile-list" id="'+MultiFile.wrapID+'_list"></div>' );
157
- MultiFile.list = $('#'+MultiFile.wrapID+'_list');
158
- };
159
- MultiFile.list = $(MultiFile.list);
160
-
161
- //===
162
-
163
- // Bind a new element
164
- MultiFile.addSlave = function( slave, slave_count ){
165
- //if(window.console) console.log('MultiFile.addSlave',slave_count);
166
-
167
- // Keep track of how many elements have been displayed
168
- MultiFile.n++;
169
- // Add reference to master element
170
- slave.MultiFile = MultiFile;
171
-
172
- // BUG FIX: http://plugins.jquery.com/node/1495
173
- // Clear identifying properties from clones
174
- if(slave_count>0) slave.id = slave.name = '';
175
-
176
- // Define element's ID and name (upload components need this!)
177
- //slave.id = slave.id || MultiFile.generateID(slave_count);
178
- if(slave_count>0) slave.id = MultiFile.generateID(slave_count);
179
- //FIX for: http://code.google.com/p/jquery-multifile-plugin/issues/detail?id=23
180
-
181
- // 2008-Apr-29: New customizable naming convention (see url below)
182
- // http://groups.google.com/group/jquery-dev/browse_frm/thread/765c73e41b34f924#
183
- slave.name = String(MultiFile.namePattern
184
- /*master name*/.replace(/\$name/gi,$(MultiFile.clone).attr('name'))
185
- /*master id */.replace(/\$id/gi, $(MultiFile.clone).attr('id'))
186
- /*group count*/.replace(/\$g/gi, group_count)//(group_count>0?group_count:''))
187
- /*slave count*/.replace(/\$i/gi, slave_count)//(slave_count>0?slave_count:''))
188
- );
189
-
190
- // If we've reached maximum number, disable input slave
191
- if( (MultiFile.max > 0) && ((MultiFile.n-1) > (MultiFile.max)) )//{ // MultiFile.n Starts at 1, so subtract 1 to find true count
192
- slave.disabled = true;
193
- //};
194
-
195
- // Remember most recent slave
196
- MultiFile.current = MultiFile.slaves[slave_count] = slave;
197
-
198
- // We'll use jQuery from now on
199
- slave = $(slave);
200
-
201
- // Clear value
202
- slave.val('').attr('value','')[0].value = '';
203
-
204
- // Stop plugin initializing on slaves
205
- slave.addClass('MultiFile-applied');
206
-
207
- // Triggered when a file is selected
208
- slave.change(function(){
209
- //if(window.console) console.log('MultiFile.slave.change',slave_count);
210
-
211
- // Lose focus to stop IE7 firing onchange again
212
- $(this).blur();
213
-
214
- //# Trigger Event! onFileSelect
215
- if(!MultiFile.trigger('onFileSelect', this, MultiFile)) return false;
216
- //# End Event!
217
-
218
- //# Retrive value of selected file from element
219
- var ERROR = '', v = String(this.value || ''/*.attr('value)*/);
220
-
221
- // check extension
222
- if(MultiFile.accept && v && !v.match(MultiFile.rxAccept))//{
223
- ERROR = MultiFile.STRING.denied.replace('$ext', String(v.match(/\.\w{1,4}$/gi)));
224
- //}
225
- //};
226
-
227
- // Disallow duplicates
228
- for(var f in MultiFile.slaves)//{
229
- if(MultiFile.slaves[f] && MultiFile.slaves[f]!=this)//{
230
- //console.log(MultiFile.slaves[f],MultiFile.slaves[f].value);
231
- if(MultiFile.slaves[f].value==v)//{
232
- ERROR = MultiFile.STRING.duplicate.replace('$file', v.match(/[^\/\\]+$/gi));
233
- //};
234
- //};
235
- //};
236
-
237
- // Create a new file input element
238
- var newEle = $(MultiFile.clone).clone();// Copy parent attributes - Thanks to Jonas Wagner
239
- //# Let's remember which input we've generated so
240
- // we can disable the empty ones before submission
241
- // See: http://plugins.jquery.com/node/1495
242
- newEle.addClass('MultiFile');
243
-
244
- // Handle error
245
- if(ERROR!=''){
246
- // Handle error
247
- MultiFile.error(ERROR);
248
-
249
- // 2007-06-24: BUG FIX - Thanks to Adrian Wr�bel <adrian [dot] wrobel [at] gmail.com>
250
- // Ditch the trouble maker and add a fresh new element
251
- MultiFile.n--;
252
- MultiFile.addSlave(newEle[0], slave_count);
253
- slave.parent().prepend(newEle);
254
- slave.remove();
255
- return false;
256
- };
257
-
258
- // Hide this element (NB: display:none is evil!)
259
- $(this).css({ position:'absolute', top: '-3000px' });
260
-
261
- // Add new element to the form
262
- slave.after(newEle);
263
-
264
- // Update list
265
- MultiFile.addToList( this, slave_count );
266
-
267
- // Bind functionality
268
- MultiFile.addSlave( newEle[0], slave_count+1 );
269
-
270
- //# Trigger Event! afterFileSelect
271
- if(!MultiFile.trigger('afterFileSelect', this, MultiFile)) return false;
272
- //# End Event!
273
-
274
- }); // slave.change()
275
-
276
- // Save control to element
277
- $(slave).data('MultiFile', MultiFile);
278
-
279
- };// MultiFile.addSlave
280
- // Bind a new element
281
-
282
-
283
-
284
- // Add a new file to the list
285
- MultiFile.addToList = function( slave, slave_count ){
286
- //if(window.console) console.log('MultiFile.addToList',slave_count);
287
-
288
- //# Trigger Event! onFileAppend
289
- if(!MultiFile.trigger('onFileAppend', slave, MultiFile)) return false;
290
- //# End Event!
291
-
292
- // Create label elements
293
- var
294
- r = $('<div class="MultiFile-label"></div>'),
295
- v = String(slave.value || ''/*.attr('value)*/),
296
- a = $('<span class="MultiFile-title" title="'+MultiFile.STRING.selected.replace('$file', v)+'">'+MultiFile.STRING.file.replace('$file', v.match(/[^\/\\]+$/gi)[0])+'</span>'),
297
- b = $('<a class="MultiFile-remove" href="#'+MultiFile.wrapID+'">'+MultiFile.STRING.remove+'</a>');
298
-
299
- // Insert label
300
- MultiFile.list.append(
301
- r.append(b, ' ', a)
302
- );
303
-
304
- b
305
- .click(function(){
306
-
307
- //# Trigger Event! onFileRemove
308
- if(!MultiFile.trigger('onFileRemove', slave, MultiFile)) return false;
309
- //# End Event!
310
-
311
- MultiFile.n--;
312
- MultiFile.current.disabled = false;
313
-
314
- // Remove element, remove label, point to current
315
- MultiFile.slaves[slave_count] = null;
316
- $(slave).remove();
317
- $(this).parent().remove();
318
-
319
- // Show most current element again (move into view) and clear selection
320
- $(MultiFile.current).css({ position:'', top: '' });
321
- $(MultiFile.current).reset().val('').attr('value', '')[0].value = '';
322
-
323
- //# Trigger Event! afterFileRemove
324
- if(!MultiFile.trigger('afterFileRemove', slave, MultiFile)) return false;
325
- //# End Event!
326
-
327
- return false;
328
- });
329
-
330
- //# Trigger Event! afterFileAppend
331
- if(!MultiFile.trigger('afterFileAppend', slave, MultiFile)) return false;
332
- //# End Event!
333
-
334
- }; // MultiFile.addToList
335
- // Add element to selected files list
336
-
337
-
338
-
339
- // Bind functionality to the first element
340
- if(!MultiFile.MultiFile) MultiFile.addSlave(MultiFile.e, 0);
341
-
342
- // Increment control count
343
- //MultiFile.I++; // using window.MultiFile
344
- MultiFile.n++;
345
-
346
- // Save control to element
347
- MultiFile.E.data('MultiFile', MultiFile);
348
-
349
-
350
- //#####################################################################
351
- // MAIN PLUGIN FUNCTIONALITY - END
352
- //#####################################################################
353
- }); // each element
354
- };
355
-
356
- /*--------------------------------------------------------*/
357
-
358
- /*
359
- ### Core functionality and API ###
360
- */
361
- $.extend($.fn.MultiFile, {
362
- /**
363
- * This method removes all selected files
364
- *
365
- * Returns a jQuery collection of all affected elements.
366
- *
367
- * @name reset
368
- * @type jQuery
369
- * @cat Plugins/MultiFile
370
- * @author Diego A. (http://www.fyneworks.com/)
371
- *
372
- * @example $.fn.MultiFile.reset();
373
- */
374
- reset: function(){
375
- var settings = $(this).data('MultiFile');
376
- //if(settings) settings.wrapper.find('a.MultiFile-remove').click();
377
- if(settings) settings.list.find('a.MultiFile-remove').click();
378
- return $(this);
379
- },
380
-
381
-
382
- /**
383
- * This utility makes it easy to disable all 'empty' file elements in the document before submitting a form.
384
- * It marks the affected elements so they can be easily re-enabled after the form submission or validation.
385
- *
386
- * Returns a jQuery collection of all affected elements.
387
- *
388
- * @name disableEmpty
389
- * @type jQuery
390
- * @cat Plugins/MultiFile
391
- * @author Diego A. (http://www.fyneworks.com/)
392
- *
393
- * @example $.fn.MultiFile.disableEmpty();
394
- * @param String class (optional) A string specifying a class to be applied to all affected elements - Default: 'mfD'.
395
- */
396
- disableEmpty: function(klass){ klass = (typeof(klass)=='string'?klass:'')||'mfD';
397
- var o = [];
398
- $('input:file.MultiFile').each(function(){ if($(this).val()=='') o[o.length] = this; });
399
- return $(o).each(function(){ this.disabled = true }).addClass(klass);
400
- },
401
-
402
-
403
- /**
404
- * This method re-enables 'empty' file elements that were disabled (and marked) with the $.fn.MultiFile.disableEmpty method.
405
- *
406
- * Returns a jQuery collection of all affected elements.
407
- *
408
- * @name reEnableEmpty
409
- * @type jQuery
410
- * @cat Plugins/MultiFile
411
- * @author Diego A. (http://www.fyneworks.com/)
412
- *
413
- * @example $.fn.MultiFile.reEnableEmpty();
414
- * @param String klass (optional) A string specifying the class that was used to mark affected elements - Default: 'mfD'.
415
- */
416
- reEnableEmpty: function(klass){ klass = (typeof(klass)=='string'?klass:'')||'mfD';
417
- return $('input:file.'+klass).removeClass(klass).each(function(){ this.disabled = false });
418
- },
419
-
420
-
421
- /**
422
- * This method will intercept other jQuery plugins and disable empty file input elements prior to form submission
423
- *
424
-
425
- * @name intercept
426
- * @cat Plugins/MultiFile
427
- * @author Diego A. (http://www.fyneworks.com/)
428
- *
429
- * @example $.fn.MultiFile.intercept();
430
- * @param Array methods (optional) Array of method names to be intercepted
431
- */
432
- intercepted: {},
433
- intercept: function(methods, context, args){
434
- var method, value; args = args || [];
435
- if(args.constructor.toString().indexOf("Array")<0) args = [ args ];
436
- if(typeof(methods)=='function'){
437
- $.fn.MultiFile.disableEmpty();
438
- value = methods.apply(context || window, args);
439
- //SEE-http://code.google.com/p/jquery-multifile-plugin/issues/detail?id=27
440
- setTimeout(function(){ $.fn.MultiFile.reEnableEmpty() },1000);
441
- return value;
442
- };
443
- if(methods.constructor.toString().indexOf("Array")<0) methods = [methods];
444
- for(var i=0;i<methods.length;i++){
445
- method = methods[i]+''; // make sure that we have a STRING
446
- if(method) (function(method){ // make sure that method is ISOLATED for the interception
447
- $.fn.MultiFile.intercepted[method] = $.fn[method] || function(){};
448
- $.fn[method] = function(){
449
- $.fn.MultiFile.disableEmpty();
450
- value = $.fn.MultiFile.intercepted[method].apply(this, arguments);
451
- //SEE-http://code.google.com/p/jquery-multifile-plugin/issues/detail?id=27
452
- setTimeout(function(){ $.fn.MultiFile.reEnableEmpty() },1000);
453
- return value;
454
- }; // interception
455
- })(method); // MAKE SURE THAT method IS ISOLATED for the interception
456
- };// for each method
457
- }
458
- });
459
-
460
- /*--------------------------------------------------------*/
461
-
462
- /*
463
- ### Default Settings ###
464
- eg.: You can override default control like this:
465
- $.fn.MultiFile.options.accept = 'gif|jpg';
466
- */
467
- $.fn.MultiFile.options = { //$.extend($.fn.MultiFile, { options: {
468
- accept: '', // accepted file extensions
469
- max: -1, // maximum number of selectable files
470
-
471
- // name to use for newly created elements
472
- namePattern: '$name', // same name by default (which creates an array)
473
-
474
- // STRING: collection lets you show messages in different languages
475
- STRING: {
476
- remove:'x',
477
- denied:'You cannot select a $ext file.\nTry again...',
478
- file:'$file',
479
- selected:'File selected: $file',
480
- duplicate:'This file has already been selected:\n$file'
481
- },
482
-
483
- // name of methods that should be automcatically intercepted so the plugin can disable
484
- // extra file elements that are empty before execution and automatically re-enable them afterwards
485
- autoIntercept: [ 'submit', 'ajaxSubmit', 'ajaxForm', 'validate' /* array of methods to intercept */ ],
486
-
487
- // error handling function
488
- error: function(s){
489
- /*
490
- ERROR! blockUI is not currently working in IE
491
- if($.blockUI){
492
- $.blockUI({
493
- message: s.replace(/\n/gi,'<br/>'),
494
- css: {
495
- border:'none', padding:'15px', size:'12.0pt',
496
- backgroundColor:'#900', color:'#fff',
497
- opacity:'.8','-webkit-border-radius': '10px','-moz-border-radius': '10px'
498
- }
499
- });
500
- window.setTimeout($.unblockUI, 2000);
501
- }
502
- else//{// save a byte!
503
- */
504
- alert(s);
505
- //}// save a byte!
506
- }
507
- }; //} });
508
-
509
- /*--------------------------------------------------------*/
510
-
511
- /*
512
- ### Additional Methods ###
513
- Required functionality outside the plugin's scope
514
- */
515
-
516
- // Native input reset method - because this alone doesn't always work: $(element).val('').attr('value', '')[0].value = '';
517
- $.fn.reset = function(){ return this.each(function(){ try{ this.reset(); }catch(e){} }); };
518
-
519
- /*--------------------------------------------------------*/
520
-
521
- /*
522
- ### Default implementation ###
523
- The plugin will attach itself to file inputs
524
- with the class 'multi' when the page loads
525
- */
526
- $(function(){
527
- //$("input:file.multi").MultiFile();
528
- $("input[type=file].multi").MultiFile();
529
- });
530
-
531
-
532
-
533
- /*# AVOID COLLISIONS #*/
534
- })(jQuery);
535
- /*# AVOID COLLISIONS #*/
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
admin/js/jquery.MultiFile.pack.js DELETED
@@ -1,11 +0,0 @@
1
- /*
2
- ### jQuery Multiple File Upload Plugin v1.46 - 2009-05-12 ###
3
- * Home: http://www.fyneworks.com/jquery/multiple-file-upload/
4
- * Code: http://code.google.com/p/jquery-multifile-plugin/
5
- *
6
- * Dual licensed under the MIT and GPL licenses:
7
- * http://www.opensource.org/licenses/mit-license.php
8
- * http://www.gnu.org/licenses/gpl.html
9
- ###
10
- */
11
- eval(function(p,a,c,k,e,r){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)r[e(c)]=k[c]||e(c);k=[function(e){return r[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}(';3(U.1u)(6($){$.7.2=6(h){3(5.V==0)8 5;3(T S[0]==\'19\'){3(5.V>1){m i=S;8 5.M(6(){$.7.2.13($(5),i)})};$.7.2[S[0]].13(5,$.1N(S).27(1)||[]);8 5};m h=$.N({},$.7.2.F,h||{});$(\'2d\').1B(\'2-R\').Q(\'2-R\').1n($.7.2.Z);3($.7.2.F.15){$.7.2.1M($.7.2.F.15);$.7.2.F.15=10};5.1B(\'.2-1e\').Q(\'2-1e\').M(6(){U.2=(U.2||0)+1;m e=U.2;m g={e:5,E:$(5),L:$(5).L()};3(T h==\'21\')h={l:h};m o=$.N({},$.7.2.F,h||{},($.1m?g.E.1m():($.1S?g.E.17():10))||{},{});3(!(o.l>0)){o.l=g.E.D(\'28\');3(!(o.l>0)){o.l=(u(g.e.1D.B(/\\b(l|23)\\-([0-9]+)\\b/q)||[\'\']).B(/[0-9]+/q)||[\'\'])[0];3(!(o.l>0))o.l=-1;2b o.l=u(o.l).B(/[0-9]+/q)[0]}};o.l=18 2f(o.l);o.j=o.j||g.E.D(\'j\')||\'\';3(!o.j){o.j=(g.e.1D.B(/\\b(j\\-[\\w\\|]+)\\b/q))||\'\';o.j=18 u(o.j).t(/^(j|1d)\\-/i,\'\')};$.N(g,o||{});g.A=$.N({},$.7.2.F.A,g.A);$.N(g,{n:0,J:[],2c:[],1c:g.e.I||\'2\'+u(e),1i:6(z){8 g.1c+(z>0?\'1Z\'+u(z):\'\')},G:6(a,b){m c=g[a],k=$(b).D(\'k\');3(c){m d=c(b,k,g);3(d!=10)8 d}8 1a}});3(u(g.j).V>1){g.j=g.j.t(/\\W+/g,\'|\').t(/^\\W|\\W$/g,\'\');g.1k=18 2t(\'\\\\.(\'+(g.j?g.j:\'\')+\')$\',\'q\')};g.O=g.1c+\'1P\';g.E.1l(\'<P X="2-1l" I="\'+g.O+\'"></P>\');g.1q=$(\'#\'+g.O+\'\');g.e.H=g.e.H||\'p\'+e+\'[]\';3(!g.K){g.1q.1g(\'<P X="2-K" I="\'+g.O+\'1F"></P>\');g.K=$(\'#\'+g.O+\'1F\')};g.K=$(g.K);g.16=6(c,d){g.n++;c.2=g;3(d>0)c.I=c.H=\'\';3(d>0)c.I=g.1i(d);c.H=u(g.1j.t(/\\$H/q,$(g.L).D(\'H\')).t(/\\$I/q,$(g.L).D(\'I\')).t(/\\$g/q,e).t(/\\$i/q,d));3((g.l>0)&&((g.n-1)>(g.l)))c.14=1a;g.Y=g.J[d]=c;c=$(c);c.1b(\'\').D(\'k\',\'\')[0].k=\'\';c.Q(\'2-1e\');c.1V(6(){$(5).1X();3(!g.G(\'1Y\',5,g))8 y;m a=\'\',v=u(5.k||\'\');3(g.j&&v&&!v.B(g.1k))a=g.A.1o.t(\'$1d\',u(v.B(/\\.\\w{1,4}$/q)));1p(m f 2a g.J)3(g.J[f]&&g.J[f]!=5)3(g.J[f].k==v)a=g.A.1r.t(\'$p\',v.B(/[^\\/\\\\]+$/q));m b=$(g.L).L();b.Q(\'2\');3(a!=\'\'){g.1s(a);g.n--;g.16(b[0],d);c.1t().2e(b);c.C();8 y};$(5).1v({1w:\'1O\',1x:\'-1Q\'});c.1R(b);g.1y(5,d);g.16(b[0],d+1);3(!g.G(\'1T\',5,g))8 y});$(c).17(\'2\',g)};g.1y=6(c,d){3(!g.G(\'1U\',c,g))8 y;m r=$(\'<P X="2-1W"></P>\'),v=u(c.k||\'\'),a=$(\'<1z X="2-1A" 1A="\'+g.A.12.t(\'$p\',v)+\'">\'+g.A.p.t(\'$p\',v.B(/[^\\/\\\\]+$/q)[0])+\'</1z>\'),b=$(\'<a X="2-C" 2y="#\'+g.O+\'">\'+g.A.C+\'</a>\');g.K.1g(r.1g(b,\' \',a));b.1C(6(){3(!g.G(\'22\',c,g))8 y;g.n--;g.Y.14=y;g.J[d]=10;$(c).C();$(5).1t().C();$(g.Y).1v({1w:\'\',1x:\'\'});$(g.Y).11().1b(\'\').D(\'k\',\'\')[0].k=\'\';3(!g.G(\'24\',c,g))8 y;8 y});3(!g.G(\'25\',c,g))8 y};3(!g.2)g.16(g.e,0);g.n++;g.E.17(\'2\',g)})};$.N($.7.2,{11:6(){m a=$(5).17(\'2\');3(a)a.K.26(\'a.2-C\').1C();8 $(5)},Z:6(a){a=(T(a)==\'19\'?a:\'\')||\'1E\';m o=[];$(\'1h:p.2\').M(6(){3($(5).1b()==\'\')o[o.V]=5});8 $(o).M(6(){5.14=1a}).Q(a)},1f:6(a){a=(T(a)==\'19\'?a:\'\')||\'1E\';8 $(\'1h:p.\'+a).29(a).M(6(){5.14=y})},R:{},1M:6(b,c,d){m e,k;d=d||[];3(d.1G.1H().1I("1J")<0)d=[d];3(T(b)==\'6\'){$.7.2.Z();k=b.13(c||U,d);1K(6(){$.7.2.1f()},1L);8 k};3(b.1G.1H().1I("1J")<0)b=[b];1p(m i=0;i<b.V;i++){e=b[i]+\'\';3(e)(6(a){$.7.2.R[a]=$.7[a]||6(){};$.7[a]=6(){$.7.2.Z();k=$.7.2.R[a].13(5,S);1K(6(){$.7.2.1f()},1L);8 k}})(e)}}});$.7.2.F={j:\'\',l:-1,1j:\'$H\',A:{C:\'x\',1o:\'2g 2h 2i a $1d p.\\2j 2k...\',p:\'$p\',12:\'2l 12: $p\',1r:\'2m p 2n 2o 2p 12:\\n$p\'},15:[\'1n\',\'2q\',\'2r\',\'2s\'],1s:6(s){2u(s)}};$.7.11=6(){8 5.M(6(){2v{5.11()}2w(e){}})};$(6(){$("1h[2x=p].20").2()})})(1u);',62,159,'||MultiFile|if||this|function|fn|return|||||||||||accept|value|max|var|||file|gi|||replace|String||||false||STRING|match|remove|attr||options|trigger|name|id|slaves|list|clone|each|extend|wrapID|div|addClass|intercepted|arguments|typeof|window|length||class|current|disableEmpty|null|reset|selected|apply|disabled|autoIntercept|addSlave|data|new|string|true|val|instanceKey|ext|applied|reEnableEmpty|append|input|generateID|namePattern|rxAccept|wrap|metadata|submit|denied|for|wrapper|duplicate|error|parent|jQuery|css|position|top|addToList|span|title|not|click|className|mfD|_list|constructor|toString|indexOf|Array|setTimeout|1000|intercept|makeArray|absolute|_wrap|3000px|after|meta|afterFileSelect|onFileAppend|change|label|blur|onFileSelect|_F|multi|number|onFileRemove|limit|afterFileRemove|afterFileAppend|find|slice|maxlength|removeClass|in|else|files|form|prepend|Number|You|cannot|select|nTry|again|File|This|has|already|been|ajaxSubmit|ajaxForm|validate|RegExp|alert|try|catch|type|href'.split('|'),0,{}))
 
 
 
 
 
 
 
 
 
 
 
admin/js/swfupload.handler.js DELETED
@@ -1,153 +0,0 @@
1
- /**
2
- * NextGEN Gallery - SWFUpload Handler
3
- * http://www.nextgen-gallery.com/
4
- *
5
- * Built on top of the swfupload library
6
- * http://swfupload.org version 2.2.0
7
- *
8
- * version 1.0.3
9
- */
10
-
11
- // on load change the upload to swfupload
12
- function initSWFUpload() {
13
- jQuery(function() {
14
- jQuery("#uploadimage_btn").after("<input class='button-primary' type='button' name='uploadimage' id='swfupload_btn' value='" + ngg_swf_upload.customSettings.upload + "' />")
15
- .remove();
16
- jQuery("#swfupload_btn").click( function() { submitFiles(); } );
17
- jQuery("#imagefiles")
18
- .after("<div id='uploadQueue'></div>")
19
- .after("<input id='imagefiles' type='button' class='button-secondary uploadform' value='" + ngg_swf_upload.customSettings.browse + "' />")
20
- .after("<input type='text' id='txtFileName' readonly='readonly' />")
21
- .remove();
22
- jQuery("#imagefiles").click( function() { fileBrowse(); } );
23
- });
24
- }
25
-
26
- // call the upload dialog
27
- function fileBrowse() {
28
- jQuery("#txtFileName").val("");
29
- ngg_swf_upload.cancelUpload();
30
- ngg_swf_upload.selectFiles();
31
- }
32
-
33
- // called when a file is added
34
- function fileQueued(fileObj) {
35
- filesize = " (" + Math.round(fileObj.size/1024) + " kB) ";
36
- jQuery("#txtFileName").val(fileObj.name);
37
- jQuery("#uploadQueue")
38
- .append("<div id='" + fileObj.id + "' class='nggUploadItem'> [<a href='javascript:removeFile(\"" + fileObj.id + "\");'>" + ngg_swf_upload.customSettings.remove + "</a>] " + fileObj.name + filesize + "</div>")
39
- .children("div:last").slideDown("slow")
40
- .end();
41
- }
42
-
43
- // start the upload
44
- function submitFiles() {
45
- // check if a gallery is selected
46
- if (jQuery('#galleryselect').val() > "0") {
47
- nggProgressBar.init(nggAjaxOptions);
48
- // get old post_params
49
- post_params = ngg_swf_upload.getSetting("post_params");
50
- // update the selected gallery in the post_params
51
- post_params['galleryselect'] = jQuery('#galleryselect').val();
52
- ngg_swf_upload.setPostParams(post_params);
53
- ngg_swf_upload.startUpload();
54
- } else {
55
- jQuery('#uploadimage_form').prepend("<input type=\"hidden\" name=\"swf_callback\" value=\"-1\">");
56
- jQuery("#uploadimage_form").submit();
57
- }
58
- }
59
-
60
- // called when a file will be removed
61
- function removeFile(fileID) {
62
- ngg_swf_upload.cancelUpload(fileID);
63
- jQuery("#" + fileID).hide("slow");
64
- jQuery("#" + fileID).remove();
65
- }
66
-
67
- // called before the uploads start
68
- function uploadStart(fileObj) {
69
- nggProgressBar.init(nggAjaxOptions);
70
- return true;
71
- }
72
-
73
- // called during the upload progress
74
- function uploadProgress(fileObj, bytesLoaded) {
75
- var percent = Math.ceil((bytesLoaded / fileObj.size) * 100);
76
- nggProgressBar.increase( percent );
77
- jQuery("#progressbar span").text(percent + "% - " + fileObj.name);
78
- }
79
-
80
- // called when the file is uploaded
81
- function uploadComplete(fileObj) {
82
- jQuery("#" + fileObj.id).hide("slow");
83
- jQuery("#" + fileObj.id).remove();
84
- if ( ngg_swf_upload.getStats().files_queued == 0) {
85
- nggProgressBar.finished();
86
- jQuery("#uploadimage_form").submit();
87
- }
88
- }
89
-
90
- // called when all files are uploaded
91
- function uploadSuccess(fileObj, server_data) {
92
- // Show any error message
93
- if (server_data != 0){
94
- nggProgressBar.addNote("<strong>ERROR</strong>: " + fileObj.name + " : " + server_data);
95
- }
96
- // Upload the next file until queue is empty
97
- if ( ngg_swf_upload.getStats().files_queued > 0) {
98
- ngg_swf_upload.startUpload();
99
- } else {
100
- // server_data could be add as hidden field
101
- jQuery('#uploadimage_form').prepend("<input type=\"hidden\" name=\"swf_callback\" value=\"" + server_data + "\">");
102
- }
103
- }
104
-
105
- // called on error
106
- function uploadError(fileObj, error_code, message) {
107
- var error_name = "";
108
- switch(error_code) {
109
- case SWFUpload.UPLOAD_ERROR.HTTP_ERROR:
110
- error_name = "HTTP ERROR";
111
- break;
112
- case SWFUpload.UPLOAD_ERROR.MISSING_UPLOAD_URL:
113
- error_name = "MISSING UPLOAD URL";
114
- break;
115
- case SWFUpload.UPLOAD_ERROR.IO_ERROR:
116
- error_name = "IO FAILURE";
117
- break;
118
- case SWFUpload.UPLOAD_ERROR.SECURITY_ERROR:
119
- error_name = "SECURITY ERROR";
120
- break;
121
- case SWFUpload.UPLOAD_ERROR.UPLOAD_LIMIT_EXCEEDED:
122
- error_name = "UPLOAD LIMIT EXCEEDED";
123
- break;
124
- case SWFUpload.UPLOAD_ERROR.UPLOAD_FAILED:
125
- error_name = "UPLOAD FAILED";
126
- break;
127
- case SWFUpload.UPLOAD_ERROR.SPECIFIED_FILE_ID_NOT_FOUND:
128
- error_name = "SPECIFIED FILE ID NOT FOUND";
129
- break;
130
- case SWFUpload.UPLOAD_ERROR.FILE_VALIDATION_FAILED:
131
- error_name = "FILE VALIDATION FAILED";
132
- break;
133
- case SWFUpload.UPLOAD_ERROR.FILE_CANCELLED:
134
- error_name = "FILE CANCELLED";
135
- return;
136
- break;
137
- case SWFUpload.UPLOAD_ERROR.UPLOAD_STOPPED:
138
- error_name = "FILE STOPPED";
139
- break;
140
- default:
141
- error_name = "UNKNOWN";
142
- break;
143
- }
144
- nggProgressBar.addNote("<strong>ERROR " + error_name + " </strong>: " + fileObj.name + " : " + message);
145
- jQuery("#" + fileObj.id).hide("slow");
146
- jQuery("#" + fileObj.id).remove();
147
- if ( ngg_swf_upload.getStats().files_queued > 0) {
148
- ngg_swf_upload.startUpload();
149
- } else {
150
- jQuery('#uploadimage_form').prepend("<input type=\"hidden\" name=\"swf_callback\" value=\"" + error_name + "\">");
151
- jQuery("#uploadimage_form").submit();
152
- }
153
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
admin/manage-images.php CHANGED
@@ -272,7 +272,7 @@ jQuery(document).ready( function() {
272
  <div id="poststuff">
273
  <?php wp_nonce_field( 'closedpostboxes', 'closedpostboxesnonce', false ); ?>
274
  <div id="gallerydiv" class="postbox <?php echo postbox_classes('gallerydiv', 'ngg-manage-gallery'); ?>" >
275
- <h3><?php _e('Gallery settings', 'nggallery') ?><small> (<?php _e('Click here for more settings', 'nggallery') ?>)</small></h3>
276
  <div class="inside">
277
  <table class="form-table" id="gallery-properties">
278
  <tr>
@@ -331,7 +331,8 @@ jQuery(document).ready( function() {
331
  </tr>
332
  <?php if(current_user_can( 'publish_pages' )) : ?>
333
  <tr>
334
- <td colspan="2"></td>
 
335
  <td align="right"><label for="parent_id"><?php _e('Create new page', 'nggallery') ?>:</label></td>
336
  <td align="left">
337
  <select name="parent_id" id="parent_id" style="width:95%">
@@ -383,9 +384,19 @@ jQuery(document).ready( function() {
383
  </select>
384
  <input class="button-secondary" type="submit" name="showThickbox" value="<?php _e('Apply', 'nggallery'); ?>" onclick="if ( !checkSelected() ) return false;" />
385
 
386
- <?php if (($ngg->options['galSort'] == "sortorder") && (!$is_search) ) { ?>
387
- <input class="button-secondary" type="submit" name="sortGallery" value="<?php _e('Sort gallery', 'nggallery');?>" />
388
- <?php } ?>
 
 
 
 
 
 
 
 
 
 
389
 
390
  <input type="submit" name="updatepictures" class="button-primary action" value="<?php _e('Save Changes', 'nggallery');?>" />
391
  </div>
272
  <div id="poststuff">
273
  <?php wp_nonce_field( 'closedpostboxes', 'closedpostboxesnonce', false ); ?>
274
  <div id="gallerydiv" class="postbox <?php echo postbox_classes('gallerydiv', 'ngg-manage-gallery'); ?>" >
275
+ <h3 class="hndle"><?php _e('Gallery settings', 'nggallery') ?><small> (<?php _e('Click here for more settings', 'nggallery') ?>)</small></h3>
276
  <div class="inside">
277
  <table class="form-table" id="gallery-properties">
278
  <tr>
331
  </tr>
332
  <?php if(current_user_can( 'publish_pages' )) : ?>
333
  <tr>
334
+ <td align="left"><?php _e('Gallery ID', 'nggallery') ?>:</td>
335
+ <td align="right"><?php echo $gallery->gid; ?></td>
336
  <td align="right"><label for="parent_id"><?php _e('Create new page', 'nggallery') ?>:</label></td>
337
  <td align="left">
338
  <select name="parent_id" id="parent_id" style="width:95%">
384
  </select>
385
  <input class="button-secondary" type="submit" name="showThickbox" value="<?php _e('Apply', 'nggallery'); ?>" onclick="if ( !checkSelected() ) return false;" />
386
 
387
+ <?php
388
+ if ((!$is_search)) {
389
+ $disabled =""; $title="";
390
+
391
+ if ($ngg->options['galSort'] != "sortorder") {
392
+ //Disable sort button and provide feedback why is disabled
393
+ $disabled ="disabled";
394
+ $title = "title='" . __('To enable manual Sort set Custom Order Sort.See Settings->Gallery Settings->Sort Options', 'nggallery') . "'";
395
+ }
396
+ $button="<input class='button-secondary' type='submit' $disabled $title name='sortGallery' value='" . __('Sort gallery', 'nggallery') ."' />";
397
+ echo $button;
398
+ }
399
+ ?>
400
 
401
  <input type="submit" name="updatepictures" class="button-primary action" value="<?php _e('Save Changes', 'nggallery');?>" />
402
  </div>
admin/manage-sort.php CHANGED
@@ -14,10 +14,12 @@ function nggallery_sortorder($galleryID = 0){
14
 
15
  if (isset ($_POST['updateSortorder'])) {
16
  check_admin_referer('ngg_updatesortorder');
17
- // get variable new sortorder
18
- parse_str($_POST['sortorder']);
 
19
  if (is_array($sortArray)){
20
  $neworder = array();
 
21
  foreach($sortArray as $pid) {
22
  $pid = substr($pid, 4); // get id from "pid-x"
23
  $neworder[] = (int) $pid;
@@ -58,19 +60,13 @@ function nggallery_sortorder($galleryID = 0){
58
  ?>
59
  <script type="text/javascript">
60
  // seralize the ImageOrder
61
- function saveImageOrder()
62
- {
63
- var serial = "";
64
- var objects = document.getElementsByTagName('div');
65
- for(var no=0;no<objects.length;no++){
66
- if(objects[no].className=='imageBox' || objects[no].className=='imageBoxHighlighted'){
67
- if (serial.length > 0) serial = serial + '&'
68
- serial = serial + "sortArray[]=" + objects[no].id;
69
- }
70
  }
71
  jQuery('input[name=sortorder]').val(serial);
72
- // debug( 'This is the new order of the images(IDs) : <br>' + orderString );
73
-
74
  }
75
  jQuery(document).ready(function($) {
76
  $(".jqui-sortable").sortable({items: 'div.imageBox'});
14
 
15
  if (isset ($_POST['updateSortorder'])) {
16
  check_admin_referer('ngg_updatesortorder');
17
+
18
+ // get variable new sortorder
19
+ $sortArray = explode(",", $_POST['sortorder']);
20
  if (is_array($sortArray)){
21
  $neworder = array();
22
+
23
  foreach($sortArray as $pid) {
24
  $pid = substr($pid, 4); // get id from "pid-x"
25
  $neworder[] = (int) $pid;
60
  ?>
61
  <script type="text/javascript">
62
  // seralize the ImageOrder
63
+ function saveImageOrder() {
64
+ var objects = document.getElementsByClassName('imageBox');
65
+ var serial = objects[0].id;
66
+ for( var no=1; no < objects.length; no++) {
67
+ serial += "," + objects[no].id;
 
 
 
 
68
  }
69
  jQuery('input[name=sortorder]').val(serial);
 
 
70
  }
71
  jQuery(document).ready(function($) {
72
  $(".jqui-sortable").sortable({items: 'div.imageBox'});
admin/rotate.php CHANGED
@@ -80,8 +80,8 @@ $preview_image = trailingslashit( home_url() ) . 'index.php?callback=image&amp;
80
  <td style="min-width: 160px;">
81
  <input type="radio" name="ra" value="cw" /><?php esc_html_e('90&deg; clockwise', 'nggallery'); ?><br />
82
  <input type="radio" name="ra" value="ccw" /><?php esc_html_e('90&deg; anticlockwise', 'nggallery'); ?><br />
83
- <input type="radio" name="ra" value="fv" /><?php esc_html_e('Flip vertically', 'nggallery'); ?><br />
84
- <input type="radio" name="ra" value="fh" /><?php esc_html_e('Flip horizontally', 'nggallery'); ?>
85
  </td>
86
  </tr>
87
  <tr>
80
  <td style="min-width: 160px;">
81
  <input type="radio" name="ra" value="cw" /><?php esc_html_e('90&deg; clockwise', 'nggallery'); ?><br />
82
  <input type="radio" name="ra" value="ccw" /><?php esc_html_e('90&deg; anticlockwise', 'nggallery'); ?><br />
83
+ <input type="radio" name="ra" value="fv" /><?php esc_html_e('Flip horizontally', 'nggallery'); ?><br />
84
+ <input type="radio" name="ra" value="fh" /><?php esc_html_e('Flip vertically', 'nggallery'); ?>
85
  </td>
86
  </tr>
87
  <tr>
admin/settings.php CHANGED
@@ -3,7 +3,9 @@ if(preg_match('#' . basename(__FILE__) . '#', $_SERVER['PHP_SELF'])) { die('You
3
 
4
  /**
5
  * Rebuild slugs for albums, galleries and images via AJAX request
6
- *
 
 
7
  * @sine 1.7.0
8
  * @access internal
9
  */
@@ -97,6 +99,8 @@ jQuery(document).ready(function($) {
97
  }
98
  }
99
 
 
 
100
  class nggOptions {
101
 
102
  /**
@@ -126,12 +130,6 @@ class nggOptions {
126
  $old_state = $ngg->options['usePermalinks'];
127
  $old_slug = $ngg->options['permalinkSlug'];
128
 
129
- if ( isset($_POST['irDetect']) ) {
130
- check_admin_referer('ngg_settings');
131
- $ngg->options['irURL'] = ngg_search_imagerotator();
132
- update_option('ngg_options', $ngg->options);
133
- }
134
-
135
  if ( isset($_POST['updateoption']) ) {
136
  check_admin_referer('ngg_settings');
137
  // get the hidden option fields, taken from WP core
@@ -141,7 +139,18 @@ class nggOptions {
141
  if ($options) {
142
  foreach ($options as $option) {
143
  $option = trim($option);
144
- $value = isset($_POST[$option]) ? trim($_POST[$option]) : false;
 
 
 
 
 
 
 
 
 
 
 
145
  // $value = sanitize_option($option, $value); // This does stripslashes on those that need it
146
  $ngg->options[$option] = $value;
147
  }
@@ -196,7 +205,7 @@ class nggOptions {
196
 
197
  /**
198
  * Render the page content
199
- *
200
  * @return void
201
  */
202
  function controller() {
@@ -241,9 +250,9 @@ class nggOptions {
241
  jQuery("#thumbCode").val(effectcode);
242
  };
243
 
244
- function setcolor(fileid, color) {
245
- jQuery(fileid).css("background-color", '#' + color );
246
- };
247
  </script>
248
  <div class="wrap ngg-wrap">
249
  <?php screen_icon( 'nextgen-gallery' ); ?>
@@ -303,16 +312,21 @@ class nggOptions {
303
  <h3><?php esc_html_e('General settings','nggallery'); ?></h3>
304
  <form name="generaloptions" method="post" action="<?php echo $this->filepath; ?>">
305
  <?php wp_nonce_field('ngg_settings') ?>
306
- <input type="hidden" name="page_options" value="gallerypath,deleteImg,useMediaRSS,usePicLens,usePermalinks,permalinkSlug,graphicLibrary,imageMagickDir,activateTags,appendType,maxImages" />
307
  <table class="form-table ngg-options">
308
  <tr valign="top">
309
  <th align="left"><?php esc_html_e('Gallery path','nggallery'); ?></th>
310
  <td><input <?php if (is_multisite()) echo 'readonly = "readonly"'; ?> type="text" class="regular-text code" name="gallerypath" value="<?php echo $ngg->options['gallerypath']; ?>" />
311
  <p class="description"><?php esc_html_e('This is the default path for all galleries','nggallery') ?></p></td>
312
  </tr>
 
 
 
 
 
313
  <tr valign="top">
314
  <th align="left"><?php esc_html_e('Image files','nggallery'); ?></th>
315
- <td><input <?php if (is_multisite()) echo 'readonly = "readonly"'; ?> type="checkbox" name="deleteImg" value="1" <?php checked('1', $ngg->options['deleteImg']); ?> />
316
  <?php esc_html_e('Delete files when removing a gallery from the database','nggallery'); ?></td>
317
  </tr>
318
  <tr>
@@ -325,12 +339,12 @@ class nggOptions {
325
  </tr>
326
  <tr>
327
  <th align="left"><?php esc_html_e('Media RSS feed','nggallery'); ?></th>
328
- <td><input type="checkbox" name="useMediaRSS" value="1" <?php checked('1', $ngg->options['useMediaRSS']); ?> />
329
  <span><?php esc_html_e('Add a RSS feed to you blog header. Useful for CoolIris/PicLens','nggallery') ?></span></td>
330
  </tr>
331
  <tr>
332
  <th align="left"><?php esc_html_e('PicLens/CoolIris','nggallery'); ?> (<a href="http://www.cooliris.com">CoolIris</a>)</th>
333
- <td><input type="checkbox" name="usePicLens" value="1" <?php checked('1', $ngg->options['usePicLens']); ?> />
334
  <?php esc_html_e('Include support for PicLens and CoolIris','nggallery') ?>
335
  <p class="description"><?php esc_html_e('When activated, JavaScript is added to your site footer. Make sure that wp_footer is called in your theme.','nggallery') ?></p></td>
336
  </td>
@@ -340,7 +354,7 @@ class nggOptions {
340
  <table class="form-table ngg-options">
341
  <tr valign="top">
342
  <th align="left"><?php esc_html_e('Use permalinks','nggallery'); ?></th>
343
- <td><input type="checkbox" name="usePermalinks" value="1" <?php checked('1', $ngg->options['usePermalinks']); ?> />
344
  <?php esc_html_e('Adds a static link to all images','nggallery'); ?>
345
  <p class="description"><?php esc_html_e('When activating this option, you need to update your permalink structure once','nggallery'); ?></p></td>
346
  </tr>
@@ -359,7 +373,7 @@ class nggOptions {
359
  <table class="form-table ngg-options">
360
  <tr>
361
  <th valign="top"><?php esc_html_e('Add related images','nggallery'); ?></th>
362
- <td><input name="activateTags" type="checkbox" value="1" <?php checked('1', $ngg->options['activateTags']); ?> />
363
  <?php esc_html_e('This will add related images to every post','nggallery'); ?>
364
  </td>
365
  </tr>
@@ -405,12 +419,12 @@ class nggOptions {
405
  </tr>
406
  <tr>
407
  <th valign="top"><?php esc_html_e('Backup original','nggallery'); ?></th>
408
- <td><input type="checkbox" name="imgBackup" value="1"<?php echo ($ngg->options['imgBackup'] == 1) ? ' checked ="chechked"' : ''; ?>/>
409
  <span><?php esc_html_e('Create a backup for the resized images','nggallery'); ?></span></td>
410
  </tr>
411
  <tr>
412
  <th valign="top"><?php esc_html_e('Automatically resize','nggallery'); ?></th>
413
- <td><input type="checkbox" name="imgAutoResize" value="1"<?php echo ($ngg->options['imgAutoResize'] == 1) ? ' checked ="chechked"' : ''; ?>/>
414
  <span><?php esc_html_e('Automatically resize images on upload.','nggallery') ?></span></td>
415
  </tr>
416
  </table>
@@ -429,7 +443,7 @@ class nggOptions {
429
  </tr>
430
  <tr valign="top">
431
  <th align="left"><?php esc_html_e('Fixed size','nggallery'); ?></th>
432
- <td><input type="checkbox" name="thumbfix" value="1" <?php checked('1', $ngg->options['thumbfix']); ?> />
433
  <?php esc_html_e('This will ignore the aspect ratio, so no portrait thumbnails','nggallery') ?></td>
434
  </tr>
435
  <tr valign="top">
@@ -461,7 +475,7 @@ class nggOptions {
461
  <table class="form-table ngg-options">
462
  <tr>
463
  <th valign="top"><?php esc_html_e('Inline gallery','nggallery') ?></th>
464
- <td><input name="galNoPages" type="checkbox" value="1" <?php checked('1', $ngg->options['galNoPages']); ?> />
465
  <?php esc_html_e('Galleries will not be shown on a subpage, but on the same page.','nggallery') ?>
466
  </td>
467
  </tr>
@@ -481,7 +495,7 @@ class nggOptions {
481
  </tr>
482
  <tr>
483
  <th valign="top"><?php esc_html_e('Slideshow','nggallery'); ?></th>
484
- <td><input name="galShowSlide" type="checkbox" value="1" <?php checked('1', $ngg->options['galShowSlide']); ?> /> <?php esc_html_e('Enable slideshow','nggallery'); ?><br/><?php esc_html_e('Text to show:','nggallery'); ?>
485
  <input type="text" class="regular-text" name="galTextSlide" value="<?php echo $ngg->options['galTextSlide'] ?>" />
486
  <input type="text" name="galTextGallery" value="<?php echo $ngg->options['galTextGallery'] ?>" class="regular-text"/>
487
  <p class="description"> <?php esc_html_e('This is the text the visitors will have to click to switch between display modes.','nggallery'); ?></p>
@@ -496,20 +510,20 @@ class nggOptions {
496
  </tr>
497
  <tr>
498
  <th valign="top"><?php esc_html_e('ImageBrowser','nggallery'); ?></th>
499
- <td><input name="galImgBrowser" type="checkbox" value="1" <?php checked('1', $ngg->options['galImgBrowser']); ?> />
500
  <?php esc_html_e('Use ImageBrowser instead of another effect.', 'nggallery'); ?>
501
  </td>
502
  </tr>
503
  <tr>
504
  <th valign="top"><?php esc_html_e('Hidden images','nggallery'); ?></th>
505
- <td><input name="galHiddenImg" type="checkbox" value="1" <?php checked('1', $ngg->options['galHiddenImg']); ?> />
506
  <?php esc_html_e('Loads all images for the modal window, when pagination is used (like Thickbox, Lightbox etc.).','nggallery'); ?>
507
  <p class="description"> <?php esc_html_e('Note: this increases the page load (possibly a lot)', 'nggallery'); ?>
508
  </td>
509
  </tr>
510
  <tr>
511
  <th valign="top"><?php esc_html_e('AJAX pagination','nggallery'); ?></th>
512
- <td><input name="galAjaxNav" type="checkbox" value="1" <?php checked('1', $ngg->options['galAjaxNav']); ?> />
513
  <?php esc_html_e('Use AJAX pagination to browse images without reloading the page.','nggallery'); ?>
514
  <p class="description"><?php esc_html_e('Note: works only in combination with the Shutter effect.', 'nggallery'); ?> </p>
515
  </td>
@@ -576,11 +590,13 @@ class nggOptions {
576
 
577
  function tab_watermark() {
578
 
579
- global $wpdb, $ngg;
580
 
581
  // take the first image as sample
582
- $imageID = $wpdb->get_var("SELECT MIN(pid) FROM $wpdb->nggpictures");
583
- $imageURL = ($imageID) ? $imageURL = '<img src="'. home_url('index.php') . '?callback=image&amp;pid=' . intval ($imageID) . '&amp;mode=watermark&amp;width=300&amp;height=250" />' : '';
 
 
584
 
585
  ?>
586
  <!-- Watermark settings -->
@@ -665,8 +681,7 @@ class nggOptions {
665
  </tr>
666
  <tr>
667
  <th><?php esc_html_e('Color','nggallery') ?></th>
668
- <td><input class="picker" type="text" size="6" maxlength="6" id="wmColor" name="wmColor" onchange="setcolor('#previewText', this.value)" value="<?php echo $ngg->options['wmColor'] ?>" />
669
- <input type="text" size="1" readonly="readonly" id="previewText" style="background-color: #<?php echo $ngg->options['wmColor']; ?>" /> <?php esc_html_e('(hex w/o #)','nggallery') ?></td>
670
  </tr>
671
  <tr>
672
  <th valign="top"><?php esc_html_e('Text','nggallery') ?></th>
@@ -690,146 +705,89 @@ class nggOptions {
690
  <!-- Slideshow settings -->
691
  <form name="player_options" method="POST" action="<?php echo $this->filepath.'#slideshow'; ?>" >
692
  <?php wp_nonce_field('ngg_settings'); ?>
693
- <input type="hidden" name="page_options" value="slideFx,enableIR,irURL,irWidth,irHeight,irShuffle,irLinkfromdisplay,irShownavigation,irShowicons,irWatermark,irOverstretch,irRotatetime,irTransition,irKenburns,irBackcolor,irFrontcolor,irLightcolor,irScreencolor,irAudio,irXHTMLvalid" />
694
  <h3><?php esc_html_e('Slideshow','nggallery'); ?></h3>
695
  <table class="form-table ngg-options">
696
  <tr>
697
- <th><?php esc_html_e('Default size','nggallery') ?></th>
698
- <td><label for="irWidth"><?php esc_html_e('Width','nggallery') ?></label>
699
- <input type="number" step="1" min="0" class="small-text" name="irWidth" value="<?php echo $ngg->options['irWidth']; ?>" />
700
- <label for="irHeight"><?php esc_html_e('Height','nggallery') ?></label>
701
- <input type="number" step="1" min="0" class="small-text" name="irHeight" value="<?php echo $ngg->options['irHeight']; ?>" />
702
- </td>
703
  </tr>
704
  <tr>
705
- <th><?php esc_html_e('Duration','nggallery') ?></th>
706
- <td><input type="number" type="number" step="1" min="0" class="small-text" name="irRotatetime" value="<?php echo $ngg->options['irRotatetime'] ?>" /> <label for="irRotatetime"><?php esc_html_e('sec.', 'nggallery') ;?></label></td>
 
 
 
 
 
707
  </tr>
708
  <tr>
709
  <th><?php esc_html_e('Transition / Fade effect','nggallery') ?></th>
710
  <td>
711
- <select size="1" name="slideFx">
712
- <option value="fade" <?php selected('fade', $ngg->options['slideFx']); ?> ><?php esc_html_e('fade', 'nggallery') ;?></option>
713
- <option value="blindX" <?php selected('blindX', $ngg->options['slideFx']); ?> ><?php esc_html_e('blindX', 'nggallery') ;?></option>
714
- <option value="cover" <?php selected('cover', $ngg->options['slideFx']); ?> ><?php esc_html_e('cover', 'nggallery') ;?></option>
715
- <option value="scrollUp" <?php selected('scrollUp', $ngg->options['slideFx']); ?> ><?php esc_html_e('scrollUp', 'nggallery') ;?></option>
716
- <option value="scrollDown" <?php selected('scrollDown', $ngg->options['slideFx']); ?> ><?php esc_html_e('scrollDown', 'nggallery') ;?></option>
717
- <option value="shuffle" <?php selected('shuffle', $ngg->options['slideFx']); ?> ><?php esc_html_e('shuffle', 'nggallery') ;?></option>
718
- <option value="toss" <?php selected('toss', $ngg->options['slideFx']); ?> ><?php esc_html_e('toss', 'nggallery') ;?></option>
719
- <option value="wipe" <?php selected('wipe', $ngg->options['slideFx']); ?> ><?php esc_html_e('wipe', 'nggallery') ;?></option>
720
- </select>
721
- <p class="description"><?php esc_html_e('See here for more information about the effects :', 'nggallery') ?> <a href="http://jquery.malsup.com/cycle/browser.html" target="_blank" >jQuery Cycle</a></p>
 
 
 
 
 
 
 
 
 
 
722
  </td>
723
  </tr>
724
- </table>
725
- <h3><?php esc_html_e('Settings for the JW Image Rotator','nggallery') ?></h3>
726
- <p><?php esc_html_e('NextCellent Gallery flash slideshows use the JW Image Rotator Version 3.17 by', 'nggallery') ;?> <a target='_blank' href='http://www.longtailvideo.com/players/jw-image-rotator/'>Long Tail Video</a>.
727
- <?php esc_html_e('Press the button below to search for it automatically. For earlier versions of NextCellent Gallery, you\'ll need to
728
- upload the file manually to the', 'nggallery') ;?> <a href='http://codex.wordpress.org/Uploading_Files' target='_blank'>WordPress Uploads directory</a>.</p>
729
- <?php if (empty($ngg->options['irURL']) && ($ngg->options['enableIR'] == '1')) { ?>
730
- <div id="message" class="error inline">
731
- <p>
732
- <?php esc_html_e('The path to JW Image Rotator is not defined, the slideshow will not work.','nggallery'); ?><br />
733
- <?php esc_html_e('Press the button below to search for the file.','nggallery'); ?></p>
734
- </div>
735
- <?php }?>
736
- <table class="form-table ngg-options">
737
- <tr>
738
- <th><?php esc_html_e('Enable flash slideshow','nggallery') ?></th>
739
- <td><input name="enableIR" type="checkbox" value="1" <?php checked('1', $ngg->options['enableIR']); ?> />
740
- <span><?php esc_html_e('Integrate the flash based slideshow for all flash supported devices','nggallery') ?></span></td>
741
- </tr>
742
- <tr>
743
- <th><?php esc_html_e('Path to the JW Image Rotator (URL)','nggallery') ?></th>
744
- <td>
745
- <input type="text" class="regular-text code" id="irURL" name="irURL" value="<?php echo $ngg->options['irURL']; ?>" />
746
- <input type="submit" name="irDetect" class="button-secondary" value="<?php esc_html_e('Search now','nggallery') ;?> &raquo;"/>
747
- <br /><span><?php esc_html_e('Press the button below to search for the JW Image Rotator','nggallery') ?></span>
748
- </td>
749
- </tr>
750
- <tr>
751
- <th><?php esc_html_e('Shuffle mode','nggallery') ?></th>
752
- <td><input name="irShuffle" type="checkbox" value="1" <?php checked('1', $ngg->options['irShuffle']); ?> /></td>
753
- </tr>
754
  <tr>
755
- <th><?php esc_html_e('Show next image on click','nggallery') ?></th>
756
- <td><input name="irLinkfromdisplay" type="checkbox" value="1" <?php checked('1', $ngg->options['irLinkfromdisplay']); ?> /></td>
757
  </tr>
758
  <tr>
759
- <th><?php esc_html_e('Show navigation bar','nggallery') ?></th>
760
- <td><input name="irShownavigation" type="checkbox" value="1" <?php checked('1', $ngg->options['irShownavigation']); ?> /></td>
761
  </tr>
762
  <tr>
763
- <th><?php esc_html_e('Show loading icon','nggallery') ?></th>
764
- <td><input name="irShowicons" type="checkbox" value="1" <?php checked('1', $ngg->options['irShowicons']); ?> /></td>
765
  </tr>
766
  <tr>
767
- <th><?php esc_html_e('Use watermark logo','nggallery') ?></th>
768
- <td><input name="irWatermark" type="checkbox" value="1" <?php checked('1', $ngg->options['irWatermark']); ?> />
769
- <span><?php esc_html_e('You can change the logo at the watermark settings','nggallery') ?></span></td>
770
  </tr>
771
  <tr>
772
- <th><?php esc_html_e('Stretch image','nggallery') ?></th>
773
- <td>
774
- <select size="1" name="irOverstretch">
775
- <option value="true" <?php selected('true', $ngg->options['irOverstretch']); ?> ><?php esc_html_e('true', 'nggallery') ;?></option>
776
- <option value="false" <?php selected('false', $ngg->options['irOverstretch']); ?> ><?php esc_html_e('false', 'nggallery') ;?></option>
777
- <option value="fit" <?php selected('fit', $ngg->options['irOverstretch']); ?> ><?php esc_html_e('fit', 'nggallery') ;?></option>
778
- <option value="none" <?php selected('none', $ngg->options['irOverstretch']); ?> ><?php esc_html_e('none', 'nggallery') ;?></option>
779
- </select>
780
- </td>
781
- </tr>
782
- <tr>
783
- <th><?php esc_html_e('Transition / Fade effect','nggallery') ?></th>
784
- <td>
785
- <select size="1" name="irTransition">
786
- <option value="fade" <?php selected('fade', $ngg->options['irTransition']); ?> ><?php esc_html_e('fade', 'nggallery') ;?></option>
787
- <option value="bgfade" <?php selected('bgfade', $ngg->options['irTransition']); ?> ><?php esc_html_e('bgfade', 'nggallery') ;?></option>
788
- <option value="slowfade" <?php selected('slowfade', $ngg->options['irTransition']); ?> ><?php esc_html_e('slowfade', 'nggallery') ;?></option>
789
- <option value="circles" <?php selected('circles', $ngg->options['irTransition']); ?> ><?php esc_html_e('circles', 'nggallery') ;?></option>
790
- <option value="bubbles" <?php selected('bubbles', $ngg->options['irTransition']); ?> ><?php esc_html_e('bubbles', 'nggallery') ;?></option>
791
- <option value="blocks" <?php selected('blocks', $ngg->options['irTransition']); ?> ><?php esc_html_e('blocks', 'nggallery') ;?></option>
792
- <option value="fluids" <?php selected('fluids', $ngg->options['irTransition']); ?> ><?php esc_html_e('fluids', 'nggallery') ;?></option>
793
- <option value="flash" <?php selected('flash', $ngg->options['irTransition']); ?> ><?php esc_html_e('flash', 'nggallery') ;?></option>
794
- <option value="lines" <?php selected('lines', $ngg->options['irTransition']); ?> ><?php esc_html_e('lines', 'nggallery') ;?></option>
795
- <option value="random" <?php selected('random', $ngg->options['irTransition']); ?> ><?php esc_html_e('random', 'nggallery') ;?></option>
796
- </select>
797
- </td>
798
- </tr>
799
- <tr>
800
- <th><?php esc_html_e('Use slow zooming effect','nggallery') ?></th>
801
- <td><input name="irKenburns" type="checkbox" value="1" <?php checked('1', $ngg->options['irKenburns']); ?> /></td>
802
- </tr>
803
- <tr>
804
- <th><?php esc_html_e('Background Color','nggallery') ?></th>
805
- <td><input class="picker" type="text" size="6" maxlength="6" id="irBackcolor" name="irBackcolor" onchange="setcolor('#previewBack', this.value)" value="<?php echo $ngg->options['irBackcolor'] ?>" />
806
- <input type="text" size="1" readonly="readonly" id="previewBack" style="background-color: #<?php echo $ngg->options['irBackcolor'] ?>" /></td>
807
- </tr>
808
- <tr>
809
- <th><?php esc_html_e('Texts / Buttons Color','nggallery') ?></th>
810
- <td><input class="picker" type="text" size="6" maxlength="6" id="irFrontcolor" name="irFrontcolor" onchange="setcolor('#previewFront', this.value)" value="<?php echo $ngg->options['irFrontcolor'] ?>" />
811
- <input type="text" size="1" readonly="readonly" id="previewFront" style="background-color: #<?php echo $ngg->options['irFrontcolor'] ?>" /></td>
812
  </tr>
813
  <tr>
814
- <th><?php esc_html_e('Rollover / Active Color','nggallery') ?></th>
815
- <td><input class="picker" type="text" size="6" maxlength="6" id="irLightcolor" name="irLightcolor" onchange="setcolor('#previewLight', this.value)" value="<?php echo $ngg->options['irLightcolor'] ?>" />
816
- <input type="text" size="1" readonly="readonly" id="previewLight" style="background-color: #<?php echo $ngg->options['irLightcolor'] ?>" /></td>
817
  </tr>
818
  <tr>
819
- <th><?php esc_html_e('Screen Color','nggallery') ?></th>
820
- <td><input class="picker" type="text" size="6" maxlength="6" id="irScreencolor" name="irScreencolor" onchange="setcolor('#previewScreen', this.value)" value="<?php echo $ngg->options['irScreencolor'] ?>" />
821
- <input type="text" size="1" readonly="readonly" id="previewScreen" style="background-color: #<?php echo $ngg->options['irScreencolor'] ?>" /></td>
822
  </tr>
823
  <tr>
824
- <th><?php esc_html_e('Background music (URL)','nggallery') ?></th>
825
- <td><input type="text" class="regular-text code" id="irAudio" name="irAudio" value="<?php echo $ngg->options['irAudio'] ?>" /></td>
826
  </tr>
827
  <tr>
828
- <th ><?php esc_html_e('Try XHTML validation (with CDATA)','nggallery') ?></th>
829
- <td><input name="irXHTMLvalid" type="checkbox" value="1" <?php checked('1', $ngg->options['irXHTMLvalid']); ?> />
830
- <span><?php esc_html_e('Important : Could causes problem with some browser. Please recheck your page.','nggallery') ?></span></td>
 
 
831
  </tr>
832
- </table>
833
  <div class="submit"><input class="button-primary" type="submit" name="updateoption" value="<?php esc_attr_e('Save Changes') ;?>"/></div>
834
  </form>
835
  <?php
@@ -868,36 +826,33 @@ function ngg_get_TTFfont() {
868
  return $ttf_fonts;
869
  }
870
 
871
- function ngg_search_imagerotator() {
872
- global $wpdb;
873
-
874
- $upload = wp_upload_dir();
875
-
876
- // look first at the old place and move it to wp-content/uploads
877
- if ( file_exists( NGGALLERY_ABSPATH . 'imagerotator.swf' ) )
878
- @rename(NGGALLERY_ABSPATH . 'imagerotator.swf', $upload['basedir'] . '/imagerotator.swf');
879
-
880
- // This should be the new place
881
- if ( file_exists( $upload['basedir'] . '/imagerotator.swf' ) )
882
- return $upload['baseurl'] . '/imagerotator.swf';
883
 
884
- // Find the path to the imagerotator via the media library
885
- if ( $path = $wpdb->get_var( "SELECT guid FROM {$wpdb->posts} WHERE guid LIKE '%imagerotator.swf%'" ) )
886
- return $path;
887
 
888
- // maybe it's located at wp-content
889
- if ( file_exists( WP_CONTENT_DIR . '/imagerotator.swf' ) )
890
- return WP_CONTENT_URL . '/imagerotator.swf';
 
 
891
 
892
- // or in the plugin folder
893
- if ( file_exists( WP_PLUGIN_DIR . '/imagerotator.swf' ) )
894
- return WP_PLUGIN_URL . '/imagerotator.swf';
895
 
896
- // this is deprecated and will be ereased during a automatic upgrade
897
- if ( file_exists( NGGALLERY_ABSPATH . 'imagerotator.swf' ) )
898
- return NGGALLERY_URLPATH . 'imagerotator.swf';
899
 
900
- return '';
901
  }
902
 
903
  /**********************************************************/
3
 
4
  /**
5
  * Rebuild slugs for albums, galleries and images via AJAX request
6
+ * 20150124 FZSM: A class only for one method (and is not the constructor) needs to be improved.
7
+ * 20150124 FZSM: suggested rule: One file, one class...
8
+ * 20150124: function called statically when is not...
9
  * @sine 1.7.0
10
  * @access internal
11
  */
99
  }
100
  }
101
 
102
+ //20150124 FZSM: Suggested rule: no class should call a spaghuetti code directly...
103
+
104
  class nggOptions {
105
 
106
  /**
130
  $old_state = $ngg->options['usePermalinks'];
131
  $old_slug = $ngg->options['permalinkSlug'];
132
 
 
 
 
 
 
 
133
  if ( isset($_POST['updateoption']) ) {
134
  check_admin_referer('ngg_settings');
135
  // get the hidden option fields, taken from WP core
139
  if ($options) {
140
  foreach ($options as $option) {
141
  $option = trim($option);
142
+ $value = false;
143
+ if ( isset( $_POST[ $option ] ) ) {
144
+ $value = trim( $_POST[ $option ] );
145
+ if ($value === "true") {
146
+ $value = true;
147
+ }
148
+
149
+ if ( is_numeric( $value ) ) {
150
+ $value = (int) $value;
151
+ }
152
+ }
153
+
154
  // $value = sanitize_option($option, $value); // This does stripslashes on those that need it
155
  $ngg->options[$option] = $value;
156
  }
205
 
206
  /**
207
  * Render the page content
208
+ * 20150124:FZSM: there should be a cleaner way to handle this, instead making dynamic functions and actions.
209
  * @return void
210
  */
211
  function controller() {
250
  jQuery("#thumbCode").val(effectcode);
251
  };
252
 
253
+ jQuery(document).ready(function($){
254
+ $('.picker').wpColorPicker();
255
+ });
256
  </script>
257
  <div class="wrap ngg-wrap">
258
  <?php screen_icon( 'nextgen-gallery' ); ?>
312
  <h3><?php esc_html_e('General settings','nggallery'); ?></h3>
313
  <form name="generaloptions" method="post" action="<?php echo $this->filepath; ?>">
314
  <?php wp_nonce_field('ngg_settings') ?>
315
+ <input type="hidden" name="page_options" value="gallerypath,silentUpgrade,deleteImg,useMediaRSS,usePicLens,usePermalinks,permalinkSlug,graphicLibrary,imageMagickDir,activateTags,appendType,maxImages" />
316
  <table class="form-table ngg-options">
317
  <tr valign="top">
318
  <th align="left"><?php esc_html_e('Gallery path','nggallery'); ?></th>
319
  <td><input <?php if (is_multisite()) echo 'readonly = "readonly"'; ?> type="text" class="regular-text code" name="gallerypath" value="<?php echo $ngg->options['gallerypath']; ?>" />
320
  <p class="description"><?php esc_html_e('This is the default path for all galleries','nggallery') ?></p></td>
321
  </tr>
322
+ <tr>
323
+ <th align="left"><?php esc_html_e('Silent database upgrade','nggallery'); ?></th>
324
+ <td><input type="checkbox" name="silentUpgrade" value="true" <?php checked( true, $ngg->options['silentUpgrade']); ?> />
325
+ <label for="silentUpgrade"><?php esc_html_e('Update the database without notice.','nggallery') ?></label></td>
326
+ </tr>
327
  <tr valign="top">
328
  <th align="left"><?php esc_html_e('Image files','nggallery'); ?></th>
329
+ <td><input <?php if (is_multisite()) echo 'readonly = "readonly"'; ?> type="checkbox" name="deleteImg" value="true" <?php checked(true, $ngg->options['deleteImg']); ?> />
330
  <?php esc_html_e('Delete files when removing a gallery from the database','nggallery'); ?></td>
331
  </tr>
332
  <tr>
339
  </tr>
340
  <tr>
341
  <th align="left"><?php esc_html_e('Media RSS feed','nggallery'); ?></th>
342
+ <td><input type="checkbox" name="useMediaRSS" value="true" <?php checked(true, $ngg->options['useMediaRSS']); ?> />
343
  <span><?php esc_html_e('Add a RSS feed to you blog header. Useful for CoolIris/PicLens','nggallery') ?></span></td>
344
  </tr>
345
  <tr>
346
  <th align="left"><?php esc_html_e('PicLens/CoolIris','nggallery'); ?> (<a href="http://www.cooliris.com">CoolIris</a>)</th>
347
+ <td><input type="checkbox" name="usePicLens" value="true" <?php checked(true, $ngg->options['usePicLens']); ?> />
348
  <?php esc_html_e('Include support for PicLens and CoolIris','nggallery') ?>
349
  <p class="description"><?php esc_html_e('When activated, JavaScript is added to your site footer. Make sure that wp_footer is called in your theme.','nggallery') ?></p></td>
350
  </td>
354
  <table class="form-table ngg-options">
355
  <tr valign="top">
356
  <th align="left"><?php esc_html_e('Use permalinks','nggallery'); ?></th>
357
+ <td><input type="checkbox" name="usePermalinks" value="true" <?php checked(true, $ngg->options['usePermalinks']); ?> />
358
  <?php esc_html_e('Adds a static link to all images','nggallery'); ?>
359
  <p class="description"><?php esc_html_e('When activating this option, you need to update your permalink structure once','nggallery'); ?></p></td>
360
  </tr>
373
  <table class="form-table ngg-options">
374
  <tr>
375
  <th valign="top"><?php esc_html_e('Add related images','nggallery'); ?></th>
376
+ <td><input name="activateTags" type="checkbox" value="true" <?php checked(true, $ngg->options['activateTags']); ?> />
377
  <?php esc_html_e('This will add related images to every post','nggallery'); ?>
378
  </td>
379
  </tr>
419
  </tr>
420
  <tr>
421
  <th valign="top"><?php esc_html_e('Backup original','nggallery'); ?></th>
422
+ <td><input type="checkbox" name="imgBackup" value="true" <?php checked(true, $ngg->options['imgBackup']); ?> />
423
  <span><?php esc_html_e('Create a backup for the resized images','nggallery'); ?></span></td>
424
  </tr>
425
  <tr>
426
  <th valign="top"><?php esc_html_e('Automatically resize','nggallery'); ?></th>
427
+ <td><input type="checkbox" name="imgAutoResize" value="1" <?php checked(true, $ngg->options['imgAutoResize']); ?> />
428
  <span><?php esc_html_e('Automatically resize images on upload.','nggallery') ?></span></td>
429
  </tr>
430
  </table>
443
  </tr>
444
  <tr valign="top">
445
  <th align="left"><?php esc_html_e('Fixed size','nggallery'); ?></th>
446
+ <td><input type="checkbox" name="thumbfix" value="true" <?php checked(true, $ngg->options['thumbfix']); ?> />
447
  <?php esc_html_e('This will ignore the aspect ratio, so no portrait thumbnails','nggallery') ?></td>
448
  </tr>
449
  <tr valign="top">
475
  <table class="form-table ngg-options">
476
  <tr>
477
  <th valign="top"><?php esc_html_e('Inline gallery','nggallery') ?></th>
478
+ <td><input name="galNoPages" type="checkbox" value="true" <?php checked(true, $ngg->options['galNoPages']); ?> />
479
  <?php esc_html_e('Galleries will not be shown on a subpage, but on the same page.','nggallery') ?>
480
  </td>
481
  </tr>
495
  </tr>
496
  <tr>
497
  <th valign="top"><?php esc_html_e('Slideshow','nggallery'); ?></th>
498
+ <td><input name="galShowSlide" type="checkbox" value="true" <?php checked(true, $ngg->options['galShowSlide']); ?> /> <?php esc_html_e('Enable slideshow','nggallery'); ?><br/><?php esc_html_e('Text to show:','nggallery'); ?>
499
  <input type="text" class="regular-text" name="galTextSlide" value="<?php echo $ngg->options['galTextSlide'] ?>" />
500
  <input type="text" name="galTextGallery" value="<?php echo $ngg->options['galTextGallery'] ?>" class="regular-text"/>
501
  <p class="description"> <?php esc_html_e('This is the text the visitors will have to click to switch between display modes.','nggallery'); ?></p>
510
  </tr>
511
  <tr>
512
  <th valign="top"><?php esc_html_e('ImageBrowser','nggallery'); ?></th>
513
+ <td><input name="galImgBrowser" type="checkbox" value="true" <?php checked(true, $ngg->options['galImgBrowser']); ?> />
514
  <?php esc_html_e('Use ImageBrowser instead of another effect.', 'nggallery'); ?>
515
  </td>
516
  </tr>
517
  <tr>
518
  <th valign="top"><?php esc_html_e('Hidden images','nggallery'); ?></th>
519
+ <td><input name="galHiddenImg" type="checkbox" value="true" <?php checked(true, $ngg->options['galHiddenImg']); ?> />
520
  <?php esc_html_e('Loads all images for the modal window, when pagination is used (like Thickbox, Lightbox etc.).','nggallery'); ?>
521
  <p class="description"> <?php esc_html_e('Note: this increases the page load (possibly a lot)', 'nggallery'); ?>
522
  </td>
523
  </tr>
524
  <tr>
525
  <th valign="top"><?php esc_html_e('AJAX pagination','nggallery'); ?></th>
526
+ <td><input name="galAjaxNav" type="checkbox" value="true" <?php checked(true, $ngg->options['galAjaxNav']); ?> />
527
  <?php esc_html_e('Use AJAX pagination to browse images without reloading the page.','nggallery'); ?>
528
  <p class="description"><?php esc_html_e('Note: works only in combination with the Shutter effect.', 'nggallery'); ?> </p>
529
  </td>
590
 
591
  function tab_watermark() {
592
 
593
+ global $ngg;
594
 
595
  // take the first image as sample
596
+ $image_array = nggdb::find_last_images(0, 1);
597
+ $ngg_image = $image_array[0];
598
+ $imageID = $ngg_image->pid;
599
+ $imageURL = $imageURL = '<img src="' . home_url( 'index.php' ) . '?callback=image&amp;pid=' . intval( $imageID ) . '&amp;mode=watermark&amp;width=300&amp;height=250" />';
600
 
601
  ?>
602
  <!-- Watermark settings -->
681
  </tr>
682
  <tr>
683
  <th><?php esc_html_e('Color','nggallery') ?></th>
684
+ <td><input class="picker" type="text" id="wmColor" name="wmColor" value="<?php echo $ngg->options['wmColor'] ?>" />
 
685
  </tr>
686
  <tr>
687
  <th valign="top"><?php esc_html_e('Text','nggallery') ?></th>
705
  <!-- Slideshow settings -->
706
  <form name="player_options" method="POST" action="<?php echo $this->filepath.'#slideshow'; ?>" >
707
  <?php wp_nonce_field('ngg_settings'); ?>
708
+ <input type="hidden" name="page_options" value="irAutoDim,slideFx,irWidth,irHeight,irRotatetime,irLoop,irDrag,irNavigation,irNavigationDots,irAutoplay,irAutoplayTimeout,irAutoplayHover,irNumber,irClick" />
709
  <h3><?php esc_html_e('Slideshow','nggallery'); ?></h3>
710
  <table class="form-table ngg-options">
711
  <tr>
712
+ <th><?php esc_html_e('Fit to space','nggallery') ?></th>
713
+ <td><input type="checkbox" name="irAutoDim" value="true" <?php checked( true, $ngg->options['irAutoDim']); ?>" /><label for="irAutoDim"><?php _e( "Let the slideshow fit in the available space.", 'nggallery'); ?></label></td>
 
 
 
 
714
  </tr>
715
  <tr>
716
+ <th><?php esc_html_e('Default size','nggallery') ?></th>
717
+ <td>
718
+ <label for="irWidth"><?php esc_html_e('Width','nggallery') ?></label>
719
+ <input <?php if($ngg->options['irAutoDim']) echo "readonly"; ?> type="number" step="1" min="0" class="small-text" name="irWidth" value="<?php echo $ngg->options['irWidth']; ?>" />
720
+ <label for="irHeight"><?php esc_html_e('Height','nggallery') ?></label>
721
+ <input <?php if($ngg->options['irAutoDim']) echo "readonly"; ?> type="number" step="1" min="0" class="small-text" name="irHeight" value="<?php echo $ngg->options['irHeight']; ?>" />
722
+ </td>
723
  </tr>
724
  <tr>
725
  <th><?php esc_html_e('Transition / Fade effect','nggallery') ?></th>
726
  <td>
727
+ <select size="1" name="slideFx"><?php
728
+
729
+ $options = array(
730
+ __( 'Attention Seekers', 'nggallery' ) => array( "bounce", "flash", "pulse", "rubberBand", "shake", "swing", "tada", "wobble"),
731
+ __( 'Bouncing Entrances', 'nggallery' ) => array( "bounceIn", "bounceInDown", "bounceInLeft", "bounceInRight", "bounceInUp" ),
732
+ __( 'Fading Entrances', 'nggallery' ) => array( "fadeIn", "fadeInDown", "fadeInDownBig", "fadeInLeft", "fadeInLeftBig", "fadeInRight", "fadeInRightBig", "fadeInUp", "fadeInUpBig"),
733
+ __( 'Fading Exits', 'nggallery' ) => array( "fadeOut", "fadeOutDown", "fadeOutDownBig", "fadeOutLeft", "fadeOutLeftBig", "fadeOutRight", "fadeOutRightBig", "fadeOutUp", "fadeOutUpBig"),
734
+ __( 'Flippers', 'nggallery' ) => array( "flip", "flipInX", "flipInY", "flipOutX", "flipOutY" ),
735
+ __( 'Lightspeed', 'nggallery' ) => array( "lightSpeedIn", "lightSpeedOut"),
736
+ __( 'Rotating Entrances', 'nggallery' ) => array( "rotateIn", "rotateInDownLeft", "rotateInDownRight", "rotateInUpLeft", "rotateInUpRight" ),
737
+ __( 'Rotating Exits', 'nggallery' ) => array( "rotateOut", "rotateOutDownLeft", "rotateOutDownRight", "rotateOutUpLeft", "rotateOutUpRight" ),
738
+ __( 'Specials', 'nggallery' ) => array( "hinge", "rollIn", "rollOut" ),
739
+ __( 'Zoom Entrances', 'nggallery' ) => array( "zoomIn", "zoomInDown", "zoomInLeft", "zoomInRight", "zoomInUp" )
740
+ );
741
+
742
+ foreach( $options as $option => $val ) {
743
+ echo convert_to_optgroup( $val, $option );
744
+ }
745
+ ?>
746
+ </select>
747
+ <p class="description"><?php _e("These effects are powered by"); ?> <strong>animate.css</strong>. <a target="_blank" href="http://daneden.github.io/animate.css/"><?php _e("Click here for examples of all effects and to learn more."); ?></a></p>
748
  </td>
749
  </tr>
750
+ <!-- NEW ONES; TO ADD -->
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
751
  <tr>
752
+ <th><?php esc_html_e('Loop','nggallery') ?></th>
753
+ <td><input type="checkbox" name="irLoop" value="true" <?php checked( true, $ngg->options['irLoop']); ?>" /><label for="irLoop"><?php _e( "Infinity loop. Duplicate last and first items to get loop illusion.", 'nggallery'); ?></label></td>
754
  </tr>
755
  <tr>
756
+ <th><?php esc_html_e('Mouse/touch drag','nggallery') ?></th>
757
+ <td><input type="checkbox" name="irDrag" value="true" <?php checked( true, $ngg->options['irDrag']); ?>" /><label for="irDrag"><?php _e( "Enable dragging with the mouse (or touch).", 'nggallery'); ?></label></td>
758
  </tr>
759
  <tr>
760
+ <th><?php esc_html_e('Previous / Next','nggallery') ?></th>
761
+ <td><input type="checkbox" name="irNavigation" value="true" <?php checked( true, $ngg->options['irNavigation']); ?> /><label for="irNavigation"><?php _e( "Show next/previous buttons.", 'nggallery'); ?></label></td>
762
  </tr>
763
  <tr>
764
+ <th><?php esc_html_e('Show dots','nggallery') ?></th>
765
+ <td><input type="checkbox" name="irNavigationDots" value="true" <?php checked( true, $ngg->options['irNavigationDots']); ?> /><label for="irNavigationDots"><?php _e( "Show dots for each image.", 'nggallery'); ?></label></td>
 
766
  </tr>
767
  <tr>
768
+ <th><?php esc_html_e('Autoplay','nggallery') ?></th>
769
+ <td><input type="checkbox" name="irAutoplay" value="true" <?php checked( true, $ngg->options['irAutoplay']); ?> /><label for="irAutoplay"><?php _e( "Automatically play the images.", 'nggallery'); ?></label></td>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
770
  </tr>
771
  <tr>
772
+ <th><?php esc_html_e('Duration','nggallery') ?></th>
773
+ <td><input <?php if(!$ngg->options['irAutoplay']) echo "readonly"; ?> type="number" type="number" step="1" min="0" class="small-text" name="irRotatetime" value="<?php echo $ngg->options['irRotatetime'] ?>" /> <label for="irRotatetime"><?php esc_html_e('sec.', 'nggallery') ;?></label></td>
 
774
  </tr>
775
  <tr>
776
+ <th><?php esc_html_e('Pause on hover','nggallery') ?></th>
777
+ <td><input <?php if(!$ngg->options['irAutoplay']) echo "readonly"; ?> type="checkbox" name="irAutoplayHover" value="true" <?php checked( true, $ngg->options['irAutoplayHover']); ?> /><label for="irAutoplayHover"><?php _e( "Pause when hovering over the slideshow.", 'nggallery'); ?></label></td>
 
778
  </tr>
779
  <tr>
780
+ <th><?php esc_html_e('Click for next','nggallery') ?></th>
781
+ <td><input type="checkbox" name="irClick" value="true" <?php checked( true, $ngg->options['irClick']); ?> /><label for="irClick"><?php _e( "Click to go to the next image.", 'nggallery'); ?></label></td>
782
  </tr>
783
  <tr>
784
+ <th><?php esc_html_e('Number of images','nggallery') ?></th>
785
+ <td>
786
+ <input type="number" type="number" step="1" min="1" class="small-text" name="irNumber" value="<?php echo $ngg->options['irNumber'] ?>" /> <label for="irNumber"><?php esc_html_e('images', 'nggallery') ;?></label>
787
+ <p class="description"><?php _e( "Number of images to display when using random or latest.", 'nggallery'); ?></p>
788
+ </td>
789
  </tr>
790
+ </table>
791
  <div class="submit"><input class="button-primary" type="submit" name="updateoption" value="<?php esc_attr_e('Save Changes') ;?>"/></div>
792
  </form>
793
  <?php
826
  return $ttf_fonts;
827
  }
828
 
829
+ /**
830
+ * Convert an array of options to a html dropdown group.
831
+ * 20150124: To improve: a class calling a function outside the class... should be fixed.
832
+ * @param $data array The option values (and display).
833
+ * @param $title string (optional) The label of the optgroup.
834
+ *
835
+ * @return string The output.
836
+ */
837
+ function convert_to_optgroup( $data, $title = null) {
 
 
 
838
 
839
+ global $ngg;
 
 
840
 
841
+ if ( is_null($title) ) {
842
+ $out = null;
843
+ } else {
844
+ $out = '<optgroup label="' . $title . '">';
845
+ }
846
 
847
+ foreach( $data as $option) {
848
+ $out .= '<option value="' . $option . '" ' . selected( $option, $ngg->options['slideFx'] ) . '>' . $option . '</option>';
849
+ }
850
 
851
+ if ( !is_null( $title ) ) {
852
+ $out .= '</optgroup>';
853
+ }
854
 
855
+ return $out;
856
  }
857
 
858
  /**********************************************************/
admin/upgrade.php CHANGED
@@ -1,92 +1,156 @@
1
  <?php
2
  /**
3
- * ngg_upgrade() - update routine for older version
4
- *
5
- * @return Success message
6
  */
7
  function ngg_upgrade() {
8
-
9
- global $wpdb, $user_ID, $nggRewrite;
10
 
11
  // get the current user ID
12
  get_currentuserinfo();
13
-
14
- // in multisite environment the pointer $wpdb->nggpictures need to be set again
15
- $wpdb->nggpictures = $wpdb->prefix . 'ngg_pictures';
16
- $wpdb->nggallery = $wpdb->prefix . 'ngg_gallery';
17
- $wpdb->nggalbum = $wpdb->prefix . 'ngg_album';
18
-
19
- // Be sure that the tables exist, avoid case sensitive : http://dev.mysql.com/doc/refman/5.1/en/identifier-case-sensitivity.html
20
- if( $wpdb->get_var( "SHOW TABLES LIKE '$wpdb->nggpictures'" ) ) {
21
-
22
- echo __('Upgrading database…', 'nggallery');
23
  $wpdb->show_errors();
24
 
25
  $installed_ver = get_option( 'ngg_db_version' );
26
-
 
27
  // v1.8.1 -> v1.8.2
28
- if (version_compare($installed_ver, '1.8.2', '<')) {
29
- //get options
30
- $ngg_options = get_option('ngg_options');
31
-
32
  //update them
33
- $ngg_options['CSSfile'] = NGGALLERY_ABSPATH . 'css/nggallery.css';
34
-
35
  //save them
36
- update_option('ngg_options', $ngg_options);
37
- }
38
-
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
39
  // update the database version
40
  update_option( "ngg_db_version", NGG_DBVERSION );
41
- echo '<span class="dashicons dashicons-yes"></span><br />';
42
-
43
- // better to flush rewrite rules after upgrades
44
- $nggRewrite->flush();
45
- return;
46
  }
47
-
48
- echo __('Could not find NextCellent Gallery database tables, upgrade failed!', 'nggallery');
49
-
50
- return;
51
  }
52
 
53
  /**
54
- * nggallery_upgrade_page() - This page shows up , when the database version doesn't fit the script NGG_DBVERSION constant.
55
- *
56
- * @return Upgrade Message
57
  */
58
  function nggallery_upgrade_page() {
59
-
60
- $filepath = admin_url() . 'admin.php?page=' . $_GET['page'];
61
-
 
 
 
62
  if ( isset($_GET['upgrade']) && $_GET['upgrade'] == 'now') {
63
- nggallery_start_upgrade($filepath);
64
  return;
65
  }
66
- ?>
67
- <div class="wrap">
68
- <h2><?php _e('Upgrade NextCellent Gallery', 'nggallery') ;?></h2>
69
- <p><?php _e('You\'re upgrading from an older version. To enable the newest features, we sometimes need to do a database upgrade.', 'nggallery'); ?></p>
70
- <p class="description"><span style="margin-right:5px;" class="dashicons dashicons-info"></span><?php _e('Normally you should be able to downgrade without any problems, but if you really want to play safe, you should make a backup of your database.', 'nggallery') ;?></p>
71
- <br /><a class="button button-primary" href="<?php echo $filepath;?>&amp;upgrade=now"><?php _e('Start upgrade now', 'nggallery'); ?></a>
72
- </div>
 
 
 
 
 
 
 
73
  <?php
74
  }
75
 
76
  /**
77
- * nggallery_start_upgrade() - Proceed the upgrade routine
78
- *
79
- * @param mixed $filepath
80
- * @return void
81
  */
82
- function nggallery_start_upgrade($filepath) {
83
- ?>
84
- <div class="wrap">
85
- <h2><?php _e('Upgrade NextCellent Gallery', 'nggallery') ;?></h2>
86
- <p><?php ngg_upgrade();?></p>
87
- <p class="finished"><?php _e('Upgrade complete.', 'nggallery') ;?></p>
88
- <br /><a class="finished button button-primary" href="<?php echo $filepath;?>"><?php _e('Continue to NextCellent', 'nggallery'); ?></a>
89
- </div>
 
 
 
 
 
 
 
 
 
 
 
90
  <?php
91
  }
 
92
  ?>
1
  <?php
2
  /**
3
+ * Upgrade the NextCellent database.
4
+ * @throws Exception If the database could not be found.
 
5
  */
6
  function ngg_upgrade() {
7
+
8
+ global $wpdb, $user_ID;
9
 
10
  // get the current user ID
11
  get_currentuserinfo();
12
+
13
+ // in multisite environment the pointer $wpdb->nggpictures need to be set again
14
+ $wpdb->nggpictures = $wpdb->prefix . 'ngg_pictures';
15
+ $wpdb->nggallery = $wpdb->prefix . 'ngg_gallery';
16
+ $wpdb->nggalbum = $wpdb->prefix . 'ngg_album';
17
+
18
+ // Be sure that the tables exist, avoid case sensitive : http://dev.mysql.com/doc/refman/5.1/en/identifier-case-sensitivity.html
19
+ if ( $wpdb->get_var( "SHOW TABLES LIKE '$wpdb->nggpictures'" ) ) {
20
+
 
21
  $wpdb->show_errors();
22
 
23
  $installed_ver = get_option( 'ngg_db_version' );
24
+ $ngg_options = get_option( 'ngg_options' );
25
+
26
  // v1.8.1 -> v1.8.2
27
+ if ( version_compare( $installed_ver, '1.8.2', '<' ) ) {
28
+
 
 
29
  //update them
30
+ $ngg_options['CSSfile'] = NGGALLERY_ABSPATH . 'css/nggallery.css';
31
+
32
  //save them
33
+ update_option( 'ngg_options', $ngg_options );
34
+ }
35
+
36
+ // v1.8.2 -> v1.8.3
37
+ if ( version_compare( $installed_ver, '1.8.3', '<' ) ) {
38
+
39
+ $booleans = array(
40
+ 'deleteImg',
41
+ 'swfUpload',
42
+ 'usePermalinks',
43
+ 'useMediaRSS',
44
+ 'usePicLens',
45
+ 'activateTags',
46
+ 'thumbfix',
47
+ 'imgBackup',
48
+ 'imgAutoResize',
49
+ 'galImages',
50
+ 'galShowSlide',
51
+ 'galNoPages',
52
+ 'galImgBrowser',
53
+ 'galHiddenImg',
54
+ 'galAjaxNav'
55
+ );
56
+
57
+ foreach ( $booleans as $value ) {
58
+ //Convert strings to primitive types in database to booleans
59
+ if ( $ngg_options[ $value ] === "1" ) {
60
+ $ngg_options[ $value ] = true;
61
+ }
62
+ }
63
+
64
+ $ngg_options['galImages'] = (int) $ngg_options['galImages'];
65
+
66
+
67
+ //Add new slideshow parameters
68
+ $ngg_options['irLoop'] = true;
69
+ $ngg_options['irDrag'] = true;
70
+ $ngg_options['irNavigation'] = false;
71
+ $ngg_options['irNavigationDots'] = false;
72
+ $ngg_options['irAutoplay'] = true;
73
+ $ngg_options['irAutoDim'] = false;
74
+ $ngg_options['irAutoplayHover'] = true;
75
+ $ngg_options['irNumber'] = 20;
76
+ $ngg_options['irClick'] = true;
77
+ $ngg_options['silentUpgrade'] = false;
78
+
79
+ //Convert color
80
+ $ngg_options['wmColor'] = '#' . $ngg_options['wmColor'];
81
+
82
+ //Delete the old ones
83
+ unset( $ngg_options['enableIR'], $ngg_options['irURL'], $ngg_options['irXHTMLvalid'], $ngg_options['irAudio'], $ngg_options['irShuffle'], $ngg_options['irLinkfromdisplay'], $ngg_options['irShownavigation'], $ngg_options['irShowicons'], $ngg_options['irWatermark'], $ngg_options['irOverstretch'], $ngg_options['irTransition'], $ngg_options['irKenburns'], $ngg_options['irBackcolor'], $ngg_options['irFrontcolor'], $ngg_options['irLightcolor'], $ngg_options['irScreencolor'] );
84
+
85
+ //Update the options.
86
+ update_option( 'ngg_options', $ngg_options );
87
+
88
+ }
89
+
90
  // update the database version
91
  update_option( "ngg_db_version", NGG_DBVERSION );
92
+
93
+ } else {
94
+ throw new Exception( __( 'Could not find NextCellent Gallery database tables, upgrade failed!', 'nggallery' ) );
 
 
95
  }
 
 
 
 
96
  }
97
 
98
  /**
99
+ * Show the first step to update the database.
 
 
100
  */
101
  function nggallery_upgrade_page() {
102
+
103
+ $filepath = admin_url() . 'admin.php?page=' . $_GET['page']; //default upgrade path
104
+ if ( is_network_admin() ) { //unless if it is network administrator...
105
+ $filepath = network_admin_url() . 'admin.php?page=' . $_GET['page'];
106
+ }
107
+
108
  if ( isset($_GET['upgrade']) && $_GET['upgrade'] == 'now') {
109
+ doing_update_output($filepath);
110
  return;
111
  }
112
+ ?>
113
+ <div class="wrap">
114
+ <h2><?php _e( 'Upgrade NextCellent Gallery', 'nggallery' ); ?></h2>
115
+
116
+ <p><?php _e( 'You\'re upgrading from an older version. To enable the newest features, we sometimes need to do a database upgrade.', 'nggallery' ); ?></p>
117
+
118
+ <p class="description">
119
+ <span style="margin-right:5px;" class="dashicons dashicons-info"></span>
120
+ <?php _e( 'Normally you should be able to downgrade without any problems, but if you really want to play safe, you should make a backup of your database.', 'nggallery' ); ?>
121
+ </p>
122
+ <br/>
123
+ <a class="button button-primary"
124
+ href="<?php echo $filepath; ?>&amp;upgrade=now"><?php _e( 'Start upgrade now', 'nggallery' ); ?></a>
125
+ </div>
126
  <?php
127
  }
128
 
129
  /**
130
+ * Actually update the database, with a UI.
131
+ *
132
+ * @param $filepath string The URL to the overview page.
 
133
  */
134
+ function doing_update_output( $filepath ) {
135
+ ?>
136
+ <div class="wrap">
137
+ <h2><?php _e( 'Upgrade NextCellent Gallery', 'nggallery' ); ?></h2>
138
+
139
+ <p><?php
140
+ try {
141
+ echo __( 'Upgrading database…', 'nggallery' );
142
+ ngg_upgrade();
143
+ echo '<span class="dashicons dashicons-yes"></span><br />';
144
+ } catch ( ErrorException $e ) {
145
+ echo __( "Oh no! Something went wrong while updating the database", 'nggallery' ) . ": " . $e;
146
+ }
147
+ ?></p>
148
+
149
+ <p class="finished"><?php _e( 'Upgrade complete.', 'nggallery' ); ?></p>
150
+ <br/><a class="finished button button-primary"
151
+ href="<?php echo $filepath; ?>"><?php _e( 'Continue to NextCellent', 'nggallery' ); ?></a>
152
+ </div>
153
  <?php
154
  }
155
+
156
  ?>
admin/wpmu.php CHANGED
@@ -40,6 +40,32 @@ if(preg_match('#' . basename(__FILE__) . '#', $_SERVER['PHP_SELF'])) { die('You
40
  update_site_option('ngg_options', $ngg_options);
41
  }
42
  */
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
43
 
44
  // message windows
45
  if( !empty($messagetext) ) { echo '<!-- Last Action --><div id="message" class="updated fade"><p>'.$messagetext.'</p></div>'; }
@@ -54,39 +80,39 @@ if(preg_match('#' . basename(__FILE__) . '#', $_SERVER['PHP_SELF'])) { die('You
54
  <table class="form-table">
55
  <tr valign="top">
56
  <th align="left"><?php _e('Gallery path','nggallery') ?></th>
57
- <td><input type="text" size="50" name="gallerypath" value="<?php echo $ngg_options['gallerypath']; ?>" /><br />
58
- <?php _e('This is the default path for all blogs. With the placeholder %BLOG_ID% you can organize the folder structure better.','nggallery') ?>
59
- <?php echo str_replace('%s', '<code>wp-content/blogs.dir/%BLOG_ID%/files/</code>', __('The default setting should be %s', 'nggallery')); ?>
60
  </td>
61
  </tr>
62
  <tr>
63
  <th valign="top"><?php _e('Enable upload quota check','nggallery') ?>:</th>
64
- <td><input name="wpmuQuotaCheck" type="checkbox" value="1" <?php checked('1', $ngg_options['wpmuQuotaCheck']); ?> />
65
- <?php _e('Should work if the gallery is bellow the blog.dir','nggallery') ?>
66
  </td>
67
  </tr>
68
  <tr>
69
  <th valign="top"><?php _e('Enable zip upload option','nggallery') ?>:</th>
70
- <td><input name="wpmuZipUpload" type="checkbox" value="1" <?php checked('1', $ngg_options['wpmuZipUpload']); ?> />
71
- <?php _e('Allow users to upload zip folders.','nggallery') ?>
72
  </td>
73
  </tr>
74
  <tr>
75
  <th valign="top"><?php _e('Enable import function','nggallery') ?>:</th>
76
- <td><input name="wpmuImportFolder" type="checkbox" value="1" <?php checked('1', $ngg_options['wpmuImportFolder']); ?> />
77
- <?php _e('Allow users to import images folders from the server.','nggallery') ?>
78
  </td>
79
  </tr>
80
  <tr>
81
  <th valign="top"><?php _e('Enable style selection','nggallery') ?>:</th>
82
- <td><input name="wpmuStyle" type="checkbox" value="1" <?php checked('1', $ngg_options['wpmuStyle']); ?> />
83
- <?php _e('Allow users to choose a style for the gallery.','nggallery') ?>
84
  </td>
85
  </tr>
86
  <tr>
87
  <th valign="top"><?php _e('Enable roles/capabilities','nggallery') ?>:</th>
88
- <td><input name="wpmuRoles" type="checkbox" value="1" <?php checked('1', $ngg_options['wpmuRoles']); ?> />
89
- <?php _e('Allow users to change the roles for other blog authors.','nggallery') ?>
90
  </td>
91
  </tr>
92
  <tr>
@@ -94,24 +120,25 @@ if(preg_match('#' . basename(__FILE__) . '#', $_SERVER['PHP_SELF'])) { die('You
94
  <td>
95
  <select name="wpmuCSSfile">
96
  <?php
97
- $csslist = ngg_get_cssfiles();
98
- foreach ($csslist as $key =>$a_cssfile) {
99
- $css_name = $a_cssfile['Name'];
100
- if ($key == $ngg_options['wpmuCSSfile']) {
101
- $file_show = $key;
102
- $selected = " selected='selected'";
103
- }
104
- else $selected = '';
105
- $css_name = esc_attr($css_name);
106
- echo "\n\t<option value=\"$key\" $selected>$css_name</option>";
107
  }
 
 
108
  ?>
109
- </select><br />
110
- <?php _e('Choose the default style for the galleries.','nggallery') ?>
 
111
  </td>
112
  </tr>
113
  </table>
114
- <div class="submit"><input type="submit" name="updateoption" value="<?php _e('Update') ;?>"/></div>
115
  </form>
116
  </div>
117
 
40
  update_site_option('ngg_options', $ngg_options);
41
  }
42
  */
43
+
44
+ global $ngg;
45
+
46
+ //the directions containing the css files
47
+ if ( file_exists(NGG_CONTENT_DIR . "/ngg_styles") ) {
48
+ $dir = array(NGGALLERY_ABSPATH . "css", NGG_CONTENT_DIR . "/ngg_styles");
49
+ } else {
50
+ $dir = array(NGGALLERY_ABSPATH . "css");
51
+ }
52
+
53
+ //support for legacy location (in theme folder)
54
+ if ( $theme_css_exists = file_exists (get_stylesheet_directory() . "/nggallery.css") ) {
55
+ $act_cssfile = get_stylesheet_directory() . "/nggallery.css";
56
+ }
57
+
58
+ //if someone uses the filter, don't display this page.
59
+ if ( !$theme_css_exists && $set_css_file = nggGallery::get_theme_css_file() ) {
60
+ nggGallery::show_error( __('Your CSS file is set by a theme or another plugin.','nggallery') . "<br><br>" . __('This CSS file will be applied:','nggallery') . "<br>" . $set_css_file);
61
+ return;
62
+ }
63
+
64
+ //load all files
65
+ if ( !isset($act_cssfile) ) {
66
+ $csslist = NGG_Style::ngg_get_cssfiles($dir);
67
+ $act_cssfile = $ngg->options['CSSfile'];
68
+ }
69
 
70
  // message windows
71
  if( !empty($messagetext) ) { echo '<!-- Last Action --><div id="message" class="updated fade"><p>'.$messagetext.'</p></div>'; }
80
  <table class="form-table">
81
  <tr valign="top">
82
  <th align="left"><?php _e('Gallery path','nggallery') ?></th>
83
+ <td><input type="text" size="50" name="gallerypath" value="<?php echo $ngg_options['gallerypath']; ?>" />
84
+ <p class="description"><?php _e('This is the default path for all blogs. With the placeholder %BLOG_ID% you can organize the folder structure better.','nggallery') ?>
85
+ <?php echo str_replace('%s', '<code>wp-content/blogs.dir/%BLOG_ID%/files/</code>', __('The default setting should be %s', 'nggallery')); ?>.</p>
86
  </td>
87
  </tr>
88
  <tr>
89
  <th valign="top"><?php _e('Enable upload quota check','nggallery') ?>:</th>
90
+ <td><input name="wpmuQuotaCheck" id="wpmuQuotaCheck" type="checkbox" value="1" <?php checked('1', $ngg_options['wpmuQuotaCheck']); ?> />
91
+ <label for="wpmuQuotaCheck"><?php _e('Should work if the gallery is bellow the blog.dir','nggallery') ?></label>
92
  </td>
93
  </tr>
94
  <tr>
95
  <th valign="top"><?php _e('Enable zip upload option','nggallery') ?>:</th>
96
+ <td><input name="wpmuZipUpload" id="wpmuZipUpload" type="checkbox" value="1" <?php checked('1', $ngg_options['wpmuZipUpload']); ?> />
97
+ <label for="wpmuZipUpload"><?php _e('Allow users to upload zip folders.','nggallery') ?></label>
98
  </td>
99
  </tr>
100
  <tr>
101
  <th valign="top"><?php _e('Enable import function','nggallery') ?>:</th>
102
+ <td><input name="wpmuImportFolder" id="wpmuImportFolder" type="checkbox" value="1" <?php checked('1', $ngg_options['wpmuImportFolder']); ?> />
103
+ <label for="wpmuImportFolder"><?php _e('Allow users to import images folders from the server.','nggallery') ?></label>
104
  </td>
105
  </tr>
106
  <tr>
107
  <th valign="top"><?php _e('Enable style selection','nggallery') ?>:</th>
108
+ <td><input name="wpmuStyle" id="wpmuStyle" type="checkbox" value="1" <?php checked('1', $ngg_options['wpmuStyle']); ?> />
109
+ <label for="wpmuStyle"><?php _e('Allow users to choose a style for the gallery.','nggallery') ?></label>
110
  </td>
111
  </tr>
112
  <tr>
113
  <th valign="top"><?php _e('Enable roles/capabilities','nggallery') ?>:</th>
114
+ <td><input name="wpmuRoles" id="wpmuRoles" type="checkbox" value="1" <?php checked('1', $ngg_options['wpmuRoles']); ?> />
115
+ <label for="wpmuRoles"><?php _e('Allow users to change the roles for other blog authors.','nggallery') ?></label>
116
  </td>
117
  </tr>
118
  <tr>
120
  <td>
121
  <select name="wpmuCSSfile">
122
  <?php
123
+ foreach ($csslist as $file) {
124
+ $a_cssfile = NGG_Style::ngg_get_cssfiles_data($file);
125
+ $css_name = esc_attr( $a_cssfile['Name'] );
126
+ $css_folder = esc_attr( $a_cssfile['Folder'] );
127
+ if ($file == $act_cssfile) {
128
+ $selected = " selected='selected'";
129
+ } else {
130
+ $selected = '';
 
 
131
  }
132
+ echo "\n\t<option value=\"$file\" $selected>$css_name ($css_folder)</option>";
133
+ }
134
  ?>
135
+ </select>
136
+ <p class="description"><?php _e('Choose the default style for the galleries.','nggallery') ?></p>
137
+ <p class="description"><?php _e('Note: between brackets is the folder in which the file is.','nggallery') ?></p>
138
  </td>
139
  </tr>
140
  </table>
141
+ <input class="button-primary button" type="submit" name="updateoption" value="<?php _e('Update') ;?>"/>
142
  </form>
143
  </div>
144
 
css/Black_Minimalism.css CHANGED
@@ -1,8 +1,8 @@
1
  /*
2
  CSS Name: Black Minimalism Theme
3
  Description: For Black Minimalism Theme
4
- Author: Alex Rabe
5
- Version: 1.60
6
 
7
  This is a template stylesheet that can be used with NextGEN Gallery. I tested the
8
  styles with a default theme Kubrick. Modify it when your theme struggle with it,
@@ -61,12 +61,12 @@ it's only a template design
61
  /* ----------- Album Styles Compact -------------*/
62
 
63
  .ngg-album-compact {
64
- float:left;
65
- height:180px;
66
  padding-right:6px !important;
67
- margin:0px !important;
68
  text-align:left;
69
- width:120px;
 
 
70
  }
71
 
72
  .ngg-album-compactbox {
@@ -246,23 +246,42 @@ it's only a template design
246
  .ngg-slideshow {
247
  overflow:hidden;
248
  position: relative;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
249
  }
250
 
251
- .ngg-slideshow * {
252
- vertical-align:middle;
 
253
  }
254
 
255
- /* See also : http://www.brunildo.org/test/img_center.html */
256
- .ngg-slideshow-loader{
257
- display: table-cell;
258
- text-align: center;
259
- vertical-align:middle;
260
  }
261
 
262
- .ngg-slideshow-loader img{
263
- background: none !important;
264
- border: 0 none !important;
265
- margin:auto !important;
266
  }
267
 
268
  /* ----------- Single picture -------------*/
1
  /*
2
  CSS Name: Black Minimalism Theme
3
  Description: For Black Minimalism Theme
4
+ Author: NextCellent
5
+ Version: 1.9.22
6
 
7
  This is a template stylesheet that can be used with NextGEN Gallery. I tested the
8
  styles with a default theme Kubrick. Modify it when your theme struggle with it,
61
  /* ----------- Album Styles Compact -------------*/
62
 
63
  .ngg-album-compact {
 
 
64
  padding-right:6px !important;
65
+ margin:0px !important;
66
  text-align:left;
67
+ width:120px;
68
+ display:inline-block;
69
+ vertical-align:top;
70
  }
71
 
72
  .ngg-album-compactbox {
246
  .ngg-slideshow {
247
  overflow:hidden;
248
  position: relative;
249
+ margin-left: auto;
250
+ margin-right: auto;
251
+ }
252
+
253
+ .rs-slideshow {
254
+ position: relative;
255
+ }
256
+
257
+ .rs-slideshow .slide-container {
258
+ height: 100%;
259
+ left: 0;
260
+ overflow: hidden;
261
+ position: absolute;
262
+ top: 0;
263
+ width: 100%;
264
+ }
265
+
266
+ .rs-slideshow .slide-container img {
267
+ position: absolute;
268
  }
269
 
270
+ .rs-controls a,
271
+ .rs-index-list li {
272
+ float: left;
273
  }
274
 
275
+ .rs-controls ul{
276
+ float: left;
277
+ list-style: none;
278
+ width: auto;
279
+ margin: 0;
280
  }
281
 
282
+ /* Hide the slide data container */
283
+ .rs-slideshow .slides {
284
+ display: none;
 
285
  }
286
 
287
  /* ----------- Single picture -------------*/
css/framework-min.css ADDED
@@ -0,0 +1,2 @@
 
 
1
+ /* NextCellent CSS Framework */
2
+ .ngg-gallery-thumbnail{float:left}.ngg-gallery-thumbnail span{display:block}.ngg-clear{clear:both;float:none}.ngg-navigation{clear:both}.owl-carousel .animated{-webkit-animation-duration:1000ms;animation-duration:1000ms;-webkit-animation-fill-mode:both;animation-fill-mode:both}.owl-carousel .owl-animated-in{z-index:0}.owl-carousel .owl-animated-out{z-index:1}.owl-carousel .fadeOut{-webkit-animation-name:fadeOut;animation-name:fadeOut}@-webkit-keyframes fadeOut{0%{opacity:1}100%{opacity:0}}@keyframes fadeOut{0%{opacity:1}100%{opacity:0}}.owl-height{-webkit-transition:height 500ms ease-in-out;-moz-transition:height 500ms ease-in-out;-ms-transition:height 500ms ease-in-out;-o-transition:height 500ms ease-in-out;transition:height 500ms ease-in-out}.owl-carousel{display:none;width:100%;-webkit-tap-highlight-color:transparent;position:relative;z-index:1}.owl-carousel .owl-stage{position:relative;-ms-touch-action:pan-Y}.owl-carousel .owl-stage:after{content:".";display:block;clear:both;visibility:hidden;line-height:0;height:0}.owl-carousel .owl-stage-outer{position:relative;overflow:hidden;-webkit-transform:translate3d(0px,0,0)}.owl-carousel .owl-controls .owl-dot,.owl-carousel .owl-controls .owl-nav .owl-next,.owl-carousel .owl-controls .owl-nav .owl-prev{cursor:pointer;cursor:hand;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.owl-carousel.owl-loaded{display:block}.owl-carousel.owl-loading{opacity:0;display:block}.owl-carousel.owl-hidden{opacity:0}.owl-carousel .owl-refresh .owl-item{display:none}.owl-carousel .owl-item{position:relative;min-height:1px;float:left;-webkit-backface-visibility:hidden;-webkit-tap-highlight-color:transparent;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.owl-carousel .owl-item img{display:block;width:100%;-webkit-transform-style:preserve-3d}.owl-carousel.owl-text-select-on .owl-item{-webkit-user-select:auto;-moz-user-select:auto;-ms-user-select:auto;user-select:auto}.owl-carousel .owl-grab{cursor:move;cursor:-webkit-grab;cursor:-o-grab;cursor:-ms-grab;cursor:grab}.owl-carousel.owl-rtl{direction:rtl}.owl-carousel.owl-rtl .owl-item{float:right}.no-js .owl-carousel{display:block}.owl-carousel .owl-item .owl-lazy{opacity:0;-webkit-transition:opacity 400ms ease;-moz-transition:opacity 400ms ease;-ms-transition:opacity 400ms ease;-o-transition:opacity 400ms ease;transition:opacity 400ms ease}.owl-carousel .owl-item img{transform-style:preserve-3d}.owl-carousel .owl-video-wrapper{position:relative;height:100%;background:#000}.owl-carousel .owl-video-play-icon{position:absolute;height:80px;width:80px;left:50%;top:50%;margin-left:-40px;margin-top:-40px;background:url(owl.video.play.png) no-repeat;cursor:pointer;z-index:1;-webkit-backface-visibility:hidden;-webkit-transition:scale 100ms ease;-moz-transition:scale 100ms ease;-ms-transition:scale 100ms ease;-o-transition:scale 100ms ease;transition:scale 100ms ease}.owl-carousel .owl-video-play-icon:hover{-webkit-transition:scale(1.3,1.3);-moz-transition:scale(1.3,1.3);-ms-transition:scale(1.3,1.3);-o-transition:scale(1.3,1.3);transition:scale(1.3,1.3)}.owl-carousel .owl-video-playing .owl-video-play-icon,.owl-carousel .owl-video-playing .owl-video-tn{display:none}.owl-carousel .owl-video-tn{opacity:0;height:100%;background-position:center center;background-repeat:no-repeat;-webkit-background-size:contain;-moz-background-size:contain;-o-background-size:contain;background-size:contain;-webkit-transition:opacity 400ms ease;-moz-transition:opacity 400ms ease;-ms-transition:opacity 400ms ease;-o-transition:opacity 400ms ease;transition:opacity 400ms ease}.owl-carousel .owl-video-frame{position:relative;z-index:1}.ngg-singlepic{display:block}.ngg-left{float:left}.ngg-right{float:right}.ngg-center{margin-left:auto!important;margin-right:auto!important}.ngg-related-gallery{overflow:hidden}.ngg-related-gallery img{float:left}.brick img{transition:1s;opacity:0;width:100%!important;height:auto!important}.animated{-webkit-animation-duration:1s;animation-duration:1s;-webkit-animation-fill-mode:both;animation-fill-mode:both}.animated.infinite{-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite}.animated.hinge{-webkit-animation-duration:2s;animation-duration:2s}@-webkit-keyframes bounce{0%,100%,20%,53%,80%{-webkit-transition-timing-function:cubic-bezier(0.215,.61,.355,1);transition-timing-function:cubic-bezier(0.215,.61,.355,1);-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}40%,43%{-webkit-transition-timing-function:cubic-bezier(0.755,.050,.855,.060);transition-timing-function:cubic-bezier(0.755,.050,.855,.060);-webkit-transform:translate3d(0,-30px,0);transform:translate3d(0,-30px,0)}70%{-webkit-transition-timing-function:cubic-bezier(0.755,.050,.855,.060);transition-timing-function:cubic-bezier(0.755,.050,.855,.060);-webkit-transform:translate3d(0,-15px,0);transform:translate3d(0,-15px,0)}90%{-webkit-transform:translate3d(0,-4px,0);transform:translate3d(0,-4px,0)}}@keyframes bounce{0%,100%,20%,53%,80%{-webkit-transition-timing-function:cubic-bezier(0.215,.61,.355,1);transition-timing-function:cubic-bezier(0.215,.61,.355,1);-webkit-transform:translate3d(0,0,0);-ms-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}40%,43%{-webkit-transition-timing-function:cubic-bezier(0.755,.050,.855,.060);transition-timing-function:cubic-bezier(0.755,.050,.855,.060);-webkit-transform:translate3d(0,-30px,0);-ms-transform:translate3d(0,-30px,0);transform:translate3d(0,-30px,0)}70%{-webkit-transition-timing-function:cubic-bezier(0.755,.050,.855,.060);transition-timing-function:cubic-bezier(0.755,.050,.855,.060);-webkit-transform:translate3d(0,-15px,0);-ms-transform:translate3d(0,-15px,0);transform:translate3d(0,-15px,0)}90%{-webkit-transform:translate3d(0,-4px,0);-ms-transform:translate3d(0,-4px,0);transform:translate3d(0,-4px,0)}}.bounce{-webkit-animation-name:bounce;animation-name:bounce;-webkit-transform-origin:center bottom;-ms-transform-origin:center bottom;transform-origin:center bottom}@-webkit-keyframes flash{0%,100%,50%{opacity:1}25%,75%{opacity:0}}@keyframes flash{0%,100%,50%{opacity:1}25%,75%{opacity:0}}.flash{-webkit-animation-name:flash;animation-name:flash}@-webkit-keyframes pulse{0%{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}50%{-webkit-transform:scale3d(1.05,1.05,1.05);transform:scale3d(1.05,1.05,1.05)}100%{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}}@keyframes pulse{0%{-webkit-transform:scale3d(1,1,1);-ms-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}50%{-webkit-transform:scale3d(1.05,1.05,1.05);-ms-transform:scale3d(1.05,1.05,1.05);transform:scale3d(1.05,1.05,1.05)}100%{-webkit-transform:scale3d(1,1,1);-ms-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}}.pulse{-webkit-animation-name:pulse;animation-name:pulse}@-webkit-keyframes rubberBand{0%{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}30%{-webkit-transform:scale3d(1.25,.75,1);transform:scale3d(1.25,.75,1)}40%{-webkit-transform:scale3d(0.75,1.25,1);transform:scale3d(0.75,1.25,1)}50%{-webkit-transform:scale3d(1.15,.85,1);transform:scale3d(1.15,.85,1)}65%{-webkit-transform:scale3d(.95,1.05,1);transform:scale3d(.95,1.05,1)}75%{-webkit-transform:scale3d(1.05,.95,1);transform:scale3d(1.05,.95,1)}100%{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}}@keyframes rubberBand{0%{-webkit-transform:scale3d(1,1,1);-ms-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}30%{-webkit-transform:scale3d(1.25,.75,1);-ms-transform:scale3d(1.25,.75,1);transform:scale3d(1.25,.75,1)}40%{-webkit-transform:scale3d(0.75,1.25,1);-ms-transform:scale3d(0.75,1.25,1);transform:scale3d(0.75,1.25,1)}50%{-webkit-transform:scale3d(1.15,.85,1);-ms-transform:scale3d(1.15,.85,1);transform:scale3d(1.15,.85,1)}65%{-webkit-transform:scale3d(.95,1.05,1);-ms-transform:scale3d(.95,1.05,1);transform:scale3d(.95,1.05,1)}75%{-webkit-transform:scale3d(1.05,.95,1);-ms-transform:scale3d(1.05,.95,1);transform:scale3d(1.05,.95,1)}100%{-webkit-transform:scale3d(1,1,1);-ms-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}}.rubberBand{-webkit-animation-name:rubberBand;animation-name:rubberBand}@-webkit-keyframes shake{0%,100%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}10%,30%,50%,70%,90%{-webkit-transform:translate3d(-10px,0,0);transform:translate3d(-10px,0,0)}20%,40%,60%,80%{-webkit-transform:translate3d(10px,0,0);transform:translate3d(10px,0,0)}}@keyframes shake{0%,100%{-webkit-transform:translate3d(0,0,0);-ms-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}10%,30%,50%,70%,90%{-webkit-transform:translate3d(-10px,0,0);-ms-transform:translate3d(-10px,0,0);transform:translate3d(-10px,0,0)}20%,40%,60%,80%{-webkit-transform:translate3d(10px,0,0);-ms-transform:translate3d(10px,0,0);transform:translate3d(10px,0,0)}}.shake{-webkit-animation-name:shake;animation-name:shake}@-webkit-keyframes swing{20%{-webkit-transform:rotate3d(0,0,1,15deg);transform:rotate3d(0,0,1,15deg)}40%{-webkit-transform:rotate3d(0,0,1,-10deg);transform:rotate3d(0,0,1,-10deg)}60%{-webkit-transform:rotate3d(0,0,1,5deg);transform:rotate3d(0,0,1,5deg)}80%{-webkit-transform:rotate3d(0,0,1,-5deg);transform:rotate3d(0,0,1,-5deg)}100%{-webkit-transform:rotate3d(0,0,1,0deg);transform:rotate3d(0,0,1,0deg)}}@keyframes swing{20%{-webkit-transform:rotate3d(0,0,1,15deg);-ms-transform:rotate3d(0,0,1,15deg);transform:rotate3d(0,0,1,15deg)}40%{-webkit-transform:rotate3d(0,0,1,-10deg);-ms-transform:rotate3d(0,0,1,-10deg);transform:rotate3d(0,0,1,-10deg)}60%{-webkit-transform:rotate3d(0,0,1,5deg);-ms-transform:rotate3d(0,0,1,5deg);transform:rotate3d(0,0,1,5deg)}80%{-webkit-transform:rotate3d(0,0,1,-5deg);-ms-transform:rotate3d(0,0,1,-5deg);transform:rotate3d(0,0,1,-5deg)}100%{-webkit-transform:rotate3d(0,0,1,0deg);-ms-transform:rotate3d(0,0,1,0deg);transform:rotate3d(0,0,1,0deg)}}.swing{-webkit-transform-origin:top center;-ms-transform-origin:top center;transform-origin:top center;-webkit-animation-name:swing;animation-name:swing}@-webkit-keyframes tada{0%{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}10%,20%{-webkit-transform:scale3d(.9,.9,.9) rotate3d(0,0,1,-3deg);transform:scale3d(.9,.9,.9) rotate3d(0,0,1,-3deg)}30%,50%,70%,90%{-webkit-transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,3deg);transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,3deg)}40%,60%,80%{-webkit-transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,-3deg);transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,-3deg)}100%{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}}@keyframes tada{0%{-webkit-transform:scale3d(1,1,1);-ms-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}10%,20%{-webkit-transform:scale3d(.9,.9,.9) rotate3d(0,0,1,-3deg);-ms-transform:scale3d(.9,.9,.9) rotate3d(0,0,1,-3deg);transform:scale3d(.9,.9,.9) rotate3d(0,0,1,-3deg)}30%,50%,70%,90%{-webkit-transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,3deg);-ms-transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,3deg);transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,3deg)}40%,60%,80%{-webkit-transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,-3deg);-ms-transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,-3deg);transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,-3deg)}100%{-webkit-transform:scale3d(1,1,1);-ms-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}}.tada{-webkit-animation-name:tada;animation-name:tada}@-webkit-keyframes wobble{0%{-webkit-transform:none;transform:none}15%{-webkit-transform:translate3d(-25%,0,0) rotate3d(0,0,1,-5deg);transform:translate3d(-25%,0,0) rotate3d(0,0,1,-5deg)}30%{-webkit-transform:translate3d(20%,0,0) rotate3d(0,0,1,3deg);transform:translate3d(20%,0,0) rotate3d(0,0,1,3deg)}45%{-webkit-transform:translate3d(-15%,0,0) rotate3d(0,0,1,-3deg);transform:translate3d(-15%,0,0) rotate3d(0,0,1,-3deg)}60%{-webkit-transform:translate3d(10%,0,0) rotate3d(0,0,1,2deg);transform:translate3d(10%,0,0) rotate3d(0,0,1,2deg)}75%{-webkit-transform:translate3d(-5%,0,0) rotate3d(0,0,1,-1deg);transform:translate3d(-5%,0,0) rotate3d(0,0,1,-1deg)}100%{-webkit-transform:none;transform:none}}@keyframes wobble{0%{-webkit-transform:none;-ms-transform:none;transform:none}15%{-webkit-transform:translate3d(-25%,0,0) rotate3d(0,0,1,-5deg);-ms-transform:translate3d(-25%,0,0) rotate3d(0,0,1,-5deg);transform:translate3d(-25%,0,0) rotate3d(0,0,1,-5deg)}30%{-webkit-transform:translate3d(20%,0,0) rotate3d(0,0,1,3deg);-ms-transform:translate3d(20%,0,0) rotate3d(0,0,1,3deg);transform:translate3d(20%,0,0) rotate3d(0,0,1,3deg)}45%{-webkit-transform:translate3d(-15%,0,0) rotate3d(0,0,1,-3deg);-ms-transform:translate3d(-15%,0,0) rotate3d(0,0,1,-3deg);transform:translate3d(-15%,0,0) rotate3d(0,0,1,-3deg)}60%{-webkit-transform:translate3d(10%,0,0) rotate3d(0,0,1,2deg);-ms-transform:translate3d(10%,0,0) rotate3d(0,0,1,2deg);transform:translate3d(10%,0,0) rotate3d(0,0,1,2deg)}75%{-webkit-transform:translate3d(-5%,0,0) rotate3d(0,0,1,-1deg);-ms-transform:translate3d(-5%,0,0) rotate3d(0,0,1,-1deg);transform:translate3d(-5%,0,0) rotate3d(0,0,1,-1deg)}100%{-webkit-transform:none;-ms-transform:none;transform:none}}.wobble{-webkit-animation-name:wobble;animation-name:wobble}@-webkit-keyframes bounceIn{0%,100%,20%,40%,60%,80%{-webkit-transition-timing-function:cubic-bezier(0.215,.61,.355,1);transition-timing-function:cubic-bezier(0.215,.61,.355,1)}0%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}20%{-webkit-transform:scale3d(1.1,1.1,1.1);transform:scale3d(1.1,1.1,1.1)}40%{-webkit-transform:scale3d(.9,.9,.9);transform:scale3d(.9,.9,.9)}60%{opacity:1;-webkit-transform:scale3d(1.03,1.03,1.03);transform:scale3d(1.03,1.03,1.03)}80%{-webkit-transform:scale3d(.97,.97,.97);transform:scale3d(.97,.97,.97)}100%{opacity:1;-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}}@keyframes bounceIn{0%,100%,20%,40%,60%,80%{-webkit-transition-timing-function:cubic-bezier(0.215,.61,.355,1);transition-timing-function:cubic-bezier(0.215,.61,.355,1)}0%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);-ms-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}20%{-webkit-transform:scale3d(1.1,1.1,1.1);-ms-transform:scale3d(1.1,1.1,1.1);transform:scale3d(1.1,1.1,1.1)}40%{-webkit-transform:scale3d(.9,.9,.9);-ms-transform:scale3d(.9,.9,.9);transform:scale3d(.9,.9,.9)}60%{opacity:1;-webkit-transform:scale3d(1.03,1.03,1.03);-ms-transform:scale3d(1.03,1.03,1.03);transform:scale3d(1.03,1.03,1.03)}80%{-webkit-transform:scale3d(.97,.97,.97);-ms-transform:scale3d(.97,.97,.97);transform:scale3d(.97,.97,.97)}100%{opacity:1;-webkit-transform:scale3d(1,1,1);-ms-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}}.bounceIn{-webkit-animation-name:bounceIn;animation-name:bounceIn;-webkit-animation-duration:.75s;animation-duration:.75s}@-webkit-keyframes bounceInDown{0%,100%,60%,75%,90%{-webkit-transition-timing-function:cubic-bezier(0.215,.61,.355,1);transition-timing-function:cubic-bezier(0.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(0,-3000px,0);transform:translate3d(0,-3000px,0)}60%{opacity:1;-webkit-transform:translate3d(0,25px,0);transform:translate3d(0,25px,0)}75%{-webkit-transform:translate3d(0,-10px,0);transform:translate3d(0,-10px,0)}90%{-webkit-transform:translate3d(0,5px,0);transform:translate3d(0,5px,0)}100%{-webkit-transform:none;transform:none}}@keyframes bounceInDown{0%,100%,60%,75%,90%{-webkit-transition-timing-function:cubic-bezier(0.215,.61,.355,1);transition-timing-function:cubic-bezier(0.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(0,-3000px,0);-ms-transform:translate3d(0,-3000px,0);transform:translate3d(0,-3000px,0)}60%{opacity:1;-webkit-transform:translate3d(0,25px,0);-ms-transform:translate3d(0,25px,0);transform:translate3d(0,25px,0)}75%{-webkit-transform:translate3d(0,-10px,0);-ms-transform:translate3d(0,-10px,0);transform:translate3d(0,-10px,0)}90%{-webkit-transform:translate3d(0,5px,0);-ms-transform:translate3d(0,5px,0);transform:translate3d(0,5px,0)}100%{-webkit-transform:none;-ms-transform:none;transform:none}}.bounceInDown{-webkit-animation-name:bounceInDown;animation-name:bounceInDown}@-webkit-keyframes bounceInLeft{0%,100%,60%,75%,90%{-webkit-transition-timing-function:cubic-bezier(0.215,.61,.355,1);transition-timing-function:cubic-bezier(0.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(-3000px,0,0);transform:translate3d(-3000px,0,0)}60%{opacity:1;-webkit-transform:translate3d(25px,0,0);transform:translate3d(25px,0,0)}75%{-webkit-transform:translate3d(-10px,0,0);transform:translate3d(-10px,0,0)}90%{-webkit-transform:translate3d(5px,0,0);transform:translate3d(5px,0,0)}100%{-webkit-transform:none;transform:none}}@keyframes bounceInLeft{0%,100%,60%,75%,90%{-webkit-transition-timing-function:cubic-bezier(0.215,.61,.355,1);transition-timing-function:cubic-bezier(0.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(-3000px,0,0);-ms-transform:translate3d(-3000px,0,0);transform:translate3d(-3000px,0,0)}60%{opacity:1;-webkit-transform:translate3d(25px,0,0);-ms-transform:translate3d(25px,0,0);transform:translate3d(25px,0,0)}75%{-webkit-transform:translate3d(-10px,0,0);-ms-transform:translate3d(-10px,0,0);transform:translate3d(-10px,0,0)}90%{-webkit-transform:translate3d(5px,0,0);-ms-transform:translate3d(5px,0,0);transform:translate3d(5px,0,0)}100%{-webkit-transform:none;-ms-transform:none;transform:none}}.bounceInLeft{-webkit-animation-name:bounceInLeft;animation-name:bounceInLeft}@-webkit-keyframes bounceInRight{0%,100%,60%,75%,90%{-webkit-transition-timing-function:cubic-bezier(0.215,.61,.355,1);transition-timing-function:cubic-bezier(0.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(3000px,0,0);transform:translate3d(3000px,0,0)}60%{opacity:1;-webkit-transform:translate3d(-25px,0,0);transform:translate3d(-25px,0,0)}75%{-webkit-transform:translate3d(10px,0,0);transform:translate3d(10px,0,0)}90%{-webkit-transform:translate3d(-5px,0,0);transform:translate3d(-5px,0,0)}100%{-webkit-transform:none;transform:none}}@keyframes bounceInRight{0%,100%,60%,75%,90%{-webkit-transition-timing-function:cubic-bezier(0.215,.61,.355,1);transition-timing-function:cubic-bezier(0.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(3000px,0,0);-ms-transform:translate3d(3000px,0,0);transform:translate3d(3000px,0,0)}60%{opacity:1;-webkit-transform:translate3d(-25px,0,0);-ms-transform:translate3d(-25px,0,0);transform:translate3d(-25px,0,0)}75%{-webkit-transform:translate3d(10px,0,0);-ms-transform:translate3d(10px,0,0);transform:translate3d(10px,0,0)}90%{-webkit-transform:translate3d(-5px,0,0);-ms-transform:translate3d(-5px,0,0);transform:translate3d(-5px,0,0)}100%{-webkit-transform:none;-ms-transform:none;transform:none}}.bounceInRight{-webkit-animation-name:bounceInRight;animation-name:bounceInRight}@-webkit-keyframes bounceInUp{0%,100%,60%,75%,90%{-webkit-transition-timing-function:cubic-bezier(0.215,.61,.355,1);transition-timing-function:cubic-bezier(0.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(0,3000px,0);transform:translate3d(0,3000px,0)}60%{opacity:1;-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}75%{-webkit-transform:translate3d(0,10px,0);transform:translate3d(0,10px,0)}90%{-webkit-transform:translate3d(0,-5px,0);transform:translate3d(0,-5px,0)}100%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}@keyframes bounceInUp{0%,100%,60%,75%,90%{-webkit-transition-timing-function:cubic-bezier(0.215,.61,.355,1);transition-timing-function:cubic-bezier(0.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(0,3000px,0);-ms-transform:translate3d(0,3000px,0);transform:translate3d(0,3000px,0)}60%{opacity:1;-webkit-transform:translate3d(0,-20px,0);-ms-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}75%{-webkit-transform:translate3d(0,10px,0);-ms-transform:translate3d(0,10px,0);transform:translate3d(0,10px,0)}90%{-webkit-transform:translate3d(0,-5px,0);-ms-transform:translate3d(0,-5px,0);transform:translate3d(0,-5px,0)}100%{-webkit-transform:translate3d(0,0,0);-ms-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}.bounceInUp{-webkit-animation-name:bounceInUp;animation-name:bounceInUp}@-webkit-keyframes bounceOut{20%{-webkit-transform:scale3d(.9,.9,.9);transform:scale3d(.9,.9,.9)}50%,55%{opacity:1;-webkit-transform:scale3d(1.1,1.1,1.1);transform:scale3d(1.1,1.1,1.1)}100%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}}@keyframes bounceOut{20%{-webkit-transform:scale3d(.9,.9,.9);-ms-transform:scale3d(.9,.9,.9);transform:scale3d(.9,.9,.9)}50%,55%{opacity:1;-webkit-transform:scale3d(1.1,1.1,1.1);-ms-transform:scale3d(1.1,1.1,1.1);transform:scale3d(1.1,1.1,1.1)}100%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);-ms-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}}.bounceOut{-webkit-animation-name:bounceOut;animation-name:bounceOut;-webkit-animation-duration:.75s;animation-duration:.75s}@-webkit-keyframes bounceOutDown{20%{-webkit-transform:translate3d(0,10px,0);transform:translate3d(0,10px,0)}40%,45%{opacity:1;-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}100%{opacity:0;-webkit-transform:translate3d(0,2000px,0);transform:translate3d(0,2000px,0)}}@keyframes bounceOutDown{20%{-webkit-transform:translate3d(0,10px,0);-ms-transform:translate3d(0,10px,0);transform:translate3d(0,10px,0)}40%,45%{opacity:1;-webkit-transform:translate3d(0,-20px,0);-ms-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}100%{opacity:0;-webkit-transform:translate3d(0,2000px,0);-ms-transform:translate3d(0,2000px,0);transform:translate3d(0,2000px,0)}}.bounceOutDown{-webkit-animation-name:bounceOutDown;animation-name:bounceOutDown}@-webkit-keyframes bounceOutLeft{20%{opacity:1;-webkit-transform:translate3d(20px,0,0);transform:translate3d(20px,0,0)}100%{opacity:0;-webkit-transform:translate3d(-2000px,0,0);transform:translate3d(-2000px,0,0)}}@keyframes bounceOutLeft{20%{opacity:1;-webkit-transform:translate3d(20px,0,0);-ms-transform:translate3d(20px,0,0);transform:translate3d(20px,0,0)}100%{opacity:0;-webkit-transform:translate3d(-2000px,0,0);-ms-transform:translate3d(-2000px,0,0);transform:translate3d(-2000px,0,0)}}.bounceOutLeft{-webkit-animation-name:bounceOutLeft;animation-name:bounceOutLeft}@-webkit-keyframes bounceOutRight{20%{opacity:1;-webkit-transform:translate3d(-20px,0,0);transform:translate3d(-20px,0,0)}100%{opacity:0;-webkit-transform:translate3d(2000px,0,0);transform:translate3d(2000px,0,0)}}@keyframes bounceOutRight{20%{opacity:1;-webkit-transform:translate3d(-20px,0,0);-ms-transform:translate3d(-20px,0,0);transform:translate3d(-20px,0,0)}100%{opacity:0;-webkit-transform:translate3d(2000px,0,0);-ms-transform:translate3d(2000px,0,0);transform:translate3d(2000px,0,0)}}.bounceOutRight{-webkit-animation-name:bounceOutRight;animation-name:bounceOutRight}@-webkit-keyframes bounceOutUp{20%{-webkit-transform:translate3d(0,-10px,0);transform:translate3d(0,-10px,0)}40%,45%{opacity:1;-webkit-transform:translate3d(0,20px,0);transform:translate3d(0,20px,0)}100%{opacity:0;-webkit-transform:translate3d(0,-2000px,0);transform:translate3d(0,-2000px,0)}}@keyframes bounceOutUp{20%{-webkit-transform:translate3d(0,-10px,0);-ms-transform:translate3d(0,-10px,0);transform:translate3d(0,-10px,0)}40%,45%{opacity:1;-webkit-transform:translate3d(0,20px,0);-ms-transform:translate3d(0,20px,0);transform:translate3d(0,20px,0)}100%{opacity:0;-webkit-transform:translate3d(0,-2000px,0);-ms-transform:translate3d(0,-2000px,0);transform:translate3d(0,-2000px,0)}}.bounceOutUp{-webkit-animation-name:bounceOutUp;animation-name:bounceOutUp}@-webkit-keyframes fadeIn{0%{opacity:0}100%{opacity:1}}@keyframes fadeIn{0%{opacity:0}100%{opacity:1}}.fadeIn{-webkit-animation-name:fadeIn;animation-name:fadeIn}@-webkit-keyframes fadeInDown{0%{opacity:0;-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}100%{opacity:1;-webkit-transform:none;transform:none}}@keyframes fadeInDown{0%{opacity:0;-webkit-transform:translate3d(0,-100%,0);-ms-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}100%{opacity:1;-webkit-transform:none;-ms-transform:none;transform:none}}.fadeInDown{-webkit-animation-name:fadeInDown;animation-name:fadeInDown}@-webkit-keyframes fadeInDownBig{0%{opacity:0;-webkit-transform:translate3d(0,-2000px,0);transform:translate3d(0,-2000px,0)}100%{opacity:1;-webkit-transform:none;transform:none}}@keyframes fadeInDownBig{0%{opacity:0;-webkit-transform:translate3d(0,-2000px,0);-ms-transform:translate3d(0,-2000px,0);transform:translate3d(0,-2000px,0)}100%{opacity:1;-webkit-transform:none;-ms-transform:none;transform:none}}.fadeInDownBig{-webkit-animation-name:fadeInDownBig;animation-name:fadeInDownBig}@-webkit-keyframes fadeInLeft{0%{opacity:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}100%{opacity:1;-webkit-transform:none;transform:none}}@keyframes fadeInLeft{0%{opacity:0;-webkit-transform:translate3d(-100%,0,0);-ms-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}100%{opacity:1;-webkit-transform:none;-ms-transform:none;transform:none}}.fadeInLeft{-webkit-animation-name:fadeInLeft;animation-name:fadeInLeft}@-webkit-keyframes fadeInLeftBig{0%{opacity:0;-webkit-transform:translate3d(-2000px,0,0);transform:translate3d(-2000px,0,0)}100%{opacity:1;-webkit-transform:none;transform:none}}@keyframes fadeInLeftBig{0%{opacity:0;-webkit-transform:translate3d(-2000px,0,0);-ms-transform:translate3d(-2000px,0,0);transform:translate3d(-2000px,0,0)}100%{opacity:1;-webkit-transform:none;-ms-transform:none;transform:none}}.fadeInLeftBig{-webkit-animation-name:fadeInLeftBig;animation-name:fadeInLeftBig}@-webkit-keyframes fadeInRight{0%{opacity:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}100%{opacity:1;-webkit-transform:none;transform:none}}@keyframes fadeInRight{0%{opacity:0;-webkit-transform:translate3d(100%,0,0);-ms-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}100%{opacity:1;-webkit-transform:none;-ms-transform:none;transform:none}}.fadeInRight{-webkit-animation-name:fadeInRight;animation-name:fadeInRight}@-webkit-keyframes fadeInRightBig{0%{opacity:0;-webkit-transform:translate3d(2000px,0,0);transform:translate3d(2000px,0,0)}100%{opacity:1;-webkit-transform:none;transform:none}}@keyframes fadeInRightBig{0%{opacity:0;-webkit-transform:translate3d(2000px,0,0);-ms-transform:translate3d(2000px,0,0);transform:translate3d(2000px,0,0)}100%{opacity:1;-webkit-transform:none;-ms-transform:none;transform:none}}.fadeInRightBig{-webkit-animation-name:fadeInRightBig;animation-name:fadeInRightBig}@-webkit-keyframes fadeInUp{0%{opacity:0;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}100%{opacity:1;-webkit-transform:none;transform:none}}@keyframes fadeInUp{0%{opacity:0;-webkit-transform:translate3d(0,100%,0);-ms-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}100%{opacity:1;-webkit-transform:none;-ms-transform:none;transform:none}}.fadeInUp{-webkit-animation-name:fadeInUp;animation-name:fadeInUp}@-webkit-keyframes fadeInUpBig{0%{opacity:0;-webkit-transform:translate3d(0,2000px,0);transform:translate3d(0,2000px,0)}100%{opacity:1;-webkit-transform:none;transform:none}}@keyframes fadeInUpBig{0%{opacity:0;-webkit-transform:translate3d(0,2000px,0);-ms-transform:translate3d(0,2000px,0);transform:translate3d(0,2000px,0)}100%{opacity:1;-webkit-transform:none;-ms-transform:none;transform:none}}.fadeInUpBig{-webkit-animation-name:fadeInUpBig;animation-name:fadeInUpBig}@-webkit-keyframes fadeOut{0%{opacity:1}100%{opacity:0}}@keyframes fadeOut{0%{opacity:1}100%{opacity:0}}.fadeOut{-webkit-animation-name:fadeOut;animation-name:fadeOut}@-webkit-keyframes fadeOutDown{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}}@keyframes fadeOutDown{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(0,100%,0);-ms-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}}.fadeOutDown{-webkit-animation-name:fadeOutDown;animation-name:fadeOutDown}@-webkit-keyframes fadeOutDownBig{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(0,2000px,0);transform:translate3d(0,2000px,0)}}@keyframes fadeOutDownBig{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(0,2000px,0);-ms-transform:translate3d(0,2000px,0);transform:translate3d(0,2000px,0)}}.fadeOutDownBig{-webkit-animation-name:fadeOutDownBig;animation-name:fadeOutDownBig}@-webkit-keyframes fadeOutLeft{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}}@keyframes fadeOutLeft{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(-100%,0,0);-ms-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}}.fadeOutLeft{-webkit-animation-name:fadeOutLeft;animation-name:fadeOutLeft}@-webkit-keyframes fadeOutLeftBig{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(-2000px,0,0);transform:translate3d(-2000px,0,0)}}@keyframes fadeOutLeftBig{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(-2000px,0,0);-ms-transform:translate3d(-2000px,0,0);transform:translate3d(-2000px,0,0)}}.fadeOutLeftBig{-webkit-animation-name:fadeOutLeftBig;animation-name:fadeOutLeftBig}@-webkit-keyframes fadeOutRight{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}}@keyframes fadeOutRight{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(100%,0,0);-ms-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}}.fadeOutRight{-webkit-animation-name:fadeOutRight;animation-name:fadeOutRight}@-webkit-keyframes fadeOutRightBig{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(2000px,0,0);transform:translate3d(2000px,0,0)}}@keyframes fadeOutRightBig{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(2000px,0,0);-ms-transform:translate3d(2000px,0,0);transform:translate3d(2000px,0,0)}}.fadeOutRightBig{-webkit-animation-name:fadeOutRightBig;animation-name:fadeOutRightBig}@-webkit-keyframes fadeOutUp{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}}@keyframes fadeOutUp{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(0,-100%,0);-ms-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}}.fadeOutUp{-webkit-animation-name:fadeOutUp;animation-name:fadeOutUp}@-webkit-keyframes fadeOutUpBig{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(0,-2000px,0);transform:translate3d(0,-2000px,0)}}@keyframes fadeOutUpBig{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(0,-2000px,0);-ms-transform:translate3d(0,-2000px,0);transform:translate3d(0,-2000px,0)}}.fadeOutUpBig{-webkit-animation-name:fadeOutUpBig;animation-name:fadeOutUpBig}@-webkit-keyframes flip{0%{-webkit-transform:perspective(400px) rotate3d(0,1,0,-360deg);transform:perspective(400px) rotate3d(0,1,0,-360deg);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}40%{-webkit-transform:perspective(400px) translate3d(0,0,150px) rotate3d(0,1,0,-190deg);transform:perspective(400px) translate3d(0,0,150px) rotate3d(0,1,0,-190deg);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}50%{-webkit-transform:perspective(400px) translate3d(0,0,150px) rotate3d(0,1,0,-170deg);transform:perspective(400px) translate3d(0,0,150px) rotate3d(0,1,0,-170deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}80%{-webkit-transform:perspective(400px) scale3d(.95,.95,.95);transform:perspective(400px) scale3d(.95,.95,.95);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}100%{-webkit-transform:perspective(400px);transform:perspective(400px);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}}@keyframes flip{0%{-webkit-transform:perspective(400px) rotate3d(0,1,0,-360deg);-ms-transform:perspective(400px) rotate3d(0,1,0,-360deg);transform:perspective(400px) rotate3d(0,1,0,-360deg);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}40%{-webkit-transform:perspective(400px) translate3d(0,0,150px) rotate3d(0,1,0,-190deg);-ms-transform:perspective(400px) translate3d(0,0,150px) rotate3d(0,1,0,-190deg);transform:perspective(400px) translate3d(0,0,150px) rotate3d(0,1,0,-190deg);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}50%{-webkit-transform:perspective(400px) translate3d(0,0,150px) rotate3d(0,1,0,-170deg);-ms-transform:perspective(400px) translate3d(0,0,150px) rotate3d(0,1,0,-170deg);transform:perspective(400px) translate3d(0,0,150px) rotate3d(0,1,0,-170deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}80%{-webkit-transform:perspective(400px) scale3d(.95,.95,.95);-ms-transform:perspective(400px) scale3d(.95,.95,.95);transform:perspective(400px) scale3d(.95,.95,.95);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}100%{-webkit-transform:perspective(400px);-ms-transform:perspective(400px);transform:perspective(400px);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}}.animated.flip{-webkit-backface-visibility:visible;-ms-backface-visibility:visible;backface-visibility:visible;-webkit-animation-name:flip;animation-name:flip}@-webkit-keyframes flipInX{0%{-webkit-transform:perspective(400px) rotate3d(1,0,0,90deg);transform:perspective(400px) rotate3d(1,0,0,90deg);-webkit-transition-timing-function:ease-in;transition-timing-function:ease-in;opacity:0}40%{-webkit-transform:perspective(400px) rotate3d(1,0,0,-20deg);transform:perspective(400px) rotate3d(1,0,0,-20deg);-webkit-transition-timing-function:ease-in;transition-timing-function:ease-in}60%{-webkit-transform:perspective(400px) rotate3d(1,0,0,10deg);transform:perspective(400px) rotate3d(1,0,0,10deg);opacity:1}80%{-webkit-transform:perspective(400px) rotate3d(1,0,0,-5deg);transform:perspective(400px) rotate3d(1,0,0,-5deg)}100%{-webkit-transform:perspective(400px);transform:perspective(400px)}}@keyframes flipInX{0%{-webkit-transform:perspective(400px) rotate3d(1,0,0,90deg);-ms-transform:perspective(400px) rotate3d(1,0,0,90deg);transform:perspective(400px) rotate3d(1,0,0,90deg);-webkit-transition-timing-function:ease-in;transition-timing-function:ease-in;opacity:0}40%{-webkit-transform:perspective(400px) rotate3d(1,0,0,-20deg);-ms-transform:perspective(400px) rotate3d(1,0,0,-20deg);transform:perspective(400px) rotate3d(1,0,0,-20deg);-webkit-transition-timing-function:ease-in;transition-timing-function:ease-in}60%{-webkit-transform:perspective(400px) rotate3d(1,0,0,10deg);-ms-transform:perspective(400px) rotate3d(1,0,0,10deg);transform:perspective(400px) rotate3d(1,0,0,10deg);opacity:1}80%{-webkit-transform:perspective(400px) rotate3d(1,0,0,-5deg);-ms-transform:perspective(400px) rotate3d(1,0,0,-5deg);transform:perspective(400px) rotate3d(1,0,0,-5deg)}100%{-webkit-transform:perspective(400px);-ms-transform:perspective(400px);transform:perspective(400px)}}.flipInX{-webkit-backface-visibility:visible!important;-ms-backface-visibility:visible!important;backface-visibility:visible!important;-webkit-animation-name:flipInX;animation-name:flipInX}@-webkit-keyframes flipInY{0%{-webkit-transform:perspective(400px) rotate3d(0,1,0,90deg);transform:perspective(400px) rotate3d(0,1,0,90deg);-webkit-transition-timing-function:ease-in;transition-timing-function:ease-in;opacity:0}40%{-webkit-transform:perspective(400px) rotate3d(0,1,0,-20deg);transform:perspective(400px) rotate3d(0,1,0,-20deg);-webkit-transition-timing-function:ease-in;transition-timing-function:ease-in}60%{-webkit-transform:perspective(400px) rotate3d(0,1,0,10deg);transform:perspective(400px) rotate3d(0,1,0,10deg);opacity:1}80%{-webkit-transform:perspective(400px) rotate3d(0,1,0,-5deg);transform:perspective(400px) rotate3d(0,1,0,-5deg)}100%{-webkit-transform:perspective(400px);transform:perspective(400px)}}@keyframes flipInY{0%{-webkit-transform:perspective(400px) rotate3d(0,1,0,90deg);-ms-transform:perspective(400px) rotate3d(0,1,0,90deg);transform:perspective(400px) rotate3d(0,1,0,90deg);-webkit-transition-timing-function:ease-in;transition-timing-function:ease-in;opacity:0}40%{-webkit-transform:perspective(400px) rotate3d(0,1,0,-20deg);-ms-transform:perspective(400px) rotate3d(0,1,0,-20deg);transform:perspective(400px) rotate3d(0,1,0,-20deg);-webkit-transition-timing-function:ease-in;transition-timing-function:ease-in}60%{-webkit-transform:perspective(400px) rotate3d(0,1,0,10deg);-ms-transform:perspective(400px) rotate3d(0,1,0,10deg);transform:perspective(400px) rotate3d(0,1,0,10deg);opacity:1}80%{-webkit-transform:perspective(400px) rotate3d(0,1,0,-5deg);-ms-transform:perspective(400px) rotate3d(0,1,0,-5deg);transform:perspective(400px) rotate3d(0,1,0,-5deg)}100%{-webkit-transform:perspective(400px);-ms-transform:perspective(400px);transform:perspective(400px)}}.flipInY{-webkit-backface-visibility:visible!important;-ms-backface-visibility:visible!important;backface-visibility:visible!important;-webkit-animation-name:flipInY;animation-name:flipInY}@-webkit-keyframes flipOutX{0%{-webkit-transform:perspective(400px);transform:perspective(400px)}30%{-webkit-transform:perspective(400px) rotate3d(1,0,0,-20deg);transform:perspective(400px) rotate3d(1,0,0,-20deg);opacity:1}100%{-webkit-transform:perspective(400px) rotate3d(1,0,0,90deg);transform:perspective(400px) rotate3d(1,0,0,90deg);opacity:0}}@keyframes flipOutX{0%{-webkit-transform:perspective(400px);-ms-transform:perspective(400px);transform:perspective(400px)}30%{-webkit-transform:perspective(400px) rotate3d(1,0,0,-20deg);-ms-transform:perspective(400px) rotate3d(1,0,0,-20deg);transform:perspective(400px) rotate3d(1,0,0,-20deg);opacity:1}100%{-webkit-transform:perspective(400px) rotate3d(1,0,0,90deg);-ms-transform:perspective(400px) rotate3d(1,0,0,90deg);transform:perspective(400px) rotate3d(1,0,0,90deg);opacity:0}}.flipOutX{-webkit-animation-name:flipOutX;animation-name:flipOutX;-webkit-animation-duration:.75s;animation-duration:.75s;-webkit-backface-visibility:visible!important;-ms-backface-visibility:visible!important;backface-visibility:visible!important}@-webkit-keyframes flipOutY{0%{-webkit-transform:perspective(400px);transform:perspective(400px)}30%{-webkit-transform:perspective(400px) rotate3d(0,1,0,-15deg);transform:perspective(400px) rotate3d(0,1,0,-15deg);opacity:1}100%{-webkit-transform:perspective(400px) rotate3d(0,1,0,90deg);transform:perspective(400px) rotate3d(0,1,0,90deg);opacity:0}}@keyframes flipOutY{0%{-webkit-transform:perspective(400px);-ms-transform:perspective(400px);transform:perspective(400px)}30%{-webkit-transform:perspective(400px) rotate3d(0,1,0,-15deg);-ms-transform:perspective(400px) rotate3d(0,1,0,-15deg);transform:perspective(400px) rotate3d(0,1,0,-15deg);opacity:1}100%{-webkit-transform:perspective(400px) rotate3d(0,1,0,90deg);-ms-transform:perspective(400px) rotate3d(0,1,0,90deg);transform:perspective(400px) rotate3d(0,1,0,90deg);opacity:0}}.flipOutY{-webkit-backface-visibility:visible!important;-ms-backface-visibility:visible!important;backface-visibility:visible!important;-webkit-animation-name:flipOutY;animation-name:flipOutY;-webkit-animation-duration:.75s;animation-duration:.75s}@-webkit-keyframes lightSpeedIn{0%{-webkit-transform:translate3d(100%,0,0) skewX(-30deg);transform:translate3d(100%,0,0) skewX(-30deg);opacity:0}60%{-webkit-transform:skewX(20deg);transform:skewX(20deg);opacity:1}80%{-webkit-transform:skewX(-5deg);transform:skewX(-5deg);opacity:1}100%{-webkit-transform:none;transform:none;opacity:1}}@keyframes lightSpeedIn{0%{-webkit-transform:translate3d(100%,0,0) skewX(-30deg);-ms-transform:translate3d(100%,0,0) skewX(-30deg);transform:translate3d(100%,0,0) skewX(-30deg);opacity:0}60%{-webkit-transform:skewX(20deg);-ms-transform:skewX(20deg);transform:skewX(20deg);opacity:1}80%{-webkit-transform:skewX(-5deg);-ms-transform:skewX(-5deg);transform:skewX(-5deg);opacity:1}100%{-webkit-transform:none;-ms-transform:none;transform:none;opacity:1}}.lightSpeedIn{-webkit-animation-name:lightSpeedIn;animation-name:lightSpeedIn;-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}@-webkit-keyframes lightSpeedOut{0%{opacity:1}100%{-webkit-transform:translate3d(100%,0,0) skewX(30deg);transform:translate3d(100%,0,0) skewX(30deg);opacity:0}}@keyframes lightSpeedOut{0%{opacity:1}100%{-webkit-transform:translate3d(100%,0,0) skewX(30deg);-ms-transform:translate3d(100%,0,0) skewX(30deg);transform:translate3d(100%,0,0) skewX(30deg);opacity:0}}.lightSpeedOut{-webkit-animation-name:lightSpeedOut;animation-name:lightSpeedOut;-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}@-webkit-keyframes rotateIn{0%{-webkit-transform-origin:center;transform-origin:center;-webkit-transform:rotate3d(0,0,1,-200deg);transform:rotate3d(0,0,1,-200deg);opacity:0}100%{-webkit-transform-origin:center;transform-origin:center;-webkit-transform:none;transform:none;opacity:1}}@keyframes rotateIn{0%{-webkit-transform-origin:center;-ms-transform-origin:center;transform-origin:center;-webkit-transform:rotate3d(0,0,1,-200deg);-ms-transform:rotate3d(0,0,1,-200deg);transform:rotate3d(0,0,1,-200deg);opacity:0}100%{-webkit-transform-origin:center;-ms-transform-origin:center;transform-origin:center;-webkit-transform:none;-ms-transform:none;transform:none;opacity:1}}.rotateIn{-webkit-animation-name:rotateIn;animation-name:rotateIn}@-webkit-keyframes rotateInDownLeft{0%{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate3d(0,0,1,-45deg);transform:rotate3d(0,0,1,-45deg);opacity:0}100%{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:none;transform:none;opacity:1}}@keyframes rotateInDownLeft{0%{-webkit-transform-origin:left bottom;-ms-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate3d(0,0,1,-45deg);-ms-transform:rotate3d(0,0,1,-45deg);transform:rotate3d(0,0,1,-45deg);opacity:0}100%{-webkit-transform-origin:left bottom;-ms-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:none;-ms-transform:none;transform:none;opacity:1}}.rotateInDownLeft{-webkit-animation-name:rotateInDownLeft;animation-name:rotateInDownLeft}@-webkit-keyframes rotateInDownRight{0%{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate3d(0,0,1,45deg);transform:rotate3d(0,0,1,45deg);opacity:0}100%{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:none;transform:none;opacity:1}}@keyframes rotateInDownRight{0%{-webkit-transform-origin:right bottom;-ms-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate3d(0,0,1,45deg);-ms-transform:rotate3d(0,0,1,45deg);transform:rotate3d(0,0,1,45deg);opacity:0}100%{-webkit-transform-origin:right bottom;-ms-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:none;-ms-transform:none;transform:none;opacity:1}}.rotateInDownRight{-webkit-animation-name:rotateInDownRight;animation-name:rotateInDownRight}@-webkit-keyframes rotateInUpLeft{0%{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate3d(0,0,1,45deg);transform:rotate3d(0,0,1,45deg);opacity:0}100%{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:none;transform:none;opacity:1}}@keyframes rotateInUpLeft{0%{-webkit-transform-origin:left bottom;-ms-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate3d(0,0,1,45deg);-ms-transform:rotate3d(0,0,1,45deg);transform:rotate3d(0,0,1,45deg);opacity:0}100%{-webkit-transform-origin:left bottom;-ms-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:none;-ms-transform:none;transform:none;opacity:1}}.rotateInUpLeft{-webkit-animation-name:rotateInUpLeft;animation-name:rotateInUpLeft}@-webkit-keyframes rotateInUpRight{0%{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate3d(0,0,1,-90deg);transform:rotate3d(0,0,1,-90deg);opacity:0}100%{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:none;transform:none;opacity:1}}@keyframes rotateInUpRight{0%{-webkit-transform-origin:right bottom;-ms-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate3d(0,0,1,-90deg);-ms-transform:rotate3d(0,0,1,-90deg);transform:rotate3d(0,0,1,-90deg);opacity:0}100%{-webkit-transform-origin:right bottom;-ms-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:none;-ms-transform:none;transform:none;opacity:1}}.rotateInUpRight{-webkit-animation-name:rotateInUpRight;animation-name:rotateInUpRight}@-webkit-keyframes rotateOut{0%{-webkit-transform-origin:center;transform-origin:center;opacity:1}100%{-webkit-transform-origin:center;transform-origin:center;-webkit-transform:rotate3d(0,0,1,200deg);transform:rotate3d(0,0,1,200deg);opacity:0}}@keyframes rotateOut{0%{-webkit-transform-origin:center;-ms-transform-origin:center;transform-origin:center;opacity:1}100%{-webkit-transform-origin:center;-ms-transform-origin:center;transform-origin:center;-webkit-transform:rotate3d(0,0,1,200deg);-ms-transform:rotate3d(0,0,1,200deg);transform:rotate3d(0,0,1,200deg);opacity:0}}.rotateOut{-webkit-animation-name:rotateOut;animation-name:rotateOut}@-webkit-keyframes rotateOutDownLeft{0%{-webkit-transform-origin:left bottom;transform-origin:left bottom;opacity:1}100%{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate(0,0,1,45deg);transform:rotate(0,0,1,45deg);opacity:0}}@keyframes rotateOutDownLeft{0%{-webkit-transform-origin:left bottom;-ms-transform-origin:left bottom;transform-origin:left bottom;opacity:1}100%{-webkit-transform-origin:left bottom;-ms-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate(0,0,1,45deg);-ms-transform:rotate(0,0,1,45deg);transform:rotate(0,0,1,45deg);opacity:0}}.rotateOutDownLeft{-webkit-animation-name:rotateOutDownLeft;animation-name:rotateOutDownLeft}@-webkit-keyframes rotateOutDownRight{0%{-webkit-transform-origin:right bottom;transform-origin:right bottom;opacity:1}100%{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate3d(0,0,1,-45deg);transform:rotate3d(0,0,1,-45deg);opacity:0}}@keyframes rotateOutDownRight{0%{-webkit-transform-origin:right bottom;-ms-transform-origin:right bottom;transform-origin:right bottom;opacity:1}100%{-webkit-transform-origin:right bottom;-ms-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate3d(0,0,1,-45deg);-ms-transform:rotate3d(0,0,1,-45deg);transform:rotate3d(0,0,1,-45deg);opacity:0}}.rotateOutDownRight{-webkit-animation-name:rotateOutDownRight;animation-name:rotateOutDownRight}@-webkit-keyframes rotateOutUpLeft{0%{-webkit-transform-origin:left bottom;transform-origin:left bottom;opacity:1}100%{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate3d(0,0,1,-45deg);transform:rotate3d(0,0,1,-45deg);opacity:0}}@keyframes rotateOutUpLeft{0%{-webkit-transform-origin:left bottom;-ms-transform-origin:left bottom;transform-origin:left bottom;opacity:1}100%{-webkit-transform-origin:left bottom;-ms-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate3d(0,0,1,-45deg);-ms-transform:rotate3d(0,0,1,-45deg);transform:rotate3d(0,0,1,-45deg);opacity:0}}.rotateOutUpLeft{-webkit-animation-name:rotateOutUpLeft;animation-name:rotateOutUpLeft}@-webkit-keyframes rotateOutUpRight{0%{-webkit-transform-origin:right bottom;transform-origin:right bottom;opacity:1}100%{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate3d(0,0,1,90deg);transform:rotate3d(0,0,1,90deg);opacity:0}}@keyframes rotateOutUpRight{0%{-webkit-transform-origin:right bottom;-ms-transform-origin:right bottom;transform-origin:right bottom;opacity:1}100%{-webkit-transform-origin:right bottom;-ms-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate3d(0,0,1,90deg);-ms-transform:rotate3d(0,0,1,90deg);transform:rotate3d(0,0,1,90deg);opacity:0}}.rotateOutUpRight{-webkit-animation-name:rotateOutUpRight;animation-name:rotateOutUpRight}@-webkit-keyframes hinge{0%{-webkit-transform-origin:top left;transform-origin:top left;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}20%,60%{-webkit-transform:rotate3d(0,0,1,80deg);transform:rotate3d(0,0,1,80deg);-webkit-transform-origin:top left;transform-origin:top left;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}40%,80%{-webkit-transform:rotate3d(0,0,1,60deg);transform:rotate3d(0,0,1,60deg);-webkit-transform-origin:top left;transform-origin:top left;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out;opacity:1}100%{-webkit-transform:translate3d(0,700px,0);transform:translate3d(0,700px,0);opacity:0}}@keyframes hinge{0%{-webkit-transform-origin:top left;-ms-transform-origin:top left;transform-origin:top left;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}20%,60%{-webkit-transform:rotate3d(0,0,1,80deg);-ms-transform:rotate3d(0,0,1,80deg);transform:rotate3d(0,0,1,80deg);-webkit-transform-origin:top left;-ms-transform-origin:top left;transform-origin:top left;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}40%,80%{-webkit-transform:rotate3d(0,0,1,60deg);-ms-transform:rotate3d(0,0,1,60deg);transform:rotate3d(0,0,1,60deg);-webkit-transform-origin:top left;-ms-transform-origin:top left;transform-origin:top left;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out;opacity:1}100%{-webkit-transform:translate3d(0,700px,0);-ms-transform:translate3d(0,700px,0);transform:translate3d(0,700px,0);opacity:0}}.hinge{-webkit-animation-name:hinge;animation-name:hinge}@-webkit-keyframes rollIn{0%{opacity:0;-webkit-transform:translate3d(-100%,0,0) rotate3d(0,0,1,-120deg);transform:translate3d(-100%,0,0) rotate3d(0,0,1,-120deg)}100%{opacity:1;-webkit-transform:none;transform:none}}@keyframes rollIn{0%{opacity:0;-webkit-transform:translate3d(-100%,0,0) rotate3d(0,0,1,-120deg);-ms-transform:translate3d(-100%,0,0) rotate3d(0,0,1,-120deg);transform:translate3d(-100%,0,0) rotate3d(0,0,1,-120deg)}100%{opacity:1;-webkit-transform:none;-ms-transform:none;transform:none}}.rollIn{-webkit-animation-name:rollIn;animation-name:rollIn}@-webkit-keyframes rollOut{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(100%,0,0) rotate3d(0,0,1,120deg);transform:translate3d(100%,0,0) rotate3d(0,0,1,120deg)}}@keyframes rollOut{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(100%,0,0) rotate3d(0,0,1,120deg);-ms-transform:translate3d(100%,0,0) rotate3d(0,0,1,120deg);transform:translate3d(100%,0,0) rotate3d(0,0,1,120deg)}}.rollOut{-webkit-animation-name:rollOut;animation-name:rollOut}@-webkit-keyframes zoomIn{0%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}50%{opacity:1}}@keyframes zoomIn{0%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);-ms-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}50%{opacity:1}}.zoomIn{-webkit-animation-name:zoomIn;animation-name:zoomIn}@-webkit-keyframes zoomInDown{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,-1000px,0);transform:scale3d(.1,.1,.1) translate3d(0,-1000px,0);-webkit-animation-timing-function:cubic-bezier(0.55,.055,.675,.19);animation-timing-function:cubic-bezier(0.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,60px,0);transform:scale3d(.475,.475,.475) translate3d(0,60px,0);-webkit-animation-timing-function:cubic-bezier(0.175,.885,.32,1);animation-timing-function:cubic-bezier(0.175,.885,.32,1)}}@keyframes zoomInDown{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,-1000px,0);-ms-transform:scale3d(.1,.1,.1) translate3d(0,-1000px,0);transform:scale3d(.1,.1,.1) translate3d(0,-1000px,0);-webkit-animation-timing-function:cubic-bezier(0.55,.055,.675,.19);animation-timing-function:cubic-bezier(0.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,60px,0);-ms-transform:scale3d(.475,.475,.475) translate3d(0,60px,0);transform:scale3d(.475,.475,.475) translate3d(0,60px,0);-webkit-animation-timing-function:cubic-bezier(0.175,.885,.32,1);animation-timing-function:cubic-bezier(0.175,.885,.32,1)}}.zoomInDown{-webkit-animation-name:zoomInDown;animation-name:zoomInDown}@-webkit-keyframes zoomInLeft{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(-1000px,0,0);transform:scale3d(.1,.1,.1) translate3d(-1000px,0,0);-webkit-animation-timing-function:cubic-bezier(0.55,.055,.675,.19);animation-timing-function:cubic-bezier(0.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(10px,0,0);transform:scale3d(.475,.475,.475) translate3d(10px,0,0);-webkit-animation-timing-function:cubic-bezier(0.175,.885,.32,1);animation-timing-function:cubic-bezier(0.175,.885,.32,1)}}@keyframes zoomInLeft{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(-1000px,0,0);-ms-transform:scale3d(.1,.1,.1) translate3d(-1000px,0,0);transform:scale3d(.1,.1,.1) translate3d(-1000px,0,0);-webkit-animation-timing-function:cubic-bezier(0.55,.055,.675,.19);animation-timing-function:cubic-bezier(0.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(10px,0,0);-ms-transform:scale3d(.475,.475,.475) translate3d(10px,0,0);transform:scale3d(.475,.475,.475) translate3d(10px,0,0);-webkit-animation-timing-function:cubic-bezier(0.175,.885,.32,1);animation-timing-function:cubic-bezier(0.175,.885,.32,1)}}.zoomInLeft{-webkit-animation-name:zoomInLeft;animation-name:zoomInLeft}@-webkit-keyframes zoomInRight{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(1000px,0,0);transform:scale3d(.1,.1,.1) translate3d(1000px,0,0);-webkit-animation-timing-function:cubic-bezier(0.55,.055,.675,.19);animation-timing-function:cubic-bezier(0.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(-10px,0,0);transform:scale3d(.475,.475,.475) translate3d(-10px,0,0);-webkit-animation-timing-function:cubic-bezier(0.175,.885,.32,1);animation-timing-function:cubic-bezier(0.175,.885,.32,1)}}@keyframes zoomInRight{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(1000px,0,0);-ms-transform:scale3d(.1,.1,.1) translate3d(1000px,0,0);transform:scale3d(.1,.1,.1) translate3d(1000px,0,0);-webkit-animation-timing-function:cubic-bezier(0.55,.055,.675,.19);animation-timing-function:cubic-bezier(0.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(-10px,0,0);-ms-transform:scale3d(.475,.475,.475) translate3d(-10px,0,0);transform:scale3d(.475,.475,.475) translate3d(-10px,0,0);-webkit-animation-timing-function:cubic-bezier(0.175,.885,.32,1);animation-timing-function:cubic-bezier(0.175,.885,.32,1)}}.zoomInRight{-webkit-animation-name:zoomInRight;animation-name:zoomInRight}@-webkit-keyframes zoomInUp{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,1000px,0);transform:scale3d(.1,.1,.1) translate3d(0,1000px,0);-webkit-animation-timing-function:cubic-bezier(0.55,.055,.675,.19);animation-timing-function:cubic-bezier(0.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);-webkit-animation-timing-function:cubic-bezier(0.175,.885,.32,1);animation-timing-function:cubic-bezier(0.175,.885,.32,1)}}@keyframes zoomInUp{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,1000px,0);-ms-transform:scale3d(.1,.1,.1) translate3d(0,1000px,0);transform:scale3d(.1,.1,.1) translate3d(0,1000px,0);-webkit-animation-timing-function:cubic-bezier(0.55,.055,.675,.19);animation-timing-function:cubic-bezier(0.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);-ms-transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);-webkit-animation-timing-function:cubic-bezier(0.175,.885,.32,1);animation-timing-function:cubic-bezier(0.175,.885,.32,1)}}.zoomInUp{-webkit-animation-name:zoomInUp;animation-name:zoomInUp}@-webkit-keyframes zoomOut{0%{opacity:1}50%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}100%{opacity:0}}@keyframes zoomOut{0%{opacity:1}50%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);-ms-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}100%{opacity:0}}.zoomOut{-webkit-animation-name:zoomOut;animation-name:zoomOut}@-webkit-keyframes zoomOutDown{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);-webkit-animation-timing-function:cubic-bezier(0.55,.055,.675,.19);animation-timing-function:cubic-bezier(0.55,.055,.675,.19)}100%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,2000px,0);transform:scale3d(.1,.1,.1) translate3d(0,2000px,0);-webkit-transform-origin:center bottom;transform-origin:center bottom;-webkit-animation-timing-function:cubic-bezier(0.175,.885,.32,1);animation-timing-function:cubic-bezier(0.175,.885,.32,1)}}@keyframes zoomOutDown{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);-ms-transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);-webkit-animation-timing-function:cubic-bezier(0.55,.055,.675,.19);animation-timing-function:cubic-bezier(0.55,.055,.675,.19)}100%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,2000px,0);-ms-transform:scale3d(.1,.1,.1) translate3d(0,2000px,0);transform:scale3d(.1,.1,.1) translate3d(0,2000px,0);-webkit-transform-origin:center bottom;-ms-transform-origin:center bottom;transform-origin:center bottom;-webkit-animation-timing-function:cubic-bezier(0.175,.885,.32,1);animation-timing-function:cubic-bezier(0.175,.885,.32,1)}}.zoomOutDown{-webkit-animation-name:zoomOutDown;animation-name:zoomOutDown}@-webkit-keyframes zoomOutLeft{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(42px,0,0);transform:scale3d(.475,.475,.475) translate3d(42px,0,0)}100%{opacity:0;-webkit-transform:scale(.1) translate3d(-2000px,0,0);transform:scale(.1) translate3d(-2000px,0,0);-webkit-transform-origin:left center;transform-origin:left center}}@keyframes zoomOutLeft{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(42px,0,0);-ms-transform:scale3d(.475,.475,.475) translate3d(42px,0,0);transform:scale3d(.475,.475,.475) translate3d(42px,0,0)}100%{opacity:0;-webkit-transform:scale(.1) translate3d(-2000px,0,0);-ms-transform:scale(.1) translate3d(-2000px,0,0);transform:scale(.1) translate3d(-2000px,0,0);-webkit-transform-origin:left center;-ms-transform-origin:left center;transform-origin:left center}}.zoomOutLeft{-webkit-animation-name:zoomOutLeft;animation-name:zoomOutLeft}@-webkit-keyframes zoomOutRight{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(-42px,0,0);transform:scale3d(.475,.475,.475) translate3d(-42px,0,0)}100%{opacity:0;-webkit-transform:scale(.1) translate3d(2000px,0,0);transform:scale(.1) translate3d(2000px,0,0);-webkit-transform-origin:right center;transform-origin:right center}}@keyframes zoomOutRight{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(-42px,0,0);-ms-transform:scale3d(.475,.475,.475) translate3d(-42px,0,0);transform:scale3d(.475,.475,.475) translate3d(-42px,0,0)}100%{opacity:0;-webkit-transform:scale(.1) translate3d(2000px,0,0);-ms-transform:scale(.1) translate3d(2000px,0,0);transform:scale(.1) translate3d(2000px,0,0);-webkit-transform-origin:right center;-ms-transform-origin:right center;transform-origin:right center}}.zoomOutRight{-webkit-animation-name:zoomOutRight;animation-name:zoomOutRight}@-webkit-keyframes zoomOutUp{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,60px,0);transform:scale3d(.475,.475,.475) translate3d(0,60px,0);-webkit-animation-timing-function:cubic-bezier(0.55,.055,.675,.19);animation-timing-function:cubic-bezier(0.55,.055,.675,.19)}100%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,-2000px,0);transform:scale3d(.1,.1,.1) translate3d(0,-2000px,0);-webkit-transform-origin:center bottom;transform-origin:center bottom;-webkit-animation-timing-function:cubic-bezier(0.175,.885,.32,1);animation-timing-function:cubic-bezier(0.175,.885,.32,1)}}@keyframes zoomOutUp{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,60px,0);-ms-transform:scale3d(.475,.475,.475) translate3d(0,60px,0);transform:scale3d(.475,.475,.475) translate3d(0,60px,0);-webkit-animation-timing-function:cubic-bezier(0.55,.055,.675,.19);animation-timing-function:cubic-bezier(0.55,.055,.675,.19)}100%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,-2000px,0);-ms-transform:scale3d(.1,.1,.1) translate3d(0,-2000px,0);transform:scale3d(.1,.1,.1) translate3d(0,-2000px,0);-webkit-transform-origin:center bottom;-ms-transform-origin:center bottom;transform-origin:center bottom;-webkit-animation-timing-function:cubic-bezier(0.175,.885,.32,1);animation-timing-function:cubic-bezier(0.175,.885,.32,1)}}.zoomOutUp{-webkit-animation-name:zoomOutUp;animation-name:zoomOutUp}
css/framework.css ADDED
@@ -0,0 +1,3437 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /*
2
+ This is some basic css needed for some display types to work.
3
+ This file is loaded first, so you can easily override it.
4
+
5
+ */
6
+
7
+ /* ----------- Gallery style -------------*/
8
+
9
+ .ngg-gallery-thumbnail {
10
+ float: left;
11
+ }
12
+
13
+ .ngg-gallery-thumbnail span {
14
+ display:block;
15
+ }
16
+
17
+ .ngg-clear {
18
+ clear: both;
19
+ float: none;
20
+ }
21
+
22
+ /* ----------- Gallery navigation -------------*/
23
+
24
+ .ngg-navigation {
25
+ clear:both;
26
+ }
27
+
28
+ /* ----------- Owl Slideshow -------------*/
29
+ .owl-carousel .animated {
30
+ -webkit-animation-duration: 1000ms;
31
+ animation-duration: 1000ms;
32
+ -webkit-animation-fill-mode: both;
33
+ animation-fill-mode: both;
34
+ }
35
+ .owl-carousel .owl-animated-in {
36
+ z-index: 0;
37
+ }
38
+ .owl-carousel .owl-animated-out {
39
+ z-index: 1;
40
+ }
41
+ .owl-carousel .fadeOut {
42
+ -webkit-animation-name: fadeOut;
43
+ animation-name: fadeOut;
44
+ }
45
+
46
+ @-webkit-keyframes fadeOut {
47
+ 0% {
48
+ opacity: 1;
49
+ }
50
+
51
+ 100% {
52
+ opacity: 0;
53
+ }
54
+
55
+ }
56
+ @keyframes fadeOut {
57
+ 0% {
58
+ opacity: 1;
59
+ }
60
+
61
+ 100% {
62
+ opacity: 0;
63
+ }
64
+ }
65
+
66
+ /*
67
+ * Owl Carousel - Auto Height Plugin
68
+ */
69
+ .owl-height {
70
+ -webkit-transition: height 500ms ease-in-out;
71
+ -moz-transition: height 500ms ease-in-out;
72
+ -ms-transition: height 500ms ease-in-out;
73
+ -o-transition: height 500ms ease-in-out;
74
+ transition: height 500ms ease-in-out;
75
+ }
76
+
77
+ /*
78
+ * Core Owl Carousel CSS File
79
+ */
80
+ .owl-carousel {
81
+ display: none;
82
+ width: 100%;
83
+ -webkit-tap-highlight-color: transparent;
84
+ /* position relative and z-index fix webkit rendering fonts issue */
85
+ position: relative;
86
+ z-index: 1;
87
+ }
88
+ .owl-carousel .owl-stage {
89
+ position: relative;
90
+ -ms-touch-action: pan-Y;
91
+ }
92
+ .owl-carousel .owl-stage:after {
93
+ content: ".";
94
+ display: block;
95
+ clear: both;
96
+ visibility: hidden;
97
+ line-height: 0;
98
+ height: 0;
99
+ }
100
+ .owl-carousel .owl-stage-outer {
101
+ position: relative;
102
+ overflow: hidden;
103
+ /* fix for flashing background */
104
+ -webkit-transform: translate3d(0px, 0px, 0px);
105
+ }
106
+ .owl-carousel .owl-controls .owl-nav .owl-prev,
107
+ .owl-carousel .owl-controls .owl-nav .owl-next,
108
+ .owl-carousel .owl-controls .owl-dot {
109
+ cursor: pointer;
110
+ cursor: hand;
111
+ -webkit-user-select: none;
112
+ -khtml-user-select: none;
113
+ -moz-user-select: none;
114
+ -ms-user-select: none;
115
+ user-select: none;
116
+ }
117
+ .owl-carousel.owl-loaded {
118
+ display: block;
119
+ }
120
+ .owl-carousel.owl-loading {
121
+ opacity: 0;
122
+ display: block;
123
+ }
124
+
125
+ .owl-carousel.owl-hidden {
126
+ opacity: 0;
127
+ }
128
+ .owl-carousel .owl-refresh .owl-item {
129
+ display: none;
130
+ }
131
+ .owl-carousel .owl-item {
132
+ position: relative;
133
+ min-height: 1px;
134
+ float: left;
135
+ -webkit-backface-visibility: hidden;
136
+ -webkit-tap-highlight-color: transparent;
137
+ -webkit-touch-callout: none;
138
+ -webkit-user-select: none;
139
+ -moz-user-select: none;
140
+ -ms-user-select: none;
141
+ user-select: none;
142
+ }
143
+ .owl-carousel .owl-item img {
144
+ display: block;
145
+ width: 100%;
146
+ -webkit-transform-style: preserve-3d;
147
+ }
148
+ .owl-carousel.owl-text-select-on .owl-item {
149
+ -webkit-user-select: auto;
150
+ -moz-user-select: auto;
151
+ -ms-user-select: auto;
152
+ user-select: auto;
153
+ }
154
+ .owl-carousel .owl-grab {
155
+ cursor: move;
156
+ cursor: -webkit-grab;
157
+ cursor: -o-grab;
158
+ cursor: -ms-grab;
159
+ cursor: grab;
160
+ }
161
+ .owl-carousel.owl-rtl {
162
+ direction: rtl;
163
+ }
164
+ .owl-carousel.owl-rtl .owl-item {
165
+ float: right;
166
+ }
167
+
168
+ /* No Js */
169
+ .no-js .owl-carousel {
170
+ display: block;
171
+ }
172
+
173
+ /*
174
+ * Owl Carousel - Lazy Load Plugin
175
+ */
176
+ .owl-carousel .owl-item .owl-lazy {
177
+ opacity: 0;
178
+ -webkit-transition: opacity 400ms ease;
179
+ -moz-transition: opacity 400ms ease;
180
+ -ms-transition: opacity 400ms ease;
181
+ -o-transition: opacity 400ms ease;
182
+ transition: opacity 400ms ease;
183
+ }
184
+ .owl-carousel .owl-item img {
185
+ transform-style: preserve-3d;
186
+ }
187
+
188
+ /*
189
+ * Owl Carousel - Video Plugin
190
+ */
191
+ .owl-carousel .owl-video-wrapper {
192
+ position: relative;
193
+ height: 100%;
194
+ background: #000;
195
+ }
196
+ .owl-carousel .owl-video-play-icon {
197
+ position: absolute;
198
+ height: 80px;
199
+ width: 80px;
200
+ left: 50%;
201
+ top: 50%;
202
+ margin-left: -40px;
203
+ margin-top: -40px;
204
+ background: url("owl.video.play.png") no-repeat;
205
+ cursor: pointer;
206
+ z-index: 1;
207
+ -webkit-backface-visibility: hidden;
208
+ -webkit-transition: scale 100ms ease;
209
+ -moz-transition: scale 100ms ease;
210
+ -ms-transition: scale 100ms ease;
211
+ -o-transition: scale 100ms ease;
212
+ transition: scale 100ms ease;
213
+ }
214
+ .owl-carousel .owl-video-play-icon:hover {
215
+ -webkit-transition: scale(1.3, 1.3);
216
+ -moz-transition: scale(1.3, 1.3);
217
+ -ms-transition: scale(1.3, 1.3);
218
+ -o-transition: scale(1.3, 1.3);
219
+ transition: scale(1.3, 1.3);
220
+ }
221
+ .owl-carousel .owl-video-playing .owl-video-tn,
222
+ .owl-carousel .owl-video-playing .owl-video-play-icon {
223
+ display: none;
224
+ }
225
+ .owl-carousel .owl-video-tn {
226
+ opacity: 0;
227
+ height: 100%;
228
+ background-position: center center;
229
+ background-repeat: no-repeat;
230
+ -webkit-background-size: contain;
231
+ -moz-background-size: contain;
232
+ -o-background-size: contain;
233
+ background-size: contain;
234
+ -webkit-transition: opacity 400ms ease;
235
+ -moz-transition: opacity 400ms ease;
236
+ -ms-transition: opacity 400ms ease;
237
+ -o-transition: opacity 400ms ease;
238
+ transition: opacity 400ms ease;
239
+ }
240
+ .owl-carousel .owl-video-frame {
241
+ position: relative;
242
+ z-index: 1;
243
+ }
244
+
245
+ /* ----------- Single picture -------------*/
246
+ .ngg-singlepic {
247
+ display:block;
248
+ }
249
+
250
+ .ngg-left {
251
+ float: left;
252
+ }
253
+
254
+ .ngg-right {
255
+ float: right;
256
+ }
257
+
258
+ .ngg-center {
259
+ margin-left: auto !important;
260
+ margin-right: auto !important;
261
+ }
262
+
263
+ /* ----------- Related images -------------*/
264
+ .ngg-related-gallery {
265
+ overflow:hidden;
266
+ }
267
+ .ngg-related-gallery img {
268
+ float: left;
269
+ }
270
+
271
+ /* ----------- Masonry style -------------*/
272
+
273
+ /* The transitions when the image is loaded. These are CSS3 transitions. */
274
+ .brick img {
275
+ transition: 1s;
276
+ opacity: 0;
277
+ width: 100% !important;
278
+ height: auto !important;
279
+ }
280
+
281
+ /*!
282
+ Animate.css - http://daneden.me/animate
283
+ Licensed under the MIT license - http://opensource.org/licenses/MIT
284
+
285
+ Copyright (c) 2014 Daniel Eden
286
+ */
287
+
288
+ .animated {
289
+ -webkit-animation-duration: 1s;
290
+ animation-duration: 1s;
291
+ -webkit-animation-fill-mode: both;
292
+ animation-fill-mode: both;
293
+ }
294
+
295
+ .animated.infinite {
296
+ -webkit-animation-iteration-count: infinite;
297
+ animation-iteration-count: infinite;
298
+ }
299
+
300
+ .animated.hinge {
301
+ -webkit-animation-duration: 2s;
302
+ animation-duration: 2s;
303
+ }
304
+
305
+ @-webkit-keyframes bounce {
306
+ 0%, 20%, 53%, 80%, 100% {
307
+ -webkit-transition-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
308
+ transition-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
309
+ -webkit-transform: translate3d(0,0,0);
310
+ transform: translate3d(0,0,0);
311
+ }
312
+
313
+ 40%, 43% {
314
+ -webkit-transition-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060);
315
+ transition-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060);
316
+ -webkit-transform: translate3d(0, -30px, 0);
317
+ transform: translate3d(0, -30px, 0);
318
+ }
319
+
320
+ 70% {
321
+ -webkit-transition-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060);
322
+ transition-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060);
323
+ -webkit-transform: translate3d(0, -15px, 0);
324
+ transform: translate3d(0, -15px, 0);
325
+ }
326
+
327
+ 90% {
328
+ -webkit-transform: translate3d(0,-4px,0);
329
+ transform: translate3d(0,-4px,0);
330
+ }
331
+ }
332
+
333
+ @keyframes bounce {
334
+ 0%, 20%, 53%, 80%, 100% {
335
+ -webkit-transition-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
336
+ transition-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
337
+ -webkit-transform: translate3d(0,0,0);
338
+ transform: translate3d(0,0,0);
339
+ }
340
+
341
+ 40%, 43% {
342
+ -webkit-transition-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060);
343
+ transition-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060);
344
+ -webkit-transform: translate3d(0, -30px, 0);
345
+ transform: translate3d(0, -30px, 0);
346
+ }
347
+
348
+ 70% {
349
+ -webkit-transition-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060);
350
+ transition-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060);
351
+ -webkit-transform: translate3d(0, -15px, 0);
352
+ transform: translate3d(0, -15px, 0);
353
+ }
354
+
355
+ 90% {
356
+ -webkit-transform: translate3d(0,-4px,0);
357
+ transform: translate3d(0,-4px,0);
358
+ }
359
+ }
360
+
361
+ .bounce {
362
+ -webkit-animation-name: bounce;
363
+ animation-name: bounce;
364
+ -webkit-transform-origin: center bottom;
365
+ -ms-transform-origin: center bottom;
366
+ transform-origin: center bottom;
367
+ }
368
+
369
+ @-webkit-keyframes flash {
370
+ 0%, 50%, 100% {
371
+ opacity: 1;
372
+ }
373
+
374
+ 25%, 75% {
375
+ opacity: 0;
376
+ }
377
+ }
378
+
379
+ @keyframes flash {
380
+ 0%, 50%, 100% {
381
+ opacity: 1;
382
+ }
383
+
384
+ 25%, 75% {
385
+ opacity: 0;
386
+ }
387
+ }
388
+
389
+ .flash {
390
+ -webkit-animation-name: flash;
391
+ animation-name: flash;
392
+ }
393
+
394
+ /* originally authored by Nick Pettit - https://github.com/nickpettit/glide */
395
+
396
+ @-webkit-keyframes pulse {
397
+ 0% {
398
+ -webkit-transform: scale3d(1, 1, 1);
399
+ transform: scale3d(1, 1, 1);
400
+ }
401
+
402
+ 50% {
403
+ -webkit-transform: scale3d(1.05, 1.05, 1.05);
404
+ transform: scale3d(1.05, 1.05, 1.05);
405
+ }
406
+
407
+ 100% {
408
+ -webkit-transform: scale3d(1, 1, 1);
409
+ transform: scale3d(1, 1, 1);
410
+ }
411
+ }
412
+
413
+ @keyframes pulse {
414
+ 0% {
415
+ -webkit-transform: scale3d(1, 1, 1);
416
+ transform: scale3d(1, 1, 1);
417
+ }
418
+
419
+ 50% {
420
+ -webkit-transform: scale3d(1.05, 1.05, 1.05);
421
+ transform: scale3d(1.05, 1.05, 1.05);
422
+ }
423
+
424
+ 100% {
425
+ -webkit-transform: scale3d(1, 1, 1);
426
+ transform: scale3d(1, 1, 1);
427
+ }
428
+ }
429
+
430
+ .pulse {
431
+ -webkit-animation-name: pulse;
432
+ animation-name: pulse;
433
+ }
434
+
435
+ @-webkit-keyframes rubberBand {
436
+ 0% {
437
+ -webkit-transform: scale3d(1, 1, 1);
438
+ transform: scale3d(1, 1, 1);
439
+ }
440
+
441
+ 30% {
442
+ -webkit-transform: scale3d(1.25, 0.75, 1);
443
+ transform: scale3d(1.25, 0.75, 1);
444
+ }
445
+
446
+ 40% {
447
+ -webkit-transform: scale3d(0.75, 1.25, 1);
448
+ transform: scale3d(0.75, 1.25, 1);
449
+ }
450
+
451
+ 50% {
452
+ -webkit-transform: scale3d(1.15, 0.85, 1);
453
+ transform: scale3d(1.15, 0.85, 1);
454
+ }
455
+
456
+ 65% {
457
+ -webkit-transform: scale3d(.95, 1.05, 1);
458
+ transform: scale3d(.95, 1.05, 1);
459
+ }
460
+
461
+ 75% {
462
+ -webkit-transform: scale3d(1.05, .95, 1);
463
+ transform: scale3d(1.05, .95, 1);
464
+ }
465
+
466
+ 100% {
467
+ -webkit-transform: scale3d(1, 1, 1);
468
+ transform: scale3d(1, 1, 1);
469
+ }
470
+ }
471
+
472
+ @keyframes rubberBand {
473
+ 0% {
474
+ -webkit-transform: scale3d(1, 1, 1);
475
+ transform: scale3d(1, 1, 1);
476
+ }
477
+
478
+ 30% {
479
+ -webkit-transform: scale3d(1.25, 0.75, 1);
480
+ transform: scale3d(1.25, 0.75, 1);
481
+ }
482
+
483
+ 40% {
484
+ -webkit-transform: scale3d(0.75, 1.25, 1);
485
+ transform: scale3d(0.75, 1.25, 1);
486
+ }
487
+
488
+ 50% {
489
+ -webkit-transform: scale3d(1.15, 0.85, 1);
490
+ transform: scale3d(1.15, 0.85, 1);
491
+ }
492
+
493
+ 65% {
494
+ -webkit-transform: scale3d(.95, 1.05, 1);
495
+ transform: scale3d(.95, 1.05, 1);
496
+ }
497
+
498
+ 75% {
499
+ -webkit-transform: scale3d(1.05, .95, 1);
500
+ transform: scale3d(1.05, .95, 1);
501
+ }
502
+
503
+ 100% {
504
+ -webkit-transform: scale3d(1, 1, 1);
505
+ transform: scale3d(1, 1, 1);
506
+ }
507
+ }
508
+
509
+ .rubberBand {
510
+ -webkit-animation-name: rubberBand;
511
+ animation-name: rubberBand;
512
+ }
513
+
514
+ @-webkit-keyframes shake {
515
+ 0%, 100% {
516
+ -webkit-transform: translate3d(0, 0, 0);
517
+ transform: translate3d(0, 0, 0);
518
+ }
519
+
520
+ 10%, 30%, 50%, 70%, 90% {
521
+ -webkit-transform: translate3d(-10px, 0, 0);
522
+ transform: translate3d(-10px, 0, 0);
523
+ }
524
+
525
+ 20%, 40%, 60%, 80% {
526
+ -webkit-transform: translate3d(10px, 0, 0);
527
+ transform: translate3d(10px, 0, 0);
528
+ }
529
+ }
530
+
531
+ @keyframes shake {
532
+ 0%, 100% {
533
+ -webkit-transform: translate3d(0, 0, 0);
534
+ transform: translate3d(0, 0, 0);
535
+ }
536
+
537
+ 10%, 30%, 50%, 70%, 90% {
538
+ -webkit-transform: translate3d(-10px, 0, 0);
539
+ transform: translate3d(-10px, 0, 0);
540
+ }
541
+
542
+ 20%, 40%, 60%, 80% {
543
+ -webkit-transform: translate3d(10px, 0, 0);
544
+ transform: translate3d(10px, 0, 0);
545
+ }
546
+ }
547
+
548
+ .shake {
549
+ -webkit-animation-name: shake;
550
+ animation-name: shake;
551
+ }
552
+
553
+ @-webkit-keyframes swing {
554
+ 20% {
555
+ -webkit-transform: rotate3d(0, 0, 1, 15deg);
556
+ transform: rotate3d(0, 0, 1, 15deg);
557
+ }
558
+
559
+ 40% {
560
+ -webkit-transform: rotate3d(0, 0, 1, -10deg);
561
+ transform: rotate3d(0, 0, 1, -10deg);
562
+ }
563
+
564
+ 60% {
565
+ -webkit-transform: rotate3d(0, 0, 1, 5deg);
566
+ transform: rotate3d(0, 0, 1, 5deg);
567
+ }
568
+
569
+ 80% {
570
+ -webkit-transform: rotate3d(0, 0, 1, -5deg);
571
+ transform: rotate3d(0, 0, 1, -5deg);
572
+ }
573
+
574
+ 100% {
575
+ -webkit-transform: rotate3d(0, 0, 1, 0deg);
576
+ transform: rotate3d(0, 0, 1, 0deg);
577
+ }
578
+ }
579
+
580
+ @keyframes swing {
581
+ 20% {
582
+ -webkit-transform: rotate3d(0, 0, 1, 15deg);
583
+ transform: rotate3d(0, 0, 1, 15deg);
584
+ }
585
+
586
+ 40% {
587
+ -webkit-transform: rotate3d(0, 0, 1, -10deg);
588
+ transform: rotate3d(0, 0, 1, -10deg);
589
+ }
590
+
591
+ 60% {
592
+ -webkit-transform: rotate3d(0, 0, 1, 5deg);
593
+ transform: rotate3d(0, 0, 1, 5deg);
594
+ }
595
+
596
+ 80% {
597
+ -webkit-transform: rotate3d(0, 0, 1, -5deg);
598
+ transform: rotate3d(0, 0, 1, -5deg);
599
+ }
600
+
601
+ 100% {
602
+ -webkit-transform: rotate3d(0, 0, 1, 0deg);
603
+ transform: rotate3d(0, 0, 1, 0deg);
604
+ }
605
+ }
606
+
607
+ .swing {
608
+ -webkit-transform-origin: top center;
609
+ -ms-transform-origin: top center;
610
+ transform-origin: top center;
611
+ -webkit-animation-name: swing;
612
+ animation-name: swing;
613
+ }
614
+
615
+ @-webkit-keyframes tada {
616
+ 0% {
617
+ -webkit-transform: scale3d(1, 1, 1);
618
+ transform: scale3d(1, 1, 1);
619
+ }
620
+
621
+ 10%, 20% {
622
+ -webkit-transform: scale3d(.9, .9, .9) rotate3d(0, 0, 1, -3deg);
623
+ transform: scale3d(.9, .9, .9) rotate3d(0, 0, 1, -3deg);
624
+ }
625
+
626
+ 30%, 50%, 70%, 90% {
627
+ -webkit-transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, 3deg);
628
+ transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, 3deg);
629
+ }
630
+
631
+ 40%, 60%, 80% {
632
+ -webkit-transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, -3deg);
633
+ transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, -3deg);
634
+ }
635
+
636
+ 100% {
637
+ -webkit-transform: scale3d(1, 1, 1);
638
+ transform: scale3d(1, 1, 1);
639
+ }
640
+ }
641
+
642
+ @keyframes tada {
643
+ 0% {
644
+ -webkit-transform: scale3d(1, 1, 1);
645
+ transform: scale3d(1, 1, 1);
646
+ }
647
+
648
+ 10%, 20% {
649
+ -webkit-transform: scale3d(.9, .9, .9) rotate3d(0, 0, 1, -3deg);
650
+ transform: scale3d(.9, .9, .9) rotate3d(0, 0, 1, -3deg);
651
+ }
652
+
653
+ 30%, 50%, 70%, 90% {
654
+ -webkit-transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, 3deg);
655
+ transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, 3deg);
656
+ }
657
+
658
+ 40%, 60%, 80% {
659
+ -webkit-transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, -3deg);
660
+ transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, -3deg);
661
+ }
662
+
663
+ 100% {
664
+ -webkit-transform: scale3d(1, 1, 1);
665
+ transform: scale3d(1, 1, 1);
666
+ }
667
+ }
668
+
669
+ .tada {
670
+ -webkit-animation-name: tada;
671
+ animation-name: tada;
672
+ }
673
+
674
+ /* originally authored by Nick Pettit - https://github.com/nickpettit/glide */
675
+
676
+ @-webkit-keyframes wobble {
677
+ 0% {
678
+ -webkit-transform: none;
679
+ transform: none;
680
+ }
681
+
682
+ 15% {
683
+ -webkit-transform: translate3d(-25%, 0, 0) rotate3d(0, 0, 1, -5deg);
684
+ transform: translate3d(-25%, 0, 0) rotate3d(0, 0, 1, -5deg);
685
+ }
686
+
687
+ 30% {
688
+ -webkit-transform: translate3d(20%, 0, 0) rotate3d(0, 0, 1, 3deg);
689
+ transform: translate3d(20%, 0, 0) rotate3d(0, 0, 1, 3deg);
690
+ }
691
+
692
+ 45% {
693
+ -webkit-transform: translate3d(-15%, 0, 0) rotate3d(0, 0, 1, -3deg);
694
+ transform: translate3d(-15%, 0, 0) rotate3d(0, 0, 1, -3deg);
695
+ }
696
+
697
+ 60% {
698
+ -webkit-transform: translate3d(10%, 0, 0) rotate3d(0, 0, 1, 2deg);
699
+ transform: translate3d(10%, 0, 0) rotate3d(0, 0, 1, 2deg);
700
+ }
701
+
702
+ 75% {
703
+ -webkit-transform: translate3d(-5%, 0, 0) rotate3d(0, 0, 1, -1deg);
704
+ transform: translate3d(-5%, 0, 0) rotate3d(0, 0, 1, -1deg);
705
+ }
706
+
707
+ 100% {
708
+ -webkit-transform: none;
709
+ transform: none;
710
+ }
711
+ }
712
+
713
+ @keyframes wobble {
714
+ 0% {
715
+ -webkit-transform: none;
716
+ transform: none;
717
+ }
718
+
719
+ 15% {
720
+ -webkit-transform: translate3d(-25%, 0, 0) rotate3d(0, 0, 1, -5deg);
721
+ transform: translate3d(-25%, 0, 0) rotate3d(0, 0, 1, -5deg);
722
+ }
723
+
724
+ 30% {
725
+ -webkit-transform: translate3d(20%, 0, 0) rotate3d(0, 0, 1, 3deg);
726
+ transform: translate3d(20%, 0, 0) rotate3d(0, 0, 1, 3deg);
727
+ }
728
+
729
+ 45% {
730
+ -webkit-transform: translate3d(-15%, 0, 0) rotate3d(0, 0, 1, -3deg);
731
+ transform: translate3d(-15%, 0, 0) rotate3d(0, 0, 1, -3deg);
732
+ }
733
+
734
+ 60% {
735
+ -webkit-transform: translate3d(10%, 0, 0) rotate3d(0, 0, 1, 2deg);
736
+ transform: translate3d(10%, 0, 0) rotate3d(0, 0, 1, 2deg);
737
+ }
738
+
739
+ 75% {
740
+ -webkit-transform: translate3d(-5%, 0, 0) rotate3d(0, 0, 1, -1deg);
741
+ transform: translate3d(-5%, 0, 0) rotate3d(0, 0, 1, -1deg);
742
+ }
743
+
744
+ 100% {
745
+ -webkit-transform: none;
746
+ transform: none;
747
+ }
748
+ }
749
+
750
+ .wobble {
751
+ -webkit-animation-name: wobble;
752
+ animation-name: wobble;
753
+ }
754
+
755
+ @-webkit-keyframes bounceIn {
756
+ 0%, 20%, 40%, 60%, 80%, 100% {
757
+ -webkit-transition-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
758
+ transition-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
759
+ }
760
+
761
+ 0% {
762
+ opacity: 0;
763
+ -webkit-transform: scale3d(.3, .3, .3);
764
+ transform: scale3d(.3, .3, .3);
765
+ }
766
+
767
+ 20% {
768
+ -webkit-transform: scale3d(1.1, 1.1, 1.1);
769
+ transform: scale3d(1.1, 1.1, 1.1);
770
+ }
771
+
772
+ 40% {
773
+ -webkit-transform: scale3d(.9, .9, .9);
774
+ transform: scale3d(.9, .9, .9);
775
+ }
776
+
777
+ 60% {
778
+ opacity: 1;
779
+ -webkit-transform: scale3d(1.03, 1.03, 1.03);
780
+ transform: scale3d(1.03, 1.03, 1.03);
781
+ }
782
+
783
+ 80% {
784
+ -webkit-transform: scale3d(.97, .97, .97);
785
+ transform: scale3d(.97, .97, .97);
786
+ }
787
+
788
+ 100% {
789
+ opacity: 1;
790
+ -webkit-transform: scale3d(1, 1, 1);
791
+ transform: scale3d(1, 1, 1);
792
+ }
793
+ }
794
+
795
+ @keyframes bounceIn {
796
+ 0%, 20%, 40%, 60%, 80%, 100% {
797
+ -webkit-transition-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
798
+ transition-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
799
+ }
800
+
801
+ 0% {
802
+ opacity: 0;
803
+ -webkit-transform: scale3d(.3, .3, .3);
804
+ transform: scale3d(.3, .3, .3);
805
+ }
806
+
807
+ 20% {
808
+ -webkit-transform: scale3d(1.1, 1.1, 1.1);
809
+ transform: scale3d(1.1, 1.1, 1.1);
810
+ }
811
+
812
+ 40% {
813
+ -webkit-transform: scale3d(.9, .9, .9);
814
+ transform: scale3d(.9, .9, .9);
815
+ }
816
+
817
+ 60% {
818
+ opacity: 1;
819
+ -webkit-transform: scale3d(1.03, 1.03, 1.03);
820
+ transform: scale3d(1.03, 1.03, 1.03);
821
+ }
822
+
823
+ 80% {
824
+ -webkit-transform: scale3d(.97, .97, .97);
825
+ transform: scale3d(.97, .97, .97);
826
+ }
827
+
828
+ 100% {
829
+ opacity: 1;
830
+ -webkit-transform: scale3d(1, 1, 1);
831
+ transform: scale3d(1, 1, 1);
832
+ }
833
+ }
834
+
835
+ .bounceIn {
836
+ -webkit-animation-name: bounceIn;
837
+ animation-name: bounceIn;
838
+ -webkit-animation-duration: .75s;
839
+ animation-duration: .75s;
840
+ }
841
+
842
+ @-webkit-keyframes bounceInDown {
843
+ 0%, 60%, 75%, 90%, 100% {
844
+ -webkit-transition-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
845
+ transition-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
846
+ }
847
+
848
+ 0% {
849
+ opacity: 0;
850
+ -webkit-transform: translate3d(0, -3000px, 0);
851
+ transform: translate3d(0, -3000px, 0);
852
+ }
853
+
854
+ 60% {
855
+ opacity: 1;
856
+ -webkit-transform: translate3d(0, 25px, 0);
857
+ transform: translate3d(0, 25px, 0);
858
+ }
859
+
860
+ 75% {
861
+ -webkit-transform: translate3d(0, -10px, 0);
862
+ transform: translate3d(0, -10px, 0);
863
+ }
864
+
865
+ 90% {
866
+ -webkit-transform: translate3d(0, 5px, 0);
867
+ transform: translate3d(0, 5px, 0);
868
+ }
869
+
870
+ 100% {
871
+ -webkit-transform: none;
872
+ transform: none;
873
+ }
874
+ }
875
+
876
+ @keyframes bounceInDown {
877
+ 0%, 60%, 75%, 90%, 100% {
878
+ -webkit-transition-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
879
+ transition-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
880
+ }
881
+
882
+ 0% {
883
+ opacity: 0;
884
+ -webkit-transform: translate3d(0, -3000px, 0);
885
+ transform: translate3d(0, -3000px, 0);
886
+ }
887
+
888
+ 60% {
889
+ opacity: 1;
890
+ -webkit-transform: translate3d(0, 25px, 0);
891
+ transform: translate3d(0, 25px, 0);
892
+ }
893
+
894
+ 75% {
895
+ -webkit-transform: translate3d(0, -10px, 0);
896
+ transform: translate3d(0, -10px, 0);
897
+ }
898
+
899
+ 90% {
900
+ -webkit-transform: translate3d(0, 5px, 0);
901
+ transform: translate3d(0, 5px, 0);
902
+ }
903
+
904
+ 100% {
905
+ -webkit-transform: none;
906
+ transform: none;
907
+ }
908
+ }
909
+
910
+ .bounceInDown {
911
+ -webkit-animation-name: bounceInDown;
912
+ animation-name: bounceInDown;
913
+ }
914
+
915
+ @-webkit-keyframes bounceInLeft {
916
+ 0%, 60%, 75%, 90%, 100% {
917
+ -webkit-transition-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
918
+ transition-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
919
+ }
920
+
921
+ 0% {
922
+ opacity: 0;
923
+ -webkit-transform: translate3d(-3000px, 0, 0);
924
+ transform: translate3d(-3000px, 0, 0);
925
+ }
926
+
927
+ 60% {
928
+ opacity: 1;
929
+ -webkit-transform: translate3d(25px, 0, 0);
930
+ transform: translate3d(25px, 0, 0);
931
+ }
932
+
933
+ 75% {
934
+ -webkit-transform: translate3d(-10px, 0, 0);
935
+ transform: translate3d(-10px, 0, 0);
936
+ }
937
+
938
+ 90% {
939
+ -webkit-transform: translate3d(5px, 0, 0);
940
+ transform: translate3d(5px, 0, 0);
941
+ }
942
+
943
+ 100% {
944
+ -webkit-transform: none;
945
+ transform: none;
946
+ }
947
+ }
948
+
949
+ @keyframes bounceInLeft {
950
+ 0%, 60%, 75%, 90%, 100% {
951
+ -webkit-transition-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
952
+ transition-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
953
+ }
954
+
955
+ 0% {
956
+ opacity: 0;
957
+ -webkit-transform: translate3d(-3000px, 0, 0);
958
+ transform: translate3d(-3000px, 0, 0);
959
+ }
960
+
961
+ 60% {
962
+ opacity: 1;
963
+ -webkit-transform: translate3d(25px, 0, 0);
964
+ transform: translate3d(25px, 0, 0);
965
+ }
966
+
967
+ 75% {
968
+ -webkit-transform: translate3d(-10px, 0, 0);
969
+ transform: translate3d(-10px, 0, 0);
970
+ }
971
+
972
+ 90% {
973
+ -webkit-transform: translate3d(5px, 0, 0);
974
+ transform: translate3d(5px, 0, 0);
975
+ }
976
+
977
+ 100% {
978
+ -webkit-transform: none;
979
+ transform: none;
980
+ }
981
+ }
982
+
983
+ .bounceInLeft {
984
+ -webkit-animation-name: bounceInLeft;
985
+ animation-name: bounceInLeft;
986
+ }
987
+
988
+ @-webkit-keyframes bounceInRight {
989
+ 0%, 60%, 75%, 90%, 100% {
990
+ -webkit-transition-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
991
+ transition-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
992
+ }
993
+
994
+ 0% {
995
+ opacity: 0;
996
+ -webkit-transform: translate3d(3000px, 0, 0);
997
+ transform: translate3d(3000px, 0, 0);
998
+ }
999
+
1000
+ 60% {
1001
+ opacity: 1;
1002
+ -webkit-transform: translate3d(-25px, 0, 0);
1003
+ transform: translate3d(-25px, 0, 0);
1004
+ }
1005
+
1006
+ 75% {
1007
+ -webkit-transform: translate3d(10px, 0, 0);
1008
+ transform: translate3d(10px, 0, 0);
1009
+ }
1010
+
1011
+ 90% {
1012
+ -webkit-transform: translate3d(-5px, 0, 0);
1013
+ transform: translate3d(-5px, 0, 0);
1014
+ }
1015
+
1016
+ 100% {
1017
+ -webkit-transform: none;
1018
+ transform: none;
1019
+ }
1020
+ }
1021
+
1022
+ @keyframes bounceInRight {
1023
+ 0%, 60%, 75%, 90%, 100% {
1024
+ -webkit-transition-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
1025
+ transition-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
1026
+ }
1027
+
1028
+ 0% {
1029
+ opacity: 0;
1030
+ -webkit-transform: translate3d(3000px, 0, 0);
1031
+ transform: translate3d(3000px, 0, 0);
1032
+ }
1033
+
1034
+ 60% {
1035
+ opacity: 1;
1036
+ -webkit-transform: translate3d(-25px, 0, 0);
1037
+ transform: translate3d(-25px, 0, 0);
1038
+ }
1039
+
1040
+ 75% {
1041
+ -webkit-transform: translate3d(10px, 0, 0);
1042
+ transform: translate3d(10px, 0, 0);
1043
+ }
1044
+
1045
+ 90% {
1046
+ -webkit-transform: translate3d(-5px, 0, 0);
1047
+ transform: translate3d(-5px, 0, 0);
1048
+ }
1049
+
1050
+ 100% {
1051
+ -webkit-transform: none;
1052
+ transform: none;
1053
+ }
1054
+ }
1055
+
1056
+ .bounceInRight {
1057
+ -webkit-animation-name: bounceInRight;
1058
+ animation-name: bounceInRight;
1059
+ }
1060
+
1061
+ @-webkit-keyframes bounceInUp {
1062
+ 0%, 60%, 75%, 90%, 100% {
1063
+ -webkit-transition-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
1064
+ transition-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
1065
+ }
1066
+
1067
+ 0% {
1068
+ opacity: 0;
1069
+ -webkit-transform: translate3d(0, 3000px, 0);
1070
+ transform: translate3d(0, 3000px, 0);
1071
+ }
1072
+
1073
+ 60% {
1074
+ opacity: 1;
1075
+ -webkit-transform: translate3d(0, -20px, 0);
1076
+ transform: translate3d(0, -20px, 0);
1077
+ }
1078
+
1079
+ 75% {
1080
+ -webkit-transform: translate3d(0, 10px, 0);
1081
+ transform: translate3d(0, 10px, 0);
1082
+ }
1083
+
1084
+ 90% {
1085
+ -webkit-transform: translate3d(0, -5px, 0);
1086
+ transform: translate3d(0, -5px, 0);
1087
+ }
1088
+
1089
+ 100% {
1090
+ -webkit-transform: translate3d(0, 0, 0);
1091
+ transform: translate3d(0, 0, 0);
1092
+ }
1093
+ }
1094
+
1095
+ @keyframes bounceInUp {
1096
+ 0%, 60%, 75%, 90%, 100% {
1097
+ -webkit-transition-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
1098
+ transition-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
1099
+ }
1100
+
1101
+ 0% {
1102
+ opacity: 0;
1103
+ -webkit-transform: translate3d(0, 3000px, 0);
1104
+ transform: translate3d(0, 3000px, 0);
1105
+ }
1106
+
1107
+ 60% {
1108
+ opacity: 1;
1109
+ -webkit-transform: translate3d(0, -20px, 0);
1110
+ transform: translate3d(0, -20px, 0);
1111
+ }
1112
+
1113
+ 75% {
1114
+ -webkit-transform: translate3d(0, 10px, 0);
1115
+ transform: translate3d(0, 10px, 0);
1116
+ }
1117
+
1118
+ 90% {
1119
+ -webkit-transform: translate3d(0, -5px, 0);
1120
+ transform: translate3d(0, -5px, 0);
1121
+ }
1122
+
1123
+ 100% {
1124
+ -webkit-transform: translate3d(0, 0, 0);
1125
+ transform: translate3d(0, 0, 0);
1126
+ }
1127
+ }
1128
+
1129
+ .bounceInUp {
1130
+ -webkit-animation-name: bounceInUp;
1131
+ animation-name: bounceInUp;
1132
+ }
1133
+
1134
+ @-webkit-keyframes bounceOut {
1135
+ 20% {
1136
+ -webkit-transform: scale3d(.9, .9, .9);
1137
+ transform: scale3d(.9, .9, .9);
1138
+ }
1139
+
1140
+ 50%, 55% {
1141
+ opacity: 1;
1142
+ -webkit-transform: scale3d(1.1, 1.1, 1.1);
1143
+ transform: scale3d(1.1, 1.1, 1.1);
1144
+ }
1145
+
1146
+ 100% {
1147
+ opacity: 0;
1148
+ -webkit-transform: scale3d(.3, .3, .3);
1149
+ transform: scale3d(.3, .3, .3);
1150
+ }
1151
+ }
1152
+
1153
+ @keyframes bounceOut {
1154
+ 20% {
1155
+ -webkit-transform: scale3d(.9, .9, .9);
1156
+ transform: scale3d(.9, .9, .9);
1157
+ }
1158
+
1159
+ 50%, 55% {
1160
+ opacity: 1;
1161
+ -webkit-transform: scale3d(1.1, 1.1, 1.1);
1162
+ transform: scale3d(1.1, 1.1, 1.1);
1163
+ }
1164
+
1165
+ 100% {
1166
+ opacity: 0;
1167
+ -webkit-transform: scale3d(.3, .3, .3);
1168
+ transform: scale3d(.3, .3, .3);
1169
+ }
1170
+ }
1171
+
1172
+ .bounceOut {
1173
+ -webkit-animation-name: bounceOut;
1174
+ animation-name: bounceOut;
1175
+ -webkit-animation-duration: .75s;
1176
+ animation-duration: .75s;
1177
+ }
1178
+
1179
+ @-webkit-keyframes bounceOutDown {
1180
+ 20% {
1181
+ -webkit-transform: translate3d(0, 10px, 0);
1182
+ transform: translate3d(0, 10px, 0);
1183
+ }
1184
+
1185
+ 40%, 45% {
1186
+ opacity: 1;
1187
+ -webkit-transform: translate3d(0, -20px, 0);
1188
+ transform: translate3d(0, -20px, 0);
1189
+ }
1190
+
1191
+ 100% {
1192
+ opacity: 0;
1193
+ -webkit-transform: translate3d(0, 2000px, 0);
1194
+ transform: translate3d(0, 2000px, 0);
1195
+ }
1196
+ }
1197
+
1198
+ @keyframes bounceOutDown {
1199
+ 20% {
1200
+ -webkit-transform: translate3d(0, 10px, 0);
1201
+ transform: translate3d(0, 10px, 0);
1202
+ }
1203
+
1204
+ 40%, 45% {
1205
+ opacity: 1;
1206
+ -webkit-transform: translate3d(0, -20px, 0);
1207
+ transform: translate3d(0, -20px, 0);
1208
+ }
1209
+
1210
+ 100% {
1211
+ opacity: 0;
1212
+ -webkit-transform: translate3d(0, 2000px, 0);
1213
+ transform: translate3d(0, 2000px, 0);
1214
+ }
1215
+ }
1216
+
1217
+ .bounceOutDown {
1218
+ -webkit-animation-name: bounceOutDown;
1219
+ animation-name: bounceOutDown;
1220
+ }
1221
+
1222
+ @-webkit-keyframes bounceOutLeft {
1223
+ 20% {
1224
+ opacity: 1;
1225
+ -webkit-transform: translate3d(20px, 0, 0);
1226
+ transform: translate3d(20px, 0, 0);
1227
+ }
1228
+
1229
+ 100% {
1230
+ opacity: 0;
1231
+ -webkit-transform: translate3d(-2000px, 0, 0);
1232
+ transform: translate3d(-2000px, 0, 0);
1233
+ }
1234
+ }
1235
+
1236
+ @keyframes bounceOutLeft {
1237
+ 20% {
1238
+ opacity: 1;
1239
+ -webkit-transform: translate3d(20px, 0, 0);
1240
+ transform: translate3d(20px, 0, 0);
1241
+ }
1242
+
1243
+ 100% {
1244
+ opacity: 0;
1245
+ -webkit-transform: translate3d(-2000px, 0, 0);
1246
+ transform: translate3d(-2000px, 0, 0);
1247
+ }
1248
+ }
1249
+
1250
+ .bounceOutLeft {
1251
+ -webkit-animation-name: bounceOutLeft;
1252
+ animation-name: bounceOutLeft;
1253
+ }
1254
+
1255
+ @-webkit-keyframes bounceOutRight {
1256
+ 20% {
1257
+ opacity: 1;
1258
+ -webkit-transform: translate3d(-20px, 0, 0);
1259
+ transform: translate3d(-20px, 0, 0);
1260
+ }
1261
+
1262
+ 100% {
1263
+ opacity: 0;
1264
+ -webkit-transform: translate3d(2000px, 0, 0);
1265
+ transform: translate3d(2000px, 0, 0);
1266
+ }
1267
+ }
1268
+
1269
+ @keyframes bounceOutRight {
1270
+ 20% {
1271
+ opacity: 1;
1272
+ -webkit-transform: translate3d(-20px, 0, 0);
1273
+ transform: translate3d(-20px, 0, 0);
1274
+ }
1275
+
1276
+ 100% {
1277
+ opacity: 0;
1278
+ -webkit-transform: translate3d(2000px, 0, 0);
1279
+ transform: translate3d(2000px, 0, 0);
1280
+ }
1281
+ }
1282
+
1283
+ .bounceOutRight {
1284
+ -webkit-animation-name: bounceOutRight;
1285
+ animation-name: bounceOutRight;
1286
+ }
1287
+
1288
+ @-webkit-keyframes bounceOutUp {
1289
+ 20% {
1290
+ -webkit-transform: translate3d(0, -10px, 0);
1291
+ transform: translate3d(0, -10px, 0);
1292
+ }
1293
+
1294
+ 40%, 45% {
1295
+ opacity: 1;
1296
+ -webkit-transform: translate3d(0, 20px, 0);
1297
+ transform: translate3d(0, 20px, 0);
1298
+ }
1299
+
1300
+ 100% {
1301
+ opacity: 0;
1302
+ -webkit-transform: translate3d(0, -2000px, 0);
1303
+ transform: translate3d(0, -2000px, 0);
1304
+ }
1305
+ }
1306
+
1307
+ @keyframes bounceOutUp {
1308
+ 20% {
1309
+ -webkit-transform: translate3d(0, -10px, 0);
1310
+ transform: translate3d(0, -10px, 0);
1311
+ }
1312
+
1313
+ 40%, 45% {
1314
+ opacity: 1;
1315
+ -webkit-transform: translate3d(0, 20px, 0);
1316
+ transform: translate3d(0, 20px, 0);
1317
+ }
1318
+
1319
+ 100% {
1320
+ opacity: 0;
1321
+ -webkit-transform: translate3d(0, -2000px, 0);
1322
+ transform: translate3d(0, -2000px, 0);
1323
+ }
1324
+ }
1325
+
1326
+ .bounceOutUp {
1327
+ -webkit-animation-name: bounceOutUp;
1328
+ animation-name: bounceOutUp;
1329
+ }
1330
+
1331
+ @-webkit-keyframes fadeIn {
1332
+ 0% {opacity: 0;}
1333
+ 100% {opacity: 1;}
1334
+ }
1335
+
1336
+ @keyframes fadeIn {
1337
+ 0% {opacity: 0;}
1338
+ 100% {opacity: 1;}
1339
+ }
1340
+
1341
+ .fadeIn {
1342
+ -webkit-animation-name: fadeIn;
1343
+ animation-name: fadeIn;
1344
+ }
1345
+
1346
+ @-webkit-keyframes fadeInDown {
1347
+ 0% {
1348
+ opacity: 0;
1349
+ -webkit-transform: translate3d(0, -100%, 0);
1350
+ transform: translate3d(0, -100%, 0);
1351
+ }
1352
+
1353
+ 100% {
1354
+ opacity: 1;
1355
+ -webkit-transform: none;
1356
+ transform: none;
1357
+ }
1358
+ }
1359
+
1360
+ @keyframes fadeInDown {
1361
+ 0% {
1362
+ opacity: 0;
1363
+ -webkit-transform: translate3d(0, -100%, 0);
1364
+ transform: translate3d(0, -100%, 0);
1365
+ }
1366
+
1367
+ 100% {
1368
+ opacity: 1;
1369
+ -webkit-transform: none;
1370
+ transform: none;
1371
+ }
1372
+ }
1373
+
1374
+ .fadeInDown {
1375
+ -webkit-animation-name: fadeInDown;
1376
+ animation-name: fadeInDown;
1377
+ }
1378
+
1379
+ @-webkit-keyframes fadeInDownBig {
1380
+ 0% {
1381
+ opacity: 0;
1382
+ -webkit-transform: translate3d(0, -2000px, 0);
1383
+ transform: translate3d(0, -2000px, 0);
1384
+ }
1385
+
1386
+ 100% {
1387
+ opacity: 1;
1388
+ -webkit-transform: none;
1389
+ transform: none;
1390
+ }
1391
+ }
1392
+
1393
+ @keyframes fadeInDownBig {
1394
+ 0% {
1395
+ opacity: 0;
1396
+ -webkit-transform: translate3d(0, -2000px, 0);
1397
+ transform: translate3d(0, -2000px, 0);
1398
+ }
1399
+
1400
+ 100% {
1401
+ opacity: 1;
1402
+ -webkit-transform: none;
1403
+ transform: none;
1404
+ }
1405
+ }
1406
+
1407
+ .fadeInDownBig {
1408
+ -webkit-animation-name: fadeInDownBig;
1409
+ animation-name: fadeInDownBig;
1410
+ }
1411
+
1412
+ @-webkit-keyframes fadeInLeft {
1413
+ 0% {
1414
+ opacity: 0;
1415
+ -webkit-transform: translate3d(-100%, 0, 0);
1416
+ transform: translate3d(-100%, 0, 0);
1417
+ }
1418
+
1419
+ 100% {
1420
+ opacity: 1;
1421
+ -webkit-transform: none;
1422
+ transform: none;
1423
+ }
1424
+ }
1425
+
1426
+ @keyframes fadeInLeft {
1427
+ 0% {
1428
+ opacity: 0;
1429
+ -webkit-transform: translate3d(-100%, 0, 0);
1430
+ transform: translate3d(-100%, 0, 0);
1431
+ }
1432
+
1433
+ 100% {
1434
+ opacity: 1;
1435
+ -webkit-transform: none;
1436
+ transform: none;
1437
+ }
1438
+ }
1439
+
1440
+ .fadeInLeft {
1441
+ -webkit-animation-name: fadeInLeft;
1442
+ animation-name: fadeInLeft;
1443
+ }
1444
+
1445
+ @-webkit-keyframes fadeInLeftBig {
1446
+ 0% {
1447
+ opacity: 0;
1448
+ -webkit-transform: translate3d(-2000px, 0, 0);
1449
+ transform: translate3d(-2000px, 0, 0);
1450
+ }
1451
+
1452
+ 100% {
1453
+ opacity: 1;
1454
+ -webkit-transform: none;
1455
+ transform: none;
1456
+ }
1457
+ }
1458
+
1459
+ @keyframes fadeInLeftBig {
1460
+ 0% {
1461
+ opacity: 0;
1462
+ -webkit-transform: translate3d(-2000px, 0, 0);
1463
+ transform: translate3d(-2000px, 0, 0);
1464
+ }
1465
+
1466
+ 100% {
1467
+ opacity: 1;
1468
+ -webkit-transform: none;
1469
+ transform: none;
1470
+ }
1471
+ }
1472
+
1473
+ .fadeInLeftBig {
1474
+ -webkit-animation-name: fadeInLeftBig;
1475
+ animation-name: fadeInLeftBig;
1476
+ }
1477
+
1478
+ @-webkit-keyframes fadeInRight {
1479
+ 0% {
1480
+ opacity: 0;
1481
+ -webkit-transform: translate3d(100%, 0, 0);
1482
+ transform: translate3d(100%, 0, 0);
1483
+ }
1484
+
1485
+ 100% {
1486
+ opacity: 1;
1487
+ -webkit-transform: none;
1488
+ transform: none;
1489
+ }
1490
+ }
1491
+
1492
+ @keyframes fadeInRight {
1493
+ 0% {
1494
+ opacity: 0;
1495
+ -webkit-transform: translate3d(100%, 0, 0);
1496
+ transform: translate3d(100%, 0, 0);
1497
+ }
1498
+
1499
+ 100% {
1500
+ opacity: 1;
1501
+ -webkit-transform: none;
1502
+ transform: none;
1503
+ }
1504
+ }
1505
+
1506
+ .fadeInRight {
1507
+ -webkit-animation-name: fadeInRight;
1508
+ animation-name: fadeInRight;
1509
+ }
1510
+
1511
+ @-webkit-keyframes fadeInRightBig {
1512
+ 0% {
1513
+ opacity: 0;
1514
+ -webkit-transform: translate3d(2000px, 0, 0);
1515
+ transform: translate3d(2000px, 0, 0);
1516
+ }
1517
+
1518
+ 100% {
1519
+ opacity: 1;
1520
+ -webkit-transform: none;
1521
+ transform: none;
1522
+ }
1523
+ }
1524
+
1525
+ @keyframes fadeInRightBig {
1526
+ 0% {
1527
+ opacity: 0;
1528
+ -webkit-transform: translate3d(2000px, 0, 0);
1529
+ transform: translate3d(2000px, 0, 0);
1530
+ }
1531
+
1532
+ 100% {
1533
+ opacity: 1;
1534
+ -webkit-transform: none;
1535
+ transform: none;
1536
+ }
1537
+ }
1538
+
1539
+ .fadeInRightBig {
1540
+ -webkit-animation-name: fadeInRightBig;
1541
+ animation-name: fadeInRightBig;
1542
+ }
1543
+
1544
+ @-webkit-keyframes fadeInUp {
1545
+ 0% {
1546
+ opacity: 0;
1547
+ -webkit-transform: translate3d(0, 100%, 0);
1548
+ transform: translate3d(0, 100%, 0);
1549
+ }
1550
+
1551
+ 100% {
1552
+ opacity: 1;
1553
+ -webkit-transform: none;
1554
+ transform: none;
1555
+ }
1556
+ }
1557
+
1558
+ @keyframes fadeInUp {
1559
+ 0% {
1560
+ opacity: 0;
1561
+ -webkit-transform: translate3d(0, 100%, 0);
1562
+ transform: translate3d(0, 100%, 0);
1563
+ }
1564
+
1565
+ 100% {
1566
+ opacity: 1;
1567
+ -webkit-transform: none;
1568
+ transform: none;
1569
+ }
1570
+ }
1571
+
1572
+ .fadeInUp {
1573
+ -webkit-animation-name: fadeInUp;
1574
+ animation-name: fadeInUp;
1575
+ }
1576
+
1577
+ @-webkit-keyframes fadeInUpBig {
1578
+ 0% {
1579
+ opacity: 0;
1580
+ -webkit-transform: translate3d(0, 2000px, 0);
1581
+ transform: translate3d(0, 2000px, 0);
1582
+ }
1583
+
1584
+ 100% {
1585
+ opacity: 1;
1586
+ -webkit-transform: none;
1587
+ transform: none;
1588
+ }
1589
+ }
1590
+
1591
+ @keyframes fadeInUpBig {
1592
+ 0% {
1593
+ opacity: 0;
1594
+ -webkit-transform: translate3d(0, 2000px, 0);
1595
+ transform: translate3d(0, 2000px, 0);
1596
+ }
1597
+
1598
+ 100% {
1599
+ opacity: 1;
1600
+ -webkit-transform: none;
1601
+ transform: none;
1602
+ }
1603
+ }
1604
+
1605
+ .fadeInUpBig {
1606
+ -webkit-animation-name: fadeInUpBig;
1607
+ animation-name: fadeInUpBig;
1608
+ }
1609
+
1610
+ @-webkit-keyframes fadeOut {
1611
+ 0% {opacity: 1;}
1612
+ 100% {opacity: 0;}
1613
+ }
1614
+
1615
+ @keyframes fadeOut {
1616
+ 0% {opacity: 1;}
1617
+ 100% {opacity: 0;}
1618
+ }
1619
+
1620
+ .fadeOut {
1621
+ -webkit-animation-name: fadeOut;
1622
+ animation-name: fadeOut;
1623
+ }
1624
+
1625
+ @-webkit-keyframes fadeOutDown {
1626
+ 0% {
1627
+ opacity: 1;
1628
+ }
1629
+
1630
+ 100% {
1631
+ opacity: 0;
1632
+ -webkit-transform: translate3d(0, 100%, 0);
1633
+ transform: translate3d(0, 100%, 0);
1634
+ }
1635
+ }
1636
+
1637
+ @keyframes fadeOutDown {
1638
+ 0% {
1639
+ opacity: 1;
1640
+ }
1641
+
1642
+ 100% {
1643
+ opacity: 0;
1644
+ -webkit-transform: translate3d(0, 100%, 0);
1645
+ transform: translate3d(0, 100%, 0);
1646
+ }
1647
+ }
1648
+
1649
+ .fadeOutDown {
1650
+ -webkit-animation-name: fadeOutDown;
1651
+ animation-name: fadeOutDown;
1652
+ }
1653
+
1654
+ @-webkit-keyframes fadeOutDownBig {
1655
+ 0% {
1656
+ opacity: 1;
1657
+ }
1658
+
1659
+ 100% {
1660
+ opacity: 0;
1661
+ -webkit-transform: translate3d(0, 2000px, 0);
1662
+ transform: translate3d(0, 2000px, 0);
1663
+ }
1664
+ }
1665
+
1666
+ @keyframes fadeOutDownBig {
1667
+ 0% {
1668
+ opacity: 1;
1669
+ }
1670
+
1671
+ 100% {
1672
+ opacity: 0;
1673
+ -webkit-transform: translate3d(0, 2000px, 0);
1674
+ transform: translate3d(0, 2000px, 0);
1675
+ }
1676
+ }
1677
+
1678
+ .fadeOutDownBig {
1679
+ -webkit-animation-name: fadeOutDownBig;
1680
+ animation-name: fadeOutDownBig;
1681
+ }
1682
+
1683
+ @-webkit-keyframes fadeOutLeft {
1684
+ 0% {
1685
+ opacity: 1;
1686
+ }
1687
+
1688
+ 100% {
1689
+ opacity: 0;
1690
+ -webkit-transform: translate3d(-100%, 0, 0);
1691
+ transform: translate3d(-100%, 0, 0);
1692
+ }
1693
+ }
1694
+
1695
+ @keyframes fadeOutLeft {
1696
+ 0% {
1697
+ opacity: 1;
1698
+ }
1699
+
1700
+ 100% {
1701
+ opacity: 0;
1702
+ -webkit-transform: translate3d(-100%, 0, 0);
1703
+ transform: translate3d(-100%, 0, 0);
1704
+ }
1705
+ }
1706
+
1707
+ .fadeOutLeft {
1708
+ -webkit-animation-name: fadeOutLeft;
1709
+ animation-name: fadeOutLeft;
1710
+ }
1711
+
1712
+ @-webkit-keyframes fadeOutLeftBig {
1713
+ 0% {
1714
+ opacity: 1;
1715
+ }
1716
+
1717
+ 100% {
1718
+ opacity: 0;
1719
+ -webkit-transform: translate3d(-2000px, 0, 0);
1720
+ transform: translate3d(-2000px, 0, 0);
1721
+ }
1722
+ }
1723
+
1724
+ @keyframes fadeOutLeftBig {
1725
+ 0% {
1726
+ opacity: 1;
1727
+ }
1728
+
1729
+ 100% {
1730
+ opacity: 0;
1731
+ -webkit-transform: translate3d(-2000px, 0, 0);
1732
+ transform: translate3d(-2000px, 0, 0);
1733
+ }
1734
+ }
1735
+
1736
+ .fadeOutLeftBig {
1737
+ -webkit-animation-name: fadeOutLeftBig;
1738
+ animation-name: fadeOutLeftBig;
1739
+ }
1740
+
1741
+ @-webkit-keyframes fadeOutRight {
1742
+ 0% {
1743
+ opacity: 1;
1744
+ }
1745
+
1746
+ 100% {
1747
+ opacity: 0;
1748
+ -webkit-transform: translate3d(100%, 0, 0);
1749
+ transform: translate3d(100%, 0, 0);
1750
+ }
1751
+ }
1752
+
1753
+ @keyframes fadeOutRight {
1754
+ 0% {
1755
+ opacity: 1;
1756
+ }
1757
+
1758
+ 100% {
1759
+ opacity: 0;
1760
+ -webkit-transform: translate3d(100%, 0, 0);
1761
+ transform: translate3d(100%, 0, 0);
1762
+ }
1763
+ }
1764
+
1765
+ .fadeOutRight {
1766
+ -webkit-animation-name: fadeOutRight;
1767
+ animation-name: fadeOutRight;
1768
+ }
1769
+
1770
+ @-webkit-keyframes fadeOutRightBig {
1771
+ 0% {
1772
+ opacity: 1;
1773
+ }
1774
+
1775
+ 100% {
1776
+ opacity: 0;
1777
+ -webkit-transform: translate3d(2000px, 0, 0);
1778
+ transform: translate3d(2000px, 0, 0);
1779
+ }
1780
+ }
1781
+
1782
+ @keyframes fadeOutRightBig {
1783
+ 0% {
1784
+ opacity: 1;
1785
+ }
1786
+
1787
+ 100% {
1788
+ opacity: 0;
1789
+ -webkit-transform: translate3d(2000px, 0, 0);
1790
+ transform: translate3d(2000px, 0, 0);
1791
+ }
1792
+ }
1793
+
1794
+ .fadeOutRightBig {
1795
+ -webkit-animation-name: fadeOutRightBig;
1796
+ animation-name: fadeOutRightBig;
1797
+ }
1798
+
1799
+ @-webkit-keyframes fadeOutUp {
1800
+ 0% {
1801
+ opacity: 1;
1802
+ }
1803
+
1804
+ 100% {
1805
+ opacity: 0;
1806
+ -webkit-transform: translate3d(0, -100%, 0);
1807
+ transform: translate3d(0, -100%, 0);
1808
+ }
1809
+ }
1810
+
1811
+ @keyframes fadeOutUp {
1812
+ 0% {
1813
+ opacity: 1;
1814
+ }
1815
+
1816
+ 100% {
1817
+ opacity: 0;
1818
+ -webkit-transform: translate3d(0, -100%, 0);
1819
+ transform: translate3d(0, -100%, 0);
1820
+ }
1821
+ }
1822
+
1823
+ .fadeOutUp {
1824
+ -webkit-animation-name: fadeOutUp;
1825
+ animation-name: fadeOutUp;
1826
+ }
1827
+
1828
+ @-webkit-keyframes fadeOutUpBig {
1829
+ 0% {
1830
+ opacity: 1;
1831
+ }
1832
+
1833
+ 100% {
1834
+ opacity: 0;
1835
+ -webkit-transform: translate3d(0, -2000px, 0);
1836
+ transform: translate3d(0, -2000px, 0);
1837
+ }
1838
+ }
1839
+
1840
+ @keyframes fadeOutUpBig {
1841
+ 0% {
1842
+ opacity: 1;
1843
+ }
1844
+
1845
+ 100% {
1846
+ opacity: 0;
1847
+ -webkit-transform: translate3d(0, -2000px, 0);
1848
+ transform: translate3d(0, -2000px, 0);
1849
+ }
1850
+ }
1851
+
1852
+ .fadeOutUpBig {
1853
+ -webkit-animation-name: fadeOutUpBig;
1854
+ animation-name: fadeOutUpBig;
1855
+ }
1856
+
1857
+ @-webkit-keyframes flip {
1858
+ 0% {
1859
+ -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -360deg);
1860
+ transform: perspective(400px) rotate3d(0, 1, 0, -360deg);
1861
+ -webkit-animation-timing-function: ease-out;
1862
+ animation-timing-function: ease-out;
1863
+ }
1864
+
1865
+ 40% {
1866
+ -webkit-transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -190deg);
1867
+ transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -190deg);
1868
+ -webkit-animation-timing-function: ease-out;
1869
+ animation-timing-function: ease-out;
1870
+ }
1871
+
1872
+ 50% {
1873
+ -webkit-transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -170deg);
1874
+ transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -170deg);
1875
+ -webkit-animation-timing-function: ease-in;
1876
+ animation-timing-function: ease-in;
1877
+ }
1878
+
1879
+ 80% {
1880
+ -webkit-transform: perspective(400px) scale3d(.95, .95, .95);
1881
+ transform: perspective(400px) scale3d(.95, .95, .95);
1882
+ -webkit-animation-timing-function: ease-in;
1883
+ animation-timing-function: ease-in;
1884
+ }
1885
+
1886
+ 100% {
1887
+ -webkit-transform: perspective(400px);
1888
+ transform: perspective(400px);
1889
+ -webkit-animation-timing-function: ease-in;
1890
+ animation-timing-function: ease-in;
1891
+ }
1892
+ }
1893
+
1894
+ @keyframes flip {
1895
+ 0% {
1896
+ -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -360deg);
1897
+ transform: perspective(400px) rotate3d(0, 1, 0, -360deg);
1898
+ -webkit-animation-timing-function: ease-out;
1899
+ animation-timing-function: ease-out;
1900
+ }
1901
+
1902
+ 40% {
1903
+ -webkit-transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -190deg);
1904
+ transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -190deg);
1905
+ -webkit-animation-timing-function: ease-out;
1906
+ animation-timing-function: ease-out;
1907
+ }
1908
+
1909
+ 50% {
1910
+ -webkit-transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -170deg);
1911
+ transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -170deg);
1912
+ -webkit-animation-timing-function: ease-in;
1913
+ animation-timing-function: ease-in;
1914
+ }
1915
+
1916
+ 80% {
1917
+ -webkit-transform: perspective(400px) scale3d(.95, .95, .95);
1918
+ transform: perspective(400px) scale3d(.95, .95, .95);
1919
+ -webkit-animation-timing-function: ease-in;
1920
+ animation-timing-function: ease-in;
1921
+ }
1922
+
1923
+ 100% {
1924
+ -webkit-transform: perspective(400px);
1925
+ transform: perspective(400px);
1926
+ -webkit-animation-timing-function: ease-in;
1927
+ animation-timing-function: ease-in;
1928
+ }
1929
+ }
1930
+
1931
+ .animated.flip {
1932
+ -webkit-backface-visibility: visible;
1933
+ backface-visibility: visible;
1934
+ -webkit-animation-name: flip;
1935
+ animation-name: flip;
1936
+ }
1937
+
1938
+ @-webkit-keyframes flipInX {
1939
+ 0% {
1940
+ -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 90deg);
1941
+ transform: perspective(400px) rotate3d(1, 0, 0, 90deg);
1942
+ -webkit-transition-timing-function: ease-in;
1943
+ transition-timing-function: ease-in;
1944
+ opacity: 0;
1945
+ }
1946
+
1947
+ 40% {
1948
+ -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -20deg);
1949
+ transform: perspective(400px) rotate3d(1, 0, 0, -20deg);
1950
+ -webkit-transition-timing-function: ease-in;
1951
+ transition-timing-function: ease-in;
1952
+ }
1953
+
1954
+ 60% {
1955
+ -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 10deg);
1956
+ transform: perspective(400px) rotate3d(1, 0, 0, 10deg);
1957
+ opacity: 1;
1958
+ }
1959
+
1960
+ 80% {
1961
+ -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -5deg);
1962
+ transform: perspective(400px) rotate3d(1, 0, 0, -5deg);
1963
+ }
1964
+
1965
+ 100% {
1966
+ -webkit-transform: perspective(400px);
1967
+ transform: perspective(400px);
1968
+ }
1969
+ }
1970
+
1971
+ @keyframes flipInX {
1972
+ 0% {
1973
+ -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 90deg);
1974
+ transform: perspective(400px) rotate3d(1, 0, 0, 90deg);
1975
+ -webkit-transition-timing-function: ease-in;
1976
+ transition-timing-function: ease-in;
1977
+ opacity: 0;
1978
+ }
1979
+
1980
+ 40% {
1981
+ -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -20deg);
1982
+ transform: perspective(400px) rotate3d(1, 0, 0, -20deg);
1983
+ -webkit-transition-timing-function: ease-in;
1984
+ transition-timing-function: ease-in;
1985
+ }
1986
+
1987
+ 60% {
1988
+ -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 10deg);
1989
+ transform: perspective(400px) rotate3d(1, 0, 0, 10deg);
1990
+ opacity: 1;
1991
+ }
1992
+
1993
+ 80% {
1994
+ -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -5deg);
1995
+ transform: perspective(400px) rotate3d(1, 0, 0, -5deg);
1996
+ }
1997
+
1998
+ 100% {
1999
+ -webkit-transform: perspective(400px);
2000
+ transform: perspective(400px);
2001
+ }
2002
+ }
2003
+
2004
+ .flipInX {
2005
+ -webkit-backface-visibility: visible !important;
2006
+ backface-visibility: visible !important;
2007
+ -webkit-animation-name: flipInX;
2008
+ animation-name: flipInX;
2009
+ }
2010
+
2011
+ @-webkit-keyframes flipInY {
2012
+ 0% {
2013
+ -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 90deg);
2014
+ transform: perspective(400px) rotate3d(0, 1, 0, 90deg);
2015
+ -webkit-transition-timing-function: ease-in;
2016
+ transition-timing-function: ease-in;
2017
+ opacity: 0;
2018
+ }
2019
+
2020
+ 40% {
2021
+ -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -20deg);
2022
+ transform: perspective(400px) rotate3d(0, 1, 0, -20deg);
2023
+ -webkit-transition-timing-function: ease-in;
2024
+ transition-timing-function: ease-in;
2025
+ }
2026
+
2027
+ 60% {
2028
+ -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 10deg);
2029
+ transform: perspective(400px) rotate3d(0, 1, 0, 10deg);
2030
+ opacity: 1;
2031
+ }
2032
+
2033
+ 80% {
2034
+ -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -5deg);
2035
+ transform: perspective(400px) rotate3d(0, 1, 0, -5deg);
2036
+ }
2037
+
2038
+ 100% {
2039
+ -webkit-transform: perspective(400px);
2040
+ transform: perspective(400px);
2041
+ }
2042
+ }
2043
+
2044
+ @keyframes flipInY {
2045
+ 0% {
2046
+ -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 90deg);
2047
+ transform: perspective(400px) rotate3d(0, 1, 0, 90deg);
2048
+ -webkit-transition-timing-function: ease-in;
2049
+ transition-timing-function: ease-in;
2050
+ opacity: 0;
2051
+ }
2052
+
2053
+ 40% {
2054
+ -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -20deg);
2055
+ transform: perspective(400px) rotate3d(0, 1, 0, -20deg);
2056
+ -webkit-transition-timing-function: ease-in;
2057
+ transition-timing-function: ease-in;
2058
+ }
2059
+
2060
+ 60% {
2061
+ -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 10deg);
2062
+ transform: perspective(400px) rotate3d(0, 1, 0, 10deg);
2063
+ opacity: 1;
2064
+ }
2065
+
2066
+ 80% {
2067
+ -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -5deg);
2068
+ transform: perspective(400px) rotate3d(0, 1, 0, -5deg);
2069
+ }
2070
+
2071
+ 100% {
2072
+ -webkit-transform: perspective(400px);
2073
+ transform: perspective(400px);
2074
+ }
2075
+ }
2076
+
2077
+ .flipInY {
2078
+ -webkit-backface-visibility: visible !important;
2079
+ backface-visibility: visible !important;
2080
+ -webkit-animation-name: flipInY;
2081
+ animation-name: flipInY;
2082
+ }
2083
+
2084
+ @-webkit-keyframes flipOutX {
2085
+ 0% {
2086
+ -webkit-transform: perspective(400px);
2087
+ transform: perspective(400px);
2088
+ }
2089
+
2090
+ 30% {
2091
+ -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -20deg);
2092
+ transform: perspective(400px) rotate3d(1, 0, 0, -20deg);
2093
+ opacity: 1;
2094
+ }
2095
+
2096
+ 100% {
2097
+ -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 90deg);
2098
+ transform: perspective(400px) rotate3d(1, 0, 0, 90deg);
2099
+ opacity: 0;
2100
+ }
2101
+ }
2102
+
2103
+ @keyframes flipOutX {
2104
+ 0% {
2105
+ -webkit-transform: perspective(400px);
2106
+ transform: perspective(400px);
2107
+ }
2108
+
2109
+ 30% {
2110
+ -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -20deg);
2111
+ transform: perspective(400px) rotate3d(1, 0, 0, -20deg);
2112
+ opacity: 1;
2113
+ }
2114
+
2115
+ 100% {
2116
+ -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 90deg);
2117
+ transform: perspective(400px) rotate3d(1, 0, 0, 90deg);
2118
+ opacity: 0;
2119
+ }
2120
+ }
2121
+
2122
+ .flipOutX {
2123
+ -webkit-animation-name: flipOutX;
2124
+ animation-name: flipOutX;
2125
+ -webkit-animation-duration: .75s;
2126
+ animation-duration: .75s;
2127
+ -webkit-backface-visibility: visible !important;
2128
+ backface-visibility: visible !important;
2129
+ }
2130
+
2131
+ @-webkit-keyframes flipOutY {
2132
+ 0% {
2133
+ -webkit-transform: perspective(400px);
2134
+ transform: perspective(400px);
2135
+ }
2136
+
2137
+ 30% {
2138
+ -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -15deg);
2139
+ transform: perspective(400px) rotate3d(0, 1, 0, -15deg);
2140
+ opacity: 1;
2141
+ }
2142
+
2143
+ 100% {
2144
+ -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 90deg);
2145
+ transform: perspective(400px) rotate3d(0, 1, 0, 90deg);
2146
+ opacity: 0;
2147
+ }
2148
+ }
2149
+
2150
+ @keyframes flipOutY {
2151
+ 0% {
2152
+ -webkit-transform: perspective(400px);
2153
+ transform: perspective(400px);
2154
+ }
2155
+
2156
+ 30% {
2157
+ -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -15deg);
2158
+ transform: perspective(400px) rotate3d(0, 1, 0, -15deg);
2159
+ opacity: 1;
2160
+ }
2161
+
2162
+ 100% {
2163
+ -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 90deg);
2164
+ transform: perspective(400px) rotate3d(0, 1, 0, 90deg);
2165
+ opacity: 0;
2166
+ }
2167
+ }
2168
+
2169
+ .flipOutY {
2170
+ -webkit-backface-visibility: visible !important;
2171
+ backface-visibility: visible !important;
2172
+ -webkit-animation-name: flipOutY;
2173
+ animation-name: flipOutY;
2174
+ -webkit-animation-duration: .75s;
2175
+ animation-duration: .75s;
2176
+ }
2177
+
2178
+ @-webkit-keyframes lightSpeedIn {
2179
+ 0% {
2180
+ -webkit-transform: translate3d(100%, 0, 0) skewX(-30deg);
2181
+ transform: translate3d(100%, 0, 0) skewX(-30deg);
2182
+ opacity: 0;
2183
+ }
2184
+
2185
+ 60% {
2186
+ -webkit-transform: skewX(20deg);
2187
+ transform: skewX(20deg);
2188
+ opacity: 1;
2189
+ }
2190
+
2191
+ 80% {
2192
+ -webkit-transform: skewX(-5deg);
2193
+ transform: skewX(-5deg);
2194
+ opacity: 1;
2195
+ }
2196
+
2197
+ 100% {
2198
+ -webkit-transform: none;
2199
+ transform: none;
2200
+ opacity: 1;
2201
+ }
2202
+ }
2203
+
2204
+ @keyframes lightSpeedIn {
2205
+ 0% {
2206
+ -webkit-transform: translate3d(100%, 0, 0) skewX(-30deg);
2207
+ transform: translate3d(100%, 0, 0) skewX(-30deg);
2208
+ opacity: 0;
2209
+ }
2210
+
2211
+ 60% {
2212
+ -webkit-transform: skewX(20deg);
2213
+ transform: skewX(20deg);
2214
+ opacity: 1;
2215
+ }
2216
+
2217
+ 80% {
2218
+ -webkit-transform: skewX(-5deg);
2219
+ transform: skewX(-5deg);
2220
+ opacity: 1;
2221
+ }
2222
+
2223
+ 100% {
2224
+ -webkit-transform: none;
2225
+ transform: none;
2226
+ opacity: 1;
2227
+ }
2228
+ }
2229
+
2230
+ .lightSpeedIn {
2231
+ -webkit-animation-name: lightSpeedIn;
2232
+ animation-name: lightSpeedIn;
2233
+ -webkit-animation-timing-function: ease-out;
2234
+ animation-timing-function: ease-out;
2235
+ }
2236
+
2237
+ @-webkit-keyframes lightSpeedOut {
2238
+ 0% {
2239
+ opacity: 1;
2240
+ }
2241
+
2242
+ 100% {
2243
+ -webkit-transform: translate3d(100%, 0, 0) skewX(30deg);
2244
+ transform: translate3d(100%, 0, 0) skewX(30deg);
2245
+ opacity: 0;
2246
+ }
2247
+ }
2248
+
2249
+ @keyframes lightSpeedOut {
2250
+ 0% {
2251
+ opacity: 1;
2252
+ }
2253
+
2254
+ 100% {
2255
+ -webkit-transform: translate3d(100%, 0, 0) skewX(30deg);
2256
+ transform: translate3d(100%, 0, 0) skewX(30deg);
2257
+ opacity: 0;
2258
+ }
2259
+ }
2260
+
2261
+ .lightSpeedOut {
2262
+ -webkit-animation-name: lightSpeedOut;
2263
+ animation-name: lightSpeedOut;
2264
+ -webkit-animation-timing-function: ease-in;
2265
+ animation-timing-function: ease-in;
2266
+ }
2267
+
2268
+ @-webkit-keyframes rotateIn {
2269
+ 0% {
2270
+ -webkit-transform-origin: center;
2271
+ transform-origin: center;
2272
+ -webkit-transform: rotate3d(0, 0, 1, -200deg);
2273
+ transform: rotate3d(0, 0, 1, -200deg);
2274
+ opacity: 0;
2275
+ }
2276
+
2277
+ 100% {
2278
+ -webkit-transform-origin: center;
2279
+ transform-origin: center;
2280
+ -webkit-transform: none;
2281
+ transform: none;
2282
+ opacity: 1;
2283
+ }
2284
+ }
2285
+
2286
+ @keyframes rotateIn {
2287
+ 0% {
2288
+ -webkit-transform-origin: center;
2289
+ transform-origin: center;
2290
+ -webkit-transform: rotate3d(0, 0, 1, -200deg);
2291
+ transform: rotate3d(0, 0, 1, -200deg);
2292
+ opacity: 0;
2293
+ }
2294
+
2295
+ 100% {
2296
+ -webkit-transform-origin: center;
2297
+ transform-origin: center;
2298
+ -webkit-transform: none;
2299
+ transform: none;
2300
+ opacity: 1;
2301
+ }
2302
+ }
2303
+
2304
+ .rotateIn {
2305
+ -webkit-animation-name: rotateIn;
2306
+ animation-name: rotateIn;
2307
+ }
2308
+
2309
+ @-webkit-keyframes rotateInDownLeft {
2310
+ 0% {
2311
+ -webkit-transform-origin: left bottom;
2312
+ transform-origin: left bottom;
2313
+ -webkit-transform: rotate3d(0, 0, 1, -45deg);
2314
+ transform: rotate3d(0, 0, 1, -45deg);
2315
+ opacity: 0;
2316
+ }
2317
+
2318
+ 100% {
2319
+ -webkit-transform-origin: left bottom;
2320
+ transform-origin: left bottom;
2321
+ -webkit-transform: none;
2322
+ transform: none;
2323
+ opacity: 1;
2324
+ }
2325
+ }
2326
+
2327
+ @keyframes rotateInDownLeft {
2328
+ 0% {
2329
+ -webkit-transform-origin: left bottom;
2330
+ transform-origin: left bottom;
2331
+ -webkit-transform: rotate3d(0, 0, 1, -45deg);
2332
+ transform: rotate3d(0, 0, 1, -45deg);
2333
+ opacity: 0;
2334
+ }
2335
+
2336
+ 100% {
2337
+ -webkit-transform-origin: left bottom;
2338
+ transform-origin: left bottom;
2339
+ -webkit-transform: none;
2340
+ transform: none;
2341
+ opacity: 1;
2342
+ }
2343
+ }
2344
+
2345
+ .rotateInDownLeft {
2346
+ -webkit-animation-name: rotateInDownLeft;
2347
+ animation-name: rotateInDownLeft;
2348
+ }
2349
+
2350
+ @-webkit-keyframes rotateInDownRight {
2351
+ 0% {
2352
+ -webkit-transform-origin: right bottom;
2353
+ transform-origin: right bottom;
2354
+ -webkit-transform: rotate3d(0, 0, 1, 45deg);
2355
+ transform: rotate3d(0, 0, 1, 45deg);
2356
+ opacity: 0;
2357
+ }
2358
+
2359
+ 100% {
2360
+ -webkit-transform-origin: right bottom;
2361
+ transform-origin: right bottom;
2362
+ -webkit-transform: none;
2363
+ transform: none;
2364
+ opacity: 1;
2365
+ }
2366
+ }
2367
+
2368
+ @keyframes rotateInDownRight {
2369
+ 0% {
2370
+ -webkit-transform-origin: right bottom;
2371
+ transform-origin: right bottom;
2372
+ -webkit-transform: rotate3d(0, 0, 1, 45deg);
2373
+ transform: rotate3d(0, 0, 1, 45deg);
2374
+ opacity: 0;
2375
+ }
2376
+
2377
+ 100% {
2378
+ -webkit-transform-origin: right bottom;
2379
+ transform-origin: right bottom;
2380
+ -webkit-transform: none;
2381
+ transform: none;
2382
+ opacity: 1;
2383
+ }
2384
+ }
2385
+
2386
+ .rotateInDownRight {
2387
+ -webkit-animation-name: rotateInDownRight;
2388
+ animation-name: rotateInDownRight;
2389
+ }
2390
+
2391
+ @-webkit-keyframes rotateInUpLeft {
2392
+ 0% {
2393
+ -webkit-transform-origin: left bottom;
2394
+ transform-origin: left bottom;
2395
+ -webkit-transform: rotate3d(0, 0, 1, 45deg);
2396
+ transform: rotate3d(0, 0, 1, 45deg);
2397
+ opacity: 0;
2398
+ }
2399
+
2400
+ 100% {
2401
+ -webkit-transform-origin: left bottom;
2402
+ transform-origin: left bottom;
2403
+ -webkit-transform: none;
2404
+ transform: none;
2405
+ opacity: 1;
2406
+ }
2407
+ }
2408
+
2409
+ @keyframes rotateInUpLeft {
2410
+ 0% {
2411
+ -webkit-transform-origin: left bottom;
2412
+ transform-origin: left bottom;
2413
+ -webkit-transform: rotate3d(0, 0, 1, 45deg);
2414
+ transform: rotate3d(0, 0, 1, 45deg);
2415
+ opacity: 0;
2416
+ }
2417
+
2418
+ 100% {
2419
+ -webkit-transform-origin: left bottom;
2420
+ transform-origin: left bottom;
2421
+ -webkit-transform: none;
2422
+ transform: none;
2423
+ opacity: 1;
2424
+ }
2425
+ }
2426
+
2427
+ .rotateInUpLeft {
2428
+ -webkit-animation-name: rotateInUpLeft;
2429
+ animation-name: rotateInUpLeft;
2430
+ }
2431
+
2432
+ @-webkit-keyframes rotateInUpRight {
2433
+ 0% {
2434
+ -webkit-transform-origin: right bottom;
2435
+ transform-origin: right bottom;
2436
+ -webkit-transform: rotate3d(0, 0, 1, -90deg);
2437
+ transform: rotate3d(0, 0, 1, -90deg);
2438
+ opacity: 0;
2439
+ }
2440
+
2441
+ 100% {
2442
+ -webkit-transform-origin: right bottom;
2443
+ transform-origin: right bottom;
2444
+ -webkit-transform: none;
2445
+ transform: none;
2446
+ opacity: 1;
2447
+ }
2448
+ }
2449
+
2450
+ @keyframes rotateInUpRight {
2451
+ 0% {
2452
+ -webkit-transform-origin: right bottom;
2453
+ transform-origin: right bottom;
2454
+ -webkit-transform: rotate3d(0, 0, 1, -90deg);
2455
+ transform: rotate3d(0, 0, 1, -90deg);
2456
+ opacity: 0;
2457
+ }
2458
+
2459
+ 100% {
2460
+ -webkit-transform-origin: right bottom;
2461
+ transform-origin: right bottom;
2462
+ -webkit-transform: none;
2463
+ transform: none;
2464
+ opacity: 1;
2465
+ }
2466
+ }
2467
+
2468
+ .rotateInUpRight {
2469
+ -webkit-animation-name: rotateInUpRight;
2470
+ animation-name: rotateInUpRight;
2471
+ }
2472
+
2473
+ @-webkit-keyframes rotateOut {
2474
+ 0% {
2475
+ -webkit-transform-origin: center;
2476
+ transform-origin: center;
2477
+ opacity: 1;
2478
+ }
2479
+
2480
+ 100% {
2481
+ -webkit-transform-origin: center;
2482
+ transform-origin: center;
2483
+ -webkit-transform: rotate3d(0, 0, 1, 200deg);
2484
+ transform: rotate3d(0, 0, 1, 200deg);
2485
+ opacity: 0;
2486
+ }
2487
+ }
2488
+
2489
+ @keyframes rotateOut {
2490
+ 0% {
2491
+ -webkit-transform-origin: center;
2492
+ transform-origin: center;
2493
+ opacity: 1;
2494
+ }
2495
+
2496
+ 100% {
2497
+ -webkit-transform-origin: center;
2498
+ transform-origin: center;
2499
+ -webkit-transform: rotate3d(0, 0, 1, 200deg);
2500
+ transform: rotate3d(0, 0, 1, 200deg);
2501
+ opacity: 0;
2502
+ }
2503
+ }
2504
+
2505
+ .rotateOut {
2506
+ -webkit-animation-name: rotateOut;
2507
+ animation-name: rotateOut;
2508
+ }
2509
+
2510
+ @-webkit-keyframes rotateOutDownLeft {
2511
+ 0% {
2512
+ -webkit-transform-origin: left bottom;
2513
+ transform-origin: left bottom;
2514
+ opacity: 1;
2515
+ }
2516
+
2517
+ 100% {
2518
+ -webkit-transform-origin: left bottom;
2519
+ transform-origin: left bottom;
2520
+ -webkit-transform: rotate3d(0, 0, 1, 45deg);
2521
+ transform: rotate3d(0, 0, 1, 45deg);
2522
+ opacity: 0;
2523
+ }
2524
+ }
2525
+
2526
+ @keyframes rotateOutDownLeft {
2527
+ 0% {
2528
+ -webkit-transform-origin: left bottom;
2529
+ transform-origin: left bottom;
2530
+ opacity: 1;
2531
+ }
2532
+
2533
+ 100% {
2534
+ -webkit-transform-origin: left bottom;
2535
+ transform-origin: left bottom;
2536
+ -webkit-transform: rotate3d(0, 0, 1, 45deg);
2537
+ transform: rotate3d(0, 0, 1, 45deg);
2538
+ opacity: 0;
2539
+ }
2540
+ }
2541
+
2542
+ .rotateOutDownLeft {
2543
+ -webkit-animation-name: rotateOutDownLeft;
2544
+ animation-name: rotateOutDownLeft;
2545
+ }
2546
+
2547
+ @-webkit-keyframes rotateOutDownRight {
2548
+ 0% {
2549
+ -webkit-transform-origin: right bottom;
2550
+ transform-origin: right bottom;
2551
+ opacity: 1;
2552
+ }
2553
+
2554
+ 100% {
2555
+ -webkit-transform-origin: right bottom;
2556
+ transform-origin: right bottom;
2557
+ -webkit-transform: rotate3d(0, 0, 1, -45deg);
2558
+ transform: rotate3d(0, 0, 1, -45deg);
2559
+ opacity: 0;
2560
+ }
2561
+ }
2562
+
2563
+ @keyframes rotateOutDownRight {
2564
+ 0% {
2565
+ -webkit-transform-origin: right bottom;
2566
+ transform-origin: right bottom;
2567
+ opacity: 1;
2568
+ }
2569
+
2570
+ 100% {
2571
+ -webkit-transform-origin: right bottom;
2572
+ transform-origin: right bottom;
2573
+ -webkit-transform: rotate3d(0, 0, 1, -45deg);
2574
+ transform: rotate3d(0, 0, 1, -45deg);
2575
+ opacity: 0;
2576
+ }
2577
+ }
2578
+
2579
+ .rotateOutDownRight {
2580
+ -webkit-animation-name: rotateOutDownRight;
2581
+ animation-name: rotateOutDownRight;
2582
+ }
2583
+
2584
+ @-webkit-keyframes rotateOutUpLeft {
2585
+ 0% {
2586
+ -webkit-transform-origin: left bottom;
2587
+ transform-origin: left bottom;
2588
+ opacity: 1;
2589
+ }
2590
+
2591
+ 100% {
2592
+ -webkit-transform-origin: left bottom;
2593
+ transform-origin: left bottom;
2594
+ -webkit-transform: rotate3d(0, 0, 1, -45deg);
2595
+ transform: rotate3d(0, 0, 1, -45deg);
2596
+ opacity: 0;
2597
+ }
2598
+ }
2599
+
2600
+ @keyframes rotateOutUpLeft {
2601
+ 0% {
2602
+ -webkit-transform-origin: left bottom;
2603
+ transform-origin: left bottom;
2604
+ opacity: 1;
2605
+ }
2606
+
2607
+ 100% {
2608
+ -webkit-transform-origin: left bottom;
2609
+ transform-origin: left bottom;
2610
+ -webkit-transform: rotate3d(0, 0, 1, -45deg);
2611
+ transform: rotate3d(0, 0, 1, -45deg);
2612
+ opacity: 0;
2613
+ }
2614
+ }
2615
+
2616
+ .rotateOutUpLeft {
2617
+ -webkit-animation-name: rotateOutUpLeft;
2618
+ animation-name: rotateOutUpLeft;
2619
+ }
2620
+
2621
+ @-webkit-keyframes rotateOutUpRight {
2622
+ 0% {
2623
+ -webkit-transform-origin: right bottom;
2624
+ transform-origin: right bottom;
2625
+ opacity: 1;
2626
+ }
2627
+
2628
+ 100% {
2629
+ -webkit-transform-origin: right bottom;
2630
+ transform-origin: right bottom;
2631
+ -webkit-transform: rotate3d(0, 0, 1, 90deg);
2632
+ transform: rotate3d(0, 0, 1, 90deg);
2633
+ opacity: 0;
2634
+ }
2635
+ }
2636
+
2637
+ @keyframes rotateOutUpRight {
2638
+ 0% {
2639
+ -webkit-transform-origin: right bottom;
2640
+ transform-origin: right bottom;
2641
+ opacity: 1;
2642
+ }
2643
+
2644
+ 100% {
2645
+ -webkit-transform-origin: right bottom;
2646
+ transform-origin: right bottom;
2647
+ -webkit-transform: rotate3d(0, 0, 1, 90deg);
2648
+ transform: rotate3d(0, 0, 1, 90deg);
2649
+ opacity: 0;
2650
+ }
2651
+ }
2652
+
2653
+ .rotateOutUpRight {
2654
+ -webkit-animation-name: rotateOutUpRight;
2655
+ animation-name: rotateOutUpRight;
2656
+ }
2657
+
2658
+ @-webkit-keyframes hinge {
2659
+ 0% {
2660
+ -webkit-transform-origin: top left;
2661
+ transform-origin: top left;
2662
+ -webkit-animation-timing-function: ease-in-out;
2663
+ animation-timing-function: ease-in-out;
2664
+ }
2665
+
2666
+ 20%, 60% {
2667
+ -webkit-transform: rotate3d(0, 0, 1, 80deg);
2668
+ transform: rotate3d(0, 0, 1, 80deg);
2669
+ -webkit-transform-origin: top left;
2670
+ transform-origin: top left;
2671
+ -webkit-animation-timing-function: ease-in-out;
2672
+ animation-timing-function: ease-in-out;
2673
+ }
2674
+
2675
+ 40%, 80% {
2676
+ -webkit-transform: rotate3d(0, 0, 1, 60deg);
2677
+ transform: rotate3d(0, 0, 1, 60deg);
2678
+ -webkit-transform-origin: top left;
2679
+ transform-origin: top left;
2680
+ -webkit-animation-timing-function: ease-in-out;
2681
+ animation-timing-function: ease-in-out;
2682
+ opacity: 1;
2683
+ }
2684
+
2685
+ 100% {
2686
+ -webkit-transform: translate3d(0, 700px, 0);
2687
+ transform: translate3d(0, 700px, 0);
2688
+ opacity: 0;
2689
+ }
2690
+ }
2691
+
2692
+ @keyframes hinge {
2693
+ 0% {
2694
+ -webkit-transform-origin: top left;
2695
+ transform-origin: top left;
2696
+ -webkit-animation-timing-function: ease-in-out;
2697
+ animation-timing-function: ease-in-out;
2698
+ }
2699
+
2700
+ 20%, 60% {
2701
+ -webkit-transform: rotate3d(0, 0, 1, 80deg);
2702
+ transform: rotate3d(0, 0, 1, 80deg);
2703
+ -webkit-transform-origin: top left;
2704
+ transform-origin: top left;
2705
+ -webkit-animation-timing-function: ease-in-out;
2706
+ animation-timing-function: ease-in-out;
2707
+ }
2708
+
2709
+ 40%, 80% {
2710
+ -webkit-transform: rotate3d(0, 0, 1, 60deg);
2711
+ transform: rotate3d(0, 0, 1, 60deg);
2712
+ -webkit-transform-origin: top left;
2713
+ transform-origin: top left;
2714
+ -webkit-animation-timing-function: ease-in-out;
2715
+ animation-timing-function: ease-in-out;
2716
+ opacity: 1;
2717
+ }
2718
+
2719
+ 100% {
2720
+ -webkit-transform: translate3d(0, 700px, 0);
2721
+ transform: translate3d(0, 700px, 0);
2722
+ opacity: 0;
2723
+ }
2724
+ }
2725
+
2726
+ .hinge {
2727
+ -webkit-animation-name: hinge;
2728
+ animation-name: hinge;
2729
+ }
2730
+
2731
+ /* originally authored by Nick Pettit - https://github.com/nickpettit/glide */
2732
+
2733
+ @-webkit-keyframes rollIn {
2734
+ 0% {
2735
+ opacity: 0;
2736
+ -webkit-transform: translate3d(-100%, 0, 0) rotate3d(0, 0, 1, -120deg);
2737
+ transform: translate3d(-100%, 0, 0) rotate3d(0, 0, 1, -120deg);
2738
+ }
2739
+
2740
+ 100% {
2741
+ opacity: 1;
2742
+ -webkit-transform: none;
2743
+ transform: none;
2744
+ }
2745
+ }
2746
+
2747
+ @keyframes rollIn {
2748
+ 0% {
2749
+ opacity: 0;
2750
+ -webkit-transform: translate3d(-100%, 0, 0) rotate3d(0, 0, 1, -120deg);
2751
+ transform: translate3d(-100%, 0, 0) rotate3d(0, 0, 1, -120deg);
2752
+ }
2753
+
2754
+ 100% {
2755
+ opacity: 1;
2756
+ -webkit-transform: none;
2757
+ transform: none;
2758
+ }
2759
+ }
2760
+
2761
+ .rollIn {
2762
+ -webkit-animation-name: rollIn;
2763
+ animation-name: rollIn;
2764
+ }
2765
+
2766
+ /* originally authored by Nick Pettit - https://github.com/nickpettit/glide */
2767
+
2768
+ @-webkit-keyframes rollOut {
2769
+ 0% {
2770
+ opacity: 1;
2771
+ }
2772
+
2773
+ 100% {
2774
+ opacity: 0;
2775
+ -webkit-transform: translate3d(100%, 0, 0) rotate3d(0, 0, 1, 120deg);
2776
+ transform: translate3d(100%, 0, 0) rotate3d(0, 0, 1, 120deg);
2777
+ }
2778
+ }
2779
+
2780
+ @keyframes rollOut {
2781
+ 0% {
2782
+ opacity: 1;
2783
+ }
2784
+
2785
+ 100% {
2786
+ opacity: 0;
2787
+ -webkit-transform: translate3d(100%, 0, 0) rotate3d(0, 0, 1, 120deg);
2788
+ transform: translate3d(100%, 0, 0) rotate3d(0, 0, 1, 120deg);
2789
+ }
2790
+ }
2791
+
2792
+ .rollOut {
2793
+ -webkit-animation-name: rollOut;
2794
+ animation-name: rollOut;
2795
+ }
2796
+
2797
+ @-webkit-keyframes zoomIn {
2798
+ 0% {
2799
+ opacity: 0;
2800
+ -webkit-transform: scale3d(.3, .3, .3);
2801
+ transform: scale3d(.3, .3, .3);
2802
+ }
2803
+
2804
+ 50% {
2805
+ opacity: 1;
2806
+ }
2807
+ }
2808
+
2809
+ @keyframes zoomIn {
2810
+ 0% {
2811
+ opacity: 0;
2812
+ -webkit-transform: scale3d(.3, .3, .3);
2813
+ transform: scale3d(.3, .3, .3);
2814
+ }
2815
+
2816
+ 50% {
2817
+ opacity: 1;
2818
+ }
2819
+ }
2820
+
2821
+ .zoomIn {
2822
+ -webkit-animation-name: zoomIn;
2823
+ animation-name: zoomIn;
2824
+ }
2825
+
2826
+ @-webkit-keyframes zoomInDown {
2827
+ 0% {
2828
+ opacity: 0;
2829
+ -webkit-transform: scale3d(.1, .1, .1) translate3d(0, -1000px, 0);
2830
+ transform: scale3d(.1, .1, .1) translate3d(0, -1000px, 0);
2831
+ -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
2832
+ animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
2833
+ }
2834
+
2835
+ 60% {
2836
+ opacity: 1;
2837
+ -webkit-transform: scale3d(.475, .475, .475) translate3d(0, 60px, 0);
2838
+ transform: scale3d(.475, .475, .475) translate3d(0, 60px, 0);
2839
+ -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
2840
+ animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
2841
+ }
2842
+ }
2843
+
2844
+ @keyframes zoomInDown {
2845
+ 0% {
2846
+ opacity: 0;
2847
+ -webkit-transform: scale3d(.1, .1, .1) translate3d(0, -1000px, 0);
2848
+ transform: scale3d(.1, .1, .1) translate3d(0, -1000px, 0);
2849
+ -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
2850
+ animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
2851
+ }
2852
+
2853
+ 60% {
2854
+ opacity: 1;
2855
+ -webkit-transform: scale3d(.475, .475, .475) translate3d(0, 60px, 0);
2856
+ transform: scale3d(.475, .475, .475) translate3d(0, 60px, 0);
2857
+ -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
2858
+ animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
2859
+ }
2860
+ }
2861
+
2862
+ .zoomInDown {
2863
+ -webkit-animation-name: zoomInDown;
2864
+ animation-name: zoomInDown;
2865
+ }
2866
+
2867
+ @-webkit-keyframes zoomInLeft {
2868
+ 0% {
2869
+ opacity: 0;
2870
+ -webkit-transform: scale3d(.1, .1, .1) translate3d(-1000px, 0, 0);
2871
+ transform: scale3d(.1, .1, .1) translate3d(-1000px, 0, 0);
2872
+ -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
2873
+ animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
2874
+ }
2875
+
2876
+ 60% {
2877
+ opacity: 1;
2878
+ -webkit-transform: scale3d(.475, .475, .475) translate3d(10px, 0, 0);
2879
+ transform: scale3d(.475, .475, .475) translate3d(10px, 0, 0);
2880
+ -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
2881
+ animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
2882
+ }
2883
+ }
2884
+
2885
+ @keyframes zoomInLeft {
2886
+ 0% {
2887
+ opacity: 0;
2888
+ -webkit-transform: scale3d(.1, .1, .1) translate3d(-1000px, 0, 0);
2889
+ transform: scale3d(.1, .1, .1) translate3d(-1000px, 0, 0);
2890
+ -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
2891
+ animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
2892
+ }
2893
+
2894
+ 60% {
2895
+ opacity: 1;
2896
+ -webkit-transform: scale3d(.475, .475, .475) translate3d(10px, 0, 0);
2897
+ transform: scale3d(.475, .475, .475) translate3d(10px, 0, 0);
2898
+ -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
2899
+ animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
2900
+ }
2901
+ }
2902
+
2903
+ .zoomInLeft {
2904
+ -webkit-animation-name: zoomInLeft;
2905
+ animation-name: zoomInLeft;
2906
+ }
2907
+
2908
+ @-webkit-keyframes zoomInRight {
2909
+ 0% {
2910
+ opacity: 0;
2911
+ -webkit-transform: scale3d(.1, .1, .1) translate3d(1000px, 0, 0);
2912
+ transform: scale3d(.1, .1, .1) translate3d(1000px, 0, 0);
2913
+ -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
2914
+ animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
2915
+ }
2916
+
2917
+ 60% {
2918
+ opacity: 1;
2919
+ -webkit-transform: scale3d(.475, .475, .475) translate3d(-10px, 0, 0);
2920
+ transform: scale3d(.475, .475, .475) translate3d(-10px, 0, 0);
2921
+ -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
2922
+ animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
2923
+ }
2924
+ }
2925
+
2926
+ @keyframes zoomInRight {
2927
+ 0% {
2928
+ opacity: 0;
2929
+ -webkit-transform: scale3d(.1, .1, .1) translate3d(1000px, 0, 0);
2930
+ transform: scale3d(.1, .1, .1) translate3d(1000px, 0, 0);
2931
+ -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
2932
+ animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
2933
+ }
2934
+
2935
+ 60% {
2936
+ opacity: 1;
2937
+ -webkit-transform: scale3d(.475, .475, .475) translate3d(-10px, 0, 0);
2938
+ transform: scale3d(.475, .475, .475) translate3d(-10px, 0, 0);
2939
+ -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
2940
+ animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
2941
+ }
2942
+ }
2943
+
2944
+ .zoomInRight {
2945
+ -webkit-animation-name: zoomInRight;
2946
+ animation-name: zoomInRight;
2947
+ }
2948
+
2949
+ @-webkit-keyframes zoomInUp {
2950
+ 0% {
2951
+ opacity: 0;
2952
+ -webkit-transform: scale3d(.1, .1, .1) translate3d(0, 1000px, 0);
2953
+ transform: scale3d(.1, .1, .1) translate3d(0, 1000px, 0);
2954
+ -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
2955
+ animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
2956
+ }
2957
+
2958
+ 60% {
2959
+ opacity: 1;
2960
+ -webkit-transform: scale3d(.475, .475, .475) translate3d(0, -60px, 0);
2961
+ transform: scale3d(.475, .475, .475) translate3d(0, -60px, 0);
2962
+ -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
2963
+ animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
2964
+ }
2965
+ }
2966
+
2967
+ @keyframes zoomInUp {
2968
+ 0% {
2969
+ opacity: 0;
2970
+ -webkit-transform: scale3d(.1, .1, .1) translate3d(0, 1000px, 0);
2971
+ transform: scale3d(.1, .1, .1) translate3d(0, 1000px, 0);
2972
+ -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
2973
+ animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
2974
+ }
2975
+
2976
+ 60% {
2977
+ opacity: 1;
2978
+ -webkit-transform: scale3d(.475, .475, .475) translate3d(0, -60px, 0);
2979
+ transform: scale3d(.475, .475, .475) translate3d(0, -60px, 0);
2980
+ -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
2981
+ animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
2982
+ }
2983
+ }
2984
+
2985
+ .zoomInUp {
2986
+ -webkit-animation-name: zoomInUp;
2987
+ animation-name: zoomInUp;
2988
+ }
2989
+
2990
+ @-webkit-keyframes zoomOut {
2991
+ 0% {
2992
+ opacity: 1;
2993
+ }
2994
+
2995
+ 50% {
2996
+ opacity: 0;
2997
+ -webkit-transform: scale3d(.3, .3, .3);
2998
+ transform: scale3d(.3, .3, .3);
2999
+ }
3000
+
3001
+ 100% {
3002
+ opacity: 0;
3003
+ }
3004
+ }
3005
+
3006
+ @keyframes zoomOut {
3007
+ 0% {
3008
+ opacity: 1;
3009
+ }
3010
+
3011
+ 50% {
3012
+ opacity: 0;
3013
+ -webkit-transform: scale3d(.3, .3, .3);
3014
+ transform: scale3d(.3, .3, .3);
3015
+ }
3016
+
3017
+ 100% {
3018
+ opacity: 0;
3019
+ }
3020
+ }
3021
+
3022
+ .zoomOut {
3023
+ -webkit-animation-name: zoomOut;
3024
+ animation-name: zoomOut;
3025
+ }
3026
+
3027
+ @-webkit-keyframes zoomOutDown {
3028
+ 40% {
3029
+ opacity: 1;
3030
+ -webkit-transform: scale3d(.475, .475, .475) translate3d(0, -60px, 0);
3031
+ transform: scale3d(.475, .475, .475) translate3d(0, -60px, 0);
3032
+ -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
3033
+ animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
3034
+ }
3035
+
3036
+ 100% {
3037
+ opacity: 0;
3038
+ -webkit-transform: scale3d(.1, .1, .1) translate3d(0, 2000px, 0);
3039
+ transform: scale3d(.1, .1, .1) translate3d(0, 2000px, 0);
3040
+ -webkit-transform-origin: center bottom;
3041
+ transform-origin: center bottom;
3042
+ -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
3043
+ animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
3044
+ }
3045
+ }
3046
+
3047
+ @keyframes zoomOutDown {
3048
+ 40% {
3049
+ opacity: 1;
3050
+ -webkit-transform: scale3d(.475, .475, .475) translate3d(0, -60px, 0);
3051
+ transform: scale3d(.475, .475, .475) translate3d(0, -60px, 0);
3052
+ -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
3053
+ animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
3054
+ }
3055
+
3056
+ 100% {
3057
+ opacity: 0;
3058
+ -webkit-transform: scale3d(.1, .1, .1) translate3d(0, 2000px, 0);
3059
+ transform: scale3d(.1, .1, .1) translate3d(0, 2000px, 0);
3060
+ -webkit-transform-origin: center bottom;
3061
+ transform-origin: center bottom;
3062
+ -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
3063
+ animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
3064
+ }
3065
+ }
3066
+
3067
+ .zoomOutDown {
3068
+ -webkit-animation-name: zoomOutDown;
3069
+ animation-name: zoomOutDown;
3070
+ }
3071
+
3072
+ @-webkit-keyframes zoomOutLeft {
3073
+ 40% {
3074
+ opacity: 1;
3075
+ -webkit-transform: scale3d(.475, .475, .475) translate3d(42px, 0, 0);
3076
+ transform: scale3d(.475, .475, .475) translate3d(42px, 0, 0);
3077
+ }
3078
+
3079
+ 100% {
3080
+ opacity: 0;
3081
+ -webkit-transform: scale(.1) translate3d(-2000px, 0, 0);
3082
+ transform: scale(.1) translate3d(-2000px, 0, 0);
3083
+ -webkit-transform-origin: left center;
3084
+ transform-origin: left center;
3085
+ }
3086
+ }
3087
+
3088
+ @keyframes zoomOutLeft {
3089
+ 40% {
3090
+ opacity: 1;
3091
+ -webkit-transform: scale3d(.475, .475, .475) translate3d(42px, 0, 0);
3092
+ transform: scale3d(.475, .475, .475) translate3d(42px, 0, 0);
3093
+ }
3094
+
3095
+ 100% {
3096
+ opacity: 0;
3097
+ -webkit-transform: scale(.1) translate3d(-2000px, 0, 0);
3098
+ transform: scale(.1) translate3d(-2000px, 0, 0);
3099
+ -webkit-transform-origin: left center;
3100
+ transform-origin: left center;
3101
+ }
3102
+ }
3103
+
3104
+ .zoomOutLeft {
3105
+ -webkit-animation-name: zoomOutLeft;
3106
+ animation-name: zoomOutLeft;
3107
+ }
3108
+
3109
+ @-webkit-keyframes zoomOutRight {
3110
+ 40% {
3111
+ opacity: 1;
3112
+ -webkit-transform: scale3d(.475, .475, .475) translate3d(-42px, 0, 0);
3113
+ transform: scale3d(.475, .475, .475) translate3d(-42px, 0, 0);
3114
+ }
3115
+
3116
+ 100% {
3117
+ opacity: 0;
3118
+ -webkit-transform: scale(.1) translate3d(2000px, 0, 0);
3119
+ transform: scale(.1) translate3d(2000px, 0, 0);
3120
+ -webkit-transform-origin: right center;
3121
+ transform-origin: right center;
3122
+ }
3123
+ }
3124
+
3125
+ @keyframes zoomOutRight {
3126
+ 40% {
3127
+ opacity: 1;
3128
+ -webkit-transform: scale3d(.475, .475, .475) translate3d(-42px, 0, 0);
3129
+ transform: scale3d(.475, .475, .475) translate3d(-42px, 0, 0);
3130
+ }
3131
+
3132
+ 100% {
3133
+ opacity: 0;
3134
+ -webkit-transform: scale(.1) translate3d(2000px, 0, 0);
3135
+ transform: scale(.1) translate3d(2000px, 0, 0);
3136
+ -webkit-transform-origin: right center;
3137
+ transform-origin: right center;
3138
+ }
3139
+ }
3140
+
3141
+ .zoomOutRight {
3142
+ -webkit-animation-name: zoomOutRight;
3143
+ animation-name: zoomOutRight;
3144
+ }
3145
+
3146
+ @-webkit-keyframes zoomOutUp {
3147
+ 40% {
3148
+ opacity: 1;
3149
+ -webkit-transform: scale3d(.475, .475, .475) translate3d(0, 60px, 0);
3150
+ transform: scale3d(.475, .475, .475) translate3d(0, 60px, 0);
3151
+ -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
3152
+ animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
3153
+ }
3154
+
3155
+ 100% {
3156
+ opacity: 0;
3157
+ -webkit-transform: scale3d(.1, .1, .1) translate3d(0, -2000px, 0);
3158
+ transform: scale3d(.1, .1, .1) translate3d(0, -2000px, 0);
3159
+ -webkit-transform-origin: center bottom;
3160
+ transform-origin: center bottom;
3161
+ -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
3162
+ animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
3163
+ }
3164
+ }
3165
+
3166
+ @keyframes zoomOutUp {
3167
+ 40% {
3168
+ opacity: 1;
3169
+ -webkit-transform: scale3d(.475, .475, .475) translate3d(0, 60px, 0);
3170
+ transform: scale3d(.475, .475, .475) translate3d(0, 60px, 0);
3171
+ -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
3172
+ animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
3173
+ }
3174
+
3175
+ 100% {
3176
+ opacity: 0;
3177
+ -webkit-transform: scale3d(.1, .1, .1) translate3d(0, -2000px, 0);
3178
+ transform: scale3d(.1, .1, .1) translate3d(0, -2000px, 0);
3179
+ -webkit-transform-origin: center bottom;
3180
+ transform-origin: center bottom;
3181
+ -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
3182
+ animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
3183
+ }
3184
+ }
3185
+
3186
+ .zoomOutUp {
3187
+ -webkit-animation-name: zoomOutUp;
3188
+ animation-name: zoomOutUp;
3189
+ }
3190
+
3191
+ @-webkit-keyframes slideInDown {
3192
+ 0% {
3193
+ -webkit-transform: translateY(-100%);
3194
+ transform: translateY(-100%);
3195
+ visibility: visible;
3196
+ }
3197
+
3198
+ 100% {
3199
+ -webkit-transform: translateY(0);
3200
+ transform: translateY(0);
3201
+ }
3202
+ }
3203
+
3204
+ @keyframes slideInDown {
3205
+ 0% {
3206
+ -webkit-transform: translateY(-100%);
3207
+ transform: translateY(-100%);
3208
+ visibility: visible;
3209
+ }
3210
+
3211
+ 100% {
3212
+ -webkit-transform: translateY(0);
3213
+ transform: translateY(0);
3214
+ }
3215
+ }
3216
+
3217
+ .slideInDown {
3218
+ -webkit-animation-name: slideInDown;
3219
+ animation-name: slideInDown;
3220
+ }
3221
+
3222
+ @-webkit-keyframes slideInLeft {
3223
+ 0% {
3224
+ -webkit-transform: translateX(-100%);
3225
+ transform: translateX(-100%);
3226
+ visibility: visible;
3227
+ }
3228
+
3229
+ 100% {
3230
+ -webkit-transform: translateX(0);
3231
+ transform: translateX(0);
3232
+ }
3233
+ }
3234
+
3235
+ @keyframes slideInLeft {
3236
+ 0% {
3237
+ -webkit-transform: translateX(-100%);
3238
+ transform: translateX(-100%);
3239
+ visibility: visible;
3240
+ }
3241
+
3242
+ 100% {
3243
+ -webkit-transform: translateX(0);
3244
+ transform: translateX(0);
3245
+ }
3246
+ }
3247
+
3248
+ .slideInLeft {
3249
+ -webkit-animation-name: slideInLeft;
3250
+ animation-name: slideInLeft;
3251
+ }
3252
+
3253
+ @-webkit-keyframes slideInRight {
3254
+ 0% {
3255
+ -webkit-transform: translateX(100%);
3256
+ transform: translateX(100%);
3257
+ visibility: visible;
3258
+ }
3259
+
3260
+ 100% {
3261
+ -webkit-transform: translateX(0);
3262
+ transform: translateX(0);
3263
+ }
3264
+ }
3265
+
3266
+ @keyframes slideInRight {
3267
+ 0% {
3268
+ -webkit-transform: translateX(100%);
3269
+ transform: translateX(100%);
3270
+ visibility: visible;
3271
+ }
3272
+
3273
+ 100% {
3274
+ -webkit-transform: translateX(0);
3275
+ transform: translateX(0);
3276
+ }
3277
+ }
3278
+
3279
+ .slideInRight {
3280
+ -webkit-animation-name: slideInRight;
3281
+ animation-name: slideInRight;
3282
+ }
3283
+
3284
+ @-webkit-keyframes slideInUp {
3285
+ 0% {
3286
+ -webkit-transform: translateY(100%);
3287
+ transform: translateY(100%);
3288
+ visibility: visible;
3289
+ }
3290
+
3291
+ 100% {
3292
+ -webkit-transform: translateY(0);
3293
+ transform: translateY(0);
3294
+ }
3295
+ }
3296
+
3297
+ @keyframes slideInUp {
3298
+ 0% {
3299
+ -webkit-transform: translateY(100%);
3300
+ transform: translateY(100%);
3301
+ visibility: visible;
3302
+ }
3303
+
3304
+ 100% {
3305
+ -webkit-transform: translateY(0);
3306
+ transform: translateY(0);
3307
+ }
3308
+ }
3309
+
3310
+ .slideInUp {
3311
+ -webkit-animation-name: slideInUp;
3312
+ animation-name: slideInUp;
3313
+ }
3314
+
3315
+ @-webkit-keyframes slideOutDown {
3316
+ 0% {
3317
+ -webkit-transform: translateY(0);
3318
+ transform: translateY(0);
3319
+ }
3320
+
3321
+ 100% {
3322
+ visibility: hidden;
3323
+ -webkit-transform: translateY(100%);
3324
+ transform: translateY(100%);
3325
+ }
3326
+ }
3327
+
3328
+ @keyframes slideOutDown {
3329
+ 0% {
3330
+ -webkit-transform: translateY(0);
3331
+ transform: translateY(0);
3332
+ }
3333
+
3334
+ 100% {
3335
+ visibility: hidden;
3336
+ -webkit-transform: translateY(100%);
3337
+ transform: translateY(100%);
3338
+ }
3339
+ }
3340
+
3341
+ .slideOutDown {
3342
+ -webkit-animation-name: slideOutDown;
3343
+ animation-name: slideOutDown;
3344
+ }
3345
+
3346
+ @-webkit-keyframes slideOutLeft {
3347
+ 0% {
3348
+ -webkit-transform: translateX(0);
3349
+ transform: translateX(0);
3350
+ }
3351
+
3352
+ 100% {
3353
+ visibility: hidden;
3354
+ -webkit-transform: translateX(-100%);
3355
+ transform: translateX(-100%);
3356
+ }
3357
+ }
3358
+
3359
+ @keyframes slideOutLeft {
3360
+ 0% {
3361
+ -webkit-transform: translateX(0);
3362
+ transform: translateX(0);
3363
+ }
3364
+
3365
+ 100% {
3366
+ visibility: hidden;
3367
+ -webkit-transform: translateX(-100%);
3368
+ transform: translateX(-100%);
3369
+ }
3370
+ }
3371
+
3372
+ .slideOutLeft {
3373
+ -webkit-animation-name: slideOutLeft;
3374
+ animation-name: slideOutLeft;
3375
+ }
3376
+
3377
+ @-webkit-keyframes slideOutRight {
3378
+ 0% {
3379
+ -webkit-transform: translateX(0);
3380
+ transform: translateX(0);
3381
+ }
3382
+
3383
+ 100% {
3384
+ visibility: hidden;
3385
+ -webkit-transform: translateX(100%);
3386
+ transform: translateX(100%);
3387
+ }
3388
+ }
3389
+
3390
+ @keyframes slideOutRight {
3391
+ 0% {
3392
+ -webkit-transform: translateX(0);
3393
+ transform: translateX(0);
3394
+ }
3395
+
3396
+ 100% {
3397
+ visibility: hidden;
3398
+ -webkit-transform: translateX(100%);
3399
+ transform: translateX(100%);
3400
+ }
3401
+ }
3402
+
3403
+ .slideOutRight {
3404
+ -webkit-animation-name: slideOutRight;
3405
+ animation-name: slideOutRight;
3406
+ }
3407
+
3408
+ @-webkit-keyframes slideOutUp {
3409
+ 0% {
3410
+ -webkit-transform: translateY(0);
3411
+ transform: translateY(0);
3412
+ }
3413
+
3414
+ 100% {
3415
+ visibility: hidden;
3416
+ -webkit-transform: translateY(-100%);
3417
+ transform: translateY(-100%);
3418
+ }
3419
+ }
3420
+
3421
+ @keyframes slideOutUp {
3422
+ 0% {
3423
+ -webkit-transform: translateY(0);
3424
+ transform: translateY(0);
3425
+ }
3426
+
3427
+ 100% {
3428
+ visibility: hidden;
3429
+ -webkit-transform: translateY(-100%);
3430
+ transform: translateY(-100%);
3431
+ }
3432
+ }
3433
+
3434
+ .slideOutUp {
3435
+ -webkit-animation-name: slideOutUp;
3436
+ animation-name: slideOutUp;
3437
+ }
css/hovereffect.css CHANGED
@@ -1,9 +1,8 @@
1
  /*
2
  CSS Name: Hovereffect Styles
3
  Description: Hover Stylesheet based on the idea of Hoverbox from http://host.sonspring.com/hoverbox/
4
- Author: Alex Rabe - Orginal by Nathan Smith
5
- Version: 1.60
6
-
7
  This is a template stylesheet which doesn't support description below the thumbnails. It's a experimental version.
8
 
9
  */
@@ -72,12 +71,12 @@ This is a template stylesheet which doesn't support description below the thumbn
72
  /* ----------- Album Styles Compact -------------*/
73
 
74
  .ngg-album-compact {
75
- float:left;
76
- height:180px;
77
  padding-right:6px !important;
78
- margin:0px !important;
79
  text-align:left;
80
- width:120px;
 
 
81
  }
82
 
83
  .ngg-album-compactbox {
@@ -295,23 +294,42 @@ This is a template stylesheet which doesn't support description below the thumbn
295
  .ngg-slideshow {
296
  overflow:hidden;
297
  position: relative;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
298
  }
299
 
300
- .ngg-slideshow * {
301
- vertical-align:middle;
 
302
  }
303
 
304
- /* See also : http://www.brunildo.org/test/img_center.html */
305
- .ngg-slideshow-loader{
306
- display: table-cell;
307
- text-align: center;
308
- vertical-align:middle;
309
  }
310
 
311
- .ngg-slideshow-loader img{
312
- background: none !important;
313
- border: 0 none !important;
314
- margin:auto !important;
315
  }
316
 
317
  /* ----------- Single picture -------------*/
1
  /*
2
  CSS Name: Hovereffect Styles
3
  Description: Hover Stylesheet based on the idea of Hoverbox from http://host.sonspring.com/hoverbox/
4
+ Author: NextCellent and Nathan Smith
5
+ Version: 1.9.22
 
6
  This is a template stylesheet which doesn't support description below the thumbnails. It's a experimental version.
7
 
8
  */
71
  /* ----------- Album Styles Compact -------------*/
72
 
73
  .ngg-album-compact {
 
 
74
  padding-right:6px !important;
75
+ margin:0px !important;
76
  text-align:left;
77
+ width:120px;
78
+ display:inline-block;
79
+ vertical-align:top;
80
  }
81
 
82
  .ngg-album-compactbox {
294
  .ngg-slideshow {
295
  overflow:hidden;
296
  position: relative;
297
+ margin-left: auto;
298
+ margin-right: auto;
299
+ }
300
+
301
+ .rs-slideshow {
302
+ position: relative;
303
+ }
304
+
305
+ .rs-slideshow .slide-container {
306
+ height: 100%;
307
+ left: 0;
308
+ overflow: hidden;
309
+ position: absolute;
310
+ top: 0;
311
+ width: 100%;
312
+ }
313
+
314
+ .rs-slideshow .slide-container img {
315
+ position: absolute;
316
  }
317
 
318
+ .rs-controls a,
319
+ .rs-index-list li {
320
+ float: left;
321
  }
322
 
323
+ .rs-controls ul{
324
+ float: left;
325
+ list-style: none;
326
+ width: auto;
327
+ margin: 0;
328
  }
329
 
330
+ /* Hide the slide data container */
331
+ .rs-slideshow .slides {
332
+ display: none;
 
333
  }
334
 
335
  /* ----------- Single picture -------------*/
css/ngg_dkret3.css CHANGED
@@ -1,8 +1,8 @@
1
- /*
2
  CSS Name: dkret3 Theme
3
  Description: NextGEN dkret3 style with a shadow effect
4
- Author: Jörn Kretzschmar (based on Alex Rabes Default Style)
5
- Version: 1.3
6
 
7
  This is a template stylesheet that can be used with NextGEN Gallery. I tested the
8
  styles with the theme dkret3. Modify it when your theme struggle with it,
@@ -60,12 +60,12 @@ it's only a template design
60
  /* ----------- Album Styles Compact -------------*/
61
 
62
  .ngg-album-compact {
63
- float:left;
64
- height:180px;
65
  padding-right:6px !important;
66
- margin:0px !important;
67
  text-align:left;
68
- width:120px;
 
 
69
  }
70
 
71
  .ngg-album-compactbox {
@@ -240,23 +240,42 @@ it's only a template design
240
  .ngg-slideshow {
241
  overflow:hidden;
242
  position: relative;
 
 
243
  }
244
 
245
- .ngg-slideshow * {
246
- vertical-align:middle;
 
 
 
 
 
 
 
 
 
 
 
 
 
247
  }
248
 
249
- /* See also : http://www.brunildo.org/test/img_center.html */
250
- .ngg-slideshow-loader{
251
- display: table-cell;
252
- text-align: center;
253
- vertical-align:middle;
 
 
 
 
 
254
  }
255
 
256
- .ngg-slideshow-loader img{
257
- background: none !important;
258
- border: 0 none !important;
259
- margin:auto !important;
260
  }
261
 
262
  /* ----------- Single picture -------------*/
1
+ /*
2
  CSS Name: dkret3 Theme
3
  Description: NextGEN dkret3 style with a shadow effect
4
+ Author: Jörn Kretzschmar and NextCellent
5
+ Version: 1.9.22
6
 
7
  This is a template stylesheet that can be used with NextGEN Gallery. I tested the
8
  styles with the theme dkret3. Modify it when your theme struggle with it,
60
  /* ----------- Album Styles Compact -------------*/
61
 
62
  .ngg-album-compact {
 
 
63
  padding-right:6px !important;
64
+ margin:0px !important;
65
  text-align:left;
66
+ width:120px;
67
+ display:inline-block;
68
+ vertical-align:top;
69
  }
70
 
71
  .ngg-album-compactbox {
240
  .ngg-slideshow {
241
  overflow:hidden;
242
  position: relative;
243
+ margin-left: auto;
244
+ margin-right: auto;
245
  }
246
 
247
+ .rs-slideshow {
248
+ position: relative;
249
+ }
250
+
251
+ .rs-slideshow .slide-container {
252
+ height: 100%;
253
+ left: 0;
254
+ overflow: hidden;
255
+ position: absolute;
256
+ top: 0;
257
+ width: 100%;
258
+ }
259
+
260
+ .rs-slideshow .slide-container img {
261
+ position: absolute;
262
  }
263
 
264
+ .rs-controls a,
265
+ .rs-index-list li {
266
+ float: left;
267
+ }
268
+
269
+ .rs-controls ul{
270
+ float: left;
271
+ list-style: none;
272
+ width: auto;
273
+ margin: 0;
274
  }
275
 
276
+ /* Hide the slide data container */
277
+ .rs-slideshow .slides {
278
+ display: none;
 
279
  }
280
 
281
  /* ----------- Single picture -------------*/
css/ngg_k2.css CHANGED
@@ -1,9 +1,9 @@
1
  /*
2
  CSS Name: K2 Theme
3
  Description: NextGEN Style for K2 Theme
4
- Author: Alex Rabe
5
- Version: 1.60
6
-
7
  This is a template stylesheet that can be used with NextGEN Gallery. I tested the
8
  styles with a default theme Kubrick. Modify it when your theme struggle with it,
9
  it's only a template design
@@ -63,12 +63,12 @@ it's only a template design
63
  /* ----------- Album Styles Compact -------------*/
64
 
65
  .ngg-album-compact {
66
- float:left;
67
- height:180px;
68
  padding-right:6px !important;
69
- margin:0px !important;
70
  text-align:left;
71
- width:120px;
 
 
72
  }
73
 
74
  .ngg-album-compactbox {
@@ -251,23 +251,42 @@ it's only a template design
251
  .ngg-slideshow {
252
  overflow:hidden;
253
  position: relative;
 
 
254
  }
255
 
256
- .ngg-slideshow * {
257
- vertical-align:middle;
 
 
 
 
 
 
 
 
 
 
 
 
 
258
  }
259
 
260
- /* See also : http://www.brunildo.org/test/img_center.html */
261
- .ngg-slideshow-loader{
262
- display: table-cell;
263
- text-align: center;
264
- vertical-align:middle;
 
 
 
 
 
265
  }
266
 
267
- .ngg-slideshow-loader img{
268
- background: none !important;
269
- border: 0 none !important;
270
- margin:auto !important;
271
  }
272
 
273
  /* ----------- Single picture -------------*/
1
  /*
2
  CSS Name: K2 Theme
3
  Description: NextGEN Style for K2 Theme
4
+ Author: NextCellent
5
+ Version: 1.9.22
6
+
7
  This is a template stylesheet that can be used with NextGEN Gallery. I tested the
8
  styles with a default theme Kubrick. Modify it when your theme struggle with it,
9
  it's only a template design
63
  /* ----------- Album Styles Compact -------------*/
64
 
65
  .ngg-album-compact {
 
 
66
  padding-right:6px !important;
67
+ margin:0px !important;
68
  text-align:left;
69
+ width:120px;
70
+ display:inline-block;
71
+ vertical-align:top;
72
  }
73
 
74
  .ngg-album-compactbox {
251
  .ngg-slideshow {
252
  overflow:hidden;
253
  position: relative;
254
+ margin-left: auto;
255
+ margin-right: auto;
256
  }
257
 
258
+ .rs-slideshow {
259
+ position: relative;
260
+ }
261
+
262
+ .rs-slideshow .slide-container {
263
+ height: 100%;
264
+ left: 0;
265
+ overflow: hidden;
266
+ position: absolute;
267
+ top: 0;
268
+ width: 100%;
269
+ }
270
+
271
+ .rs-slideshow .slide-container img {
272
+ position: absolute;
273
  }
274
 
275
+ .rs-controls a,
276
+ .rs-index-list li {
277
+ float: left;
278
+ }
279
+
280
+ .rs-controls ul{
281
+ float: left;
282
+ list-style: none;
283
+ width: auto;
284
+ margin: 0;
285
  }
286
 
287
+ /* Hide the slide data container */
288
+ .rs-slideshow .slides {
289
+ display: none;
 
290
  }
291
 
292
  /* ----------- Single picture -------------*/
css/ngg_shadow.css CHANGED
@@ -1,8 +1,8 @@
1
  /*
2
  CSS Name: Shadow Effect
3
  Description: NextGEN Default Style with a Shadow effect
4
- Author: Alex Rabe
5
- Version: 1.60
6
 
7
  This is a template stylesheet that can be used with NextGEN Gallery. I tested the
8
  styles with a default theme Kubrick. Modify it when your theme struggle with it,
@@ -60,12 +60,12 @@ it's only a template design
60
  /* ----------- Album Styles Compact -------------*/
61
 
62
  .ngg-album-compact {
63
- float:left;
64
- height:180px;
65
  padding-right:6px !important;
66
- margin:0px !important;
67
  text-align:left;
68
- width:120px;
 
 
69
  }
70
 
71
  .ngg-album-compactbox {
@@ -240,23 +240,42 @@ it's only a template design
240
  .ngg-slideshow {
241
  overflow:hidden;
242
  position: relative;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
243
  }
244
 
245
- .ngg-slideshow * {
246
- vertical-align:middle;
 
247
  }
248
 
249
- /* See also : http://www.brunildo.org/test/img_center.html */
250
- .ngg-slideshow-loader{
251
- display: table-cell;
252
- text-align: center;
253
- vertical-align:middle;
254
  }
255
 
256
- .ngg-slideshow-loader img{
257
- background: none !important;
258
- border: 0 none !important;
259
- margin:auto !important;
260
  }
261
 
262
  /* ----------- Single picture -------------*/
1
  /*
2
  CSS Name: Shadow Effect
3
  Description: NextGEN Default Style with a Shadow effect
4
+ Author: NextCellent
5
+ Version: 1.9.22
6
 
7
  This is a template stylesheet that can be used with NextGEN Gallery. I tested the
8
  styles with a default theme Kubrick. Modify it when your theme struggle with it,
60
  /* ----------- Album Styles Compact -------------*/
61
 
62
  .ngg-album-compact {
 
 
63
  padding-right:6px !important;
64
+ margin:0px !important;
65
  text-align:left;
66
+ width:120px;
67
+ display:inline-block;
68
+ vertical-align:top;
69
  }
70
 
71
  .ngg-album-compactbox {
240
  .ngg-slideshow {
241
  overflow:hidden;
242
  position: relative;
243
+ margin-left: auto;
244
+ margin-right: auto;
245
+ }
246
+
247
+ .rs-slideshow {
248
+ position: relative;
249
+ }
250
+
251
+ .rs-slideshow .slide-container {
252
+ height: 100%;
253
+ left: 0;
254
+ overflow: hidden;
255
+ position: absolute;
256
+ top: 0;
257
+ width: 100%;
258
+ }
259
+
260
+ .rs-slideshow .slide-container img {
261
+ position: absolute;
262
  }
263
 
264
+ .rs-controls a,
265
+ .rs-index-list li {
266
+ float: left;
267
  }
268
 
269
+ .rs-controls ul{
270
+ float: left;
271
+ list-style: none;
272
+ width: auto;
273
+ margin: 0;
274
  }
275
 
276
+ /* Hide the slide data container */
277
+ .rs-slideshow .slides {
278
+ display: none;
 
279
  }
280
 
281
  /* ----------- Single picture -------------*/
css/ngg_shadow2.css CHANGED
@@ -1,8 +1,8 @@
1
  /*
2
  CSS Name: Shadow Effect with Description text
3
  Description: NextGEN Default Style with a Shadow effect and description text below the thumbnail
4
- Author: Alex Rabe
5
- Version: 1.60
6
 
7
  This is a template stylesheet that can be used with NextGEN Gallery. I tested the
8
  styles with a default theme Kubrick. Modify it when your theme struggle with it,
@@ -60,12 +60,12 @@ it's only a template design
60
  /* ----------- Album Styles Compact -------------*/
61
 
62
  .ngg-album-compact {
63
- float:left;
64
- height:180px;
65
  padding-right:6px !important;
66
- margin:0px !important;
67
  text-align:left;
68
- width:120px;
 
 
69
  }
70
 
71
  .ngg-album-compactbox {
@@ -248,23 +248,42 @@ it's only a template design
248
  .ngg-slideshow {
249
  overflow:hidden;
250
  position: relative;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
251
  }
252
 
253
- .ngg-slideshow * {
254
- vertical-align:middle;
 
255
  }
256
 
257
- /* See also : http://www.brunildo.org/test/img_center.html */
258
- .ngg-slideshow-loader{
259
- display: table-cell;
260
- text-align: center;
261
- vertical-align:middle;
262
  }
263
 
264
- .ngg-slideshow-loader img{
265
- background: none !important;
266
- border: 0 none !important;
267
- margin:auto !important;
268
  }
269
 
270
  /* ----------- Single picture -------------*/
1
  /*
2
  CSS Name: Shadow Effect with Description text
3
  Description: NextGEN Default Style with a Shadow effect and description text below the thumbnail
4
+ Author: NextCellent
5
+ Version: 1.9.22
6
 
7
  This is a template stylesheet that can be used with NextGEN Gallery. I tested the
8
  styles with a default theme Kubrick. Modify it when your theme struggle with it,
60
  /* ----------- Album Styles Compact -------------*/
61
 
62
  .ngg-album-compact {
 
 
63
  padding-right:6px !important;
64
+ margin:0px !important;
65
  text-align:left;
66
+ width:120px;
67
+ display:inline-block;
68
+ vertical-align:top;
69
  }
70
 
71
  .ngg-album-compactbox {
248
  .ngg-slideshow {
249
  overflow:hidden;
250
  position: relative;
251
+ margin-left: auto;
252
+ margin-right: auto;
253
+ }
254
+
255
+ .rs-slideshow {
256
+ position: relative;
257
+ }
258
+
259
+ .rs-slideshow .slide-container {
260
+ height: 100%;
261
+ left: 0;
262
+ overflow: hidden;
263
+ position: absolute;
264
+ top: 0;
265
+ width: 100%;
266
+ }
267
+
268
+ .rs-slideshow .slide-container img {
269
+ position: absolute;
270
  }
271
 
272
+ .rs-controls a,
273
+ .rs-index-list li {
274
+ float: left;
275
  }
276
 
277
+ .rs-controls ul{
278
+ float: left;
279
+ list-style: none;
280
+ width: auto;
281
+ margin: 0;
282
  }
283
 
284
+ /* Hide the slide data container */
285
+ .rs-slideshow .slides {
286
+ display: none;
 
287
  }
288
 
289
  /* ----------- Single picture -------------*/
css/nggallery.css CHANGED
@@ -1,8 +1,8 @@
1
  /*
2
  CSS Name: Default Styles
3
  Description: NextGEN Default Gallery Stylesheet
4
- Author: Alex Rabe
5
- Version: 2.11
6
 
7
  This is a template stylesheet that can be used with NextGEN Gallery. I tested the
8
  styles with a default theme Kubrick. Modify it when your theme struggle with it,
@@ -75,11 +75,12 @@ html>body .ngg-album {
75
  /* ----------- Album Styles Compact -------------*/
76
 
77
  .ngg-album-compact {
78
- float:left;
79
  padding-right:6px !important;
80
  margin:0px !important;
81
  text-align:left;
82
  width:120px;
 
 
83
  }
84
 
85
  .ngg-album-compactbox {
@@ -270,21 +271,38 @@ html>body .ngg-album {
270
  margin-right: auto;
271
  }
272
 
273
- .ngg-slideshow * {
274
- vertical-align:middle;
 
 
 
 
 
 
 
 
 
 
 
 
 
275
  }
276
 
277
- /* See also : http://www.brunildo.org/test/img_center.html */
278
- .ngg-slideshow-loader{
279
- display: table-cell;
280
- text-align: center;
281
- vertical-align:middle;
 
 
 
 
 
282
  }
283
 
284
- .ngg-slideshow-loader img{
285
- background: none !important;
286
- border: 0 none !important;
287
- margin:auto !important;
288
  }
289
 
290
  /* ----------- Single picture -------------*/
1
  /*
2
  CSS Name: Default Styles
3
  Description: NextGEN Default Gallery Stylesheet
4
+ Author: NextCellent
5
+ Version: 1.9.22
6
 
7
  This is a template stylesheet that can be used with NextGEN Gallery. I tested the
8
  styles with a default theme Kubrick. Modify it when your theme struggle with it,
75
  /* ----------- Album Styles Compact -------------*/
76
 
77
  .ngg-album-compact {
 
78
  padding-right:6px !important;
79
  margin:0px !important;
80
  text-align:left;
81
  width:120px;
82
+ display:inline-block;
83
+ vertical-align:top;
84
  }
85
 
86
  .ngg-album-compactbox {
271
  margin-right: auto;
272
  }
273
 
274
+ .rs-slideshow {
275
+ position: relative;
276
+ }
277
+
278
+ .rs-slideshow .slide-container {
279
+ height: 100%;
280
+ left: 0;
281
+ overflow: hidden;
282
+ position: absolute;
283
+ top: 0;
284
+ width: 100%;
285
+ }
286
+
287
+ .rs-slideshow .slide-container img {
288
+ position: absolute;
289
  }
290
 
291
+ .rs-controls a,
292
+ .rs-index-list li {
293
+ float: left;
294
+ }
295
+
296
+ .rs-controls ul{
297
+ float: left;
298
+ list-style: none;
299
+ width: auto;
300
+ margin: 0;
301
  }
302
 
303
+ /* Hide the slide data container */
304
+ .rs-slideshow .slides {
305
+ display: none;
 
306
  }
307
 
308
  /* ----------- Single picture -------------*/
css/qunit-1.16.0.css ADDED
@@ -0,0 +1,264 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /*!
2
+ * QUnit 1.16.0
3
+ * http://qunitjs.com/
4
+ *
5
+ * Copyright 2006, 2014 jQuery Foundation and other contributors
6
+ * Released under the MIT license
7
+ * http://jquery.org/license
8
+ *
9
+ * Date: 2014-12-03T16:32Z
10
+ */
11
+
12
+ /** Font Family and Sizes */
13
+
14
+ #qunit-tests, #qunit-header, #qunit-banner, #qunit-testrunner-toolbar, #qunit-userAgent, #qunit-testresult {
15
+ font-family: "Helvetica Neue Light", "HelveticaNeue-Light", "Helvetica Neue", Calibri, Helvetica, Arial, sans-serif;
16
+ }
17
+
18
+ #qunit-testrunner-toolbar, #qunit-userAgent, #qunit-testresult, #qunit-tests li { font-size: small; }
19
+ #qunit-tests { font-size: smaller; }
20
+
21
+
22
+ /** Resets */
23
+
24
+ #qunit-tests, #qunit-header, #qunit-banner, #qunit-userAgent, #qunit-testresult, #qunit-modulefilter {
25
+ margin: 0;
26
+ padding: 0;
27
+ }
28
+
29
+
30
+ /** Header */
31
+
32
+ #qunit-header {
33
+ padding: 0.5em 0 0.5em 1em;
34
+
35
+ color: #8699A4;
36
+ background-color: #0D3349;
37
+
38
+ font-size: 1.5em;
39
+ line-height: 1em;
40
+ font-weight: 400;
41
+
42
+ border-radius: 5px 5px 0 0;
43
+ }
44
+
45
+ #qunit-header a {
46
+ text-decoration: none;
47
+ color: #C2CCD1;
48
+ }
49
+
50
+ #qunit-header a:hover,
51
+ #qunit-header a:focus {
52
+ color: #FFF;
53
+ }
54
+
55
+ #qunit-testrunner-toolbar label {
56
+ display: inline-block;
57
+ padding: 0 0.5em 0 0.1em;
58
+ }
59
+
60
+ #qunit-banner {
61
+ height: 5px;
62
+ }
63
+
64
+ #qunit-testrunner-toolbar {
65
+ padding: 0.5em 1em 0.5em 1em;
66
+ color: #5E740B;
67
+ background-color: #EEE;
68
+ overflow: hidden;
69
+ }
70
+
71
+ #qunit-userAgent {
72
+ padding: 0.5em 1em 0.5em 1em;
73
+ background-color: #2B81AF;
74
+ color: #FFF;
75
+ text-shadow: rgba(0, 0, 0, 0.5) 2px 2px 1px;
76
+ }
77
+
78
+ #qunit-modulefilter-container {
79
+ float: right;
80
+ }
81
+
82
+ /** Tests: Pass/Fail */
83
+
84
+ #qunit-tests {
85
+ list-style-position: inside;
86
+ }
87
+
88
+ #qunit-tests li {
89
+ padding: 0.4em 1em 0.4em 1em;
90
+ border-bottom: 1px solid #FFF;
91
+ list-style-position: inside;
92
+ }
93
+
94
+ #qunit-tests > li {
95
+ display: none;
96
+ }
97
+
98
+ #qunit-tests li.pass, #qunit-tests li.running, #qunit-tests li.fail {
99
+ display: list-item;
100
+ }
101
+
102
+ #qunit-tests.hidepass li.pass, #qunit-tests.hidepass li.running {
103
+ display: none;
104
+ }
105
+
106
+ #qunit-tests li strong {
107
+ cursor: pointer;
108
+ }
109
+
110
+ #qunit-tests li.skipped strong {
111
+ cursor: default;
112
+ }
113
+
114
+ #qunit-tests li a {
115
+ padding: 0.5em;
116
+ color: #C2CCD1;
117
+ text-decoration: none;
118
+ }
119
+ #qunit-tests li a:hover,
120
+ #qunit-tests li a:focus {
121
+ color: #000;
122
+ }
123
+
124
+ #qunit-tests li .runtime {
125
+ float: right;
126
+ font-size: smaller;
127
+ }
128
+
129
+ .qunit-assert-list {
130
+ margin-top: 0.5em;
131
+ padding: 0.5em;
132
+
133
+ background-color: #FFF;
134
+
135
+ border-radius: 5px;
136
+ }
137
+
138
+ .qunit-collapsed {
139
+ display: none;
140
+ }
141
+
142
+ #qunit-tests table {
143
+ border-collapse: collapse;
144
+ margin-top: 0.2em;
145
+ }
146
+
147
+ #qunit-tests th {
148
+ text-align: right;
149
+ vertical-align: top;
150
+ padding: 0 0.5em 0 0;
151
+ }
152
+
153
+ #qunit-tests td {
154
+ vertical-align: top;
155
+ }
156
+
157
+ #qunit-tests pre {
158
+ margin: 0;
159
+ white-space: pre-wrap;
160
+ word-wrap: break-word;
161
+ }
162
+
163
+ #qunit-tests del {
164
+ background-color: #E0F2BE;
165
+ color: #374E0C;
166
+ text-decoration: none;
167
+ }
168
+
169
+ #qunit-tests ins {
170
+ background-color: #FFCACA;
171
+ color: #500;
172
+ text-decoration: none;
173
+ }
174
+
175
+ /*** Test Counts */
176
+
177
+ #qunit-tests b.counts { color: #000; }
178
+ #qunit-tests b.passed { color: #5E740B; }
179
+ #qunit-tests b.failed { color: #710909; }
180
+
181
+ #qunit-tests li li {
182
+ padding: 5px;
183
+ background-color: #FFF;
184
+ border-bottom: none;
185
+ list-style-position: inside;
186
+ }
187
+
188
+ /*** Passing Styles */
189
+
190
+ #qunit-tests li li.pass {
191
+ color: #3C510C;
192
+ background-color: #FFF;
193
+ border-left: 10px solid #C6E746;
194
+ }
195
+
196
+ #qunit-tests .pass { color: #528CE0; background-color: #D2E0E6; }
197
+ #qunit-tests .pass .test-name { color: #366097; }
198
+
199
+ #qunit-tests .pass .test-actual,
200
+ #qunit-tests .pass .test-expected { color: #999; }
201
+
202
+ #qunit-banner.qunit-pass { background-color: #C6E746; }
203
+
204
+ /*** Failing Styles */
205
+
206
+ #qunit-tests li li.fail {
207
+ color: #710909;
208
+ background-color: #FFF;
209
+ border-left: 10px solid #EE5757;
210
+ white-space: pre;
211
+ }
212
+
213
+ #qunit-tests > li:last-child {
214
+ border-radius: 0 0 5px 5px;
215
+ }
216
+
217
+ #qunit-tests .fail { color: #000; background-color: #EE5757; }
218
+ #qunit-tests .fail .test-name,
219
+ #qunit-tests .fail .module-name { color: #000; }
220
+
221
+ #qunit-tests .fail .test-actual { color: #EE5757; }
222
+ #qunit-tests .fail .test-expected { color: #008000; }
223
+
224
+ #qunit-banner.qunit-fail { background-color: #EE5757; }
225
+
226
+ /*** Skipped tests */
227
+
228
+ #qunit-tests .skipped {
229
+ background-color: #EBECE9;
230
+ }
231
+
232
+ #qunit-tests .qunit-skipped-label {
233
+ background-color: #F4FF77;
234
+ display: inline-block;
235
+ font-style: normal;
236
+ color: #366097;
237
+ line-height: 1.8em;
238
+ padding: 0 0.5em;
239
+ margin: -0.4em 0.4em -0.4em 0;
240
+ }
241
+
242
+ /** Result */
243
+
244
+ #qunit-testresult {
245
+ padding: 0.5em 1em 0.5em 1em;
246
+
247
+ color: #2B81AF;
248
+ background-color: #D2E0E6;
249
+
250
+ border-bottom: 1px solid #FFF;
251
+ }
252
+ #qunit-testresult .module-name {
253
+ font-weight: 700;
254
+ }
255
+
256
+ /** Fixture */
257
+
258
+ #qunit-fixture {
259
+ position: absolute;
260
+ top: -10000px;
261
+ left: -10000px;
262
+ width: 1000px;
263
+ height: 1000px;
264
+ }
js/jquery.cycle.all.js DELETED
@@ -1,1491 +0,0 @@
1
- /*!
2
- * jQuery Cycle Plugin (with Transition Definitions)
3
- * Examples and documentation at: http://jquery.malsup.com/cycle/
4
- * Copyright (c) 2007-2010 M. Alsup
5
- * Version: 2.9995 (09-AUG-2011)
6
- * Dual licensed under the MIT and GPL licenses.
7
- * http://jquery.malsup.com/license.html
8
- * Requires: jQuery v1.3.2 or later
9
- */
10
- (function($) {
11
-
12
- var ver = '2.9995';
13
-
14
- // if $.support is not defined (pre jQuery 1.3) add what I need
15
- if ($.support == undefined) {
16
- $.support = {
17
- opacity: !($.browser.msie)
18
- };
19
- }
20
-
21
- function debug(s) {
22
- $.fn.cycle.debug && log(s);
23
- }
24
- function log() {
25
- window.console && console.log && console.log('[cycle] ' + Array.prototype.join.call(arguments,' '));
26
- }
27
- $.expr[':'].paused = function(el) {
28
- return el.cyclePause;
29
- }
30
-
31
-
32
- // the options arg can be...
33
- // a number - indicates an immediate transition should occur to the given slide index
34
- // a string - 'pause', 'resume', 'toggle', 'next', 'prev', 'stop', 'destroy' or the name of a transition effect (ie, 'fade', 'zoom', etc)
35
- // an object - properties to control the slideshow
36
- //
37
- // the arg2 arg can be...
38
- // the name of an fx (only used in conjunction with a numeric value for 'options')
39
- // the value true (only used in first arg == 'resume') and indicates
40
- // that the resume should occur immediately (not wait for next timeout)
41
-
42
- $.fn.cycle = function(options, arg2) {
43
- var o = { s: this.selector, c: this.context };
44
-
45
- // in 1.3+ we can fix mistakes with the ready state
46
- if (this.length === 0 && options != 'stop') {
47
- if (!$.isReady && o.s) {
48
- log('DOM not ready, queuing slideshow');
49
- $(function() {
50
- $(o.s,o.c).cycle(options,arg2);
51
- });
52
- return this;
53
- }
54
- // is your DOM ready? http://docs.jquery.com/Tutorials:Introducing_$(document).ready()
55
- log('terminating; zero elements found by selector' + ($.isReady ? '' : ' (DOM not ready)'));
56
- return this;
57
- }
58
-
59
- // iterate the matched nodeset
60
- return this.each(function() {
61
- var opts = handleArguments(this, options, arg2);
62
- if (opts === false)
63
- return;
64
-
65
- opts.updateActivePagerLink = opts.updateActivePagerLink || $.fn.cycle.updateActivePagerLink;
66
-
67
- // stop existing slideshow for this container (if there is one)
68
- if (this.cycleTimeout)
69
- clearTimeout(this.cycleTimeout);
70
- this.cycleTimeout = this.cyclePause = 0;
71
-
72
- var $cont = $(this);
73
- var $slides = opts.slideExpr ? $(opts.slideExpr, this) : $cont.children();
74
- var els = $slides.get();
75
-
76
- var opts2 = buildOptions($cont, $slides, els, opts, o);
77
- if (opts2 === false)
78
- return;
79
-
80
- if (els.length < 2) {
81
- log('terminating; too few slides: ' + els.length);
82
- return;
83
- }
84
-
85
- var startTime = opts2.continuous ? 10 : getTimeout(els[opts2.currSlide], els[opts2.nextSlide], opts2, !opts2.backwards);
86
-
87
- // if it's an auto slideshow, kick it off
88
- if (startTime) {
89
- startTime += (opts2.delay || 0);
90
- if (startTime < 10)
91
- startTime = 10;
92
- debug('first timeout: ' + startTime);
93
- this.cycleTimeout = setTimeout(function(){go(els,opts2,0,!opts.backwards)}, startTime);
94
- }
95
- });
96
- };
97
-
98
- function triggerPause(cont, byHover, onPager) {
99
- var opts = $(cont).data('cycle.opts');
100
- var paused = !!cont.cyclePause;
101
- if (paused && opts.paused)
102
- opts.paused(cont, opts, byHover, onPager);
103
- else if (!paused && opts.resumed)
104
- opts.resumed(cont, opts, byHover, onPager);
105
- }
106
-
107
- // process the args that were passed to the plugin fn
108
- function handleArguments(cont, options, arg2) {
109
- if (cont.cycleStop == undefined)
110
- cont.cycleStop = 0;
111
- if (options === undefined || options === null)
112
- options = {};
113
- if (options.constructor == String) {
114
- switch(options) {
115
- case 'destroy':
116
- case 'stop':
117
- var opts = $(cont).data('cycle.opts');
118
- if (!opts)
119
- return false;
120
- cont.cycleStop++; // callbacks look for change
121
- if (cont.cycleTimeout)
122
- clearTimeout(cont.cycleTimeout);
123
- cont.cycleTimeout = 0;
124
- opts.elements && $(opts.elements).stop();
125
- $(cont).removeData('cycle.opts');
126
- if (options == 'destroy')
127
- destroy(opts);
128
- return false;
129
- case 'toggle':
130
- cont.cyclePause = (cont.cyclePause === 1) ? 0 : 1;
131
- checkInstantResume(cont.cyclePause, arg2, cont);
132
- triggerPause(cont);
133
- return false;
134
- case 'pause':
135
- cont.cyclePause = 1;
136
- triggerPause(cont);
137
- return false;
138
- case 'resume':
139
- cont.cyclePause = 0;
140
- checkInstantResume(false, arg2, cont);
141
- triggerPause(cont);
142
- return false;
143
- case 'prev':
144
- case 'next':
145
- var opts = $(cont).data('cycle.opts');
146
- if (!opts) {
147
- log('options not found, "prev/next" ignored');
148
- return false;
149
- }
150
- $.fn.cycle[options](opts);
151
- return false;
152
- default:
153
- options = { fx: options };
154
- };
155
- return options;
156
- }
157
- else if (options.constructor == Number) {
158
- // go to the requested slide
159
- var num = options;
160
- options = $(cont).data('cycle.opts');
161
- if (!options) {
162
- log('options not found, can not advance slide');
163
- return false;
164
- }
165
- if (num < 0 || num >= options.elements.length) {
166
- log('invalid slide index: ' + num);
167
- return false;
168
- }
169
- options.nextSlide = num;
170
- if (cont.cycleTimeout) {
171
- clearTimeout(cont.cycleTimeout);
172
- cont.cycleTimeout = 0;
173
- }
174
- if (typeof arg2 == 'string')
175
- options.oneTimeFx = arg2;
176
- go(options.elements, options, 1, num >= options.currSlide);
177
- return false;
178
- }
179
- return options;
180
-
181
- function checkInstantResume(isPaused, arg2, cont) {
182
- if (!isPaused && arg2 === true) { // resume now!
183
- var options = $(cont).data('cycle.opts');
184
- if (!options) {
185
- log('options not found, can not resume');
186
- return false;
187
- }
188
- if (cont.cycleTimeout) {
189
- clearTimeout(cont.cycleTimeout);
190
- cont.cycleTimeout = 0;
191
- }
192
- go(options.elements, options, 1, !options.backwards);
193
- }
194
- }
195
- };
196
-
197
- function removeFilter(el, opts) {
198
- if (!$.support.opacity && opts.cleartype && el.style.filter) {
199
- try { el.style.removeAttribute('filter'); }
200
- catch(smother) {} // handle old opera versions
201
- }
202
- };
203
-
204
- // unbind event handlers
205
- function destroy(opts) {
206
- if (opts.next)
207
- $(opts.next).unbind(opts.prevNextEvent);
208
- if (opts.prev)
209
- $(opts.prev).unbind(opts.prevNextEvent);
210
-
211
- if (opts.pager || opts.pagerAnchorBuilder)
212
- $.each(opts.pagerAnchors || [], function() {
213
- this.unbind().remove();
214
- });
215
- opts.pagerAnchors = null;
216
- if (opts.destroy) // callback
217
- opts.destroy(opts);
218
- };
219
-
220
- // one-time initialization
221
- function buildOptions($cont, $slides, els, options, o) {
222
- // support metadata plugin (v1.0 and v2.0)
223
- var opts = $.extend({}, $.fn.cycle.defaults, options || {}, $.metadata ? $cont.metadata() : $.meta ? $cont.data() : {});
224
- var meta = $.isFunction($cont.data) ? $cont.data(opts.metaAttr) : null;
225
- if (meta)
226
- opts = $.extend(opts, meta);
227
- if (opts.autostop)
228
- opts.countdown = opts.autostopCount || els.length;
229
-
230
- var cont = $cont[0];
231
- $cont.data('cycle.opts', opts);
232
- opts.$cont = $cont;
233
- opts.stopCount = cont.cycleStop;
234
- opts.elements = els;
235
- opts.before = opts.before ? [opts.before] : [];
236
- opts.after = opts.after ? [opts.after] : [];
237
-
238
- // push some after callbacks
239
- if (!$.support.opacity && opts.cleartype)
240
- opts.after.push(function() { removeFilter(this, opts); });
241
- if (opts.continuous)
242
- opts.after.push(function() { go(els,opts,0,!opts.backwards); });
243
-
244
- saveOriginalOpts(opts);
245
-
246
- // clearType corrections
247
- if (!$.support.opacity && opts.cleartype && !opts.cleartypeNoBg)
248
- clearTypeFix($slides);
249
-
250
- // container requires non-static position so that slides can be position within
251
- if ($cont.css('position') == 'static')
252
- $cont.css('position', 'relative');
253
- if (opts.width)
254
- $cont.width(opts.width);
255
- if (opts.height && opts.height != 'auto')
256
- $cont.height(opts.height);
257
-
258
- if (opts.startingSlide)
259
- opts.startingSlide = parseInt(opts.startingSlide,10);
260
- else if (opts.backwards)
261
- opts.startingSlide = els.length - 1;
262
-
263
- // if random, mix up the slide array
264
- if (opts.random) {
265
- opts.randomMap = [];
266
- for (var i = 0; i < els.length; i++)
267
- opts.randomMap.push(i);
268
- opts.randomMap.sort(function(a,b) {return Math.random() - 0.5;});
269
- opts.randomIndex = 1;
270
- opts.startingSlide = opts.randomMap[1];
271
- }
272
- else if (opts.startingSlide >= els.length)
273
- opts.startingSlide = 0; // catch bogus input
274
- opts.currSlide = opts.startingSlide || 0;
275
- var first = opts.startingSlide;
276
-
277
- // set position and zIndex on all the slides
278
- $slides.css({position: 'absolute', top:0, left:0}).hide().each(function(i) {
279
- var z;
280
- if (opts.backwards)
281
- z = first ? i <= first ? els.length + (i-first) : first-i : els.length-i;
282
- else
283
- z = first ? i >= first ? els.length - (i-first) : first-i : els.length-i;
284
- $(this).css('z-index', z)
285
- });
286
-
287
- // make sure first slide is visible
288
- $(els[first]).css('opacity',1).show(); // opacity bit needed to handle restart use case
289
- removeFilter(els[first], opts);
290
-
291
- // stretch slides
292
- if (opts.fit) {
293
- if (!opts.aspect) {
294
- if (opts.width)
295
- $slides.width(opts.width);
296
- if (opts.height && opts.height != 'auto')
297
- $slides.height(opts.height);
298
- } else {
299
- $slides.each(function(){
300
- var $slide = $(this);
301
- var ratio = (opts.aspect === true) ? $slide.width()/$slide.height() : opts.aspect;
302
- if( opts.width && $slide.width() != opts.width ) {
303
- $slide.width( opts.width );
304
- $slide.height( opts.width / ratio );
305
- }
306
-
307
- if( opts.height && $slide.height() < opts.height ) {
308
- $slide.height( opts.height );
309
- $slide.width( opts.height * ratio );
310
- }
311
- });
312
- }
313
- }
314
-
315
- if (opts.center && ((!opts.fit) || opts.aspect)) {
316
- $slides.each(function(){
317
- var $slide = $(this);
318
- $slide.css({
319
- "margin-left": opts.width ?
320
- ((opts.width - $slide.width()) / 2) + "px" :
321
- 0,
322
- "margin-top": opts.height ?
323
- ((opts.height - $slide.height()) / 2) + "px" :
324
- 0
325
- });
326
- });
327
- }
328
-
329
- if (opts.center && !opts.fit && !opts.slideResize) {
330
- $slides.each(function(){
331
- var $slide = $(this);
332
- $slide.css({
333
- "margin-left": opts.width ? ((opts.width - $slide.width()) / 2) + "px" : 0,
334
- "margin-top": opts.height ? ((opts.height - $slide.height()) / 2) + "px" : 0
335
- });
336
- });
337
- }
338
-
339
- // stretch container
340
- var reshape = opts.containerResize && !$cont.innerHeight();
341
- if (reshape) { // do this only if container has no size http://tinyurl.com/da2oa9
342
- var maxw = 0, maxh = 0;
343
- for(var j=0; j < els.length; j++) {
344
- var $e = $(els[j]), e = $e[0], w = $e.outerWidth(), h = $e.outerHeight();
345
- if (!w) w = e.offsetWidth || e.width || $e.attr('width');
346
- if (!h) h = e.offsetHeight || e.height || $e.attr('height');
347
- maxw = w > maxw ? w : maxw;
348
- maxh = h > maxh ? h : maxh;
349
- }
350
- if (maxw > 0 && maxh > 0)
351
- $cont.css({width:maxw+'px',height:maxh+'px'});
352
- }
353
-
354
- var pauseFlag = false; // https://github.com/malsup/cycle/issues/44
355
- if (opts.pause)
356
- $cont.hover(
357
- function(){
358
- pauseFlag = true;
359
- this.cyclePause++;
360
- triggerPause(cont, true);
361
- },
362
- function(){
363
- pauseFlag && this.cyclePause--;
364
- triggerPause(cont, true);
365
- }
366
- );
367
-
368
- if (supportMultiTransitions(opts) === false)
369
- return false;
370
-
371
- // apparently a lot of people use image slideshows without height/width attributes on the images.
372
- // Cycle 2.50+ requires the sizing info for every slide; this block tries to deal with that.
373
- var requeue = false;
374
- options.requeueAttempts = options.requeueAttempts || 0;
375
- $slides.each(function() {
376
- // try to get height/width of each slide
377
- var $el = $(this);
378
- this.cycleH = (opts.fit && opts.height) ? opts.height : ($el.height() || this.offsetHeight || this.height || $el.attr('height') || 0);
379
- this.cycleW = (opts.fit && opts.width) ? opts.width : ($el.width() || this.offsetWidth || this.width || $el.attr('width') || 0);
380
-
381
- if ( $el.is('img') ) {
382
- // sigh.. sniffing, hacking, shrugging... this crappy hack tries to account for what browsers do when
383
- // an image is being downloaded and the markup did not include sizing info (height/width attributes);
384
- // there seems to be some "default" sizes used in this situation
385
- var loadingIE = ($.browser.msie && this.cycleW == 28 && this.cycleH == 30 && !this.complete);
386
- var loadingFF = ($.browser.mozilla && this.cycleW == 34 && this.cycleH == 19 && !this.complete);
387
- var loadingOp = ($.browser.opera && ((this.cycleW == 42 && this.cycleH == 19) || (this.cycleW == 37 && this.cycleH == 17)) && !this.complete);
388
- var loadingOther = (this.cycleH == 0 && this.cycleW == 0 && !this.complete);
389
- // don't requeue for images that are still loading but have a valid size
390
- if (loadingIE || loadingFF || loadingOp || loadingOther) {
391
- if (o.s && opts.requeueOnImageNotLoaded && ++options.requeueAttempts < 100) { // track retry count so we don't loop forever
392
- log(options.requeueAttempts,' - img slide not loaded, requeuing slideshow: ', this.src, this.cycleW, this.cycleH);
393
- setTimeout(function() {$(o.s,o.c).cycle(options)}, opts.requeueTimeout);
394
- requeue = true;
395
- return false; // break each loop
396
- }
397
- else {
398
- log('could not determine size of image: '+this.src, this.cycleW, this.cycleH);
399
- }
400
- }
401
- }
402
- return true;
403
- });
404
-
405
- if (requeue)
406
- return false;
407
-
408
- opts.cssBefore = opts.cssBefore || {};
409
- opts.cssAfter = opts.cssAfter || {};
410
- opts.cssFirst = opts.cssFirst || {};
411
- opts.animIn = opts.animIn || {};
412
- opts.animOut = opts.animOut || {};
413
-
414
- $slides.not(':eq('+first+')').css(opts.cssBefore);
415
- $($slides[first]).css(opts.cssFirst);
416
-
417
- if (opts.timeout) {
418
- opts.timeout = parseInt(opts.timeout,10);
419
- // ensure that timeout and speed settings are sane
420
- if (opts.speed.constructor == String)
421
- opts.speed = $.fx.speeds[opts.speed] || parseInt(opts.speed,10);
422
- if (!opts.sync)
423
- opts.speed = opts.speed / 2;
424
-
425
- var buffer = opts.fx == 'none' ? 0 : opts.fx == 'shuffle' ? 500 : 250;
426
- while((opts.timeout - opts.speed) < buffer) // sanitize timeout
427
- opts.timeout += opts.speed;
428
- }
429
- if (opts.easing)
430
- opts.easeIn = opts.easeOut = opts.easing;
431
- if (!opts.speedIn)
432
- opts.speedIn = opts.speed;
433
- if (!opts.speedOut)
434
- opts.speedOut = opts.speed;
435
-
436
- opts.slideCount = els.length;
437
- opts.currSlide = opts.lastSlide = first;
438
- if (opts.random) {
439
- if (++opts.randomIndex == els.length)
440
- opts.randomIndex = 0;
441
- opts.nextSlide = opts.randomMap[opts.randomIndex];
442
- }
443
- else if (opts.backwards)
444
- opts.nextSlide = opts.startingSlide == 0 ? (els.length-1) : opts.startingSlide-1;
445
- else
446
- opts.nextSlide = opts.startingSlide >= (els.length-1) ? 0 : opts.startingSlide+1;
447
-
448
- // run transition init fn
449
- if (!opts.multiFx) {
450
- var init = $.fn.cycle.transitions[opts.fx];
451
- if ($.isFunction(init))
452
- init($cont, $slides, opts);
453
- else if (opts.fx != 'custom' && !opts.multiFx) {
454
- log('unknown transition: ' + opts.fx,'; slideshow terminating');
455
- return false;
456
- }
457
- }
458
-
459
- // fire artificial events
460
- var e0 = $slides[first];
461
- if (!opts.skipInitializationCallbacks) {
462
- if (opts.before.length)
463
- opts.before[0].apply(e0, [e0, e0, opts, true]);
464
- if (opts.after.length)
465
- opts.after[0].apply(e0, [e0, e0, opts, true]);
466
- }
467
- if (opts.next)
468
- $(opts.next).bind(opts.prevNextEvent,function(){return advance(opts,1)});
469
- if (opts.prev)
470
- $(opts.prev).bind(opts.prevNextEvent,function(){return advance(opts,0)});
471
- if (opts.pager || opts.pagerAnchorBuilder)
472
- buildPager(els,opts);
473
-
474
- exposeAddSlide(opts, els);
475
-
476
- return opts;
477
- };
478
-
479
- // save off original opts so we can restore after clearing state
480
- function saveOriginalOpts(opts) {
481
- opts.original = { before: [], after: [] };
482
- opts.original.cssBefore = $.extend({}, opts.cssBefore);
483
- opts.original.cssAfter = $.extend({}, opts.cssAfter);
484
- opts.original.animIn = $.extend({}, opts.animIn);
485
- opts.original.animOut = $.extend({}, opts.animOut);
486
- $.each(opts.before, function() { opts.original.before.push(this); });
487
- $.each(opts.after, function() { opts.original.after.push(this); });
488
- };
489
-
490
- function supportMultiTransitions(opts) {
491
- var i, tx, txs = $.fn.cycle.transitions;
492
- // look for multiple effects
493
- if (opts.fx.indexOf(',') > 0) {
494
- opts.multiFx = true;
495
- opts.fxs = opts.fx.replace(/\s*/g,'').split(',');
496
- // discard any bogus effect names
497
- for (i=0; i < opts.fxs.length; i++) {
498
- var fx = opts.fxs[i];
499
- tx = txs[fx];
500
- if (!tx || !txs.hasOwnProperty(fx) || !$.isFunction(tx)) {
501
- log('discarding unknown transition: ',fx);
502
- opts.fxs.splice(i,1);
503
- i--;
504
- }
505
- }
506
- // if we have an empty list then we threw everything away!
507
- if (!opts.fxs.length) {
508
- log('No valid transitions named; slideshow terminating.');
509
- return false;
510
- }
511
- }
512
- else if (opts.fx == 'all') { // auto-gen the list of transitions
513
- opts.multiFx = true;
514
- opts.fxs = [];
515
- for (p in txs) {
516
- tx = txs[p];
517
- if (txs.hasOwnProperty(p) && $.isFunction(tx))
518
- opts.fxs.push(p);
519
- }
520
- }
521
- if (opts.multiFx && opts.randomizeEffects) {
522
- // munge the fxs array to make effect selection random
523
- var r1 = Math.floor(Math.random() * 20) + 30;
524
- for (i = 0; i < r1; i++) {
525
- var r2 = Math.floor(Math.random() * opts.fxs.length);
526
- opts.fxs.push(opts.fxs.splice(r2,1)[0]);
527
- }
528
- debug('randomized fx sequence: ',opts.fxs);
529
- }
530
- return true;
531
- };
532
-
533
- // provide a mechanism for adding slides after the slideshow has started
534
- function exposeAddSlide(opts, els) {
535
- opts.addSlide = function(newSlide, prepend) {
536
- var $s = $(newSlide), s = $s[0];
537
- if (!opts.autostopCount)
538
- opts.countdown++;
539
- els[prepend?'unshift':'push'](s);
540
- if (opts.els)
541
- opts.els[prepend?'unshift':'push'](s); // shuffle needs this
542
- opts.slideCount = els.length;
543
-
544
- $s.css('position','absolute');
545
- $s[prepend?'prependTo':'appendTo'](opts.$cont);
546
-
547
- if (prepend) {
548
- opts.currSlide++;
549
- opts.nextSlide++;
550
- }
551
-
552
- if (!$.support.opacity && opts.cleartype && !opts.cleartypeNoBg)
553
- clearTypeFix($s);
554
-
555
- if (opts.fit && opts.width)
556
- $s.width(opts.width);
557
- if (opts.fit && opts.height && opts.height != 'auto')
558
- $s.height(opts.height);
559
- s.cycleH = (opts.fit && opts.height) ? opts.height : $s.height();
560
- s.cycleW = (opts.fit && opts.width) ? opts.width : $s.width();
561
-
562
- $s.css(opts.cssBefore);
563
-
564
- if (opts.pager || opts.pagerAnchorBuilder)
565
- $.fn.cycle.createPagerAnchor(els.length-1, s, $(opts.pager), els, opts);
566
-
567
- if ($.isFunction(opts.onAddSlide))
568
- opts.onAddSlide($s);
569
- else
570
- $s.hide(); // default behavior
571
- };
572
- }
573
-
574
- // reset internal state; we do this on every pass in order to support multiple effects
575
- $.fn.cycle.resetState = function(opts, fx) {
576
- fx = fx || opts.fx;
577
- opts.before = []; opts.after = [];
578
- opts.cssBefore = $.extend({}, opts.original.cssBefore);
579
- opts.cssAfter = $.extend({}, opts.original.cssAfter);
580
- opts.animIn = $.extend({}, opts.original.animIn);
581
- opts.animOut = $.extend({}, opts.original.animOut);
582
- opts.fxFn = null;
583
- $.each(opts.original.before, function() { opts.before.push(this); });
584
- $.each(opts.original.after, function() { opts.after.push(this); });
585
-
586
- // re-init
587
- var init = $.fn.cycle.transitions[fx];
588
- if ($.isFunction(init))
589
- init(opts.$cont, $(opts.elements), opts);
590
- };
591
-
592
- // this is the main engine fn, it handles the timeouts, callbacks and slide index mgmt
593
- function go(els, opts, manual, fwd) {
594
- // opts.busy is true if we're in the middle of an animation
595
- if (manual && opts.busy && opts.manualTrump) {
596
- // let manual transitions requests trump active ones
597
- debug('manualTrump in go(), stopping active transition');
598
- $(els).stop(true,true);
599
- opts.busy = 0;
600
- }
601
- // don't begin another timeout-based transition if there is one active
602
- if (opts.busy) {
603
- debug('transition active, ignoring new tx request');
604
- return;
605
- }
606
-
607
- var p = opts.$cont[0], curr = els[opts.currSlide], next = els[opts.nextSlide];
608
-
609
- // stop cycling if we have an outstanding stop request
610
- if (p.cycleStop != opts.stopCount || p.cycleTimeout === 0 && !manual)
611
- return;
612
-
613
- // check to see if we should stop cycling based on autostop options
614
- if (!manual && !p.cyclePause && !opts.bounce &&
615
- ((opts.autostop && (--opts.countdown <= 0)) ||
616
- (opts.nowrap && !opts.random && opts.nextSlide < opts.currSlide))) {
617
- if (opts.end)
618
- opts.end(opts);
619
- return;
620
- }
621
-
622
- // if slideshow is paused, only transition on a manual trigger
623
- var changed = false;
624
- if ((manual || !p.cyclePause) && (opts.nextSlide != opts.currSlide)) {
625
- changed = true;
626
- var fx = opts.fx;
627
- // keep trying to get the slide size if we don't have it yet
628
- curr.cycleH = curr.cycleH || $(curr).height();
629
- curr.cycleW = curr.cycleW || $(curr).width();
630
- next.cycleH = next.cycleH || $(next).height();
631
- next.cycleW = next.cycleW || $(next).width();
632
-
633
- // support multiple transition types
634
- if (opts.multiFx) {
635
- if (fwd && (opts.lastFx == undefined || ++opts.lastFx >= opts.fxs.length))
636
- opts.lastFx = 0;
637
- else if (!fwd && (opts.lastFx == undefined || --opts.lastFx < 0))
638
- opts.lastFx = opts.fxs.length - 1;
639
- fx = opts.fxs[opts.lastFx];
640
- }
641
-
642
- // one-time fx overrides apply to: $('div').cycle(3,'zoom');
643
- if (opts.oneTimeFx) {
644
- fx = opts.oneTimeFx;
645
- opts.oneTimeFx = null;
646
- }
647
-
648
- $.fn.cycle.resetState(opts, fx);
649
-
650
- // run the before callbacks
651
- if (opts.before.length)
652
- $.each(opts.before, function(i,o) {
653
- if (p.cycleStop != opts.stopCount) return;
654
- o.apply(next, [curr, next, opts, fwd]);
655
- });
656
-
657
- // stage the after callacks
658
- var after = function() {
659
- opts.busy = 0;
660
- $.each(opts.after, function(i,o) {
661
- if (p.cycleStop != opts.stopCount) return;
662
- o.apply(next, [curr, next, opts, fwd]);
663
- });
664
- };
665
-
666
- debug('tx firing('+fx+'); currSlide: ' + opts.currSlide + '; nextSlide: ' + opts.nextSlide);
667
-
668
- // get ready to perform the transition
669
- opts.busy = 1;
670
- if (opts.fxFn) // fx function provided?
671
- opts.fxFn(curr, next, opts, after, fwd, manual && opts.fastOnEvent);
672
- else if ($.isFunction($.fn.cycle[opts.fx])) // fx plugin ?
673
- $.fn.cycle[opts.fx](curr, next, opts, after, fwd, manual && opts.fastOnEvent);
674
- else
675
- $.fn.cycle.custom(curr, next, opts, after, fwd, manual && opts.fastOnEvent);
676
- }
677
-
678
- if (changed || opts.nextSlide == opts.currSlide) {
679
- // calculate the next slide
680
- opts.lastSlide = opts.currSlide;
681
- if (opts.random) {
682
- opts.currSlide = opts.nextSlide;
683
- if (++opts.randomIndex == els.length)
684
- opts.randomIndex = 0;
685
- opts.nextSlide = opts.randomMap[opts.randomIndex];
686
- if (opts.nextSlide == opts.currSlide)
687
- opts.nextSlide = (opts.currSlide == opts.slideCount - 1) ? 0 : opts.currSlide + 1;
688
- }
689
- else if (opts.backwards) {
690
- var roll = (opts.nextSlide - 1) < 0;
691
- if (roll && opts.bounce) {
692
- opts.backwards = !opts.backwards;
693
- opts.nextSlide = 1;
694
- opts.currSlide = 0;
695
- }
696
- else {
697
- opts.nextSlide = roll ? (els.length-1) : opts.nextSlide-1;
698
- opts.currSlide = roll ? 0 : opts.nextSlide+1;
699
- }
700
- }
701
- else { // sequence
702
- var roll = (opts.nextSlide + 1) == els.length;
703
- if (roll && opts.bounce) {
704
- opts.backwards = !opts.backwards;
705
- opts.nextSlide = els.length-2;
706
- opts.currSlide = els.length-1;
707
- }
708
- else {
709
- opts.nextSlide = roll ? 0 : opts.nextSlide+1;
710
- opts.currSlide = roll ? els.length-1 : opts.nextSlide-1;
711
- }
712
- }
713
- }
714
- if (changed && opts.pager)
715
- opts.updateActivePagerLink(opts.pager, opts.currSlide, opts.activePagerClass);
716
-
717
- // stage the next transition
718
- var ms = 0;
719
- if (opts.timeout && !opts.continuous)
720
- ms = getTimeout(els[opts.currSlide], els[opts.nextSlide], opts, fwd);
721
- else if (opts.continuous && p.cyclePause) // continuous shows work off an after callback, not this timer logic
722
- ms = 10;
723
- if (ms > 0)
724
- p.cycleTimeout = setTimeout(function(){ go(els, opts, 0, !opts.backwards) }, ms);
725
- };
726
-
727
- // invoked after transition
728
- $.fn.cycle.updateActivePagerLink = function(pager, currSlide, clsName) {
729
- $(pager).each(function() {
730
- $(this).children().removeClass(clsName).eq(currSlide).addClass(clsName);
731
- });
732
- };
733
-
734
- // calculate timeout value for current transition
735
- function getTimeout(curr, next, opts, fwd) {
736
- if (opts.timeoutFn) {
737
- // call user provided calc fn
738
- var t = opts.timeoutFn.call(curr,curr,next,opts,fwd);
739
- while (opts.fx != 'none' && (t - opts.speed) < 250) // sanitize timeout
740
- t += opts.speed;
741
- debug('calculated timeout: ' + t + '; speed: ' + opts.speed);
742
- if (t !== false)
743
- return t;
744
- }
745
- return opts.timeout;
746
- };
747
-
748
- // expose next/prev function, caller must pass in state
749
- $.fn.cycle.next = function(opts) { advance(opts,1); };
750
- $.fn.cycle.prev = function(opts) { advance(opts,0);};
751
-
752
- // advance slide forward or back
753
- function advance(opts, moveForward) {
754
- var val = moveForward ? 1 : -1;
755
- var els = opts.elements;
756
- var p = opts.$cont[0], timeout = p.cycleTimeout;
757
- if (timeout) {
758
- clearTimeout(timeout);
759
- p.cycleTimeout = 0;
760
- }
761
- if (opts.random && val < 0) {
762
- // move back to the previously display slide
763
- opts.randomIndex--;
764
- if (--opts.randomIndex == -2)
765
- opts.randomIndex = els.length-2;
766
- else if (opts.randomIndex == -1)
767
- opts.randomIndex = els.length-1;
768
- opts.nextSlide = opts.randomMap[opts.randomIndex];
769
- }
770
- else if (opts.random) {
771
- opts.nextSlide = opts.randomMap[opts.randomIndex];
772
- }
773
- else {
774
- opts.nextSlide = opts.currSlide + val;
775
- if (opts.nextSlide < 0) {
776
- if (opts.nowrap) return false;
777
- opts.nextSlide = els.length - 1;
778
- }
779
- else if (opts.nextSlide >= els.length) {
780
- if (opts.nowrap) return false;
781
- opts.nextSlide = 0;
782
- }
783
- }
784
-
785
- var cb = opts.onPrevNextEvent || opts.prevNextClick; // prevNextClick is deprecated
786
- if ($.isFunction(cb))
787
- cb(val > 0, opts.nextSlide, els[opts.nextSlide]);
788
- go(els, opts, 1, moveForward);
789
- return false;
790
- };
791
-
792
- function buildPager(els, opts) {
793
- var $p = $(opts.pager);
794
- $.each(els, function(i,o) {
795
- $.fn.cycle.createPagerAnchor(i,o,$p,els,opts);
796
- });
797
- opts.updateActivePagerLink(opts.pager, opts.startingSlide, opts.activePagerClass);
798
- };
799
-
800
- $.fn.cycle.createPagerAnchor = function(i, el, $p, els, opts) {
801
- var a;
802
- if ($.isFunction(opts.pagerAnchorBuilder)) {
803
- a = opts.pagerAnchorBuilder(i,el);
804
- debug('pagerAnchorBuilder('+i+', el) returned: ' + a);
805
- }
806
- else
807
- a = '<a href="#">'+(i+1)+'</a>';
808
-
809
- if (!a)
810
- return;
811
- var $a = $(a);
812
- // don't reparent if anchor is in the dom
813
- if ($a.parents('body').length === 0) {
814
- var arr = [];
815
- if ($p.length > 1) {
816
- $p.each(function() {
817
- var $clone = $a.clone(true);
818
- $(this).append($clone);
819
- arr.push($clone[0]);
820
- });
821
- $a = $(arr);
822
- }
823
- else {
824
- $a.appendTo($p);
825
- }
826
- }
827
-
828
- opts.pagerAnchors = opts.pagerAnchors || [];
829
- opts.pagerAnchors.push($a);
830
-
831
- var pagerFn = function(e) {
832
- e.preventDefault();
833
- opts.nextSlide = i;
834
- var p = opts.$cont[0], timeout = p.cycleTimeout;
835
- if (timeout) {
836
- clearTimeout(timeout);
837
- p.cycleTimeout = 0;
838
- }
839
- var cb = opts.onPagerEvent || opts.pagerClick; // pagerClick is deprecated
840
- if ($.isFunction(cb))
841
- cb(opts.nextSlide, els[opts.nextSlide]);
842
- go(els,opts,1,opts.currSlide < i); // trigger the trans
843
- // return false; // <== allow bubble
844
- }
845
-
846
- if ( /mouseenter|mouseover/i.test(opts.pagerEvent) ) {
847
- $a.hover(pagerFn, function(){/* no-op */} );
848
- }
849
- else {
850
- $a.bind(opts.pagerEvent, pagerFn);
851
- }
852
-
853
- if ( ! /^click/.test(opts.pagerEvent) && !opts.allowPagerClickBubble)
854
- $a.bind('click.cycle', function(){return false;}); // suppress click
855
-
856
- var cont = opts.$cont[0];
857
- var pauseFlag = false; // https://github.com/malsup/cycle/issues/44
858
- if (opts.pauseOnPagerHover) {
859
- $a.hover(
860
- function() {
861
- pauseFlag = true;
862
- cont.cyclePause++;
863
- triggerPause(cont,true,true);
864
- }, function() {
865
- pauseFlag && cont.cyclePause--;
866
- triggerPause(cont,true,true);
867
- }
868
- );
869
- }
870
- };
871
-
872
- // helper fn to calculate the number of slides between the current and the next
873
- $.fn.cycle.hopsFromLast = function(opts, fwd) {
874
- var hops, l = opts.lastSlide, c = opts.currSlide;
875
- if (fwd)
876
- hops = c > l ? c - l : opts.slideCount - l;
877
- else
878
- hops = c < l ? l - c : l + opts.slideCount - c;
879
- return hops;
880
- };
881
-
882
- // fix clearType problems in ie6 by setting an explicit bg color
883
- // (otherwise text slides look horrible during a fade transition)
884
- function clearTypeFix($slides) {
885
- debug('applying clearType background-color hack');
886
- function hex(s) {
887
- s = parseInt(s,10).toString(16);
888
- return s.length < 2 ? '0'+s : s;
889
- };
890
- function getBg(e) {
891
- for ( ; e && e.nodeName.toLowerCase() != 'html'; e = e.parentNode) {
892
- var v = $.css(e,'background-color');
893
- if (v && v.indexOf('rgb') >= 0 ) {
894
- var rgb = v.match(/\d+/g);
895
- return '#'+ hex(rgb[0]) + hex(rgb[1]) + hex(rgb[2]);
896
- }
897
- if (v && v != 'transparent')
898
- return v;
899
- }
900
- return '#ffffff';
901
- };
902
- $slides.each(function() { $(this).css('background-color', getBg(this)); });
903
- };
904
-
905
- // reset common props before the next transition
906
- $.fn.cycle.commonReset = function(curr,next,opts,w,h,rev) {
907
- $(opts.elements).not(curr).hide();
908
- if (typeof opts.cssBefore.opacity == 'undefined')
909
- opts.cssBefore.opacity = 1;
910
- opts.cssBefore.display = 'block';
911
- if (opts.slideResize && w !== false && next.cycleW > 0)
912
- opts.cssBefore.width = next.cycleW;
913
- if (opts.slideResize && h !== false && next.cycleH > 0)
914
- opts.cssBefore.height = next.cycleH;
915
- opts.cssAfter = opts.cssAfter || {};
916
- opts.cssAfter.display = 'none';
917
- $(curr).css('zIndex',opts.slideCount + (rev === true ? 1 : 0));
918
- $(next).css('zIndex',opts.slideCount + (rev === true ? 0 : 1));
919
- };
920
-
921
- // the actual fn for effecting a transition
922
- $.fn.cycle.custom = function(curr, next, opts, cb, fwd, speedOverride) {
923
- var $l = $(curr), $n = $(next);
924
- var speedIn = opts.speedIn, speedOut = opts.speedOut, easeIn = opts.easeIn, easeOut = opts.easeOut;
925
- $n.css(opts.cssBefore);
926
- if (speedOverride) {
927
- if (typeof speedOverride == 'number')
928
- speedIn = speedOut = speedOverride;
929
- else
930
- speedIn = speedOut = 1;
931
- easeIn = easeOut = null;
932
- }
933
- var fn = function() {
934
- $n.animate(opts.animIn, speedIn, easeIn, function() {
935
- cb();
936
- });
937
- };
938
- $l.animate(opts.animOut, speedOut, easeOut, function() {
939
- $l.css(opts.cssAfter);
940
- if (!opts.sync)
941
- fn();
942
- });
943
- if (opts.sync) fn();
944
- };
945
-
946
- // transition definitions - only fade is defined here, transition pack defines the rest
947
- $.fn.cycle.transitions = {
948
- fade: function($cont, $slides, opts) {
949
- $slides.not(':eq('+opts.currSlide+')').css('opacity',0);
950
- opts.before.push(function(curr,next,opts) {
951
- $.fn.cycle.commonReset(curr,next,opts);
952
- opts.cssBefore.opacity = 0;
953
- });
954
- opts.animIn = { opacity: 1 };
955
- opts.animOut = { opacity: 0 };
956
- opts.cssBefore = { top: 0, left: 0 };
957
- }
958
- };
959
-
960
- $.fn.cycle.ver = function() { return ver; };
961
-
962
- // override these globally if you like (they are all optional)
963
- $.fn.cycle.defaults = {
964
- activePagerClass: 'activeSlide', // class name used for the active pager link
965
- after: null, // transition callback (scope set to element that was shown): function(currSlideElement, nextSlideElement, options, forwardFlag)
966
- allowPagerClickBubble: false, // allows or prevents click event on pager anchors from bubbling
967
- animIn: null, // properties that define how the slide animates in
968
- animOut: null, // properties that define how the slide animates out
969
- aspect: false, // preserve aspect ratio during fit resizing, cropping if necessary (must be used with fit option)
970
- autostop: 0, // true to end slideshow after X transitions (where X == slide count)
971
- autostopCount: 0, // number of transitions (optionally used with autostop to define X)
972
- backwards: false, // true to start slideshow at last slide and move backwards through the stack
973
- before: null, // transition callback (scope set to element to be shown): function(currSlideElement, nextSlideElement, options, forwardFlag)
974
- center: null, // set to true to have cycle add top/left margin to each slide (use with width and height options)
975
- cleartype: !$.support.opacity, // true if clearType corrections should be applied (for IE)
976
- cleartypeNoBg: false, // set to true to disable extra cleartype fixing (leave false to force background color setting on slides)
977
- containerResize: 1, // resize container to fit largest slide
978
- continuous: 0, // true to start next transition immediately after current one completes
979
- cssAfter: null, // properties that defined the state of the slide after transitioning out
980
- cssBefore: null, // properties that define the initial state of the slide before transitioning in
981
- delay: 0, // additional delay (in ms) for first transition (hint: can be negative)
982
- easeIn: null, // easing for "in" transition
983
- easeOut: null, // easing for "out" transition
984
- easing: null, // easing method for both in and out transitions
985
- end: null, // callback invoked when the slideshow terminates (use with autostop or nowrap options): function(options)
986
- fastOnEvent: 0, // force fast transitions when triggered manually (via pager or prev/next); value == time in ms
987
- fit: 0, // force slides to fit container
988
- fx: 'fade', // name of transition effect (or comma separated names, ex: 'fade,scrollUp,shuffle')
989
- fxFn: null, // function used to control the transition: function(currSlideElement, nextSlideElement, options, afterCalback, forwardFlag)
990
- height: 'auto', // container height (if the 'fit' option is true, the slides will be set to this height as well)
991
- manualTrump: true, // causes manual transition to stop an active transition instead of being ignored
992
- metaAttr: 'cycle',// data- attribute that holds the option data for the slideshow
993
- next: null, // element, jQuery object, or jQuery selector string for the element to use as event trigger for next slide
994
- nowrap: 0, // true to prevent slideshow from wrapping
995
- onPagerEvent: null, // callback fn for pager events: function(zeroBasedSlideIndex, slideElement)
996
- onPrevNextEvent: null,// callback fn for prev/next events: function(isNext, zeroBasedSlideIndex, slideElement)
997
- pager: null, // element, jQuery object, or jQuery selector string for the element to use as pager container
998
- pagerAnchorBuilder: null, // callback fn for building anchor links: function(index, DOMelement)
999
- pagerEvent: 'click.cycle', // name of event which drives the pager navigation
1000
- pause: 0, // true to enable "pause on hover"
1001
- pauseOnPagerHover: 0, // true to pause when hovering over pager link
1002
- prev: null, // element, jQuery object, or jQuery selector string for the element to use as event trigger for previous slide
1003
- prevNextEvent:'click.cycle',// event which drives the manual transition to the previous or next slide
1004
- random: 0, // true for random, false for sequence (not applicable to shuffle fx)
1005
- randomizeEffects: 1, // valid when multiple effects are used; true to make the effect sequence random
1006
- requeueOnImageNotLoaded: true, // requeue the slideshow if any image slides are not yet loaded
1007
- requeueTimeout: 250, // ms delay for requeue
1008
- rev: 0, // causes animations to transition in reverse (for effects that support it such as scrollHorz/scrollVert/shuffle)
1009
- shuffle: null, // coords for shuffle animation, ex: { top:15, left: 200 }
1010
- skipInitializationCallbacks: false, // set to true to disable the first before/after callback that occurs prior to any transition
1011
- slideExpr: null, // expression for selecting slides (if something other than all children is required)
1012
- slideResize: 1, // force slide width/height to fixed size before every transition
1013
- speed: 1000, // speed of the transition (any valid fx speed value)
1014
- speedIn: null, // speed of the 'in' transition
1015
- speedOut: null, // speed of the 'out' transition
1016
- startingSlide: 0, // zero-based index of the first slide to be displayed
1017
- sync: 1, // true if in/out transitions should occur simultaneously
1018
- timeout: 4000, // milliseconds between slide transitions (0 to disable auto advance)
1019
- timeoutFn: null, // callback for determining per-slide timeout value: function(currSlideElement, nextSlideElement, options, forwardFlag)
1020
- updateActivePagerLink: null, // callback fn invoked to update the active pager link (adds/removes activePagerClass style)
1021
- width: null // container width (if the 'fit' option is true, the slides will be set to this width as well)
1022
- };
1023
-
1024
- })(jQuery);
1025
-
1026
-
1027
- /*!
1028
- * jQuery Cycle Plugin Transition Definitions
1029
- * This script is a plugin for the jQuery Cycle Plugin
1030
- * Examples and documentation at: http://malsup.com/jquery/cycle/
1031
- * Copyright (c) 2007-2010 M. Alsup
1032
- * Version: 2.73
1033
- * Dual licensed under the MIT and GPL licenses:
1034
- * http://www.opensource.org/licenses/mit-license.php
1035
- * http://www.gnu.org/licenses/gpl.html
1036
- */
1037
- (function($) {
1038
-
1039
- //
1040
- // These functions define slide initialization and properties for the named
1041
- // transitions. To save file size feel free to remove any of these that you
1042
- // don't need.
1043
- //
1044
- $.fn.cycle.transitions.none = function($cont, $slides, opts) {
1045
- opts.fxFn = function(curr,next,opts,after){
1046
- $(next).show();
1047
- $(curr).hide();
1048
- after();
1049
- };
1050
- };
1051
-
1052
- // not a cross-fade, fadeout only fades out the top slide
1053
- $.fn.cycle.transitions.fadeout = function($cont, $slides, opts) {
1054
- $slides.not(':eq('+opts.currSlide+')').css({ display: 'block', 'opacity': 1 });
1055
- opts.before.push(function(curr,next,opts,w,h,rev) {
1056
- $(curr).css('zIndex',opts.slideCount + (!rev === true ? 1 : 0));
1057
- $(next).css('zIndex',opts.slideCount + (!rev === true ? 0 : 1));
1058
- });
1059
- opts.animIn.opacity = 1;
1060
- opts.animOut.opacity = 0;
1061
- opts.cssBefore.opacity = 1;
1062
- opts.cssBefore.display = 'block';
1063
- opts.cssAfter.zIndex = 0;
1064
- };
1065
-
1066
- // scrollUp/Down/Left/Right
1067
- $.fn.cycle.transitions.scrollUp = function($cont, $slides, opts) {
1068
- $cont.css('overflow','hidden');
1069
- opts.before.push($.fn.cycle.commonReset);
1070
- var h = $cont.height();
1071
- opts.cssBefore.top = h;
1072
- opts.cssBefore.left = 0;
1073
- opts.cssFirst.top = 0;
1074
- opts.animIn.top = 0;
1075
- opts.animOut.top = -h;
1076
- };
1077
- $.fn.cycle.transitions.scrollDown = function($cont, $slides, opts) {
1078
- $cont.css('overflow','hidden');
1079
- opts.before.push($.fn.cycle.commonReset);
1080
- var h = $cont.height();
1081
- opts.cssFirst.top = 0;
1082
- opts.cssBefore.top = -h;
1083
- opts.cssBefore.left = 0;
1084
- opts.animIn.top = 0;
1085
- opts.animOut.top = h;
1086
- };
1087
- $.fn.cycle.transitions.scrollLeft = function($cont, $slides, opts) {
1088
- $cont.css('overflow','hidden');
1089
- opts.before.push($.fn.cycle.commonReset);
1090
- var w = $cont.width();
1091
- opts.cssFirst.left = 0;
1092
- opts.cssBefore.left = w;
1093
- opts.cssBefore.top = 0;
1094
- opts.animIn.left = 0;
1095
- opts.animOut.left = 0-w;
1096
- };
1097
- $.fn.cycle.transitions.scrollRight = function($cont, $slides, opts) {
1098
- $cont.css('overflow','hidden');
1099
- opts.before.push($.fn.cycle.commonReset);
1100
- var w = $cont.width();
1101
- opts.cssFirst.left = 0;
1102
- opts.cssBefore.left = -w;
1103
- opts.cssBefore.top = 0;
1104
- opts.animIn.left = 0;
1105
- opts.animOut.left = w;
1106
- };
1107
- $.fn.cycle.transitions.scrollHorz = function($cont, $slides, opts) {
1108
- $cont.css('overflow','hidden').width();
1109
- opts.before.push(function(curr, next, opts, fwd) {
1110
- if (opts.rev)
1111
- fwd = !fwd;
1112
- $.fn.cycle.commonReset(curr,next,opts);
1113
- opts.cssBefore.left = fwd ? (next.cycleW-1) : (1-next.cycleW);
1114
- opts.animOut.left = fwd ? -curr.cycleW : curr.cycleW;
1115
- });
1116
- opts.cssFirst.left = 0;
1117
- opts.cssBefore.top = 0;
1118
- opts.animIn.left = 0;
1119
- opts.animOut.top = 0;
1120
- };
1121
- $.fn.cycle.transitions.scrollVert = function($cont, $slides, opts) {
1122
- $cont.css('overflow','hidden');
1123
- opts.before.push(function(curr, next, opts, fwd) {
1124
- if (opts.rev)
1125
- fwd = !fwd;
1126
- $.fn.cycle.commonReset(curr,next,opts);
1127
- opts.cssBefore.top = fwd ? (1-next.cycleH) : (next.cycleH-1);
1128
- opts.animOut.top = fwd ? curr.cycleH : -curr.cycleH;
1129
- });
1130
- opts.cssFirst.top = 0;
1131
- opts.cssBefore.left = 0;
1132
- opts.animIn.top = 0;
1133
- opts.animOut.left = 0;
1134
- };
1135
-
1136
- // slideX/slideY
1137
- $.fn.cycle.transitions.slideX = function($cont, $slides, opts) {
1138
- opts.before.push(function(curr, next, opts) {
1139
- $(opts.elements).not(curr).hide();
1140
- $.fn.cycle.commonReset(curr,next,opts,false,true);
1141
- opts.animIn.width = next.cycleW;
1142
- });
1143
- opts.cssBefore.left = 0;
1144
- opts.cssBefore.top = 0;
1145
- opts.cssBefore.width = 0;
1146
- opts.animIn.width = 'show';
1147
- opts.animOut.width = 0;
1148
- };
1149
- $.fn.cycle.transitions.slideY = function($cont, $slides, opts) {
1150
- opts.before.push(function(curr, next, opts) {
1151
- $(opts.elements).not(curr).hide();
1152
- $.fn.cycle.commonReset(curr,next,opts,true,false);
1153
- opts.animIn.height = next.cycleH;
1154
- });
1155
- opts.cssBefore.left = 0;
1156
- opts.cssBefore.top = 0;
1157
- opts.cssBefore.height = 0;
1158
- opts.animIn.height = 'show';
1159
- opts.animOut.height = 0;
1160
- };
1161
-
1162
- // shuffle
1163
- $.fn.cycle.transitions.shuffle = function($cont, $slides, opts) {
1164
- var i, w = $cont.css('overflow', 'visible').width();
1165
- $slides.css({left: 0, top: 0});
1166
- opts.before.push(function(curr,next,opts) {
1167
- $.fn.cycle.commonReset(curr,next,opts,true,true,true);
1168
- });
1169
- // only adjust speed once!
1170
- if (!opts.speedAdjusted) {
1171
- opts.speed = opts.speed / 2; // shuffle has 2 transitions
1172
- opts.speedAdjusted = true;
1173
- }
1174
- opts.random = 0;
1175
- opts.shuffle = opts.shuffle || {left:-w, top:15};
1176
- opts.els = [];
1177
- for (i=0; i < $slides.length; i++)
1178
- opts.els.push($slides[i]);
1179
-
1180
- for (i=0; i < opts.currSlide; i++)
1181
- opts.els.push(opts.els.shift());
1182
-
1183
- // custom transition fn (hat tip to Benjamin Sterling for this bit of sweetness!)
1184
- opts.fxFn = function(curr, next, opts, cb, fwd) {
1185
- if (opts.rev)
1186
- fwd = !fwd;
1187
- var $el = fwd ? $(curr) : $(next);
1188
- $(next).css(opts.cssBefore);
1189
- var count = opts.slideCount;
1190
- $el.animate(opts.shuffle, opts.speedIn, opts.easeIn, function() {
1191
- var hops = $.fn.cycle.hopsFromLast(opts, fwd);
1192
- for (var k=0; k < hops; k++)
1193
- fwd ? opts.els.push(opts.els.shift()) : opts.els.unshift(opts.els.pop());
1194
- if (fwd) {
1195
- for (var i=0, len=opts.els.length; i < len; i++)
1196
- $(opts.els[i]).css('z-index', len-i+count);
1197
- }
1198
- else {
1199
- var z = $(curr).css('z-index');
1200
- $el.css('z-index', parseInt(z,10)+1+count);
1201
- }
1202
- $el.animate({left:0, top:0}, opts.speedOut, opts.easeOut, function() {
1203
- $(fwd ? this : curr).hide();
1204
- if (cb) cb();
1205
- });
1206
- });
1207
- };
1208
- $.extend(opts.cssBefore, { display: 'block', opacity: 1, top: 0, left: 0 });
1209
- };
1210
-
1211
- // turnUp/Down/Left/Right
1212
- $.fn.cycle.transitions.turnUp = function($cont, $slides, opts) {
1213
- opts.before.push(function(curr, next, opts) {
1214
- $.fn.cycle.commonReset(curr,next,opts,true,false);
1215
- opts.cssBefore.top = next.cycleH;
1216
- opts.animIn.height = next.cycleH;
1217
- opts.animOut.width = next.cycleW;
1218
- });
1219
- opts.cssFirst.top = 0;
1220
- opts.cssBefore.left = 0;
1221
- opts.cssBefore.height = 0;
1222
- opts.animIn.top = 0;
1223
- opts.animOut.height = 0;
1224
- };
1225
- $.fn.cycle.transitions.turnDown = function($cont, $slides, opts) {
1226
- opts.before.push(function(curr, next, opts) {
1227
- $.fn.cycle.commonReset(curr,next,opts,true,false);
1228
- opts.animIn.height = next.cycleH;
1229
- opts.animOut.top = curr.cycleH;
1230
- });
1231
- opts.cssFirst.top = 0;
1232
- opts.cssBefore.left = 0;
1233
- opts.cssBefore.top = 0;
1234
- opts.cssBefore.height = 0;
1235
- opts.animOut.height = 0;
1236
- };
1237
- $.fn.cycle.transitions.turnLeft = function($cont, $slides, opts) {
1238
- opts.before.push(function(curr, next, opts) {
1239
- $.fn.cycle.commonReset(curr,next,opts,false,true);
1240
- opts.cssBefore.left = next.cycleW;
1241
- opts.animIn.width = next.cycleW;
1242
- });
1243
- opts.cssBefore.top = 0;
1244
- opts.cssBefore.width = 0;
1245
- opts.animIn.left = 0;
1246
- opts.animOut.width = 0;
1247
- };
1248
- $.fn.cycle.transitions.turnRight = function($cont, $slides, opts) {
1249
- opts.before.push(function(curr, next, opts) {
1250
- $.fn.cycle.commonReset(curr,next,opts,false,true);
1251
- opts.animIn.width = next.cycleW;
1252
- opts.animOut.left = curr.cycleW;
1253
- });
1254
- $.extend(opts.cssBefore, { top: 0, left: 0, width: 0 });
1255
- opts.animIn.left = 0;
1256
- opts.animOut.width = 0;
1257
- };
1258
-
1259
- // zoom
1260
- $.fn.cycle.transitions.zoom = function($cont, $slides, opts) {
1261
- opts.before.push(function(curr, next, opts) {
1262
- $.fn.cycle.commonReset(curr,next,opts,false,false,true);
1263
- opts.cssBefore.top = next.cycleH/2;
1264
- opts.cssBefore.left = next.cycleW/2;
1265
- $.extend(opts.animIn, { top: 0, left: 0, width: next.cycleW, height: next.cycleH });
1266
- $.extend(opts.animOut, { width: 0, height: 0, top: curr.cycleH/2, left: curr.cycleW/2 });
1267
- });
1268
- opts.cssFirst.top = 0;
1269
- opts.cssFirst.left = 0;
1270
- opts.cssBefore.width = 0;
1271
- opts.cssBefore.height = 0;
1272
- };
1273
-
1274
- // fadeZoom
1275
- $.fn.cycle.transitions.fadeZoom = function($cont, $slides, opts) {
1276
- opts.before.push(function(curr, next, opts) {
1277
- $.fn.cycle.commonReset(curr,next,opts,false,false);
1278
- opts.cssBefore.left = next.cycleW/2;
1279
- opts.cssBefore.top = next.cycleH/2;
1280
- $.extend(opts.animIn, { top: 0, left: 0, width: next.cycleW, height: next.cycleH });
1281
- });
1282
- opts.cssBefore.width = 0;
1283
- opts.cssBefore.height = 0;
1284
- opts.animOut.opacity = 0;
1285
- };
1286
-
1287
- // blindX
1288
- $.fn.cycle.transitions.blindX = function($cont, $slides, opts) {
1289
- var w = $cont.css('overflow','hidden').width();
1290
- opts.before.push(function(curr, next, opts) {
1291
- $.fn.cycle.commonReset(curr,next,opts);
1292
- opts.animIn.width = next.cycleW;
1293
- opts.animOut.left = curr.cycleW;
1294
- });
1295
- opts.cssBefore.left = w;
1296
- opts.cssBefore.top = 0;
1297
- opts.animIn.left = 0;
1298
- opts.animOut.left = w;
1299
- };
1300
- // blindY
1301
- $.fn.cycle.transitions.blindY = function($cont, $slides, opts) {
1302
- var h = $cont.css('overflow','hidden').height();
1303
- opts.before.push(function(curr, next, opts) {
1304
- $.fn.cycle.commonReset(curr,next,opts);
1305
- opts.animIn.height = next.cycleH;
1306
- opts.animOut.top = curr.cycleH;
1307
- });
1308
- opts.cssBefore.top = h;
1309
- opts.cssBefore.left = 0;
1310
- opts.animIn.top = 0;
1311
- opts.animOut.top = h;
1312
- };
1313
- // blindZ
1314
- $.fn.cycle.transitions.blindZ = function($cont, $slides, opts) {
1315
- var h = $cont.css('overflow','hidden').height();
1316
- var w = $cont.width();
1317
- opts.before.push(function(curr, next, opts) {
1318
- $.fn.cycle.commonReset(curr,next,opts);
1319
- opts.animIn.height = next.cycleH;
1320
- opts.animOut.top = curr.cycleH;
1321
- });
1322
- opts.cssBefore.top = h;
1323
- opts.cssBefore.left = w;
1324
- opts.animIn.top = 0;
1325
- opts.animIn.left = 0;
1326
- opts.animOut.top = h;
1327
- opts.animOut.left = w;
1328
- };
1329
-
1330
- // growX - grow horizontally from centered 0 width
1331
- $.fn.cycle.transitions.growX = function($cont, $slides, opts) {
1332
- opts.before.push(function(curr, next, opts) {
1333
- $.fn.cycle.commonReset(curr,next,opts,false,true);
1334
- opts.cssBefore.left = this.cycleW/2;
1335
- opts.animIn.left = 0;
1336
- opts.animIn.width = this.cycleW;
1337
- opts.animOut.left = 0;
1338
- });
1339
- opts.cssBefore.top = 0;
1340
- opts.cssBefore.width = 0;
1341
- };
1342
- // growY - grow vertically from centered 0 height
1343
- $.fn.cycle.transitions.growY = function($cont, $slides, opts) {
1344
- opts.before.push(function(curr, next, opts) {
1345
- $.fn.cycle.commonReset(curr,next,opts,true,false);
1346
- opts.cssBefore.top = this.cycleH/2;
1347
- opts.animIn.top = 0;
1348
- opts.animIn.height = this.cycleH;
1349
- opts.animOut.top = 0;
1350
- });
1351
- opts.cssBefore.height = 0;
1352
- opts.cssBefore.left = 0;
1353
- };
1354
-
1355
- // curtainX - squeeze in both edges horizontally
1356
- $.fn.cycle.transitions.curtainX = function($cont, $slides, opts) {
1357
- opts.before.push(function(curr, next, opts) {
1358
- $.fn.cycle.commonReset(curr,next,opts,false,true,true);
1359
- opts.cssBefore.left = next.cycleW/2;
1360
- opts.animIn.left = 0;
1361
- opts.animIn.width = this.cycleW;
1362
- opts.animOut.left = curr.cycleW/2;
1363
- opts.animOut.width = 0;
1364
- });
1365
- opts.cssBefore.top = 0;
1366
- opts.cssBefore.width = 0;
1367
- };
1368
- // curtainY - squeeze in both edges vertically
1369
- $.fn.cycle.transitions.curtainY = function($cont, $slides, opts) {
1370
- opts.before.push(function(curr, next, opts) {
1371
- $.fn.cycle.commonReset(curr,next,opts,true,false,true);
1372
- opts.cssBefore.top = next.cycleH/2;
1373
- opts.animIn.top = 0;
1374
- opts.animIn.height = next.cycleH;
1375
- opts.animOut.top = curr.cycleH/2;
1376
- opts.animOut.height = 0;
1377
- });
1378
- opts.cssBefore.height = 0;
1379
- opts.cssBefore.left = 0;
1380
- };
1381
-
1382
- // cover - curr slide covered by next slide
1383
- $.fn.cycle.transitions.cover = function($cont, $slides, opts) {
1384
- var d = opts.direction || 'left';
1385
- var w = $cont.css('overflow','hidden').width();
1386
- var h = $cont.height();
1387
- opts.before.push(function(curr, next, opts) {
1388
- $.fn.cycle.commonReset(curr,next,opts);
1389
- if (d == 'right')
1390
- opts.cssBefore.left = -w;
1391
- else if (d == 'up')
1392
- opts.cssBefore.top = h;
1393
- else if (d == 'down')
1394
- opts.cssBefore.top = -h;
1395
- else
1396
- opts.cssBefore.left = w;
1397
- });
1398
- opts.animIn.left = 0;
1399
- opts.animIn.top = 0;
1400
- opts.cssBefore.top = 0;
1401
- opts.cssBefore.left = 0;
1402
- };
1403
-
1404
- // uncover - curr slide moves off next slide
1405
- $.fn.cycle.transitions.uncover = function($cont, $slides, opts) {
1406
- var d = opts.direction || 'left';
1407
- var w = $cont.css('overflow','hidden').width();
1408
- var h = $cont.height();
1409
- opts.before.push(function(curr, next, opts) {
1410
- $.fn.cycle.commonReset(curr,next,opts,true,true,true);
1411
- if (d == 'right')
1412
- opts.animOut.left = w;
1413
- else if (d == 'up')
1414
- opts.animOut.top = -h;
1415
- else if (d == 'down')
1416
- opts.animOut.top = h;
1417
- else
1418
- opts.animOut.left = -w;
1419
- });
1420
- opts.animIn.left = 0;
1421
- opts.animIn.top = 0;
1422
- opts.cssBefore.top = 0;
1423
- opts.cssBefore.left = 0;
1424
- };
1425
-
1426
- // toss - move top slide and fade away
1427
- $.fn.cycle.transitions.toss = function($cont, $slides, opts) {
1428
- var w = $cont.css('overflow','visible').width();
1429
- var h = $cont.height();
1430
- opts.before.push(function(curr, next, opts) {
1431
- $.fn.cycle.commonReset(curr,next,opts,true,true,true);
1432
- // provide default toss settings if animOut not provided
1433
- if (!opts.animOut.left && !opts.animOut.top)
1434
- $.extend(opts.animOut, { left: w*2, top: -h/2, opacity: 0 });
1435
- else
1436
- opts.animOut.opacity = 0;
1437
- });
1438
- opts.cssBefore.left = 0;
1439
- opts.cssBefore.top = 0;
1440
- opts.animIn.left = 0;
1441
- };
1442
-
1443
- // wipe - clip animation
1444
- $.fn.cycle.transitions.wipe = function($cont, $slides, opts) {
1445
- var w = $cont.css('overflow','hidden').width();
1446
- var h = $cont.height();
1447
- opts.cssBefore = opts.cssBefore || {};
1448
- var clip;
1449
- if (opts.clip) {
1450
- if (/l2r/.test(opts.clip))
1451
- clip = 'rect(0px 0px '+h+'px 0px)';
1452
- else if (/r2l/.test(opts.clip))
1453
- clip = 'rect(0px '+w+'px '+h+'px '+w+'px)';
1454
- else if (/t2b/.test(opts.clip))
1455
- clip = 'rect(0px '+w+'px 0px 0px)';
1456
- else if (/b2t/.test(opts.clip))
1457
- clip = 'rect('+h+'px '+w+'px '+h+'px 0px)';
1458
- else if (/zoom/.test(opts.clip)) {
1459
- var top = parseInt(h/2,10);
1460
- var left = parseInt(w/2,10);
1461
- clip = 'rect('+top+'px '+left+'px '+top+'px '+left+'px)';
1462
- }
1463
- }
1464
-
1465
- opts.cssBefore.clip = opts.cssBefore.clip || clip || 'rect(0px 0px 0px 0px)';
1466
-
1467
- var d = opts.cssBefore.clip.match(/(\d+)/g);
1468
- var t = parseInt(d[0],10), r = parseInt(d[1],10), b = parseInt(d[2],10), l = parseInt(d[3],10);
1469
-
1470
- opts.before.push(function(curr, next, opts) {
1471
- if (curr == next) return;
1472
- var $curr = $(curr), $next = $(next);
1473
- $.fn.cycle.commonReset(curr,next,opts,true,true,false);
1474
- opts.cssAfter.display = 'block';
1475
-
1476
- var step = 1, count = parseInt((opts.speedIn / 13),10) - 1;
1477
- (function f() {
1478
- var tt = t ? t - parseInt(step * (t/count),10) : 0;
1479
- var ll = l ? l - parseInt(step * (l/count),10) : 0;
1480
- var bb = b < h ? b + parseInt(step * ((h-b)/count || 1),10) : h;
1481
- var rr = r < w ? r + parseInt(step * ((w-r)/count || 1),10) : w;
1482
- $next.css({ clip: 'rect('+tt+'px '+rr+'px '+bb+'px '+ll+'px)' });
1483
- (step++ <= count) ? setTimeout(f, 13) : $curr.css('display', 'none');
1484
- })();
1485
- });
1486
- $.extend(opts.cssBefore, { display: 'block', opacity: 1, top: 0, left: 0 });
1487
- opts.animIn = { left: 0 };
1488
- opts.animOut = { left: 0 };
1489
- };
1490
-
1491
- })(jQuery);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
js/jquery.cycle.all.min.js DELETED
@@ -1 +0,0 @@
1
- (function(a){function r(b){function e(b){for(;b&&b.nodeName.toLowerCase()!="html";b=b.parentNode){var c=a.css(b,"background-color");if(c&&c.indexOf("rgb")>=0){var e=c.match(/\d+/g);return"#"+d(e[0])+d(e[1])+d(e[2])}if(c&&c!="transparent")return c}return"#ffffff"}function d(a){a=parseInt(a,10).toString(16);return a.length<2?"0"+a:a}c("applying clearType background-color hack");b.each(function(){a(this).css("background-color",e(this))})}function q(b,c){var d=a(c.pager);a.each(b,function(e,f){a.fn.cycle.createPagerAnchor(e,f,d,b,c)});c.updateActivePagerLink(c.pager,c.startingSlide,c.activePagerClass)}function o(b,c){var d=c?1:-1;var e=b.elements;var f=b.$cont[0],g=f.cycleTimeout;if(g){clearTimeout(g);f.cycleTimeout=0}if(b.random&&d<0){b.randomIndex--;if(--b.randomIndex==-2)b.randomIndex=e.length-2;else if(b.randomIndex==-1)b.randomIndex=e.length-1;b.nextSlide=b.randomMap[b.randomIndex]}else if(b.random){b.nextSlide=b.randomMap[b.randomIndex]}else{b.nextSlide=b.currSlide+d;if(b.nextSlide<0){if(b.nowrap)return false;b.nextSlide=e.length-1}else if(b.nextSlide>=e.length){if(b.nowrap)return false;b.nextSlide=0}}var h=b.onPrevNextEvent||b.prevNextClick;if(a.isFunction(h))h(d>0,b.nextSlide,e[b.nextSlide]);m(e,b,1,c);return false}function n(a,b,d,e){if(d.timeoutFn){var f=d.timeoutFn.call(a,a,b,d,e);while(d.fx!="none"&&f-d.speed<250)f+=d.speed;c("calculated timeout: "+f+"; speed: "+d.speed);if(f!==false)return f}return d.timeout}function m(b,d,e,f){if(e&&d.busy&&d.manualTrump){c("manualTrump in go(), stopping active transition");a(b).stop(true,true);d.busy=0}if(d.busy){c("transition active, ignoring new tx request");return}var g=d.$cont[0],h=b[d.currSlide],i=b[d.nextSlide];if(g.cycleStop!=d.stopCount||g.cycleTimeout===0&&!e)return;if(!e&&!g.cyclePause&&!d.bounce&&(d.autostop&&--d.countdown<=0||d.nowrap&&!d.random&&d.nextSlide<d.currSlide)){if(d.end)d.end(d);return}var j=false;if((e||!g.cyclePause)&&d.nextSlide!=d.currSlide){j=true;var k=d.fx;h.cycleH=h.cycleH||a(h).height();h.cycleW=h.cycleW||a(h).width();i.cycleH=i.cycleH||a(i).height();i.cycleW=i.cycleW||a(i).width();if(d.multiFx){if(f&&(d.lastFx==undefined||++d.lastFx>=d.fxs.length))d.lastFx=0;else if(!f&&(d.lastFx==undefined||--d.lastFx<0))d.lastFx=d.fxs.length-1;k=d.fxs[d.lastFx]}if(d.oneTimeFx){k=d.oneTimeFx;d.oneTimeFx=null}a.fn.cycle.resetState(d,k);if(d.before.length)a.each(d.before,function(a,b){if(g.cycleStop!=d.stopCount)return;b.apply(i,[h,i,d,f])});var l=function(){d.busy=0;a.each(d.after,function(a,b){if(g.cycleStop!=d.stopCount)return;b.apply(i,[h,i,d,f])})};c("tx firing("+k+"); currSlide: "+d.currSlide+"; nextSlide: "+d.nextSlide);d.busy=1;if(d.fxFn)d.fxFn(h,i,d,l,f,e&&d.fastOnEvent);else if(a.isFunction(a.fn.cycle[d.fx]))a.fn.cycle[d.fx](h,i,d,l,f,e&&d.fastOnEvent);else a.fn.cycle.custom(h,i,d,l,f,e&&d.fastOnEvent)}if(j||d.nextSlide==d.currSlide){d.lastSlide=d.currSlide;if(d.random){d.currSlide=d.nextSlide;if(++d.randomIndex==b.length)d.randomIndex=0;d.nextSlide=d.randomMap[d.randomIndex];if(d.nextSlide==d.currSlide)d.nextSlide=d.currSlide==d.slideCount-1?0:d.currSlide+1}else if(d.backwards){var o=d.nextSlide-1<0;if(o&&d.bounce){d.backwards=!d.backwards;d.nextSlide=1;d.currSlide=0}else{d.nextSlide=o?b.length-1:d.nextSlide-1;d.currSlide=o?0:d.nextSlide+1}}else{var o=d.nextSlide+1==b.length;if(o&&d.bounce){d.backwards=!d.backwards;d.nextSlide=b.length-2;d.currSlide=b.length-1}else{d.nextSlide=o?0:d.nextSlide+1;d.currSlide=o?b.length-1:d.nextSlide-1}}}if(j&&d.pager)d.updateActivePagerLink(d.pager,d.currSlide,d.activePagerClass);var p=0;if(d.timeout&&!d.continuous)p=n(b[d.currSlide],b[d.nextSlide],d,f);else if(d.continuous&&g.cyclePause)p=10;if(p>0)g.cycleTimeout=setTimeout(function(){m(b,d,0,!d.backwards)},p)}function l(b,c){b.addSlide=function(d,e){var f=a(d),g=f[0];if(!b.autostopCount)b.countdown++;c[e?"unshift":"push"](g);if(b.els)b.els[e?"unshift":"push"](g);b.slideCount=c.length;f.css("position","absolute");f[e?"prependTo":"appendTo"](b.$cont);if(e){b.currSlide++;b.nextSlide++}if(!a.support.opacity&&b.cleartype&&!b.cleartypeNoBg)r(f);if(b.fit&&b.width)f.width(b.width);if(b.fit&&b.height&&b.height!="auto")f.height(b.height);g.cycleH=b.fit&&b.height?b.height:f.height();g.cycleW=b.fit&&b.width?b.width:f.width();f.css(b.cssBefore);if(b.pager||b.pagerAnchorBuilder)a.fn.cycle.createPagerAnchor(c.length-1,g,a(b.pager),c,b);if(a.isFunction(b.onAddSlide))b.onAddSlide(f);else f.hide()}}function k(b){var e,f,g=a.fn.cycle.transitions;if(b.fx.indexOf(",")>0){b.multiFx=true;b.fxs=b.fx.replace(/\s*/g,"").split(",");for(e=0;e<b.fxs.length;e++){var h=b.fxs[e];f=g[h];if(!f||!g.hasOwnProperty(h)||!a.isFunction(f)){d("discarding unknown transition: ",h);b.fxs.splice(e,1);e--}}if(!b.fxs.length){d("No valid transitions named; slideshow terminating.");return false}}else if(b.fx=="all"){b.multiFx=true;b.fxs=[];for(p in g){f=g[p];if(g.hasOwnProperty(p)&&a.isFunction(f))b.fxs.push(p)}}if(b.multiFx&&b.randomizeEffects){var i=Math.floor(Math.random()*20)+30;for(e=0;e<i;e++){var j=Math.floor(Math.random()*b.fxs.length);b.fxs.push(b.fxs.splice(j,1)[0])}c("randomized fx sequence: ",b.fxs)}return true}function j(b){b.original={before:[],after:[]};b.original.cssBefore=a.extend({},b.cssBefore);b.original.cssAfter=a.extend({},b.cssAfter);b.original.animIn=a.extend({},b.animIn);b.original.animOut=a.extend({},b.animOut);a.each(b.before,function(){b.original.before.push(this)});a.each(b.after,function(){b.original.after.push(this)})}function i(b,c,f,h,i){var n=a.extend({},a.fn.cycle.defaults,h||{},a.metadata?b.metadata():a.meta?b.data():{});var p=a.isFunction(b.data)?b.data(n.metaAttr):null;if(p)n=a.extend(n,p);if(n.autostop)n.countdown=n.autostopCount||f.length;var s=b[0];b.data("cycle.opts",n);n.$cont=b;n.stopCount=s.cycleStop;n.elements=f;n.before=n.before?[n.before]:[];n.after=n.after?[n.after]:[];if(!a.support.opacity&&n.cleartype)n.after.push(function(){g(this,n)});if(n.continuous)n.after.push(function(){m(f,n,0,!n.backwards)});j(n);if(!a.support.opacity&&n.cleartype&&!n.cleartypeNoBg)r(c);if(b.css("position")=="static")b.css("position","relative");if(n.width)b.width(n.width);if(n.height&&n.height!="auto")b.height(n.height);if(n.startingSlide)n.startingSlide=parseInt(n.startingSlide,10);else if(n.backwards)n.startingSlide=f.length-1;if(n.random){n.randomMap=[];for(var t=0;t<f.length;t++)n.randomMap.push(t);n.randomMap.sort(function(a,b){return Math.random()-.5});n.randomIndex=1;n.startingSlide=n.randomMap[1]}else if(n.startingSlide>=f.length)n.startingSlide=0;n.currSlide=n.startingSlide||0;var u=n.startingSlide;c.css({position:"absolute",top:0,left:0}).hide().each(function(b){var c;if(n.backwards)c=u?b<=u?f.length+(b-u):u-b:f.length-b;else c=u?b>=u?f.length-(b-u):u-b:f.length-b;a(this).css("z-index",c)});a(f[u]).css("opacity",1).show();g(f[u],n);if(n.fit){if(!n.aspect){if(n.width)c.width(n.width);if(n.height&&n.height!="auto")c.height(n.height)}else{c.each(function(){var b=a(this);var c=n.aspect===true?b.width()/b.height():n.aspect;if(n.width&&b.width()!=n.width){b.width(n.width);b.height(n.width/c)}if(n.height&&b.height()<n.height){b.height(n.height);b.width(n.height*c)}})}}if(n.center&&(!n.fit||n.aspect)){c.each(function(){var b=a(this);b.css({"margin-left":n.width?(n.width-b.width())/2+"px":0,"margin-top":n.height?(n.height-b.height())/2+"px":0})})}if(n.center&&!n.fit&&!n.slideResize){c.each(function(){var b=a(this);b.css({"margin-left":n.width?(n.width-b.width())/2+"px":0,"margin-top":n.height?(n.height-b.height())/2+"px":0})})}var v=n.containerResize&&!b.innerHeight();if(v){var w=0,x=0;for(var y=0;y<f.length;y++){var z=a(f[y]),A=z[0],B=z.outerWidth(),C=z.outerHeight();if(!B)B=A.offsetWidth||A.width||z.attr("width");if(!C)C=A.offsetHeight||A.height||z.attr("height");w=B>w?B:w;x=C>x?C:x}if(w>0&&x>0)b.css({width:w+"px",height:x+"px"})}var D=false;if(n.pause)b.hover(function(){D=true;this.cyclePause++;e(s,true)},function(){D&&this.cyclePause--;e(s,true)});if(k(n)===false)return false;var E=false;h.requeueAttempts=h.requeueAttempts||0;c.each(function(){var b=a(this);this.cycleH=n.fit&&n.height?n.height:b.height()||this.offsetHeight||this.height||b.attr("height")||0;this.cycleW=n.fit&&n.width?n.width:b.width()||this.offsetWidth||this.width||b.attr("width")||0;if(b.is("img")){var c=a.browser.msie&&this.cycleW==28&&this.cycleH==30&&!this.complete;var e=a.browser.mozilla&&this.cycleW==34&&this.cycleH==19&&!this.complete;var f=a.browser.opera&&(this.cycleW==42&&this.cycleH==19||this.cycleW==37&&this.cycleH==17)&&!this.complete;var g=this.cycleH==0&&this.cycleW==0&&!this.complete;if(c||e||f||g){if(i.s&&n.requeueOnImageNotLoaded&&++h.requeueAttempts<100){d(h.requeueAttempts," - img slide not loaded, requeuing slideshow: ",this.src,this.cycleW,this.cycleH);setTimeout(function(){a(i.s,i.c).cycle(h)},n.requeueTimeout);E=true;return false}else{d("could not determine size of image: "+this.src,this.cycleW,this.cycleH)}}}return true});if(E)return false;n.cssBefore=n.cssBefore||{};n.cssAfter=n.cssAfter||{};n.cssFirst=n.cssFirst||{};n.animIn=n.animIn||{};n.animOut=n.animOut||{};c.not(":eq("+u+")").css(n.cssBefore);a(c[u]).css(n.cssFirst);if(n.timeout){n.timeout=parseInt(n.timeout,10);if(n.speed.constructor==String)n.speed=a.fx.speeds[n.speed]||parseInt(n.speed,10);if(!n.sync)n.speed=n.speed/2;var F=n.fx=="none"?0:n.fx=="shuffle"?500:250;while(n.timeout-n.speed<F)n.timeout+=n.speed}if(n.easing)n.easeIn=n.easeOut=n.easing;if(!n.speedIn)n.speedIn=n.speed;if(!n.speedOut)n.speedOut=n.speed;n.slideCount=f.length;n.currSlide=n.lastSlide=u;if(n.random){if(++n.randomIndex==f.length)n.randomIndex=0;n.nextSlide=n.randomMap[n.randomIndex]}else if(n.backwards)n.nextSlide=n.startingSlide==0?f.length-1:n.startingSlide-1;else n.nextSlide=n.startingSlide>=f.length-1?0:n.startingSlide+1;if(!n.multiFx){var G=a.fn.cycle.transitions[n.fx];if(a.isFunction(G))G(b,c,n);else if(n.fx!="custom"&&!n.multiFx){d("unknown transition: "+n.fx,"; slideshow terminating");return false}}var H=c[u];if(!n.skipInitializationCallbacks){if(n.before.length)n.before[0].apply(H,[H,H,n,true]);if(n.after.length)n.after[0].apply(H,[H,H,n,true])}if(n.next)a(n.next).bind(n.prevNextEvent,function(){return o(n,1)});if(n.prev)a(n.prev).bind(n.prevNextEvent,function(){return o(n,0)});if(n.pager||n.pagerAnchorBuilder)q(f,n);l(n,f);return n}function h(b){if(b.next)a(b.next).unbind(b.prevNextEvent);if(b.prev)a(b.prev).unbind(b.prevNextEvent);if(b.pager||b.pagerAnchorBuilder)a.each(b.pagerAnchors||[],function(){this.unbind().remove()});b.pagerAnchors=null;if(b.destroy)b.destroy(b)}function g(b,c){if(!a.support.opacity&&c.cleartype&&b.style.filter){try{b.style.removeAttribute("filter")}catch(d){}}}function f(b,c,f){function j(b,c,e){if(!b&&c===true){var f=a(e).data("cycle.opts");if(!f){d("options not found, can not resume");return false}if(e.cycleTimeout){clearTimeout(e.cycleTimeout);e.cycleTimeout=0}m(f.elements,f,1,!f.backwards)}}if(b.cycleStop==undefined)b.cycleStop=0;if(c===undefined||c===null)c={};if(c.constructor==String){switch(c){case"destroy":case"stop":var g=a(b).data("cycle.opts");if(!g)return false;b.cycleStop++;if(b.cycleTimeout)clearTimeout(b.cycleTimeout);b.cycleTimeout=0;g.elements&&a(g.elements).stop();a(b).removeData("cycle.opts");if(c=="destroy")h(g);return false;case"toggle":b.cyclePause=b.cyclePause===1?0:1;j(b.cyclePause,f,b);e(b);return false;case"pause":b.cyclePause=1;e(b);return false;case"resume":b.cyclePause=0;j(false,f,b);e(b);return false;case"prev":case"next":var g=a(b).data("cycle.opts");if(!g){d('options not found, "prev/next" ignored');return false}a.fn.cycle[c](g);return false;default:c={fx:c}}return c}else if(c.constructor==Number){var i=c;c=a(b).data("cycle.opts");if(!c){d("options not found, can not advance slide");return false}if(i<0||i>=c.elements.length){d("invalid slide index: "+i);return false}c.nextSlide=i;if(b.cycleTimeout){clearTimeout(b.cycleTimeout);b.cycleTimeout=0}if(typeof f=="string")c.oneTimeFx=f;m(c.elements,c,1,i>=c.currSlide);return false}return c}function e(b,c,d){var e=a(b).data("cycle.opts");var f=!!b.cyclePause;if(f&&e.paused)e.paused(b,e,c,d);else if(!f&&e.resumed)e.resumed(b,e,c,d)}function d(){window.console&&console.log&&console.log("[cycle] "+Array.prototype.join.call(arguments," "))}function c(b){a.fn.cycle.debug&&d(b)}var b="2.9995";if(a.support==undefined){a.support={opacity:!a.browser.msie}}a.expr[":"].paused=function(a){return a.cyclePause};a.fn.cycle=function(b,e){var g={s:this.selector,c:this.context};if(this.length===0&&b!="stop"){if(!a.isReady&&g.s){d("DOM not ready, queuing slideshow");a(function(){a(g.s,g.c).cycle(b,e)});return this}d("terminating; zero elements found by selector"+(a.isReady?"":" (DOM not ready)"));return this}return this.each(function(){var h=f(this,b,e);if(h===false)return;h.updateActivePagerLink=h.updateActivePagerLink||a.fn.cycle.updateActivePagerLink;if(this.cycleTimeout)clearTimeout(this.cycleTimeout);this.cycleTimeout=this.cyclePause=0;var j=a(this);var k=h.slideExpr?a(h.slideExpr,this):j.children();var l=k.get();var o=i(j,k,l,h,g);if(o===false)return;if(l.length<2){d("terminating; too few slides: "+l.length);return}var p=o.continuous?10:n(l[o.currSlide],l[o.nextSlide],o,!o.backwards);if(p){p+=o.delay||0;if(p<10)p=10;c("first timeout: "+p);this.cycleTimeout=setTimeout(function(){m(l,o,0,!h.backwards)},p)}})};a.fn.cycle.resetState=function(b,c){c=c||b.fx;b.before=[];b.after=[];b.cssBefore=a.extend({},b.original.cssBefore);b.cssAfter=a.extend({},b.original.cssAfter);b.animIn=a.extend({},b.original.animIn);b.animOut=a.extend({},b.original.animOut);b.fxFn=null;a.each(b.original.before,function(){b.before.push(this)});a.each(b.original.after,function(){b.after.push(this)});var d=a.fn.cycle.transitions[c];if(a.isFunction(d))d(b.$cont,a(b.elements),b)};a.fn.cycle.updateActivePagerLink=function(b,c,d){a(b).each(function(){a(this).children().removeClass(d).eq(c).addClass(d)})};a.fn.cycle.next=function(a){o(a,1)};a.fn.cycle.prev=function(a){o(a,0)};a.fn.cycle.createPagerAnchor=function(b,d,f,g,h){var i;if(a.isFunction(h.pagerAnchorBuilder)){i=h.pagerAnchorBuilder(b,d);c("pagerAnchorBuilder("+b+", el) returned: "+i)}else i='<a href="#">'+(b+1)+"</a>";if(!i)return;var j=a(i);if(j.parents("body").length===0){var k=[];if(f.length>1){f.each(function(){var b=j.clone(true);a(this).append(b);k.push(b[0])});j=a(k)}else{j.appendTo(f)}}h.pagerAnchors=h.pagerAnchors||[];h.pagerAnchors.push(j);var l=function(c){c.preventDefault();h.nextSlide=b;var d=h.$cont[0],e=d.cycleTimeout;if(e){clearTimeout(e);d.cycleTimeout=0}var f=h.onPagerEvent||h.pagerClick;if(a.isFunction(f))f(h.nextSlide,g[h.nextSlide]);m(g,h,1,h.currSlide<b)};if(/mouseenter|mouseover/i.test(h.pagerEvent)){j.hover(l,function(){})}else{j.bind(h.pagerEvent,l)}if(!/^click/.test(h.pagerEvent)&&!h.allowPagerClickBubble)j.bind("click.cycle",function(){return false});var n=h.$cont[0];var o=false;if(h.pauseOnPagerHover){j.hover(function(){o=true;n.cyclePause++;e(n,true,true)},function(){o&&n.cyclePause--;e(n,true,true)})}};a.fn.cycle.hopsFromLast=function(a,b){var c,d=a.lastSlide,e=a.currSlide;if(b)c=e>d?e-d:a.slideCount-d;else c=e<d?d-e:d+a.slideCount-e;return c};a.fn.cycle.commonReset=function(b,c,d,e,f,g){a(d.elements).not(b).hide();if(typeof d.cssBefore.opacity=="undefined")d.cssBefore.opacity=1;d.cssBefore.display="block";if(d.slideResize&&e!==false&&c.cycleW>0)d.cssBefore.width=c.cycleW;if(d.slideResize&&f!==false&&c.cycleH>0)d.cssBefore.height=c.cycleH;d.cssAfter=d.cssAfter||{};d.cssAfter.display="none";a(b).css("zIndex",d.slideCount+(g===true?1:0));a(c).css("zIndex",d.slideCount+(g===true?0:1))};a.fn.cycle.custom=function(b,c,d,e,f,g){var h=a(b),i=a(c);var j=d.speedIn,k=d.speedOut,l=d.easeIn,m=d.easeOut;i.css(d.cssBefore);if(g){if(typeof g=="number")j=k=g;else j=k=1;l=m=null}var n=function(){i.animate(d.animIn,j,l,function(){e()})};h.animate(d.animOut,k,m,function(){h.css(d.cssAfter);if(!d.sync)n()});if(d.sync)n()};a.fn.cycle.transitions={fade:function(b,c,d){c.not(":eq("+d.currSlide+")").css("opacity",0);d.before.push(function(b,c,d){a.fn.cycle.commonReset(b,c,d);d.cssBefore.opacity=0});d.animIn={opacity:1};d.animOut={opacity:0};d.cssBefore={top:0,left:0}}};a.fn.cycle.ver=function(){return b};a.fn.cycle.defaults={activePagerClass:"activeSlide",after:null,allowPagerClickBubble:false,animIn:null,animOut:null,aspect:false,autostop:0,autostopCount:0,backwards:false,before:null,center:null,cleartype:!a.support.opacity,cleartypeNoBg:false,containerResize:1,continuous:0,cssAfter:null,cssBefore:null,delay:0,easeIn:null,easeOut:null,easing:null,end:null,fastOnEvent:0,fit:0,fx:"fade",fxFn:null,height:"auto",manualTrump:true,metaAttr:"cycle",next:null,nowrap:0,onPagerEvent:null,onPrevNextEvent:null,pager:null,pagerAnchorBuilder:null,pagerEvent:"click.cycle",pause:0,pauseOnPagerHover:0,prev:null,prevNextEvent:"click.cycle",random:0,randomizeEffects:1,requeueOnImageNotLoaded:true,requeueTimeout:250,rev:0,shuffle:null,skipInitializationCallbacks:false,slideExpr:null,slideResize:1,speed:1e3,speedIn:null,speedOut:null,startingSlide:0,sync:1,timeout:4e3,timeoutFn:null,updateActivePagerLink:null,width:null}})(jQuery);(function(a){a.fn.cycle.transitions.none=function(b,c,d){d.fxFn=function(b,c,d,e){a(c).show();a(b).hide();e()}};a.fn.cycle.transitions.fadeout=function(b,c,d){c.not(":eq("+d.currSlide+")").css({display:"block",opacity:1});d.before.push(function(b,c,d,e,f,g){a(b).css("zIndex",d.slideCount+(!g===true?1:0));a(c).css("zIndex",d.slideCount+(!g===true?0:1))});d.animIn.opacity=1;d.animOut.opacity=0;d.cssBefore.opacity=1;d.cssBefore.display="block";d.cssAfter.zIndex=0};a.fn.cycle.transitions.scrollUp=function(b,c,d){b.css("overflow","hidden");d.before.push(a.fn.cycle.commonReset);var e=b.height();d.cssBefore.top=e;d.cssBefore.left=0;d.cssFirst.top=0;d.animIn.top=0;d.animOut.top=-e};a.fn.cycle.transitions.scrollDown=function(b,c,d){b.css("overflow","hidden");d.before.push(a.fn.cycle.commonReset);var e=b.height();d.cssFirst.top=0;d.cssBefore.top=-e;d.cssBefore.left=0;d.animIn.top=0;d.animOut.top=e};a.fn.cycle.transitions.scrollLeft=function(b,c,d){b.css("overflow","hidden");d.before.push(a.fn.cycle.commonReset);var e=b.width();d.cssFirst.left=0;d.cssBefore.left=e;d.cssBefore.top=0;d.animIn.left=0;d.animOut.left=0-e};a.fn.cycle.transitions.scrollRight=function(b,c,d){b.css("overflow","hidden");d.before.push(a.fn.cycle.commonReset);var e=b.width();d.cssFirst.left=0;d.cssBefore.left=-e;d.cssBefore.top=0;d.animIn.left=0;d.animOut.left=e};a.fn.cycle.transitions.scrollHorz=function(b,c,d){b.css("overflow","hidden").width();d.before.push(function(b,c,d,e){if(d.rev)e=!e;a.fn.cycle.commonReset(b,c,d);d.cssBefore.left=e?c.cycleW-1:1-c.cycleW;d.animOut.left=e?-b.cycleW:b.cycleW});d.cssFirst.left=0;d.cssBefore.top=0;d.animIn.left=0;d.animOut.top=0};a.fn.cycle.transitions.scrollVert=function(b,c,d){b.css("overflow","hidden");d.before.push(function(b,c,d,e){if(d.rev)e=!e;a.fn.cycle.commonReset(b,c,d);d.cssBefore.top=e?1-c.cycleH:c.cycleH-1;d.animOut.top=e?b.cycleH:-b.cycleH});d.cssFirst.top=0;d.cssBefore.left=0;d.animIn.top=0;d.animOut.left=0};a.fn.cycle.transitions.slideX=function(b,c,d){d.before.push(function(b,c,d){a(d.elements).not(b).hide();a.fn.cycle.commonReset(b,c,d,false,true);d.animIn.width=c.cycleW});d.cssBefore.left=0;d.cssBefore.top=0;d.cssBefore.width=0;d.animIn.width="show";d.animOut.width=0};a.fn.cycle.transitions.slideY=function(b,c,d){d.before.push(function(b,c,d){a(d.elements).not(b).hide();a.fn.cycle.commonReset(b,c,d,true,false);d.animIn.height=c.cycleH});d.cssBefore.left=0;d.cssBefore.top=0;d.cssBefore.height=0;d.animIn.height="show";d.animOut.height=0};a.fn.cycle.transitions.shuffle=function(b,c,d){var e,f=b.css("overflow","visible").width();c.css({left:0,top:0});d.before.push(function(b,c,d){a.fn.cycle.commonReset(b,c,d,true,true,true)});if(!d.speedAdjusted){d.speed=d.speed/2;d.speedAdjusted=true}d.random=0;d.shuffle=d.shuffle||{left:-f,top:15};d.els=[];for(e=0;e<c.length;e++)d.els.push(c[e]);for(e=0;e<d.currSlide;e++)d.els.push(d.els.shift());d.fxFn=function(b,c,d,e,f){if(d.rev)f=!f;var g=f?a(b):a(c);a(c).css(d.cssBefore);var h=d.slideCount;g.animate(d.shuffle,d.speedIn,d.easeIn,function(){var c=a.fn.cycle.hopsFromLast(d,f);for(var i=0;i<c;i++)f?d.els.push(d.els.shift()):d.els.unshift(d.els.pop());if(f){for(var j=0,k=d.els.length;j<k;j++)a(d.els[j]).css("z-index",k-j+h)}else{var l=a(b).css("z-index");g.css("z-index",parseInt(l,10)+1+h)}g.animate({left:0,top:0},d.speedOut,d.easeOut,function(){a(f?this:b).hide();if(e)e()})})};a.extend(d.cssBefore,{display:"block",opacity:1,top:0,left:0})};a.fn.cycle.transitions.turnUp=function(b,c,d){d.before.push(function(b,c,d){a.fn.cycle.commonReset(b,c,d,true,false);d.cssBefore.top=c.cycleH;d.animIn.height=c.cycleH;d.animOut.width=c.cycleW});d.cssFirst.top=0;d.cssBefore.left=0;d.cssBefore.height=0;d.animIn.top=0;d.animOut.height=0};a.fn.cycle.transitions.turnDown=function(b,c,d){d.before.push(function(b,c,d){a.fn.cycle.commonReset(b,c,d,true,false);d.animIn.height=c.cycleH;d.animOut.top=b.cycleH});d.cssFirst.top=0;d.cssBefore.left=0;d.cssBefore.top=0;d.cssBefore.height=0;d.animOut.height=0};a.fn.cycle.transitions.turnLeft=function(b,c,d){d.before.push(function(b,c,d){a.fn.cycle.commonReset(b,c,d,false,true);d.cssBefore.left=c.cycleW;d.animIn.width=c.cycleW});d.cssBefore.top=0;d.cssBefore.width=0;d.animIn.left=0;d.animOut.width=0};a.fn.cycle.transitions.turnRight=function(b,c,d){d.before.push(function(b,c,d){a.fn.cycle.commonReset(b,c,d,false,true);d.animIn.width=c.cycleW;d.animOut.left=b.cycleW});a.extend(d.cssBefore,{top:0,left:0,width:0});d.animIn.left=0;d.animOut.width=0};a.fn.cycle.transitions.zoom=function(b,c,d){d.before.push(function(b,c,d){a.fn.cycle.commonReset(b,c,d,false,false,true);d.cssBefore.top=c.cycleH/2;d.cssBefore.left=c.cycleW/2;a.extend(d.animIn,{top:0,left:0,width:c.cycleW,height:c.cycleH});a.extend(d.animOut,{width:0,height:0,top:b.cycleH/2,left:b.cycleW/2})});d.cssFirst.top=0;d.cssFirst.left=0;d.cssBefore.width=0;d.cssBefore.height=0};a.fn.cycle.transitions.fadeZoom=function(b,c,d){d.before.push(function(b,c,d){a.fn.cycle.commonReset(b,c,d,false,false);d.cssBefore.left=c.cycleW/2;d.cssBefore.top=c.cycleH/2;a.extend(d.animIn,{top:0,left:0,width:c.cycleW,height:c.cycleH})});d.cssBefore.width=0;d.cssBefore.height=0;d.animOut.opacity=0};a.fn.cycle.transitions.blindX=function(b,c,d){var e=b.css("overflow","hidden").width();d.before.push(function(b,c,d){a.fn.cycle.commonReset(b,c,d);d.animIn.width=c.cycleW;d.animOut.left=b.cycleW});d.cssBefore.left=e;d.cssBefore.top=0;d.animIn.left=0;d.animOut.left=e};a.fn.cycle.transitions.blindY=function(b,c,d){var e=b.css("overflow","hidden").height();d.before.push(function(b,c,d){a.fn.cycle.commonReset(b,c,d);d.animIn.height=c.cycleH;d.animOut.top=b.cycleH});d.cssBefore.top=e;d.cssBefore.left=0;d.animIn.top=0;d.animOut.top=e};a.fn.cycle.transitions.blindZ=function(b,c,d){var e=b.css("overflow","hidden").height();var f=b.width();d.before.push(function(b,c,d){a.fn.cycle.commonReset(b,c,d);d.animIn.height=c.cycleH;d.animOut.top=b.cycleH});d.cssBefore.top=e;d.cssBefore.left=f;d.animIn.top=0;d.animIn.left=0;d.animOut.top=e;d.animOut.left=f};a.fn.cycle.transitions.growX=function(b,c,d){d.before.push(function(b,c,d){a.fn.cycle.commonReset(b,c,d,false,true);d.cssBefore.left=this.cycleW/2;d.animIn.left=0;d.animIn.width=this.cycleW;d.animOut.left=0});d.cssBefore.top=0;d.cssBefore.width=0};a.fn.cycle.transitions.growY=function(b,c,d){d.before.push(function(b,c,d){a.fn.cycle.commonReset(b,c,d,true,false);d.cssBefore.top=this.cycleH/2;d.animIn.top=0;d.animIn.height=this.cycleH;d.animOut.top=0});d.cssBefore.height=0;d.cssBefore.left=0};a.fn.cycle.transitions.curtainX=function(b,c,d){d.before.push(function(b,c,d){a.fn.cycle.commonReset(b,c,d,false,true,true);d.cssBefore.left=c.cycleW/2;d.animIn.left=0;d.animIn.width=this.cycleW;d.animOut.left=b.cycleW/2;d.animOut.width=0});d.cssBefore.top=0;d.cssBefore.width=0};a.fn.cycle.transitions.curtainY=function(b,c,d){d.before.push(function(b,c,d){a.fn.cycle.commonReset(b,c,d,true,false,true);d.cssBefore.top=c.cycleH/2;d.animIn.top=0;d.animIn.height=c.cycleH;d.animOut.top=b.cycleH/2;d.animOut.height=0});d.cssBefore.height=0;d.cssBefore.left=0};a.fn.cycle.transitions.cover=function(b,c,d){var e=d.direction||"left";var f=b.css("overflow","hidden").width();var g=b.height();d.before.push(function(b,c,d){a.fn.cycle.commonReset(b,c,d);if(e=="right")d.cssBefore.left=-f;else if(e=="up")d.cssBefore.top=g;else if(e=="down")d.cssBefore.top=-g;else d.cssBefore.left=f});d.animIn.left=0;d.animIn.top=0;d.cssBefore.top=0;d.cssBefore.left=0};a.fn.cycle.transitions.uncover=function(b,c,d){var e=d.direction||"left";var f=b.css("overflow","hidden").width();var g=b.height();d.before.push(function(b,c,d){a.fn.cycle.commonReset(b,c,d,true,true,true);if(e=="right")d.animOut.left=f;else if(e=="up")d.animOut.top=-g;else if(e=="down")d.animOut.top=g;else d.animOut.left=-f});d.animIn.left=0;d.animIn.top=0;d.cssBefore.top=0;d.cssBefore.left=0};a.fn.cycle.transitions.toss=function(b,c,d){var e=b.css("overflow","visible").width();var f=b.height();d.before.push(function(b,c,d){a.fn.cycle.commonReset(b,c,d,true,true,true);if(!d.animOut.left&&!d.animOut.top)a.extend(d.animOut,{left:e*2,top:-f/2,opacity:0});else d.animOut.opacity=0});d.cssBefore.left=0;d.cssBefore.top=0;d.animIn.left=0};a.fn.cycle.transitions.wipe=function(b,c,d){var e=b.css("overflow","hidden").width();var f=b.height();d.cssBefore=d.cssBefore||{};var g;if(d.clip){if(/l2r/.test(d.clip))g="rect(0px 0px "+f+"px 0px)";else if(/r2l/.test(d.clip))g="rect(0px "+e+"px "+f+"px "+e+"px)";else if(/t2b/.test(d.clip))g="rect(0px "+e+"px 0px 0px)";else if(/b2t/.test(d.clip))g="rect("+f+"px "+e+"px "+f+"px 0px)";else if(/zoom/.test(d.clip)){var h=parseInt(f/2,10);var i=parseInt(e/2,10);g="rect("+h+"px "+i+"px "+h+"px "+i+"px)"}}d.cssBefore.clip=d.cssBefore.clip||g||"rect(0px 0px 0px 0px)";var j=d.cssBefore.clip.match(/(\d+)/g);var k=parseInt(j[0],10),l=parseInt(j[1],10),m=parseInt(j[2],10),n=parseInt(j[3],10);d.before.push(function(b,c,d){if(b==c)return;var g=a(b),h=a(c);a.fn.cycle.commonReset(b,c,d,true,true,false);d.cssAfter.display="block";var i=1,j=parseInt(d.speedIn/13,10)-1;(function o(){var a=k?k-parseInt(i*(k/j),10):0;var b=n?n-parseInt(i*(n/j),10):0;var c=m<f?m+parseInt(i*((f-m)/j||1),10):f;var d=l<e?l+parseInt(i*((e-l)/j||1),10):e;h.css({clip:"rect("+a+"px "+d+"px "+c+"px "+b+"px)"});i++<=j?setTimeout(o,13):g.css("display","none")})()});a.extend(d.cssBefore,{display:"block",opacity:1,top:0,left:0});d.animIn={left:0};d.animOut={left:0}}})(jQuery)
 
js/ngg.js CHANGED
@@ -17,6 +17,20 @@ jQuery("document").ready(function(){
17
  jQuery("a.ngg-browser-prev").click(function(e) {
18
  return ngg_ajax_browser_navigation(e, this);
19
  });
 
 
 
 
 
 
 
 
 
 
 
 
 
 
20
  });
21
 
22
  function ngg_ajax_navigation(e, obj) {
@@ -185,4 +199,4 @@ function ngg_remove_loading() {
185
  jQuery(document).unbind("mousemove");
186
 
187
  jQuery(loadingImage).remove();
188
- }
17
  jQuery("a.ngg-browser-prev").click(function(e) {
18
  return ngg_ajax_browser_navigation(e, this);
19
  });
20
+ //Qunit conditional call
21
+ if (ngg_get_url_vars().nextcellent) {
22
+ //Como invoco esto?
23
+ //edcal_test.runTests();
24
+ }
25
+
26
+ //Activate tooltip. Allow HTML content.
27
+ //See http://jqueryui.com/tooltip/ for examples.
28
+ //See http://stackoverflow.com/questions/15734105/jquery-ui-tooltip-does-not-support-html-content
29
+ jQuery(document).tooltip({
30
+ content: function () {
31
+ return jQuery.parseHTML(this.getAttribute("title"));
32
+ }
33
+ });
34
  });
35
 
36
  function ngg_ajax_navigation(e, obj) {
199
  jQuery(document).unbind("mousemove");
200
 
201
  jQuery(loadingImage).remove();
202
+ }
js/ngg.slideshow.js DELETED
@@ -1,138 +0,0 @@
1
- /*!
2
- * NextGEN Slideshow based on jQuery Cycle Plugin
3
- * Copyright (c) 2010-2012 Alex Rabe
4
- * Version: 1.0.6
5
- * Requires: jQuery v1.2.6 or later
6
- */
7
- jQuery.fn.nggSlideshow = function ( args ) {
8
-
9
- var defaults = { id: 1,
10
- width: 320,
11
- height: 240,
12
- fx: 'fade',
13
- domain: '',
14
- timeout: 5000 };
15
-
16
- var s = jQuery.extend( {}, defaults, args);
17
-
18
- var obj = this.selector;
19
- var stack = [];
20
- var url = s.domain + 'index.php?callback=json&api_key=true&format=json&method=gallery&id=' + s.id;
21
- /*
22
- the stackLength var will store stack length for ref - it is quicker to ref memory than make a call to find an obj property
23
- stack length is first collected in jQuery.getJSON(); stack length is auto-decremented in loadImage() + jCycle_onBefore()
24
- */
25
- var stackLength = 0;
26
-
27
- jQuery.getJSON(url, function(r){
28
-
29
- if (r.stat == "ok"){
30
-
31
- for (img in r.images) {
32
- var photo = r.images[img];
33
- //populate images into an array
34
- stack.push( decodeURI( photo['imageURL'] ) );
35
- }
36
- stackLength = stack.length;
37
- // init loading first 3 images (param 1 in func is first pass)
38
- loadImage(1);
39
- }
40
- });
41
-
42
- // load image and bind appendImage() to the img load - here we are making sure the loads do not get displaced
43
- function loadImage(num){
44
- // check that stack is not empty and we haven't alreay loaded 3 images
45
- if(stackLength > 0 && num <= 3) {
46
- var img = new Image();
47
- img.src = stack.shift();
48
- stackLength--;
49
- // wait to append image until the load is complete
50
- jQuery( img ).one('load', function() { appendImage(img, num); }).each(function(){
51
- // IE browser : in case it's already cached
52
- if(this.complete) jQuery(this).trigger('load');
53
- });
54
- }
55
- }
56
-
57
- // append image to obj
58
- function appendImage(img, num){
59
- // Hide them first, Cycle plugin will show them
60
- jQuery( img ).hide();
61
- // Add the image now and resize after loaded
62
- jQuery( obj ).append( imageResize(img, s.width , s.height) );
63
- // start slideshow with third image, load next image if not
64
- if (num == 3 || stackLength == 0 ) {
65
- startSlideshow();
66
- } else {
67
- loadImage(++num); // increase index and load next image
68
- }
69
-
70
- }
71
-
72
- function startSlideshow() {
73
-
74
- // hide the loader icon
75
- jQuery( obj + '-loader' ).empty().remove();
76
- // Start the slideshow
77
- jQuery(obj + ' img:first').fadeIn(1000, function() {
78
- // Start the cycle plugin
79
- jQuery( obj ).cycle( {
80
- fx: s.fx,
81
- containerResize: 1,
82
- fit: 1,
83
- timeout: s.timeout,
84
- next: obj,
85
- before: jCycle_onBefore
86
- });
87
- });
88
-
89
- }
90
-
91
- //Resize Image and keep ratio on client side, better move to server side later
92
- function imageResize(img, maxWidth , maxHeight) {
93
-
94
- // we need to wait until the image is loaded
95
- if ( !img.complete )
96
- jQuery( img ).bind('load', function() { imageResize(img, maxWidth , maxHeight) });
97
-
98
- // in some cases the image is not loaded, we can't resize them
99
- if (img.height == 0 || img.width == 0)
100
- return img;
101
-
102
- var width, height;
103
-
104
- if (img.width * maxHeight > img.height * maxWidth) {
105
- // img has a wider ratio than target size, make width fit
106
- if (img.width > maxWidth) {
107
- width = maxWidth;
108
- height = Math.round(img.height / img.width * maxWidth);
109
- }
110
- } else {
111
- // img has a less wide ratio than target size, make height fit
112
- if (img.height > maxHeight) {
113
- height = maxHeight;
114
- width = Math.round(img.width / img.height * maxHeight);
115
- }
116
- }
117
-
118
- jQuery( img ).css({
119
- 'height': height,
120
- 'width': width
121
- });
122
-
123
- return img;
124
- };
125
-
126
- // add images to slideshow step by step
127
- function jCycle_onBefore(curr, next, opts) {
128
- if (opts.addSlide)
129
- if (stackLength > 0){ // check that stack is not empty
130
- var img = new Image();
131
- img.src = stack.shift();
132
- stackLength--;
133
- jQuery( img ).bind('load', function() {
134
- opts.addSlide( imageResize(this, s.width , s.height) );
135
- });
136
- }
137
- };
138
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
js/ngg.slideshow.min.js DELETED
@@ -1 +0,0 @@
1
- jQuery.fn.nggSlideshow=function(args){var defaults={id:1,width:320,height:240,fx:'fade',domain:'',timeout:5000};var s=jQuery.extend({},defaults,args);var obj=this.selector;var stack=[];var url=s.domain+'index.php?callback=json&api_key=true&format=json&method=gallery&id='+s.id;var stackLength=0;jQuery.getJSON(url,function(r){if(r.stat=="ok"){for(img in r.images){var photo=r.images[img];stack.push(decodeURI(photo['imageURL']))}stackLength=stack.length;loadImage(1)}});function loadImage(num){if(stackLength>0&&num<=3){var img=new Image();img.src=stack.shift();stackLength--;jQuery(img).one('load',function(){appendImage(img,num)}).each(function(){if(this.complete)jQuery(this).trigger('load')})}}function appendImage(img,num){jQuery(img).hide();jQuery(obj).append(imageResize(img,s.width,s.height));if(num==3||stackLength==0){startSlideshow()}else{loadImage(++num)}}function startSlideshow(){jQuery(obj+'-loader').empty().remove();jQuery(obj+' img:first').fadeIn(1000,function(){jQuery(obj).cycle({fx:s.fx,containerResize:1,fit:1,timeout:s.timeout,next:obj,before:jCycle_onBefore})})}function imageResize(img,maxWidth,maxHeight){if(!img.complete)jQuery(img).bind('load',function(){imageResize(img,maxWidth,maxHeight)});if(img.height==0||img.width==0)return img;var width,height;if(img.width*maxHeight>img.height*maxWidth){if(img.width>maxWidth){width=maxWidth;height=Math.round(img.height/img.width*maxWidth)}}else{if(img.height>maxHeight){height=maxHeight;width=Math.round(img.width/img.height*maxHeight)}}jQuery(img).css({'height':height,'width':width});return img};function jCycle_onBefore(curr,next,opts){if(opts.addSlide)if(stackLength>0){var img=new Image();img.src=stack.shift();stackLength--;jQuery(img).bind('load',function(){opts.addSlide(imageResize(this,s.width,s.height))})}}}
 
js/nxc.main.js ADDED
@@ -0,0 +1,20 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+ //Call Qunit if enabled.
3
+ jQuery("document").ready(function(){
4
+ //Qunit conditional call
5
+ if (ngg_get_url_vars().nextcellent) { //Call qunit only if there is an url parameter nextcellent=true
6
+ nxc_test.runTests(); //check nxc.test.js file to see test there!
7
+ }
8
+ });
9
+
10
+ //get url parameter list, return array with parameter names and values.
11
+ function ngg_get_url_vars() {
12
+ var vars = [], hash;
13
+ var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');
14
+ for (var i = 0; i < hashes.length; i++) {
15
+ hash = hashes[i].split('=');
16
+ vars.push(hash[0]);
17
+ vars[hash[0]] = hash[1];
18
+ }
19
+ return vars;
20
+ }
js/nxc.test.js ADDED
@@ -0,0 +1,584 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /*
2
+ * This file contains unit tests for nextcellent gallery
3
+ * The test will perform if you add the nextcellent=true parameter to the URL for the gallery plugin.
4
+ */
5
+
6
+ var nxc_test = {
7
+
8
+ post: {},
9
+
10
+ testContent: 'This is the content of the <b>unit test &#8211 post</b>. <!--more--> This is content after the more tag to make sure we a reading it.',
11
+ testContent2: 'This is the content of the <b>unit test &#8211 post</b>. <!--more--> This is content after the more tag to make sure we a reading it. - CHANGED',
12
+ testContent3: 'This is the content of the <b>unit test &#8211 post</b>. <!--more--> This is content after the more tag to make sure we a reading it. - CHANGED DRAFT',
13
+
14
+ runTests: function() {
15
+ nxc_test.isDraftsDrawerVisible = edcal.isDraftsDrawerVisible;
16
+
17
+ edcal.setDraftsDrawerVisible(true, function() {
18
+ nxc_test.startTests();
19
+ });
20
+ },
21
+
22
+ startTests: function() {
23
+ /*FZSM: this shouldn't be necessary, since we deal with css file before*/
24
+ /*
25
+ jQuery('head').append('<link>');
26
+ css = jQuery('head').children(':last');
27
+ css.attr({
28
+ rel: 'stylesheet',
29
+ type: 'text/css',
30
+ href: edcal.plugin_url + '/lib/qunit.css'
31
+ });
32
+ */
33
+
34
+ jQuery('#wpbody-content .wrap').append('<div id="edcal-qunit"></div>'); //append on bottom of admin page.
35
+
36
+ jQuery('#edcal-qunit').append('<h1 id="qunit-header">WordPress Nextcellent Gallery Unit Tests</h1>' +
37
+ '<h2 id="qunit-banner"></h2>' +
38
+ '<div id="qunit-testrunner-toolbar"></div>' +
39
+ '<h2 id="qunit-userAgent"></h2>' +
40
+ '<ol id="qunit-tests"></ol>' +
41
+ '<div id="qunit-fixture">test markup</div>');
42
+
43
+
44
+ nxc_test.moveTests();
45
+ },
46
+
47
+ nxt_test1: function() {
48
+ expect(1);
49
+ ok(true,'simple test to check Qunit functionality');
50
+ //for the moment I don't even know if the start function is about something, so I don't use it
51
+
52
+ }, //End nextcellent test, the rest are examples!
53
+ //One question: QUnit can be useful also for other things than Javascript?
54
+
55
+ //Following are examples to take advantage as future reference (from editorial calendar plugin)
56
+ getFirstDate: function() {
57
+ var api = jQuery('#edcal_scrollable').scrollable();
58
+ var items = api.getVisibleItems();
59
+
60
+ return edcal.getDayFromDayId(items.eq(0).children('.edcal_row').children('.day:first').attr('id'));
61
+ },
62
+
63
+ getLastDate: function() {
64
+ var api = jQuery('#edcal_scrollable').scrollable();
65
+ var items = api.getVisibleItems();
66
+
67
+ return edcal.getDayFromDayId(items.eq(edcal.weeksPref - 1).children('.edcal_row').children('.day:last').attr('id'));
68
+ },
69
+
70
+ moveTests: function() {
71
+ var curSunday = edcal.nextStartOfWeek(Date.today()).add(-1).weeks();
72
+
73
+ edcal.moveTo(Date.today());
74
+
75
+ /*
76
+ * We'll start of with a series of tests about moving the calendar around
77
+ */
78
+ test('Move to today and check visible dates', function() {
79
+ expect(2);
80
+ ok(nxc_test.getFirstDate().equals(curSunday.clone()), 'firstDate should match ' + curSunday);
81
+
82
+ ok(nxc_test.getLastDate().equals(curSunday.clone().add(edcal.weeksPref).weeks().add(-1).days()),
83
+ 'lastDate should match ' + curSunday);
84
+ });
85
+
86
+ asyncTest('Move 1 week in the future and check visible dates', function() {
87
+ expect(2);
88
+ edcal.move(1, true, function() {
89
+ ok(nxc_test.getFirstDate().equals(curSunday.clone().add(1).weeks()), 'firstDate should match ' + curSunday);
90
+
91
+ ok(nxc_test.getLastDate().equals(curSunday.clone().add(edcal.weeksPref).weeks().add(-1).days().add(1).weeks()),
92
+ 'lastDate should match ' + curSunday);
93
+
94
+ edcal.move(1, false, function() {
95
+ start();
96
+ nxc_test.testMoveFourWeeks();
97
+ });
98
+ });
99
+ });
100
+
101
+ return;
102
+
103
+ },
104
+
105
+ testMoveFourWeeks: function() {
106
+ var curSunday = edcal.nextStartOfWeek(Date.today()).add(-1).weeks();
107
+
108
+ /*
109
+ * Now we'll move 4 weeks into the future
110
+ */
111
+ asyncTest('Move 4 weeks in the future and check visible dates', function() {
112
+ expect(2);
113
+
114
+ edcal.move(4, true, function() {
115
+ ok(nxc_test.getFirstDate().equals(curSunday.clone().add(4).weeks()), 'firstDate should match ' + curSunday);
116
+
117
+ ok(nxc_test.getLastDate().equals(curSunday.clone().add(edcal.weeksPref).weeks().add(-1).days().add(4).weeks()),
118
+ 'lastDate should match ' + curSunday);
119
+
120
+ edcal.move(4, false, function() {
121
+ start();
122
+ nxc_test.testMoveEightWeeks();
123
+ });
124
+ });
125
+
126
+
127
+ });
128
+ },
129
+
130
+ testMoveEightWeeks: function() {
131
+ var curSunday = edcal.nextStartOfWeek(Date.today()).add(-1).weeks();
132
+
133
+ /*
134
+ * Now 8 weeks into the past
135
+ */
136
+ asyncTest('Move 8 weeks in the past and check visible dates', function() {
137
+ expect(2);
138
+
139
+ edcal.move(8, false, function() {
140
+ ok(nxc_test.getFirstDate().equals(curSunday.clone().add(-8).weeks()), 'firstDate should match ' + curSunday);
141
+
142
+ ok(nxc_test.getLastDate().equals(curSunday.clone().add(edcal.weeksPref).weeks().add(-1).days().add(-8).weeks()),
143
+ 'lastDate should match ' + curSunday);
144
+
145
+ edcal.move(8, true, function() {
146
+ start();
147
+ nxc_test.testMoveToLast();
148
+ });
149
+ });
150
+
151
+
152
+ });
153
+ },
154
+
155
+ testMoveToLast: function() {
156
+ if (edcal.lastPostDate === '-1') {
157
+ /*
158
+ * Then there aren't any posts and we can't go
159
+ * to the last one so we just skip this test.
160
+ */
161
+ nxc_test.testCreatePost();
162
+ return;
163
+ }
164
+
165
+ var d = Date.parseExact(edcal.lastPostDate, 'ddMMyyyy');
166
+ var curSunday = edcal.nextStartOfWeek(d).add(-1).weeks();
167
+
168
+ /*
169
+ * Now move to the last post, get the post date, and make sure the post
170
+ * is there with the correct ID.
171
+ */
172
+ asyncTest('Move to the last post', function() {
173
+ expect(1);
174
+
175
+ edcal.moveTo(d);
176
+ edcal.getPosts(edcal.nextStartOfWeek(d).add(-3).weeks(),
177
+ edcal.nextStartOfWeek(d).add(edcal.weeksPref + 3).weeks(), function() {
178
+
179
+ equals(jQuery('#post-' + edcal.lastPostId).length, 1, 'The post should be added at ' +
180
+ d.toString(Date.CultureInfo.formatPatterns.longDate));
181
+
182
+ edcal.moveTo(Date.today());
183
+ start();
184
+ nxc_test.testCreatePost();
185
+ });
186
+
187
+
188
+ });
189
+ },
190
+
191
+ testCreatePost: function() {
192
+ /*
193
+ * Now we'll do a few tests about creating, modifying, and deleting posts.
194
+ */
195
+
196
+ asyncTest('Create a new post', function() {
197
+ expect(3);
198
+
199
+ nxc_test.post.title = 'Unit Test Post';
200
+ nxc_test.post.content = nxc_test.testContent;
201
+ nxc_test.post.status = 'draft';
202
+ nxc_test.post.time = '10:00 AM';
203
+ nxc_test.post.date = Date.today().add(7).days().toString(edcal.internalDateFormat);
204
+ nxc_test.post.id = '0';
205
+
206
+ edcal.savePost(nxc_test.post, false, false, function(res) {
207
+ if (!res.post) {
208
+ ok(false, 'There was an error creating the new post.');
209
+ start();
210
+ return;
211
+ }
212
+
213
+ equals(res.post.date, nxc_test.post.date, 'The resulting post should have the same date as the request');
214
+ equals(res.post.title, nxc_test.post.title, 'The resulting post should have the same title as the request');
215
+
216
+ equals(jQuery('#post-' + res.post.id).length, 1, 'The post should be added in only one place in the calendar.');
217
+
218
+ nxc_test.post = res.post;
219
+
220
+ start();
221
+
222
+ nxc_test.testGetPost();
223
+ });
224
+ });
225
+
226
+ },
227
+
228
+ testGetPost: function() {
229
+ /*
230
+ * We'll start by getting data about the post we've just created
231
+ */
232
+
233
+ asyncTest('Get post information', function() {
234
+ expect(3);
235
+
236
+ edcal.getPost(nxc_test.post.id, function(post) {
237
+ equals(post.date, nxc_test.post.date, 'The resulting post should have the same date as the request');
238
+ equals(post.title, nxc_test.post.title, 'The resulting post should have the same title as the request');
239
+ equals(post.content, nxc_test.testContent, 'The resulting post content should be the same as the test post content');
240
+
241
+ nxc_test.post = post;
242
+
243
+ start();
244
+
245
+ nxc_test.testMovePost();
246
+ });
247
+ });
248
+
249
+ },
250
+
251
+ testMovePost: function() {
252
+
253
+ asyncTest('Change the date of an existing post', function() {
254
+ expect(2);
255
+
256
+ // We added the post one week in the future, now we will move it
257
+ // one day after that.
258
+ var newDate = Date.today().add(8).days().toString(edcal.internalDateFormat);
259
+
260
+ edcal.doDrop(nxc_test.post.date, 'post-' + nxc_test.post.id, newDate, function(res) {
261
+
262
+ if (!res.post) {
263
+ ok(false, 'There was an error creating the new post.');
264
+ return;
265
+ }
266
+
267
+ equals(res.post.date, newDate, 'The resulting post should have the same date as the request');
268
+
269
+ equals(jQuery('#post-' + res.post.id).length, 1, 'The post should be added in only one place in the calendar.');
270
+
271
+ nxc_test.post = res.post;
272
+
273
+ start();
274
+
275
+ nxc_test.testMovePostOneWeek();
276
+ });
277
+ });
278
+
279
+ },
280
+
281
+ testMovePostOneWeek: function() {
282
+
283
+ asyncTest('Make a second change to the date of an existing post', function() {
284
+ expect(2);
285
+
286
+ // We added the post one week in the future, now we will move it
287
+ // one day after that.
288
+ var newDate = Date.today().add(22).days().toString(edcal.internalDateFormat);
289
+
290
+ edcal.doDrop(nxc_test.post.date, 'post-' + nxc_test.post.id, newDate, function(res) {
291
+
292
+ if (!res.post) {
293
+ ok(false, 'There was an error creating the new post.');
294
+ return;
295
+ }
296
+
297
+ equals(res.post.date, newDate, 'The resulting post should have the same date as the request');
298
+
299
+ equals(jQuery('#post-' + res.post.id).length, 1, 'The post should be added in only one place in the calendar.');
300
+
301
+ nxc_test.post = res.post;
302
+
303
+ start();
304
+
305
+ nxc_test.testMovePostDraft();
306
+ });
307
+ });
308
+
309
+ },
310
+
311
+ testMovePostDraft: function() {
312
+
313
+ asyncTest('Move an existing post to the drafts drawer', function() {
314
+ expect(2);
315
+
316
+ edcal.doDrop(nxc_test.post.date, 'post-' + nxc_test.post.id, edcal.NO_DATE, function(res) {
317
+
318
+ if (!res.post) {
319
+ ok(false, 'There was an error creating the new post.');
320
+ return;
321
+ }
322
+
323
+ equals(res.post.date_gmt, edcal.NO_DATE, 'The resulting post should have the same date as the request and it was ' + res.post.date);
324
+
325
+ equals(jQuery('#post-' + res.post.id).length, 1, 'The post should be added in only one place in the calendar.');
326
+
327
+ nxc_test.post = res.post;
328
+
329
+ start();
330
+
331
+ nxc_test.testEditPostDraft();
332
+ });
333
+ });
334
+
335
+ },
336
+
337
+ testEditPostDraft: function() {
338
+
339
+ asyncTest('Edit the content of a draft post', function() {
340
+ expect(2);
341
+
342
+ nxc_test.post.title = 'Unit Test Draft Post &#8211 Changed';
343
+ nxc_test.post.content = nxc_test.testContent3;
344
+
345
+ edcal.savePost(nxc_test.post, false, false, function(res)
346
+ {
347
+ if (!res.post) {
348
+ ok(false, 'There was an error editing the post.');
349
+ start();
350
+ return;
351
+ }
352
+
353
+ equals(res.post.title, nxc_test.post.title, 'The resulting post should have the same title as the request');
354
+
355
+ equals(jQuery('#post-' + res.post.id).length, 1, 'The post should be added in only one place in the calendar.');
356
+
357
+ nxc_test.post = res.post;
358
+
359
+ start();
360
+
361
+ nxc_test.testMovePostDraftSchedule();
362
+
363
+ });
364
+ });
365
+ },
366
+
367
+ testMovePostDraftSchedule: function() {
368
+
369
+ asyncTest('Move a post from the drafts drawer back to the calendar', function() {
370
+ expect(2);
371
+
372
+ // We added the post one week in the future, now we will move it
373
+ // two days after that.
374
+ var newDate = Date.today().add(23).days().toString(edcal.internalDateFormat);
375
+
376
+ edcal.doDrop(edcal.NO_DATE, 'post-' + nxc_test.post.id, newDate, function(res) {
377
+
378
+ if (!res.post) {
379
+ ok(false, 'There was an error creating the new post.');
380
+ return;
381
+ }
382
+
383
+ equals(res.post.date, newDate, 'The resulting post should have the same date as the request and it was ' + res.post.date);
384
+
385
+ equals(jQuery('#post-' + res.post.id).length, 1, 'The post should be added in only one place in the calendar.');
386
+
387
+ nxc_test.post = res.post;
388
+
389
+ start();
390
+
391
+ nxc_test.testEditPost();
392
+ });
393
+ });
394
+
395
+ },
396
+
397
+ testEditPost: function() {
398
+
399
+ asyncTest('Edit the content of an existing post and mark it as scheduled', function() {
400
+ expect(2);
401
+
402
+ nxc_test.post.title = 'Unit Test Post &#8211 Changed';
403
+ nxc_test.post.content = nxc_test.testContent2;
404
+
405
+ edcal.savePost(nxc_test.post, false, true, function(res)
406
+ {
407
+ if (!res.post) {
408
+ ok(false, 'There was an error editing the post.');
409
+ start();
410
+ return;
411
+ }
412
+
413
+ equals(res.post.title, nxc_test.post.title, 'The resulting post should have the same title as the request');
414
+
415
+ equals(jQuery('#post-' + res.post.id).length, 1, 'The post should be added in only one place in the calendar.');
416
+
417
+ nxc_test.post = res.post;
418
+
419
+ start();
420
+
421
+ nxc_test.testGetAfterEdit();
422
+
423
+ });
424
+ });
425
+
426
+ },
427
+
428
+ testGetAfterEdit: function() {
429
+ /*
430
+ * Now we'll test to make sure our new post data still matches what we think it should
431
+ */
432
+
433
+ asyncTest('Get post information after editing', function() {
434
+ expect(3);
435
+
436
+ edcal.getPost(nxc_test.post.id, function(post) {
437
+ equals(post.date, nxc_test.post.date, 'The resulting post should have the same date as the request');
438
+ equals(post.title, nxc_test.post.title, 'The resulting post should have the same title as the request');
439
+ equals(post.content, nxc_test.testContent2, 'The resulting post content should be the same as the test post content');
440
+
441
+ nxc_test.post = post;
442
+
443
+ start();
444
+
445
+ nxc_test.testDateConflict();
446
+ });
447
+ });
448
+
449
+ },
450
+
451
+ testDateConflict: function() {
452
+ asyncTest('Try to change a post date and fail because of a concurrency conflict', function() {
453
+ expect(2);
454
+
455
+ nxc_test.post.date = Date.today().add(-1).days().toString(edcal.internalDateFormat);
456
+
457
+ /*
458
+ * We added the post one week in the future, now we will move it
459
+ * one day after that.
460
+ */
461
+ var newDate = Date.today().add(8).days().toString(edcal.internalDateFormat);
462
+
463
+ edcal.changeDate(newDate, nxc_test.post, function(res)
464
+ {
465
+ if (!res.post) {
466
+ ok(false, 'There was an error with the change date conflict.');
467
+ return;
468
+ }
469
+
470
+ equals(res.error, edcal.CONCURRENCY_ERROR, 'This move should show an exception because it is in conflict.');
471
+
472
+ equals(jQuery('#post-' + res.post.id).length, 1, 'The post should be added in only one place in the calendar.');
473
+
474
+ nxc_test.post = res.post;
475
+
476
+ start();
477
+
478
+ nxc_test.testDeletePost();
479
+
480
+ });
481
+ });
482
+
483
+ },
484
+
485
+ testDeletePost: function() {
486
+
487
+ /*
488
+ * The last step is to delete the post we made so
489
+ * the test cleans up after itself.
490
+ */
491
+ asyncTest('Delete the post created for testing', function() {
492
+ expect(1);
493
+
494
+ edcal.deletePost(nxc_test.post.id, function(res)
495
+ {
496
+ if (!res.post) {
497
+ ok(false, 'There was an error creating the new post.');
498
+ start();
499
+ return;
500
+ }
501
+
502
+ equals(jQuery('#post-' + res.post.id).length, 0, 'The post should now be deleted from the calendar.');
503
+ start();
504
+
505
+ nxc_test.testCreateDraftDrawerPost();
506
+
507
+ });
508
+ });
509
+ },
510
+
511
+ testCreateDraftDrawerPost: function() {
512
+ /*
513
+ * Now we'll create a new post in the drafts drawer
514
+ */
515
+
516
+ asyncTest('Create a new drafts drawer post', function() {
517
+ expect(2);
518
+
519
+ nxc_test.post.title = 'Unit Test Drafts Drawer Post';
520
+ nxc_test.post.content = nxc_test.testContent;
521
+ nxc_test.post.status = 'draft';
522
+ nxc_test.post.time = edcal.NO_DATE;
523
+ nxc_test.post.date = edcal.NO_DATE;
524
+ nxc_test.post.id = '0';
525
+
526
+ edcal.savePost(nxc_test.post, false, false, function(res) {
527
+ if (!res.post) {
528
+ ok(false, 'There was an error creating the new post.');
529
+ start();
530
+ return;
531
+ }
532
+
533
+ equals(res.post.title, nxc_test.post.title, 'The resulting post should have the same title as the request');
534
+
535
+ equals(jQuery('#post-' + res.post.id).length, 1, 'The post should be added in only one place in the calendar.');
536
+
537
+ nxc_test.post = res.post;
538
+
539
+ start();
540
+
541
+ nxc_test.testDeleteDraftDrawerPost();
542
+ });
543
+ });
544
+
545
+ },
546
+
547
+ testDeleteDraftDrawerPost: function() {
548
+
549
+ /*
550
+ * The last step is to delete the post we made so
551
+ * the test cleans up after itself.
552
+ */
553
+ asyncTest('Delete the post created for drafts drawer testing', function() {
554
+ expect(1);
555
+
556
+ edcal.deletePost(nxc_test.post.id, function(res)
557
+ {
558
+ if (!res.post) {
559
+ ok(false, 'There was an error creating the new post.');
560
+ start();
561
+ return;
562
+ }
563
+
564
+ equals(jQuery('#post-' + res.post.id).length, 0, 'The post should now be deleted from the calendar.');
565
+ start();
566
+
567
+ nxc_test.finishTests();
568
+
569
+ });
570
+ });
571
+ },
572
+
573
+ finishTests: function() {
574
+ if (!nxc_test.isDraftsDrawerVisible) {
575
+ /*
576
+ * We need to make sure the drafts drawer is open because
577
+ * we can use it in the tests so we open it when the tests
578
+ * start if it isn't open already. We want to close it at
579
+ * the end if we opened it.
580
+ */
581
+ edcal.setDraftsDrawerVisible(false);
582
+ }
583
+ }
584
+ };
js/owl.carousel.js ADDED
@@ -0,0 +1,3069 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * Owl carousel
3
+ * @version 2.0.0
4
+ * @author Bartosz Wojciechowski
5
+ * @license The MIT License (MIT)
6
+ * @todo Lazy Load Icon
7
+ * @todo prevent animationend bubling
8
+ * @todo itemsScaleUp
9
+ * @todo Test Zepto
10
+ * @todo stagePadding calculate wrong active classes
11
+ */
12
+ ;(function($, window, document, undefined) {
13
+
14
+ var drag, state, e;
15
+
16
+ /**
17
+ * Template for status information about drag and touch events.
18
+ * @private
19
+ */
20
+ drag = {
21
+ start: 0,
22
+ startX: 0,
23
+ startY: 0,
24
+ current: 0,
25
+ currentX: 0,
26
+ currentY: 0,
27
+ offsetX: 0,
28
+ offsetY: 0,
29
+ distance: null,
30
+ startTime: 0,
31
+ endTime: 0,
32
+ updatedX: 0,
33
+ targetEl: null
34
+ };
35
+
36
+ /**
37
+ * Template for some status informations.
38
+ * @private
39
+ */
40
+ state = {
41
+ isTouch: false,
42
+ isScrolling: false,
43
+ isSwiping: false,
44
+ direction: false,
45
+ inMotion: false
46
+ };
47
+
48
+ /**
49
+ * Event functions references.
50
+ * @private
51
+ */
52
+ e = {
53
+ _onDragStart: null,
54
+ _onDragMove: null,
55
+ _onDragEnd: null,
56
+ _transitionEnd: null,
57
+ _resizer: null,
58
+ _responsiveCall: null,
59
+ _goToLoop: null,
60
+ _checkVisibile: null
61
+ };
62
+
63
+ /**
64
+ * Creates a carousel.
65
+ * @class The Owl Carousel.
66
+ * @public
67
+ * @param {HTMLElement|jQuery} element - The element to create the carousel for.
68
+ * @param {Object} [options] - The options
69
+ */
70
+ function Owl(element, options) {
71
+
72
+ /**
73
+ * Current settings for the carousel.
74
+ * @public
75
+ */
76
+ this.settings = null;
77
+
78
+ /**
79
+ * Current options set by the caller including defaults.
80
+ * @public
81
+ */
82
+ this.options = $.extend({}, Owl.Defaults, options);
83
+
84
+ /**
85
+ * Plugin element.
86
+ * @public
87
+ */
88
+ this.$element = $(element);
89
+
90
+ /**
91
+ * Caches informations about drag and touch events.
92
+ */
93
+ this.drag = $.extend({}, drag);
94
+
95
+ /**
96
+ * Caches some status informations.
97
+ * @protected
98
+ */
99
+ this.state = $.extend({}, state);
100
+
101
+ /**
102
+ * @protected
103
+ * @todo Must be documented
104
+ */
105
+ this.e = $.extend({}, e);
106
+
107
+ /**
108
+ * References to the running plugins of this carousel.
109
+ * @protected
110
+ */
111
+ this._plugins = {};
112
+
113
+ /**
114
+ * Currently suppressed events to prevent them from beeing retriggered.
115
+ * @protected
116
+ */
117
+ this._supress = {};
118
+
119
+ /**
120
+ * Absolute current position.
121
+ * @protected
122
+ */
123
+ this._current = null;
124
+
125
+ /**
126
+ * Animation speed in milliseconds.
127
+ * @protected
128
+ */
129
+ this._speed = null;
130
+
131
+ /**
132
+ * Coordinates of all items in pixel.
133
+ * @todo The name of this member is missleading.
134
+ * @protected
135
+ */
136
+ this._coordinates = [];
137
+
138
+ /**
139
+ * Current breakpoint.
140
+ * @todo Real media queries would be nice.
141
+ * @protected
142
+ */
143
+ this._breakpoint = null;
144
+
145
+ /**
146
+ * Current width of the plugin element.
147
+ */
148
+ this._width = null;
149
+
150
+ /**
151
+ * All real items.
152
+ * @protected
153
+ */
154
+ this._items = [];
155
+
156
+ /**
157
+ * All cloned items.
158
+ * @protected
159
+ */
160
+ this._clones = [];
161
+
162
+ /**
163
+ * Merge values of all items.
164
+ * @todo Maybe this could be part of a plugin.
165
+ * @protected
166
+ */
167
+ this._mergers = [];
168
+
169
+ /**
170
+ * Invalidated parts within the update process.
171
+ * @protected
172
+ */
173
+ this._invalidated = {};
174
+
175
+ /**
176
+ * Ordered list of workers for the update process.
177
+ * @protected
178
+ */
179
+ this._pipe = [];
180
+
181
+ $.each(Owl.Plugins, $.proxy(function(key, plugin) {
182
+ this._plugins[key[0].toLowerCase() + key.slice(1)]
183
+ = new plugin(this);
184
+ }, this));
185
+
186
+ $.each(Owl.Pipe, $.proxy(function(priority, worker) {
187
+ this._pipe.push({
188
+ 'filter': worker.filter,
189
+ 'run': $.proxy(worker.run, this)
190
+ });
191
+ }, this));
192
+
193
+ this.setup();
194
+ this.initialize();
195
+ }
196
+
197
+ /**
198
+ * Default options for the carousel.
199
+ * @public
200
+ */
201
+ Owl.Defaults = {
202
+ items: 3,
203
+ loop: false,
204
+ center: false,
205
+
206
+ mouseDrag: true,
207
+ touchDrag: true,
208
+ pullDrag: true,
209
+ freeDrag: false,
210
+
211
+ margin: 0,
212
+ stagePadding: 0,
213
+
214
+ merge: false,
215
+ mergeFit: true,
216
+ autoWidth: false,
217
+
218
+ startPosition: 0,
219
+ rtl: false,
220
+
221
+ smartSpeed: 250,
222
+ fluidSpeed: false,
223
+ dragEndSpeed: false,
224
+
225
+ responsive: {},
226
+ responsiveRefreshRate: 200,
227
+ responsiveBaseElement: window,
228
+ responsiveClass: false,
229
+
230
+ fallbackEasing: 'swing',
231
+
232
+ info: false,
233
+
234
+ nestedItemSelector: false,
235
+ itemElement: 'div',
236
+ stageElement: 'div',
237
+
238
+ // Classes and Names
239
+ themeClass: 'owl-theme',
240
+ baseClass: 'owl-carousel',
241
+ itemClass: 'owl-item',
242
+ centerClass: 'center',
243
+ activeClass: 'active'
244
+ };
245
+
246
+ /**
247
+ * Enumeration for width.
248
+ * @public
249
+ * @readonly
250
+ * @enum {String}
251
+ */
252
+ Owl.Width = {
253
+ Default: 'default',
254
+ Inner: 'inner',
255
+ Outer: 'outer'
256
+ };
257
+
258
+ /**
259
+ * Contains all registered plugins.
260
+ * @public
261
+ */
262
+ Owl.Plugins = {};
263
+
264
+ /**
265
+ * Update pipe.
266
+ */
267
+ Owl.Pipe = [ {
268
+ filter: [ 'width', 'items', 'settings' ],
269
+ run: function(cache) {
270
+ cache.current = this._items && this._items[this.relative(this._current)];
271
+ }
272
+ }, {
273
+ filter: [ 'items', 'settings' ],
274
+ run: function() {
275
+ var cached = this._clones,
276
+ clones = this.$stage.children('.cloned');
277
+
278
+ if (clones.length !== cached.length || (!this.settings.loop && cached.length > 0)) {
279
+ this.$stage.children('.cloned').remove();
280
+ this._clones = [];
281
+ }
282
+ }
283
+ }, {
284
+ filter: [ 'items', 'settings' ],
285
+ run: function() {
286
+ var i, n,
287
+ clones = this._clones,
288
+ items = this._items,
289
+ delta = this.settings.loop ? clones.length - Math.max(this.settings.items * 2, 4) : 0;
290
+
291
+ for (i = 0, n = Math.abs(delta / 2); i < n; i++) {
292
+ if (delta > 0) {
293
+ this.$stage.children().eq(items.length + clones.length - 1).remove();
294
+ clones.pop();
295
+ this.$stage.children().eq(0).remove();
296
+ clones.pop();
297
+ } else {
298
+ clones.push(clones.length / 2);
299
+ this.$stage.append(items[clones[clones.length - 1]].clone().addClass('cloned'));
300
+ clones.push(items.length - 1 - (clones.length - 1) / 2);
301
+ this.$stage.prepend(items[clones[clones.length - 1]].clone().addClass('cloned'));
302
+ }
303
+ }
304
+ }
305
+ }, {
306
+ filter: [ 'width', 'items', 'settings' ],
307
+ run: function() {
308
+ var rtl = (this.settings.rtl ? 1 : -1),
309
+ width = (this.width() / this.settings.items).toFixed(3),
310
+ coordinate = 0, merge, i, n;
311
+
312
+ this._coordinates = [];
313
+ for (i = 0, n = this._clones.length + this._items.length; i < n; i++) {
314
+ merge = this._mergers[this.relative(i)];
315
+ merge = (this.settings.mergeFit && Math.min(merge, this.settings.items)) || merge;
316
+ coordinate += (this.settings.autoWidth ? this._items[this.relative(i)].width() + this.settings.margin : width * merge) * rtl;
317
+
318
+ this._coordinates.push(coordinate);
319
+ }
320
+ }
321
+ }, {
322
+ filter: [ 'width', 'items', 'settings' ],
323
+ run: function() {
324
+ var i, n, width = (this.width() / this.settings.items).toFixed(3), css = {
325
+ 'width': Math.abs(this._coordinates[this._coordinates.length - 1]) + this.settings.stagePadding * 2,
326
+ 'padding-left': this.settings.stagePadding || '',
327
+ 'padding-right': this.settings.stagePadding || ''
328
+ };
329
+
330
+ this.$stage.css(css);
331
+
332
+ css = { 'width': this.settings.autoWidth ? 'auto' : width - this.settings.margin };
333
+ css[this.settings.rtl ? 'margin-left' : 'margin-right'] = this.settings.margin;
334
+
335
+ if (!this.settings.autoWidth && $.grep(this._mergers, function(v) { return v > 1 }).length > 0) {
336
+ for (i = 0, n = this._coordinates.length; i < n; i++) {
337
+ css.width = Math.abs(this._coordinates[i]) - Math.abs(this._coordinates[i - 1] || 0) - this.settings.margin;
338
+ this.$stage.children().eq(i).css(css);
339
+ }
340
+ } else {
341
+ this.$stage.children().css(css);
342
+ }
343
+ }
344
+ }, {
345
+ filter: [ 'width', 'items', 'settings' ],
346
+ run: function(cache) {
347
+ cache.current && this.reset(this.$stage.children().index(cache.current));
348
+ }
349
+ }, {
350
+ filter: [ 'position' ],
351
+ run: function() {
352
+ this.animate(this.coordinates(this._current));
353
+ }
354
+ }, {
355
+ filter: [ 'width', 'position', 'items', 'settings' ],
356
+ run: function() {
357
+ var rtl = this.settings.rtl ? 1 : -1,
358
+ padding = this.settings.stagePadding * 2,
359
+ begin = this.coordinates(this.current()) + padding,
360
+ end = begin + this.width() * rtl,
361
+ inner, outer, matches = [], i, n;
362
+
363
+ for (i = 0, n = this._coordinates.length; i < n; i++) {
364
+ inner = this._coordinates[i - 1] || 0;
365
+ outer = Math.abs(this._coordinates[i]) + padding * rtl;
366
+
367
+ if ((this.op(inner, '<=', begin) && (this.op(inner, '>', end)))
368
+ || (this.op(outer, '<', begin) && this.op(outer, '>', end))) {
369
+ matches.push(i);
370
+ }
371
+ }
372
+
373
+ this.$stage.children('.' + this.settings.activeClass).removeClass(this.settings.activeClass);
374
+ this.$stage.children(':eq(' + matches.join('), :eq(') + ')').addClass(this.settings.activeClass);
375
+
376
+ if (this.settings.center) {
377
+ this.$stage.children('.' + this.settings.centerClass).removeClass(this.settings.centerClass);
378
+ this.$stage.children().eq(this.current()).addClass(this.settings.centerClass);
379
+ }
380
+ }
381
+ } ];
382
+
383
+ /**
384
+ * Initializes the carousel.
385
+ * @protected
386
+ */
387
+ Owl.prototype.initialize = function() {
388
+ this.trigger('initialize');
389
+
390
+ this.$element
391
+ .addClass(this.settings.baseClass)
392
+ .addClass(this.settings.themeClass)
393
+ .toggleClass('owl-rtl', this.settings.rtl);
394
+
395
+ // check support
396
+ this.browserSupport();
397
+
398
+ if (this.settings.autoWidth && this.state.imagesLoaded !== true) {
399
+ var imgs, nestedSelector, width;
400
+ imgs = this.$element.find('img');
401
+ nestedSelector = this.settings.nestedItemSelector ? '.' + this.settings.nestedItemSelector : undefined;
402
+ width = this.$element.children(nestedSelector).width();
403
+
404
+ if (imgs.length && width <= 0) {
405
+ this.preloadAutoWidthImages(imgs);
406
+ return false;
407
+ }
408
+ }
409
+
410
+ this.$element.addClass('owl-loading');
411
+
412
+ // create stage
413
+ this.$stage = $('<' + this.settings.stageElement + ' class="owl-stage"/>')
414
+ .wrap('<div class="owl-stage-outer">');
415
+
416
+ // append stage
417
+ this.$element.append(this.$stage.parent());
418
+
419
+ // append content
420
+ this.replace(this.$element.children().not(this.$stage.parent()));
421
+
422
+ // set view width
423
+ this._width = this.$element.width();
424
+
425
+ // update view
426
+ this.refresh();
427
+
428
+ this.$element.removeClass('owl-loading').addClass('owl-loaded');
429
+
430
+ // attach generic events
431
+ this.eventsCall();
432
+
433
+ // attach generic events
434
+ this.internalEvents();
435
+
436
+ // attach custom control events
437
+ this.addTriggerableEvents();
438
+
439
+ this.trigger('initialized');
440
+ };
441
+
442
+ /**
443
+ * Setups the current settings.
444
+ * @todo Remove responsive classes. Why should adaptive designs be brought into IE8?
445
+ * @todo Support for media queries by using `matchMedia` would be nice.
446
+ * @public
447
+ */
448
+ Owl.prototype.setup = function() {
449
+ var viewport = this.viewport(),
450
+ overwrites = this.options.responsive,
451
+ match = -1,
452
+ settings = null;
453
+
454
+ if (!overwrites) {
455
+ settings = $.extend({}, this.options);
456
+ } else {
457
+ $.each(overwrites, function(breakpoint) {
458
+ if (breakpoint <= viewport && breakpoint > match) {
459
+ match = Number(breakpoint);
460
+ }
461
+ });
462
+
463
+ settings = $.extend({}, this.options, overwrites[match]);
464
+ delete settings.responsive;
465
+
466
+ // responsive class
467
+ if (settings.responsiveClass) {
468
+ this.$element.attr('class', function(i, c) {
469
+ return c.replace(/\b owl-responsive-\S+/g, '');
470
+ }).addClass('owl-responsive-' + match);
471
+ }
472
+ }
473
+
474
+ if (this.settings === null || this._breakpoint !== match) {
475
+ this.trigger('change', { property: { name: 'settings', value: settings } });
476
+ this._breakpoint = match;
477
+ this.settings = settings;
478
+ this.invalidate('settings');
479
+ this.trigger('changed', { property: { name: 'settings', value: this.settings } });
480
+ }
481
+ };
482
+
483
+ /**
484
+ * Updates option logic if necessery.
485
+ * @protected
486
+ */
487
+ Owl.prototype.optionsLogic = function() {
488
+ // Toggle Center class
489
+ this.$element.toggleClass('owl-center', this.settings.center);
490
+
491
+ // if items number is less than in body
492
+ if (this.settings.loop && this._items.length < this.settings.items) {
493
+ this.settings.loop = false;
494
+ }
495
+
496
+ if (this.settings.autoWidth) {
497
+ this.settings.stagePadding = false;
498
+ this.settings.merge = false;
499
+ }
500
+ };
501
+
502
+ /**
503
+ * Prepares an item before add.
504
+ * @todo Rename event parameter `content` to `item`.
505
+ * @protected
506
+ * @returns {jQuery|HTMLElement} - The item container.
507
+ */
508
+ Owl.prototype.prepare = function(item) {
509
+ var event = this.trigger('prepare', { content: item });
510
+
511
+ if (!event.data) {
512
+ event.data = $('<' + this.settings.itemElement + '/>')
513
+ .addClass(this.settings.itemClass).append(item)
514
+ }
515
+
516
+ this.trigger('prepared', { content: event.data });
517
+
518
+ return event.data;
519
+ };
520
+
521
+ /**
522
+ * Updates the view.
523
+ * @public
524
+ */
525
+ Owl.prototype.update = function() {
526
+ var i = 0,
527
+ n = this._pipe.length,
528
+ filter = $.proxy(function(p) { return this[p] }, this._invalidated),
529
+ cache = {};
530
+
531
+ while (i < n) {
532
+ if (this._invalidated.all || $.grep(this._pipe[i].filter, filter).length > 0) {
533
+ this._pipe[i].run(cache);
534
+ }
535
+ i++;
536
+ }
537
+
538
+ this._invalidated = {};
539
+ };
540
+
541
+ /**
542
+ * Gets the width of the view.
543
+ * @public
544
+ * @param {Owl.Width} [dimension=Owl.Width.Default] - The dimension to return.
545
+ * @returns {Number} - The width of the view in pixel.
546
+ */
547
+ Owl.prototype.width = function(dimension) {
548
+ dimension = dimension || Owl.Width.Default;
549
+ switch (dimension) {
550
+ case Owl.Width.Inner:
551
+ case Owl.Width.Outer:
552
+ return this._width;
553
+ default:
554
+ return this._width - this.settings.stagePadding * 2 + this.settings.margin;
555
+ }
556
+ };
557
+
558
+ /**
559
+ * Refreshes the carousel primarily for adaptive purposes.
560
+ * @public
561
+ */
562
+ Owl.prototype.refresh = function() {
563
+ if (this._items.length === 0) {
564
+ return false;
565
+ }
566
+
567
+ var start = new Date().getTime();
568
+
569
+ this.trigger('refresh');
570
+
571
+ this.setup();
572
+
573
+ this.optionsLogic();
574
+
575
+ // hide and show methods helps here to set a proper widths,
576
+ // this prevents scrollbar to be calculated in stage width
577
+ this.$stage.addClass('owl-refresh');
578
+
579
+ this.update();
580
+
581
+ this.$stage.removeClass('owl-refresh');
582
+
583
+ this.state.orientation = window.orientation;
584
+
585
+ this.watchVisibility();
586
+
587
+ this.trigger('refreshed');
588
+ };
589
+
590
+ /**
591
+ * Save internal event references and add event based functions.
592
+ * @protected
593
+ */
594
+ Owl.prototype.eventsCall = function() {
595
+ // Save events references
596
+ this.e._onDragStart = $.proxy(function(e) {
597
+ this.onDragStart(e);
598
+ }, this);
599
+ this.e._onDragMove = $.proxy(function(e) {
600
+ this.onDragMove(e);
601
+ }, this);
602
+ this.e._onDragEnd = $.proxy(function(e) {
603
+ this.onDragEnd(e);
604
+ }, this);
605
+ this.e._onResize = $.proxy(function(e) {
606
+ this.onResize(e);
607
+ }, this);
608
+ this.e._transitionEnd = $.proxy(function(e) {
609
+ this.transitionEnd(e);
610
+ }, this);
611
+ this.e._preventClick = $.proxy(function(e) {
612
+ this.preventClick(e);
613
+ }, this);
614
+ };
615
+
616
+ /**
617
+ * Checks window `resize` event.
618
+ * @protected
619
+ */
620
+ Owl.prototype.onThrottledResize = function() {
621
+ window.clearTimeout(this.resizeTimer);
622
+ this.resizeTimer = window.setTimeout(this.e._onResize, this.settings.responsiveRefreshRate);
623
+ };
624
+
625
+ /**
626
+ * Checks window `resize` event.
627
+ * @protected
628
+ */
629
+ Owl.prototype.onResize = function() {
630
+ if (!this._items.length) {
631
+ return false;
632
+ }
633
+
634
+ if (this._width === this.$element.width()) {
635
+ return false;
636
+ }
637
+
638
+ if (this.trigger('resize').isDefaultPrevented()) {
639
+ return false;
640
+ }
641
+
642
+ this._width = this.$element.width();
643
+
644
+ this.invalidate('width');
645
+
646
+ this.refresh();
647
+
648
+ this.trigger('resized');
649
+ };
650
+
651
+ /**
652
+ * Checks for touch/mouse drag event type and add run event handlers.
653
+ * @protected
654
+ */
655
+ Owl.prototype.eventsRouter = function(event) {
656
+ var type = event.type;
657
+
658
+ if (type === "mousedown" || type === "touchstart") {
659
+ this.onDragStart(event);
660
+ } else if (type === "mousemove" || type === "touchmove") {
661
+ this.onDragMove(event);
662
+ } else if (type === "mouseup" || type === "touchend") {
663
+ this.onDragEnd(event);
664
+ } else if (type === "touchcancel") {
665
+ this.onDragEnd(event);
666
+ }
667
+ };
668
+
669
+ /**
670
+ * Checks for touch/mouse drag options and add necessery event handlers.
671
+ * @protected
672
+ */
673
+ Owl.prototype.internalEvents = function() {
674
+ var isTouch = isTouchSupport(),
675
+ isTouchIE = isTouchSupportIE();
676
+
677
+ if (this.settings.mouseDrag){
678
+ this.$stage.on('mousedown', $.proxy(function(event) { this.eventsRouter(event) }, this));
679
+ this.$stage.on('dragstart', function() { return false });
680
+ this.$stage.get(0).onselectstart = function() { return false };
681
+ } else {
682
+ this.$element.addClass('owl-text-select-on');
683
+ }
684
+
685
+ if (this.settings.touchDrag && !isTouchIE){
686
+ this.$stage.on('touchstart touchcancel', $.proxy(function(event) { this.eventsRouter(event) }, this));
687
+ }
688
+
689
+ // catch transitionEnd event
690
+ if (this.transitionEndVendor) {
691
+ this.on(this.$stage.get(0), this.transitionEndVendor, this.e._transitionEnd, false);
692
+ }
693
+
694
+ // responsive
695
+ if (this.settings.responsive !== false) {
696
+ this.on(window, 'resize', $.proxy(this.onThrottledResize, this));
697
+ }
698
+ };
699
+
700
+ /**
701
+ * Handles touchstart/mousedown event.
702
+ * @protected
703
+ * @param {Event} event - The event arguments.
704
+ */
705
+ Owl.prototype.onDragStart = function(event) {
706
+ var ev, isTouchEvent, pageX, pageY, animatedPos;
707
+
708
+ ev = event.originalEvent || event || window.event;
709
+
710
+ // prevent right click
711
+ if (ev.which === 3 || this.state.isTouch) {
712
+ return false;
713
+ }
714
+
715
+ if (ev.type === 'mousedown') {
716
+ this.$stage.addClass('owl-grab');
717
+ }
718
+
719
+ this.trigger('drag');
720
+ this.drag.startTime = new Date().getTime();
721
+ this.speed(0);
722
+ this.state.isTouch = true;
723
+ this.state.isScrolling = false;
724
+ this.state.isSwiping = false;
725
+ this.drag.distance = 0;
726
+
727
+ pageX = getTouches(ev).x;
728
+ pageY = getTouches(ev).y;
729
+
730
+ // get stage position left
731
+ this.drag.offsetX = this.$stage.position().left;
732
+ this.drag.offsetY = this.$stage.position().top;
733
+
734
+ if (this.settings.rtl) {
735
+ this.drag.offsetX = this.$stage.position().left + this.$stage.width() - this.width()
736
+ + this.settings.margin;
737
+ }
738
+
739
+ // catch position // ie to fix
740
+ if (this.state.inMotion && this.support3d) {
741
+ animatedPos = this.getTransformProperty();
742
+ this.drag.offsetX = animatedPos;
743
+ this.animate(animatedPos);
744
+ this.state.inMotion = true;
745
+ } else if (this.state.inMotion && !this.support3d) {
746
+ this.state.inMotion = false;
747
+ return false;
748
+ }
749
+
750
+ this.drag.startX = pageX - this.drag.offsetX;
751
+ this.drag.startY = pageY - this.drag.offsetY;
752
+
753
+ this.drag.start = pageX - this.drag.startX;
754
+ this.drag.targetEl = ev.target || ev.srcElement;
755
+ this.drag.updatedX = this.drag.start;
756
+
757
+ // to do/check
758
+ // prevent links and images dragging;
759
+ if (this.drag.targetEl.tagName === "IMG" || this.drag.targetEl.tagName === "A") {
760
+ this.drag.targetEl.draggable = false;
761
+ }
762
+
763
+ $(document).on('mousemove.owl.dragEvents mouseup.owl.dragEvents touchmove.owl.dragEvents touchend.owl.dragEvents', $.proxy(function(event) {this.eventsRouter(event)},this));
764
+ };
765
+
766
+ /**
767
+ * Handles the touchmove/mousemove events.
768
+ * @todo Simplify
769
+ * @protected
770
+ * @param {Event} event - The event arguments.
771
+ */
772
+ Owl.prototype.onDragMove = function(event) {
773
+ var ev, isTouchEvent, pageX, pageY, minValue, maxValue, pull;
774
+
775
+ if (!this.state.isTouch) {
776
+ return;
777
+ }
778
+
779
+ if (this.state.isScrolling) {
780
+ return;
781
+ }
782
+
783
+ ev = event.originalEvent || event || window.event;
784
+
785
+ pageX = getTouches(ev).x;
786
+ pageY = getTouches(ev).y;
787
+
788
+ // Drag Direction
789
+ this.drag.currentX = pageX - this.drag.startX;
790
+ this.drag.currentY = pageY - this.drag.startY;
791
+ this.drag.distance = this.drag.currentX - this.drag.offsetX;
792
+
793
+ // Check move direction
794
+ if (this.drag.distance < 0) {
795
+ this.state.direction = this.settings.rtl ? 'right' : 'left';
796
+ } else if (this.drag.distance > 0) {
797
+ this.state.direction = this.settings.rtl ? 'left' : 'right';
798
+ }
799
+ // Loop
800
+ if (this.settings.loop) {
801
+ if (this.op(this.drag.currentX, '>', this.coordinates(this.minimum())) && this.state.direction === 'right') {
802
+ this.drag.currentX -= (this.settings.center && this.coordinates(0)) - this.coordinates(this._items.length);
803
+ } else if (this.op(this.drag.currentX, '<', this.coordinates(this.maximum())) && this.state.direction === 'left') {
804
+ this.drag.currentX += (this.settings.center && this.coordinates(0)) - this.coordinates(this._items.length);
805
+ }
806
+ } else {
807
+ // pull
808
+ minValue = this.settings.rtl ? this.coordinates(this.maximum()) : this.coordinates(this.minimum());
809
+ maxValue = this.settings.rtl ? this.coordinates(this.minimum()) : this.coordinates(this.maximum());
810
+ pull = this.settings.pullDrag ? this.drag.distance / 5 : 0;
811
+ this.drag.currentX = Math.max(Math.min(this.drag.currentX, minValue + pull), maxValue + pull);
812
+ }
813
+
814
+ // Lock browser if swiping horizontal
815
+
816
+ if ((this.drag.distance > 8 || this.drag.distance < -8)) {
817
+ if (ev.preventDefault !== undefined) {
818
+ ev.preventDefault();
819
+ } else {
820
+ ev.returnValue = false;
821
+ }
822
+ this.state.isSwiping = true;
823
+ }
824
+
825
+ this.drag.updatedX = this.drag.currentX;
826
+
827
+ // Lock Owl if scrolling
828
+ if ((this.drag.currentY > 16 || this.drag.currentY < -16) && this.state.isSwiping === false) {
829
+ this.state.isScrolling = true;
830
+ this.drag.updatedX = this.drag.start;
831
+ }
832
+
833
+ this.animate(this.drag.updatedX);
834
+ };
835
+
836
+ /**
837
+ * Handles the touchend/mouseup events.
838
+ * @protected
839
+ */
840
+ Owl.prototype.onDragEnd = function(event) {
841
+ var compareTimes, distanceAbs, closest;
842
+
843
+ if (!this.state.isTouch) {
844
+ return;
845
+ }
846
+
847
+ if (event.type === 'mouseup') {
848
+ this.$stage.removeClass('owl-grab');
849
+ }
850
+
851
+ this.trigger('dragged');
852
+
853
+ // prevent links and images dragging;
854
+ this.drag.targetEl.removeAttribute("draggable");
855
+
856
+ // remove drag event listeners
857
+
858
+ this.state.isTouch = false;
859
+ this.state.isScrolling = false;
860
+ this.state.isSwiping = false;
861
+
862
+ // to check
863
+ if (this.drag.distance === 0 && this.state.inMotion !== true) {
864
+ this.state.inMotion = false;
865
+ return false;
866
+ }
867
+
868
+ // prevent clicks while scrolling
869
+
870
+ this.drag.endTime = new Date().getTime();
871
+ compareTimes = this.drag.endTime - this.drag.startTime;
872
+ distanceAbs = Math.abs(this.drag.distance);
873
+
874
+ // to test
875
+ if (distanceAbs > 3 || compareTimes > 300) {
876
+ this.removeClick(this.drag.targetEl);
877
+ }
878
+
879
+ closest = this.closest(this.drag.updatedX);
880
+
881
+ this.speed(this.settings.dragEndSpeed || this.settings.smartSpeed);
882
+ this.current(closest);
883
+ this.invalidate('position');
884
+ this.update();
885
+
886
+ // if pullDrag is off then fire transitionEnd event manually when stick
887
+ // to border
888
+ if (!this.settings.pullDrag && this.drag.updatedX === this.coordinates(closest)) {
889
+ this.transitionEnd();
890
+ }
891
+
892
+ this.drag.distance = 0;
893
+
894
+ $(document).off('.owl.dragEvents');
895
+ };
896
+
897
+ /**
898
+ * Attaches `preventClick` to disable link while swipping.
899
+ * @protected
900
+ * @param {HTMLElement} [target] - The target of the `click` event.
901
+ */
902
+ Owl.prototype.removeClick = function(target) {
903
+ this.drag.targetEl = target;
904
+ $(target).on('click.preventClick', this.e._preventClick);
905
+ // to make sure click is removed:
906
+ window.setTimeout(function() {
907
+ $(target).off('click.preventClick');
908
+ }, 300);
909
+ };
910
+
911
+ /**
912
+ * Suppresses click event.
913
+ * @protected
914
+ * @param {Event} ev - The event arguments.
915
+ */
916
+ Owl.prototype.preventClick = function(ev) {
917
+ if (ev.preventDefault) {
918
+ ev.preventDefault();
919
+ } else {
920
+ ev.returnValue = false;
921
+ }
922
+ if (ev.stopPropagation) {
923
+ ev.stopPropagation();
924
+ }
925
+ $(ev.target).off('click.preventClick');
926
+ };
927
+
928
+ /**
929
+ * Catches stage position while animate (only CSS3).
930
+ * @protected
931
+ * @returns
932
+ */
933
+ Owl.prototype.getTransformProperty = function() {
934
+ var transform, matrix3d;
935
+
936
+ transform = window.getComputedStyle(this.$stage.get(0), null).getPropertyValue(this.vendorName + 'transform');
937
+ // var transform = this.$stage.css(this.vendorName + 'transform')
938
+ transform = transform.replace(/matrix(3d)?\(|\)/g, '').split(',');
939
+ matrix3d = transform.length === 16;
940
+
941
+ return matrix3d !== true ? transform[4] : transform[12];
942
+ };
943
+
944
+ /**
945
+ * Gets absolute position of the closest item for a coordinate.
946
+ * @todo Setting `freeDrag` makes `closest` not reusable. See #165.
947
+ * @protected
948
+ * @param {Number} coordinate - The coordinate in pixel.
949
+ * @return {Number} - The absolute position of the closest item.
950
+ */
951
+ Owl.prototype.closest = function(coordinate) {
952
+ var position = -1, pull = 30, width = this.width(), coordinates = this.coordinates();
953
+
954
+ if (!this.settings.freeDrag) {
955
+ // check closest item
956
+ $.each(coordinates, $.proxy(function(index, value) {
957
+ if (coordinate > value - pull && coordinate < value + pull) {
958
+ position = index;
959
+ } else if (this.op(coordinate, '<', value)
960
+ && this.op(coordinate, '>', coordinates[index + 1] || value - width)) {
961
+ position = this.state.direction === 'left' ? index + 1 : index;
962
+ }
963
+ return position === -1;
964
+ }, this));
965
+ }
966
+
967
+ if (!this.settings.loop) {
968
+ // non loop boundries
969
+ if (this.op(coordinate, '>', coordinates[this.minimum()])) {
970
+ position = coordinate = this.minimum();
971
+ } else if (this.op(coordinate, '<', coordinates[this.maximum()])) {
972
+ position = coordinate = this.maximum();
973
+ }
974
+ }
975
+
976
+ return position;
977
+ };
978
+
979
+ /**
980
+ * Animates the stage.
981
+ * @public
982
+ * @param {Number} coordinate - The coordinate in pixels.
983
+ */
984
+ Owl.prototype.animate = function(coordinate) {
985
+ this.trigger('translate');
986
+ this.state.inMotion = this.speed() > 0;
987
+
988
+ if (this.support3d) {
989
+ this.$stage.css({
990
+ transform: 'translate3d(' + coordinate + 'px' + ',0px, 0px)',
991
+ transition: (this.speed() / 1000) + 's'
992
+ });
993
+ } else if (this.state.isTouch) {
994
+ this.$stage.css({
995
+ left: coordinate + 'px'
996
+ });
997
+ } else {
998
+ this.$stage.animate({
999
+ left: coordinate
1000
+ }, this.speed() / 1000, this.settings.fallbackEasing, $.proxy(function() {
1001
+ if (this.state.inMotion) {
1002
+ this.transitionEnd();
1003
+ }
1004
+ }, this));
1005
+ }
1006
+ };
1007
+
1008
+ /**
1009
+ * Sets the absolute position of the current item.
1010
+ * @public
1011
+ * @param {Number} [position] - The new absolute position or nothing to leave it unchanged.
1012
+ * @returns {Number} - The absolute position of the current item.
1013
+ */
1014
+ Owl.prototype.current = function(position) {
1015
+ if (position === undefined) {
1016
+ return this._current;
1017
+ }
1018
+
1019
+ if (this._items.length === 0) {
1020
+ return undefined;
1021
+ }
1022
+
1023
+ position = this.normalize(position);
1024
+
1025
+ if (this._current !== position) {
1026
+ var event = this.trigger('change', { property: { name: 'position', value: position } });
1027
+
1028
+ if (event.data !== undefined) {
1029
+ position = this.normalize(event.data);
1030
+ }
1031
+
1032
+ this._current = position;
1033
+
1034
+ this.invalidate('position');
1035
+
1036
+ this.trigger('changed', { property: { name: 'position', value: this._current } });
1037
+ }
1038
+
1039
+ return this._current;
1040
+ };
1041
+
1042
+ /**
1043
+ * Invalidates the given part of the update routine.
1044
+ * @param {String} part - The part to invalidate.
1045
+ */
1046
+ Owl.prototype.invalidate = function(part) {
1047
+ this._invalidated[part] = true;
1048
+ }
1049
+
1050
+ /**
1051
+ * Resets the absolute position of the current item.
1052
+ * @public
1053
+ * @param {Number} position - The absolute position of the new item.
1054
+ */
1055
+ Owl.prototype.reset = function(position) {
1056
+ position = this.normalize(position);
1057
+
1058
+ if (position === undefined) {
1059
+ return;
1060
+ }
1061
+
1062
+ this._speed = 0;
1063
+ this._current = position;
1064
+
1065
+ this.suppress([ 'translate', 'translated' ]);
1066
+
1067
+ this.animate(this.coordinates(position));
1068
+
1069
+ this.release([ 'translate', 'translated' ]);
1070
+ };
1071
+
1072
+ /**
1073
+ * Normalizes an absolute or a relative position for an item.
1074
+ * @public
1075
+ * @param {Number} position - The absolute or relative position to normalize.
1076
+ * @param {Boolean} [relative=false] - Whether the given position is relative or not.
1077
+ * @returns {Number} - The normalized position.
1078
+ */
1079
+ Owl.prototype.normalize = function(position, relative) {
1080
+ var n = (relative ? this._items.length : this._items.length + this._clones.length);
1081
+
1082
+ if (!$.isNumeric(position) || n < 1) {
1083
+ return undefined;
1084
+ }
1085
+
1086
+ if (this._clones.length) {
1087
+ position = ((position % n) + n) % n;
1088
+ } else {
1089
+ position = Math.max(this.minimum(relative), Math.min(this.maximum(relative), position));
1090
+ }
1091
+
1092
+ return position;
1093
+ };
1094
+
1095
+ /**
1096
+ * Converts an absolute position for an item into a relative position.
1097
+ * @public
1098
+ * @param {Number} position - The absolute position to convert.
1099
+ * @returns {Number} - The converted position.
1100
+ */
1101
+ Owl.prototype.relative = function(position) {
1102
+ position = this.normalize(position);
1103
+ position = position - this._clones.length / 2;
1104
+ return this.normalize(position, true);
1105
+ };
1106
+
1107
+ /**
1108
+ * Gets the maximum position for an item.
1109
+ * @public
1110
+ * @param {Boolean} [relative=false] - Whether to return an absolute position or a relative position.
1111
+ * @returns {Number}
1112
+ */
1113
+ Owl.prototype.maximum = function(relative) {
1114
+ var maximum, width, i = 0, coordinate,
1115
+ settings = this.settings;
1116
+
1117
+ if (relative) {
1118
+ return this._items.length - 1;
1119
+ }
1120
+
1121
+ if (!settings.loop && settings.center) {
1122
+ maximum = this._items.length - 1;
1123
+ } else if (!settings.loop && !settings.center) {
1124
+ maximum = this._items.length - settings.items;
1125
+ } else if (settings.loop || settings.center) {
1126
+ maximum = this._items.length + settings.items;
1127
+ } else if (settings.autoWidth || settings.merge) {
1128
+ revert = settings.rtl ? 1 : -1;
1129
+ width = this.$stage.width() - this.$element.width();
1130
+ while (coordinate = this.coordinates(i)) {
1131
+ if (coordinate * revert >= width) {
1132
+ break;
1133
+ }
1134
+ maximum = ++i;
1135
+ }
1136
+ } else {
1137
+ throw 'Can not detect maximum absolute position.'
1138
+ }
1139
+
1140
+ return maximum;
1141
+ };
1142
+
1143
+ /**
1144
+ * Gets the minimum position for an item.
1145
+ * @public
1146
+ * @param {Boolean} [relative=false] - Whether to return an absolute position or a relative position.
1147
+ * @returns {Number}
1148
+ */
1149
+ Owl.prototype.minimum = function(relative) {
1150
+ if (relative) {
1151
+ return 0;
1152
+ }
1153
+
1154
+ return this._clones.length / 2;
1155
+ };
1156
+
1157
+ /**
1158
+ * Gets an item at the specified relative position.
1159
+ * @public
1160
+ * @param {Number} [position] - The relative position of the item.
1161
+ * @return {jQuery|Array.<jQuery>} - The item at the given position or all items if no position was given.
1162
+ */
1163
+ Owl.prototype.items = function(position) {
1164
+ if (position === undefined) {
1165
+ return this._items.slice();
1166
+ }
1167
+
1168
+ position = this.normalize(position, true);
1169
+ return this._items[position];
1170
+ };
1171
+
1172
+ /**
1173
+ * Gets an item at the specified relative position.
1174
+ * @public
1175
+ * @param {Number} [position] - The relative position of the item.
1176
+ * @return {jQuery|Array.<jQuery>} - The item at the given position or all items if no position was given.
1177
+ */
1178
+ Owl.prototype.mergers = function(position) {
1179
+ if (position === undefined) {
1180
+ return this._mergers.slice();
1181
+ }
1182
+
1183
+ position = this.normalize(position, true);
1184
+ return this._mergers[position];
1185
+ };
1186
+
1187
+ /**
1188
+ * Gets the absolute positions of clones for an item.
1189
+ * @public
1190
+ * @param {Number} [position] - The relative position of the item.
1191
+ * @returns {Array.<Number>} - The absolute positions of clones for the item or all if no position was given.
1192
+ */
1193
+ Owl.prototype.clones = function(position) {
1194
+ var odd = this._clones.length / 2,
1195
+ even = odd + this._items.length,
1196
+ map = function(index) { return index % 2 === 0 ? even + index / 2 : odd - (index + 1) / 2 };
1197
+
1198
+ if (position === undefined) {
1199
+ return $.map(this._clones, function(v, i) { return map(i) });
1200
+ }
1201
+
1202
+ return $.map(this._clones, function(v, i) { return v === position ? map(i) : null });
1203
+ };
1204
+
1205
+ /**
1206
+ * Sets the current animation speed.
1207
+ * @public
1208
+ * @param {Number} [speed] - The animation speed in milliseconds or nothing to leave it unchanged.
1209
+ * @returns {Number} - The current animation speed in milliseconds.
1210
+ */
1211
+ Owl.prototype.speed = function(speed) {
1212
+ if (speed !== undefined) {
1213
+ this._speed = speed;
1214
+ }
1215
+
1216
+ return this._speed;
1217
+ };
1218
+
1219
+ /**
1220
+ * Gets the coordinate of an item.
1221
+ * @todo The name of this method is missleanding.
1222
+ * @public
1223
+ * @param {Number} position - The absolute position of the item within `minimum()` and `maximum()`.
1224
+ * @returns {Number|Array.<Number>} - The coordinate of the item in pixel or all coordinates.
1225
+ */
1226
+ Owl.prototype.coordinates = function(position) {
1227
+ var coordinate = null;
1228
+
1229
+ if (position === undefined) {
1230
+ return $.map(this._coordinates, $.proxy(function(coordinate, index) {
1231
+ return this.coordinates(index);
1232
+ }, this));
1233
+ }
1234
+
1235
+ if (this.settings.center) {
1236
+ coordinate = this._coordinates[position];
1237
+ coordinate += (this.width() - coordinate + (this._coordinates[position - 1] || 0)) / 2 * (this.settings.rtl ? -1 : 1);
1238
+ } else {
1239
+ coordinate = this._coordinates[position - 1] || 0;
1240
+ }
1241
+
1242
+ return coordinate;
1243
+ };
1244
+
1245
+ /**
1246
+ * Calculates the speed for a translation.
1247
+ * @protected
1248
+ * @param {Number} from - The absolute position of the start item.
1249
+ * @param {Number} to - The absolute position of the target item.
1250
+ * @param {Number} [factor=undefined] - The time factor in milliseconds.
1251
+ * @returns {Number} - The time in milliseconds for the translation.
1252
+ */
1253
+ Owl.prototype.duration = function(from, to, factor) {
1254
+ return Math.min(Math.max(Math.abs(to - from), 1), 6) * Math.abs((factor || this.settings.smartSpeed));
1255
+ };
1256
+
1257
+ /**
1258
+ * Slides to the specified item.
1259
+ * @public
1260
+ * @param {Number} position - The position of the item.
1261
+ * @param {Number} [speed] - The time in milliseconds for the transition.
1262
+ */
1263
+ Owl.prototype.to = function(position, speed) {
1264
+ if (this.settings.loop) {
1265
+ var distance = position - this.relative(this.current()),
1266
+ revert = this.current(),
1267
+ before = this.current(),
1268
+ after = this.current() + distance,
1269
+ direction = before - after < 0 ? true : false,
1270
+ items = this._clones.length + this._items.length;
1271
+
1272
+ if (after < this.settings.items && direction === false) {
1273
+ revert = before + this._items.length;
1274
+ this.reset(revert);
1275
+ } else if (after >= items - this.settings.items && direction === true) {
1276
+ revert = before - this._items.length;
1277
+ this.reset(revert);
1278
+ }
1279
+ window.clearTimeout(this.e._goToLoop);
1280
+ this.e._goToLoop = window.setTimeout($.proxy(function() {
1281
+ this.speed(this.duration(this.current(), revert + distance, speed));
1282
+ this.current(revert + distance);
1283
+ this.update();
1284
+ }, this), 30);
1285
+ } else {
1286
+ this.speed(this.duration(this.current(), position, speed));
1287
+ this.current(position);
1288
+ this.update();
1289
+ }
1290
+ };
1291
+
1292
+ /**
1293
+ * Slides to the next item.
1294
+ * @public
1295
+ * @param {Number} [speed] - The time in milliseconds for the transition.
1296
+ */
1297
+ Owl.prototype.next = function(speed) {
1298
+ speed = speed || false;
1299
+ this.to(this.relative(this.current()) + 1, speed);
1300
+ };
1301
+
1302
+ /**
1303
+ * Slides to the previous item.
1304
+ * @public
1305
+ * @param {Number} [speed] - The time in milliseconds for the transition.
1306
+ */
1307
+ Owl.prototype.prev = function(speed) {
1308
+ speed = speed || false;
1309
+ this.to(this.relative(this.current()) - 1, speed);
1310
+ };
1311
+
1312
+ /**
1313
+ * Handles the end of an animation.
1314
+ * @protected
1315
+ * @param {Event} event - The event arguments.
1316
+ */
1317
+ Owl.prototype.transitionEnd = function(event) {
1318
+
1319
+ // if css2 animation then event object is undefined
1320
+ if (event !== undefined) {
1321
+ event.stopPropagation();
1322
+
1323
+ // Catch only owl-stage transitionEnd event
1324
+ if ((event.target || event.srcElement || event.originalTarget) !== this.$stage.get(0)) {
1325
+ return false;
1326
+ }
1327
+ }
1328
+
1329
+ this.state.inMotion = false;
1330
+ this.trigger('translated');
1331
+ };
1332
+
1333
+ /**
1334
+ * Gets viewport width.
1335
+ * @protected
1336
+ * @return {Number} - The width in pixel.
1337
+ */
1338
+ Owl.prototype.viewport = function() {
1339
+ var width;
1340
+ if (this.options.responsiveBaseElement !== window) {
1341
+ width = $(this.options.responsiveBaseElement).width();
1342
+ } else if (window.innerWidth) {
1343
+ width = window.innerWidth;
1344
+ } else if (document.documentElement && document.documentElement.clientWidth) {
1345
+ width = document.documentElement.clientWidth;
1346
+ } else {
1347
+ throw 'Can not detect viewport width.';
1348
+ }
1349
+ return width;
1350
+ };
1351
+
1352
+ /**
1353
+ * Replaces the current content.
1354
+ * @public
1355
+ * @param {HTMLElement|jQuery|String} content - The new content.
1356
+ */
1357
+ Owl.prototype.replace = function(content) {
1358
+ this.$stage.empty();
1359
+ this._items = [];
1360
+
1361
+ if (content) {
1362
+ content = (content instanceof jQuery) ? content : $(content);
1363
+ }
1364
+
1365
+ if (this.settings.nestedItemSelector) {
1366
+ content = content.find('.' + this.settings.nestedItemSelector);
1367
+ }
1368
+
1369
+ content.filter(function() {
1370
+ return this.nodeType === 1;
1371
+ }).each($.proxy(function(index, item) {
1372
+ item = this.prepare(item);
1373
+ this.$stage.append(item);
1374
+ this._items.push(item);
1375
+ this._mergers.push(item.find('[data-merge]').andSelf('[data-merge]').attr('data-merge') * 1 || 1);
1376
+ }, this));
1377
+
1378
+ this.reset($.isNumeric(this.settings.startPosition) ? this.settings.startPosition : 0);
1379
+
1380
+ this.invalidate('items');
1381
+ };
1382
+
1383
+ /**
1384
+ * Adds an item.
1385
+ * @todo Use `item` instead of `content` for the event arguments.
1386
+ * @public
1387
+ * @param {HTMLElement|jQuery|String} content - The item content to add.
1388
+ * @param {Number} [position] - The relative position at which to insert the item otherwise the item will be added to the end.
1389
+ */
1390
+ Owl.prototype.add = function(content, position) {
1391
+ position = position === undefined ? this._items.length : this.normalize(position, true);
1392
+
1393
+ this.trigger('add', { content: content, position: position });
1394
+
1395
+ if (this._items.length === 0 || position === this._items.length) {
1396
+ this.$stage.append(content);
1397
+ this._items.push(content);
1398
+ this._mergers.push(content.find('[data-merge]').andSelf('[data-merge]').attr('data-merge') * 1 || 1);
1399
+ } else {
1400
+ this._items[position].before(content);
1401
+ this._items.splice(position, 0, content);
1402
+ this._mergers.splice(position, 0, content.find('[data-merge]').andSelf('[data-merge]').attr('data-merge') * 1 || 1);
1403
+ }
1404
+
1405
+ this.invalidate('items');
1406
+
1407
+ this.trigger('added', { content: content, position: position });
1408
+ };
1409
+
1410
+ /**
1411
+ * Removes an item by its position.
1412
+ * @todo Use `item` instead of `content` for the event arguments.
1413
+ * @public
1414
+ * @param {Number} position - The relative position of the item to remove.
1415
+ */
1416
+ Owl.prototype.remove = function(position) {
1417
+ position = this.normalize(position, true);
1418
+
1419
+ if (position === undefined) {
1420
+ return;
1421
+ }
1422
+
1423
+ this.trigger('remove', { content: this._items[position], position: position });
1424
+
1425
+ this._items[position].remove();
1426
+ this._items.splice(position, 1);
1427
+ this._mergers.splice(position, 1);
1428
+
1429
+ this.invalidate('items');
1430
+
1431
+ this.trigger('removed', { content: null, position: position });
1432
+ };
1433
+
1434
+ /**
1435
+ * Adds triggerable events.
1436
+ * @protected
1437
+ */
1438
+ Owl.prototype.addTriggerableEvents = function() {
1439
+ var handler = $.proxy(function(callback, event) {
1440
+ return $.proxy(function(e) {
1441
+ if (e.relatedTarget !== this) {
1442
+ this.suppress([ event ]);
1443
+ callback.apply(this, [].slice.call(arguments, 1));
1444
+ this.release([ event ]);
1445
+ }
1446
+ }, this);
1447
+ }, this);
1448
+
1449
+ $.each({
1450
+ 'next': this.next,
1451
+ 'prev': this.prev,
1452
+ 'to': this.to,
1453
+ 'destroy': this.destroy,
1454
+ 'refresh': this.refresh,
1455
+ 'replace': this.replace,
1456
+ 'add': this.add,
1457
+ 'remove': this.remove
1458
+ }, $.proxy(function(event, callback) {
1459
+ this.$element.on(event + '.owl.carousel', handler(callback, event + '.owl.carousel'));
1460
+ }, this));
1461
+
1462
+ };
1463
+
1464
+ /**
1465
+ * Watches the visibility of the carousel element.
1466
+ * @protected
1467
+ */
1468
+ Owl.prototype.watchVisibility = function() {
1469
+
1470
+ // test on zepto
1471
+ if (!isElVisible(this.$element.get(0))) {
1472
+ this.$element.addClass('owl-hidden');
1473
+ window.clearInterval(this.e._checkVisibile);
1474
+ this.e._checkVisibile = window.setInterval($.proxy(checkVisible, this), 500);
1475
+ }
1476
+
1477
+ function isElVisible(el) {
1478
+ return el.offsetWidth > 0 && el.offsetHeight > 0;
1479
+ }
1480
+
1481
+ function checkVisible() {
1482
+ if (isElVisible(this.$element.get(0))) {
1483
+ this.$element.removeClass('owl-hidden');
1484
+ this.refresh();
1485
+ window.clearInterval(this.e._checkVisibile);
1486
+ }
1487
+ }
1488
+ };
1489
+
1490
+ /**
1491
+ * Preloads images with auto width.
1492
+ * @protected
1493
+ * @todo Still to test
1494
+ */
1495
+ Owl.prototype.preloadAutoWidthImages = function(imgs) {
1496
+ var loaded, that, $el, img;
1497
+
1498
+ loaded = 0;
1499
+ that = this;
1500
+ imgs.each(function(i, el) {
1501
+ $el = $(el);
1502
+ img = new Image();
1503
+
1504
+ img.onload = function() {
1505
+ loaded++;
1506
+ $el.attr('src', img.src);
1507
+ $el.css('opacity', 1);
1508
+ if (loaded >= imgs.length) {
1509
+ that.state.imagesLoaded = true;
1510
+ that.initialize();
1511
+ }
1512
+ };
1513
+
1514
+ img.src = $el.attr('src') || $el.attr('data-src') || $el.attr('data-src-retina');
1515
+ });
1516
+ };
1517
+
1518
+ /**
1519
+ * Destroys the carousel.
1520
+ * @public
1521
+ */
1522
+ Owl.prototype.destroy = function() {
1523
+
1524
+ if (this.$element.hasClass(this.settings.themeClass)) {
1525
+ this.$element.removeClass(this.settings.themeClass);
1526
+ }
1527
+
1528
+ if (this.settings.responsive !== false) {
1529
+ $(window).off('resize.owl.carousel');
1530
+ }
1531
+
1532
+ if (this.transitionEndVendor) {
1533
+ this.off(this.$stage.get(0), this.transitionEndVendor, this.e._transitionEnd);
1534
+ }
1535
+
1536
+ for ( var i in this._plugins) {
1537
+ this._plugins[i].destroy();
1538
+ }
1539
+
1540
+ if (this.settings.mouseDrag || this.settings.touchDrag) {
1541
+ this.$stage.off('mousedown touchstart touchcancel');
1542
+ $(document).off('.owl.dragEvents');
1543
+ this.$stage.get(0).onselectstart = function() {};
1544
+ this.$stage.off('dragstart', function() { return false });
1545
+ }
1546
+
1547
+ // remove event handlers in the ".owl.carousel" namespace
1548
+ this.$element.off('.owl');
1549
+
1550
+ this.$stage.children('.cloned').remove();
1551
+ this.e = null;
1552
+ this.$element.removeData('owlCarousel');
1553
+
1554
+ this.$stage.children().contents().unwrap();
1555
+ this.$stage.children().unwrap();
1556
+ this.$stage.unwrap();
1557
+ };
1558
+
1559
+ /**
1560
+ * Operators to calculate right-to-left and left-to-right.
1561
+ * @protected
1562
+ * @param {Number} [a] - The left side operand.
1563
+ * @param {String} [o] - The operator.
1564
+ * @param {Number} [b] - The right side operand.
1565
+ */
1566
+ Owl.prototype.op = function(a, o, b) {
1567
+ var rtl = this.settings.rtl;
1568
+ switch (o) {
1569
+ case '<':
1570
+ return rtl ? a > b : a < b;
1571
+ case '>':
1572
+ return rtl ? a < b : a > b;
1573
+ case '>=':
1574
+ return rtl ? a <= b : a >= b;
1575
+ case '<=':
1576
+ return rtl ? a >= b : a <= b;
1577
+ default:
1578
+ break;
1579
+ }
1580
+ };
1581
+
1582
+ /**
1583
+ * Attaches to an internal event.
1584
+ * @protected
1585
+ * @param {HTMLElement} element - The event source.
1586
+ * @param {String} event - The event name.
1587
+ * @param {Function} listener - The event handler to attach.
1588
+ * @param {Boolean} capture - Wether the event should be handled at the capturing phase or not.
1589
+ */
1590
+ Owl.prototype.on = function(element, event, listener, capture) {
1591
+ if (element.addEventListener) {
1592
+ element.addEventListener(event, listener, capture);
1593
+ } else if (element.attachEvent) {
1594
+ element.attachEvent('on' + event, listener);
1595
+ }
1596
+ };
1597
+
1598
+ /**
1599
+ * Detaches from an internal event.
1600
+ * @protected
1601
+ * @param {HTMLElement} element - The event source.
1602
+ * @param {String} event - The event name.
1603
+ * @param {Function} listener - The attached event handler to detach.
1604
+ * @param {Boolean} capture - Wether the attached event handler was registered as a capturing listener or not.
1605
+ */
1606
+ Owl.prototype.off = function(element, event, listener, capture) {
1607
+ if (element.removeEventListener) {
1608
+ element.removeEventListener(event, listener, capture);
1609
+ } else if (element.detachEvent) {
1610
+ element.detachEvent('on' + event, listener);
1611
+ }
1612
+ };
1613
+
1614
+ /**
1615
+ * Triggers an public event.
1616
+ * @protected
1617
+ * @param {String} name - The event name.
1618
+ * @param {*} [data=null] - The event data.
1619
+ * @param {String} [namespace=.owl.carousel] - The event namespace.
1620
+ * @returns {Event} - The event arguments.
1621
+ */
1622
+ Owl.prototype.trigger = function(name, data, namespace) {
1623
+ var status = {
1624
+ item: { count: this._items.length, index: this.current() }
1625
+ }, handler = $.camelCase(
1626
+ $.grep([ 'on', name, namespace ], function(v) { return v })
1627
+ .join('-').toLowerCase()
1628
+ ), event = $.Event(
1629
+ [ name, 'owl', namespace || 'carousel' ].join('.').toLowerCase(),
1630
+ $.extend({ relatedTarget: this }, status, data)
1631
+ );
1632
+
1633
+ if (!this._supress[name]) {
1634
+ $.each(this._plugins, function(name, plugin) {
1635
+ if (plugin.onTrigger) {
1636
+ plugin.onTrigger(event);
1637
+ }
1638
+ });
1639
+
1640
+ this.$element.trigger(event);
1641
+
1642
+ if (this.settings && typeof this.settings[handler] === 'function') {
1643
+ this.settings[handler].apply(this, event);
1644
+ }
1645
+ }
1646
+
1647
+ return event;
1648
+ };
1649
+
1650
+ /**
1651
+ * Suppresses events.
1652
+ * @protected
1653
+ * @param {Array.<String>} events - The events to suppress.
1654
+ */
1655
+ Owl.prototype.suppress = function(events) {
1656
+ $.each(events, $.proxy(function(index, event) {
1657
+ this._supress[event] = true;
1658
+ }, this));
1659
+ }
1660
+
1661
+ /**
1662
+ * Releases suppressed events.
1663
+ * @protected
1664
+ * @param {Array.<String>} events - The events to release.
1665
+ */
1666
+ Owl.prototype.release = function(events) {
1667
+ $.each(events, $.proxy(function(index, event) {
1668
+ delete this._supress[event];
1669
+ }, this));
1670
+ }
1671
+
1672
+ /**
1673
+ * Checks the availability of some browser features.
1674
+ * @protected
1675
+ */
1676
+ Owl.prototype.browserSupport = function() {
1677
+ this.support3d = isPerspective();
1678
+
1679
+ if (this.support3d) {
1680
+ this.transformVendor = isTransform();
1681
+
1682
+ // take transitionend event name by detecting transition
1683
+ var endVendors = [ 'transitionend', 'webkitTransitionEnd', 'transitionend', 'oTransitionEnd' ];
1684
+ this.transitionEndVendor = endVendors[isTransition()];
1685
+
1686
+ // take vendor name from transform name
1687
+ this.vendorName = this.transformVendor.replace(/Transform/i, '');
1688
+ this.vendorName = this.vendorName !== '' ? '-' + this.vendorName.toLowerCase() + '-' : '';
1689
+ }
1690
+
1691
+ this.state.orientation = window.orientation;
1692
+ };
1693
+
1694
+ /**
1695
+ * Get touch/drag coordinats.
1696
+ * @private
1697
+ * @param {event} - mousedown/touchstart event
1698
+ * @returns {object} - Contains X and Y of current mouse/touch position
1699
+ */
1700
+
1701
+ function getTouches(event) {
1702
+ if (event.touches !== undefined) {
1703
+ return {
1704
+ x: event.touches[0].pageX,
1705
+ y: event.touches[0].pageY
1706
+ };
1707
+ }
1708
+
1709
+ if (event.touches === undefined) {
1710
+ if (event.pageX !== undefined) {
1711
+ return {
1712
+ x: event.pageX,
1713
+ y: event.pageY
1714
+ };
1715
+ }
1716
+
1717
+ if (event.pageX === undefined) {
1718
+ return {
1719
+ x: event.clientX,
1720
+ y: event.clientY
1721
+ };
1722
+ }
1723
+ }
1724
+ }
1725
+
1726
+ /**
1727
+ * Checks for CSS support.
1728
+ * @private
1729
+ * @param {Array} array - The CSS properties to check for.
1730
+ * @returns {Array} - Contains the supported CSS property name and its index or `false`.
1731
+ */
1732
+ function isStyleSupported(array) {
1733
+ var p, s, fake = document.createElement('div'), list = array;
1734
+ for (p in list) {
1735
+ s = list[p];
1736
+ if (typeof fake.style[s] !== 'undefined') {
1737
+ fake = null;
1738
+ return [ s, p ];
1739
+ }
1740
+ }
1741
+ return [ false ];
1742
+ }
1743
+
1744
+ /**
1745
+ * Checks for CSS transition support.
1746
+ * @private
1747
+ * @todo Realy bad design
1748
+ * @returns {Number}
1749
+ */
1750
+ function isTransition() {
1751
+ return isStyleSupported([ 'transition', 'WebkitTransition', 'MozTransition', 'OTransition' ])[1];
1752
+ }
1753
+
1754
+ /**
1755
+ * Checks for CSS transform support.
1756
+ * @private
1757
+ * @returns {String} The supported property name or false.
1758
+ */
1759
+ function isTransform() {
1760
+ return isStyleSupported([ 'transform', 'WebkitTransform', 'MozTransform', 'OTransform', 'msTransform' ])[0];
1761
+ }
1762
+
1763
+ /**
1764
+ * Checks for CSS perspective support.
1765
+ * @private
1766
+ * @returns {String} The supported property name or false.
1767
+ */
1768
+ function isPerspective() {
1769
+ return isStyleSupported([ 'perspective', 'webkitPerspective', 'MozPerspective', 'OPerspective', 'MsPerspective' ])[0];
1770
+ }
1771
+
1772
+ /**
1773
+ * Checks wether touch is supported or not.
1774
+ * @private
1775
+ * @returns {Boolean}
1776
+ */
1777
+ function isTouchSupport() {
1778
+ return 'ontouchstart' in window || !!(navigator.msMaxTouchPoints);
1779
+ }
1780
+
1781
+ /**
1782
+ * Checks wether touch is supported or not for IE.
1783
+ * @private
1784
+ * @returns {Boolean}
1785
+ */
1786
+ function isTouchSupportIE() {
1787
+ return window.navigator.msPointerEnabled;
1788
+ }
1789
+
1790
+ /**
1791
+ * The jQuery Plugin for the Owl Carousel
1792
+ * @public
1793
+ */
1794
+ $.fn.owlCarousel = function(options) {
1795
+ return this.each(function() {
1796
+ if (!$(this).data('owlCarousel')) {
1797
+ $(this).data('owlCarousel', new Owl(this, options));
1798
+ }
1799
+ });
1800
+ };
1801
+
1802
+ /**
1803
+ * The constructor for the jQuery Plugin
1804
+ * @public
1805
+ */
1806
+ $.fn.owlCarousel.Constructor = Owl;
1807
+
1808
+ })(window.Zepto || window.jQuery, window, document);
1809
+
1810
+ /**
1811
+ * Lazy Plugin
1812
+ * @version 2.0.0
1813
+ * @author Bartosz Wojciechowski
1814
+ * @license The MIT License (MIT)
1815
+ */
1816
+ ;(function($, window, document, undefined) {
1817
+
1818
+ /**
1819
+ * Creates the lazy plugin.
1820
+ * @class The Lazy Plugin
1821
+ * @param {Owl} carousel - The Owl Carousel
1822
+ */
1823
+ var Lazy = function(carousel) {
1824
+
1825
+ /**
1826
+ * Reference to the core.
1827
+ * @protected
1828
+ * @type {Owl}
1829
+ */
1830
+ this._core = carousel;
1831
+
1832
+ /**
1833
+ * Already loaded items.
1834
+ * @protected
1835
+ * @type {Array.<jQuery>}
1836
+ */
1837
+ this._loaded = [];
1838
+
1839
+ /**
1840
+ * Event handlers.
1841
+ * @protected
1842
+ * @type {Object}
1843
+ */
1844
+ this._handlers = {
1845
+ 'initialized.owl.carousel change.owl.carousel': $.proxy(function(e) {
1846
+ if (!e.namespace) {
1847
+ return;
1848
+ }
1849
+
1850
+ if (!this._core.settings || !this._core.settings.lazyLoad) {
1851
+ return;
1852
+ }
1853
+
1854
+ if ((e.property && e.property.name == 'position') || e.type == 'initialized') {
1855
+ var settings = this._core.settings,
1856
+ n = (settings.center && Math.ceil(settings.items / 2) || settings.items),
1857
+ i = ((settings.center && n * -1) || 0),
1858
+ position = ((e.property && e.property.value) || this._core.current()) + i,
1859
+ clones = this._core.clones().length,
1860
+ load = $.proxy(function(i, v) { this.load(v) }, this);
1861
+
1862
+ while (i++ < n) {
1863
+ this.load(clones / 2 + this._core.relative(position));
1864
+ clones && $.each(this._core.clones(this._core.relative(position++)), load);
1865
+ }
1866
+ }
1867
+ }, this)
1868
+ };
1869
+
1870
+ // set the default options
1871
+ this._core.options = $.extend({}, Lazy.Defaults, this._core.options);
1872
+
1873
+ // register event handler
1874
+ this._core.$element.on(this._handlers);
1875
+ }
1876
+
1877
+ /**
1878
+ * Default options.
1879
+ * @public
1880
+ */
1881
+ Lazy.Defaults = {
1882
+ lazyLoad: false
1883
+ }
1884
+
1885
+ /**
1886
+ * Loads all resources of an item at the specified position.
1887
+ * @param {Number} position - The absolute position of the item.
1888
+ * @protected
1889
+ */
1890
+ Lazy.prototype.load = function(position) {
1891
+ var $item = this._core.$stage.children().eq(position),
1892
+ $elements = $item && $item.find('.owl-lazy');
1893
+
1894
+ if (!$elements || $.inArray($item.get(0), this._loaded) > -1) {
1895
+ return;
1896
+ }
1897
+
1898
+ $elements.each($.proxy(function(index, element) {
1899
+ var $element = $(element), image,
1900
+ url = (window.devicePixelRatio > 1 && $element.attr('data-src-retina')) || $element.attr('data-src');
1901
+
1902
+ this._core.trigger('load', { element: $element, url: url }, 'lazy');
1903
+
1904
+ if ($element.is('img')) {
1905
+ $element.one('load.owl.lazy', $.proxy(function() {
1906
+ $element.css('opacity', 1);
1907
+ this._core.trigger('loaded', { element: $element, url: url }, 'lazy');
1908
+ }, this)).attr('src', url);
1909
+ } else {
1910
+ image = new Image();
1911
+ image.onload = $.proxy(function() {
1912
+ $element.css({
1913
+ 'background-image': 'url(' + url + ')',
1914
+ 'opacity': '1'
1915
+ });
1916
+ this._core.trigger('loaded', { element: $element, url: url }, 'lazy');
1917
+ }, this);
1918
+ image.src = url;
1919
+ }
1920
+ }, this));
1921
+
1922
+ this._loaded.push($item.get(0));
1923
+ }
1924
+
1925
+ /**
1926
+ * Destroys the plugin.
1927
+ * @public
1928
+ */
1929
+ Lazy.prototype.destroy = function() {
1930
+ var handler, property;
1931
+
1932
+ for (handler in this.handlers) {
1933
+ this._core.$element.off(handler, this.handlers[handler]);
1934
+ }
1935
+ for (property in Object.getOwnPropertyNames(this)) {
1936
+ typeof this[property] != 'function' && (this[property] = null);
1937
+ }
1938
+ }
1939
+
1940
+ $.fn.owlCarousel.Constructor.Plugins.Lazy = Lazy;
1941
+
1942
+ })(window.Zepto || window.jQuery, window, document);
1943
+
1944
+ /**
1945
+ * AutoHeight Plugin
1946
+ * @version 2.0.0
1947
+ * @author Bartosz Wojciechowski
1948
+ * @license The MIT License (MIT)
1949
+ */
1950
+ ;(function($, window, document, undefined) {
1951
+
1952
+ /**
1953
+ * Creates the auto height plugin.
1954
+ * @class The Auto Height Plugin
1955
+ * @param {Owl} carousel - The Owl Carousel
1956
+ */
1957
+ var AutoHeight = function(carousel) {
1958
+ /**
1959
+ * Reference to the core.
1960
+ * @protected
1961
+ * @type {Owl}
1962
+ */
1963
+ this._core = carousel;
1964
+
1965
+ /**
1966
+ * All event handlers.
1967
+ * @protected
1968
+ * @type {Object}
1969
+ */
1970
+ this._handlers = {
1971
+ 'initialized.owl.carousel': $.proxy(function() {
1972
+ if (this._core.settings.autoHeight) {
1973
+ this.update();
1974
+ }
1975
+ }, this),
1976
+ 'changed.owl.carousel': $.proxy(function(e) {
1977
+ if (this._core.settings.autoHeight && e.property.name == 'position'){
1978
+ this.update();
1979
+ }
1980
+ }, this),
1981
+ 'loaded.owl.lazy': $.proxy(function(e) {
1982
+ if (e.namespace && this._core.settings.autoHeight && e.element.closest('.' + this._core.settings.itemClass)
1983
+ === this._core.$stage.children().eq(this._core.current())) {
1984
+ this.update();
1985
+ }
1986
+ }, this)
1987
+ };
1988
+
1989
+ // set default options
1990
+ this._core.options = $.extend({}, AutoHeight.Defaults, this._core.options);
1991
+
1992
+ // register event handlers
1993
+ this._core.$element.on(this._handlers);
1994
+ };
1995
+
1996
+ /**
1997
+ * Default options.
1998
+ * @public
1999
+ */
2000
+ AutoHeight.Defaults = {
2001
+ autoHeight: false,
2002
+ autoHeightClass: 'owl-height'
2003
+ };
2004
+
2005
+ /**
2006
+ * Updates the view.
2007
+ */
2008
+ AutoHeight.prototype.update = function() {
2009
+ this._core.$stage.parent()
2010
+ .height(this._core.$stage.children().eq(this._core.current()).height())
2011
+ .addClass(this._core.settings.autoHeightClass);
2012
+ };
2013
+
2014
+ AutoHeight.prototype.destroy = function() {
2015
+ var handler, property;
2016
+
2017
+ for (handler in this._handlers) {
2018
+ this._core.$element.off(handler, this._handlers[handler]);
2019
+ }
2020
+ for (property in Object.getOwnPropertyNames(this)) {
2021
+ typeof this[property] != 'function' && (this[property] = null);
2022
+ }
2023
+ };
2024
+
2025
+ $.fn.owlCarousel.Constructor.Plugins.AutoHeight = AutoHeight;
2026
+
2027
+ })(window.Zepto || window.jQuery, window, document);
2028
+
2029
+ /**
2030
+ * Video Plugin
2031
+ * @version 2.0.0
2032
+ * @author Bartosz Wojciechowski
2033
+ * @license The MIT License (MIT)
2034
+ */
2035
+ ;(function($, window, document, undefined) {
2036
+
2037
+ /**
2038
+ * Creates the video plugin.
2039
+ * @class The Video Plugin
2040
+ * @param {Owl} carousel - The Owl Carousel
2041
+ */
2042
+ var Video = function(carousel) {
2043
+ /**
2044
+ * Reference to the core.
2045
+ * @protected
2046
+ * @type {Owl}
2047
+ */
2048
+ this._core = carousel;
2049
+
2050
+ /**
2051
+ * Cache all video URLs.
2052
+ * @protected
2053
+ * @type {Object}
2054
+ */
2055
+ this._videos = {};
2056
+
2057
+ /**
2058
+ * Current playing item.
2059
+ * @protected
2060
+ * @type {jQuery}
2061
+ */
2062
+ this._playing = null;
2063
+
2064
+ /**
2065
+ * Whether this is in fullscreen or not.
2066
+ * @protected
2067
+ * @type {Boolean}
2068
+ */
2069
+ this._fullscreen = false;
2070
+
2071
+ /**
2072
+ * All event handlers.
2073
+ * @protected
2074
+ * @type {Object}
2075
+ */
2076
+ this._handlers = {
2077
+ 'resize.owl.carousel': $.proxy(function(e) {
2078
+ if (this._core.settings.video && !this.isInFullScreen()) {
2079
+ e.preventDefault();
2080
+ }
2081
+ }, this),
2082
+ 'refresh.owl.carousel changed.owl.carousel': $.proxy(function(e) {
2083
+ if (this._playing) {
2084
+ this.stop();
2085
+ }
2086
+ }, this),
2087
+ 'prepared.owl.carousel': $.proxy(function(e) {
2088
+ var $element = $(e.content).find('.owl-video');
2089
+ if ($element.length) {
2090
+ $element.css('display', 'none');
2091
+ this.fetch($element, $(e.content));
2092
+ }
2093
+ }, this)
2094
+ };
2095
+
2096
+ // set default options
2097
+ this._core.options = $.extend({}, Video.Defaults, this._core.options);
2098
+
2099
+ // register event handlers
2100
+ this._core.$element.on(this._handlers);
2101
+
2102
+ this._core.$element.on('click.owl.video', '.owl-video-play-icon', $.proxy(function(e) {
2103
+ this.play(e);
2104
+ }, this));
2105
+ };
2106
+
2107
+ /**
2108
+ * Default options.
2109
+ * @public
2110
+ */
2111
+ Video.Defaults = {
2112
+ video: false,
2113
+ videoHeight: false,
2114
+ videoWidth: false
2115
+ };
2116
+
2117
+ /**
2118
+ * Gets the video ID and the type (YouTube/Vimeo only).
2119
+ * @protected
2120
+ * @param {jQuery} target - The target containing the video data.
2121
+ * @param {jQuery} item - The item containing the video.
2122
+ */
2123
+ Video.prototype.fetch = function(target, item) {
2124
+
2125
+ var type = target.attr('data-vimeo-id') ? 'vimeo' : 'youtube',
2126
+ id = target.attr('data-vimeo-id') || target.attr('data-youtube-id'),
2127
+ width = target.attr('data-width') || this._core.settings.videoWidth,
2128
+ height = target.attr('data-height') || this._core.settings.videoHeight,
2129
+ url = target.attr('href');
2130
+
2131
+ if (url) {
2132
+ id = url.match(/(http:|https:|)\/\/(player.|www.)?(vimeo\.com|youtu(be\.com|\.be|be\.googleapis\.com))\/(video\/|embed\/|watch\?v=|v\/)?([A-Za-z0-9._%-]*)(\&\S+)?/);
2133
+
2134
+ if (id[3].indexOf('youtu') > -1) {
2135
+ type = 'youtube';
2136
+ } else if (id[3].indexOf('vimeo') > -1) {
2137
+ type = 'vimeo';
2138
+ } else {
2139
+ throw new Error('Video URL not supported.');
2140
+ }
2141
+ id = id[6];
2142
+ } else {
2143
+ throw new Error('Missing video URL.');
2144
+ }
2145
+
2146
+ this._videos[url] = {
2147
+ type: type,
2148
+ id: id,
2149
+ width: width,
2150
+ height: height
2151
+ };
2152
+
2153
+ item.attr('data-video', url);
2154
+
2155
+ this.thumbnail(target, this._videos[url]);
2156
+ };
2157
+
2158
+ /**
2159
+ * Creates video thumbnail.
2160
+ * @protected
2161
+ * @param {jQuery} target - The target containing the video data.
2162
+ * @param {Object} info - The video info object.
2163
+ * @see `fetch`
2164
+ */
2165
+ Video.prototype.thumbnail = function(target, video) {
2166
+
2167
+ var tnLink,
2168
+ icon,
2169
+ path,
2170
+ dimensions = video.width && video.height ? 'style="width:' + video.width + 'px;height:' + video.height + 'px;"' : '',
2171
+ customTn = target.find('img'),
2172
+ srcType = 'src',
2173
+ lazyClass = '',
2174
+ settings = this._core.settings,
2175
+ create = function(path) {
2176
+ icon = '<div class="owl-video-play-icon"></div>';
2177
+
2178
+ if (settings.lazyLoad) {
2179
+ tnLink = '<div class="owl-video-tn ' + lazyClass + '" ' + srcType + '="' + path + '"></div>';
2180
+ } else {
2181
+ tnLink = '<div class="owl-video-tn" style="opacity:1;background-image:url(' + path + ')"></div>';
2182
+ }
2183
+ target.after(tnLink);
2184
+ target.after(icon);
2185
+ };
2186
+
2187
+ // wrap video content into owl-video-wrapper div
2188
+ target.wrap('<div class="owl-video-wrapper"' + dimensions + '></div>');
2189
+
2190
+ if (this._core.settings.lazyLoad) {
2191
+ srcType = 'data-src';
2192
+ lazyClass = 'owl-lazy';
2193
+ }
2194
+
2195
+ // custom thumbnail
2196
+ if (customTn.length) {
2197
+ create(customTn.attr(srcType));
2198
+ customTn.remove();
2199
+ return false;
2200
+ }
2201
+
2202
+ if (video.type === 'youtube') {
2203
+ path = "http://img.youtube.com/vi/" + video.id + "/hqdefault.jpg";
2204
+ create(path);
2205
+ } else if (video.type === 'vimeo') {
2206
+ $.ajax({
2207
+ type: 'GET',
2208
+ url: 'http://vimeo.com/api/v2/video/' + video.id + '.json',
2209
+ jsonp: 'callback',
2210
+ dataType: 'jsonp',
2211
+ success: function(data) {
2212
+ path = data[0].thumbnail_large;
2213
+ create(path);
2214
+ }
2215
+ });
2216
+ }
2217
+ };
2218
+
2219
+ /**
2220
+ * Stops the current video.
2221
+ * @public
2222
+ */
2223
+ Video.prototype.stop = function() {
2224
+ this._core.trigger('stop', null, 'video');
2225
+ this._playing.find('.owl-video-frame').remove();
2226
+ this._playing.removeClass('owl-video-playing');
2227
+ this._playing = null;
2228
+ };
2229
+
2230
+ /**
2231
+ * Starts the current video.
2232
+ * @public
2233
+ * @param {Event} ev - The event arguments.
2234
+ */
2235
+ Video.prototype.play = function(ev) {
2236
+ this._core.trigger('play', null, 'video');
2237
+
2238
+ if (this._playing) {
2239
+ this.stop();
2240
+ }
2241
+
2242
+ var target = $(ev.target || ev.srcElement),
2243
+ item = target.closest('.' + this._core.settings.itemClass),
2244
+ video = this._videos[item.attr('data-video')],
2245
+ width = video.width || '100%',
2246
+ height = video.height || this._core.$stage.height(),
2247
+ html, wrap;
2248
+
2249
+ if (video.type === 'youtube') {
2250
+ html = '<iframe width="' + width + '" height="' + height + '" src="http://www.youtube.com/embed/'
2251
+ + video.id + '?autoplay=1&v=' + video.id + '" frameborder="0" allowfullscreen></iframe>';
2252
+ } else if (video.type === 'vimeo') {
2253
+ html = '<iframe src="http://player.vimeo.com/video/' + video.id + '?autoplay=1" width="' + width
2254
+ + '" height="' + height
2255
+ + '" frameborder="0" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe>';
2256
+ }
2257
+
2258
+ item.addClass('owl-video-playing');
2259
+ this._playing = item;
2260
+
2261
+ wrap = $('<div style="height:' + height + 'px; width:' + width + 'px" class="owl-video-frame">'
2262
+ + html + '</div>');
2263
+ target.after(wrap);
2264
+ };
2265
+
2266
+ /**
2267
+ * Checks whether an video is currently in full screen mode or not.
2268
+ * @todo Bad style because looks like a readonly method but changes members.
2269
+ * @protected
2270
+ * @returns {Boolean}
2271
+ */
2272
+ Video.prototype.isInFullScreen = function() {
2273
+
2274
+ // if Vimeo Fullscreen mode
2275
+ var element = document.fullscreenElement || document.mozFullScreenElement
2276
+ || document.webkitFullscreenElement;
2277
+
2278
+ if (element && $(element).parent().hasClass('owl-video-frame')) {
2279
+ this._core.speed(0);
2280
+ this._fullscreen = true;
2281
+ }
2282
+
2283
+ if (element && this._fullscreen && this._playing) {
2284
+ return false;
2285
+ }
2286
+
2287
+ // comming back from fullscreen
2288
+ if (this._fullscreen) {
2289
+ this._fullscreen = false;
2290
+ return false;
2291
+ }
2292
+
2293
+ // check full screen mode and window orientation
2294
+ if (this._playing) {
2295
+ if (this._core.state.orientation !== window.orientation) {
2296
+ this._core.state.orientation = window.orientation;
2297
+ return false;
2298
+ }
2299
+ }
2300
+
2301
+ return true;
2302
+ };
2303
+
2304
+ /**
2305
+ * Destroys the plugin.
2306
+ */
2307
+ Video.prototype.destroy = function() {
2308
+ var handler, property;
2309
+
2310
+ this._core.$element.off('click.owl.video');
2311
+
2312
+ for (handler in this._handlers) {
2313
+ this._core.$element.off(handler, this._handlers[handler]);
2314
+ }
2315
+ for (property in Object.getOwnPropertyNames(this)) {
2316
+ typeof this[property] != 'function' && (this[property] = null);
2317
+ }
2318
+ };
2319
+
2320
+ $.fn.owlCarousel.Constructor.Plugins.Video = Video;
2321
+
2322
+ })(window.Zepto || window.jQuery, window, document);
2323
+
2324
+ /**
2325
+ * Animate Plugin
2326
+ * @version 2.0.0
2327
+ * @author Bartosz Wojciechowski
2328
+ * @license The MIT License (MIT)
2329
+ */
2330
+ ;(function($, window, document, undefined) {
2331
+
2332
+ /**
2333
+ * Creates the animate plugin.
2334
+ * @class The Navigation Plugin
2335
+ * @param {Owl} scope - The Owl Carousel
2336
+ */
2337
+ var Animate = function(scope) {
2338
+ this.core = scope;
2339
+ this.core.options = $.extend({}, Animate.Defaults, this.core.options);
2340
+ this.swapping = true;
2341
+ this.previous = undefined;
2342
+ this.next = undefined;
2343
+
2344
+ this.handlers = {
2345
+ 'change.owl.carousel': $.proxy(function(e) {
2346
+ if (e.property.name == 'position') {
2347
+ this.previous = this.core.current();
2348
+ this.next = e.property.value;
2349
+ }
2350
+ }, this),
2351
+ 'drag.owl.carousel dragged.owl.carousel translated.owl.carousel': $.proxy(function(e) {
2352
+ this.swapping = e.type == 'translated';
2353
+ }, this),
2354
+ 'translate.owl.carousel': $.proxy(function(e) {
2355
+ if (this.swapping && (this.core.options.animateOut || this.core.options.animateIn)) {
2356
+ this.swap();
2357
+ }
2358
+ }, this)
2359
+ };
2360
+
2361
+ this.core.$element.on(this.handlers);
2362
+ };
2363
+
2364
+ /**
2365
+ * Default options.
2366
+ * @public
2367
+ */
2368
+ Animate.Defaults = {
2369
+ animateOut: false,
2370
+ animateIn: false
2371
+ };
2372
+
2373
+ /**
2374
+ * Toggles the animation classes whenever an translations starts.
2375
+ * @protected
2376
+ * @returns {Boolean|undefined}
2377
+ */
2378
+ Animate.prototype.swap = function() {
2379
+
2380
+ if (this.core.settings.items !== 1 || !this.core.support3d) {
2381
+ return;
2382
+ }
2383
+
2384
+ this.core.speed(0);
2385
+
2386
+ var left,
2387
+ clear = $.proxy(this.clear, this),
2388
+ previous = this.core.$stage.children().eq(this.previous),
2389
+ next = this.core.$stage.children().eq(this.next),
2390
+ incoming = this.core.settings.animateIn,
2391
+ outgoing = this.core.settings.animateOut;
2392
+
2393
+ if (this.core.current() === this.previous) {
2394
+ return;
2395
+ }
2396
+
2397
+ if (outgoing) {
2398
+ left = this.core.coordinates(this.previous) - this.core.coordinates(this.next);
2399
+ previous.css( { 'left': left + 'px' } )
2400
+ .addClass('animated owl-animated-out')
2401
+ .addClass(outgoing)
2402
+ .one('webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend', clear);
2403
+ }
2404
+
2405
+ if (incoming) {
2406
+ next.addClass('animated owl-animated-in')
2407
+ .addClass(incoming)
2408
+ .one('webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend', clear);
2409
+ }
2410
+ };
2411
+
2412
+ Animate.prototype.clear = function(e) {
2413
+ $(e.target).css( { 'left': '' } )
2414
+ .removeClass('animated owl-animated-out owl-animated-in')
2415
+ .removeClass(this.core.settings.animateIn)
2416
+ .removeClass(this.core.settings.animateOut);
2417
+ this.core.transitionEnd();
2418
+ }
2419
+
2420
+ /**
2421
+ * Destroys the plugin.
2422
+ * @public
2423
+ */
2424
+ Animate.prototype.destroy = function() {
2425
+ var handler, property;
2426
+
2427
+ for (handler in this.handlers) {
2428
+ this.core.$element.off(handler, this.handlers[handler]);
2429
+ }
2430
+ for (property in Object.getOwnPropertyNames(this)) {
2431
+ typeof this[property] != 'function' && (this[property] = null);
2432
+ }
2433
+ };
2434
+
2435
+ $.fn.owlCarousel.Constructor.Plugins.Animate = Animate;
2436
+
2437
+ })(window.Zepto || window.jQuery, window, document);
2438
+
2439
+ /**
2440
+ * Autoplay Plugin
2441
+ * @version 2.0.0
2442
+ * @author Bartosz Wojciechowski
2443
+ * @license The MIT License (MIT)
2444
+ */
2445
+ ;(function($, window, document, undefined) {
2446
+
2447
+ /**
2448
+ * Creates the autoplay plugin.
2449
+ * @class The Autoplay Plugin
2450
+ * @param {Owl} scope - The Owl Carousel
2451
+ */
2452
+ var Autoplay = function(scope) {
2453
+ this.core = scope;
2454
+ this.core.options = $.extend({}, Autoplay.Defaults, this.core.options);
2455
+
2456
+ this.handlers = {
2457
+ 'translated.owl.carousel refreshed.owl.carousel': $.proxy(function() {
2458
+ this.autoplay();
2459
+ }, this),
2460
+ 'play.owl.autoplay': $.proxy(function(e, t, s) {
2461
+ this.play(t, s);
2462
+ }, this),
2463
+ 'stop.owl.autoplay': $.proxy(function() {
2464
+ this.stop();
2465
+ }, this),
2466
+ 'mouseover.owl.autoplay': $.proxy(function() {
2467
+ if (this.core.settings.autoplayHoverPause) {
2468
+ this.pause();
2469
+ }
2470
+ }, this),
2471
+ 'mouseleave.owl.autoplay': $.proxy(function() {
2472
+ if (this.core.settings.autoplayHoverPause) {
2473
+ this.autoplay();
2474
+ }
2475
+ }, this)
2476
+ };
2477
+
2478
+ this.core.$element.on(this.handlers);
2479
+ };
2480
+
2481
+ /**
2482
+ * Default options.
2483
+ * @public
2484
+ */
2485
+ Autoplay.Defaults = {
2486
+ autoplay: false,
2487
+ autoplayTimeout: 5000,
2488
+ autoplayHoverPause: false,
2489
+ autoplaySpeed: false
2490
+ };
2491
+
2492
+ /**
2493
+ * @protected
2494
+ * @todo Must be documented.
2495
+ */
2496
+ Autoplay.prototype.autoplay = function() {
2497
+ if (this.core.settings.autoplay && !this.core.state.videoPlay) {
2498
+ window.clearInterval(this.interval);
2499
+
2500
+ this.interval = window.setInterval($.proxy(function() {
2501
+ this.play();
2502
+ }, this), this.core.settings.autoplayTimeout);
2503
+ } else {
2504
+ window.clearInterval(this.interval);
2505
+ }
2506
+ };
2507
+
2508
+ /**
2509
+ * Starts the autoplay.
2510
+ * @public
2511
+ * @param {Number} [timeout] - ...
2512
+ * @param {Number} [speed] - ...
2513
+ * @returns {Boolean|undefined} - ...
2514
+ * @todo Must be documented.
2515
+ */
2516
+ Autoplay.prototype.play = function(timeout, speed) {
2517
+ // if tab is inactive - doesnt work in <IE10
2518
+ if (document.hidden === true) {
2519
+ return;
2520
+ }
2521
+
2522
+ if (this.core.state.isTouch || this.core.state.isScrolling
2523
+ || this.core.state.isSwiping || this.core.state.inMotion) {
2524
+ return;
2525
+ }
2526
+
2527
+ if (this.core.settings.autoplay === false) {
2528
+ window.clearInterval(this.interval);
2529
+ return;
2530
+ }
2531
+
2532
+ this.core.next(this.core.settings.autoplaySpeed);
2533
+ };
2534
+
2535
+ /**
2536
+ * Stops the autoplay.
2537
+ * @public
2538
+ */
2539
+ Autoplay.prototype.stop = function() {
2540
+ window.clearInterval(this.interval);
2541
+ };
2542
+
2543
+ /**
2544
+ * Pauses the autoplay.
2545
+ * @public
2546
+ */
2547
+ Autoplay.prototype.pause = function() {
2548
+ window.clearInterval(this.interval);
2549
+ };
2550
+
2551
+ /**
2552
+ * Destroys the plugin.
2553
+ */
2554
+ Autoplay.prototype.destroy = function() {
2555
+ var handler, property;
2556
+
2557
+ window.clearInterval(this.interval);
2558
+
2559
+ for (handler in this.handlers) {
2560
+ this.core.$element.off(handler, this.handlers[handler]);
2561
+ }
2562
+ for (property in Object.getOwnPropertyNames(this)) {
2563
+ typeof this[property] != 'function' && (this[property] = null);
2564
+ }
2565
+ };
2566
+
2567
+ $.fn.owlCarousel.Constructor.Plugins.autoplay = Autoplay;
2568
+
2569
+ })(window.Zepto || window.jQuery, window, document);
2570
+
2571
+ /**
2572
+ * Navigation Plugin
2573
+ * @version 2.0.0
2574
+ * @author Artus Kolanowski
2575
+ * @license The MIT License (MIT)
2576
+ */
2577
+ ;(function($, window, document, undefined) {
2578
+ 'use strict';
2579
+
2580
+ /**
2581
+ * Creates the navigation plugin.
2582
+ * @class The Navigation Plugin
2583
+ * @param {Owl} carousel - The Owl Carousel.
2584
+ */
2585
+ var Navigation = function(carousel) {
2586
+ /**
2587
+ * Reference to the core.
2588
+ * @protected
2589
+ * @type {Owl}
2590
+ */
2591
+ this._core = carousel;
2592
+
2593
+ /**
2594
+ * Indicates whether the plugin is initialized or not.
2595
+ * @protected
2596
+ * @type {Boolean}
2597
+ */
2598
+ this._initialized = false;
2599
+
2600
+ /**
2601
+ * The current paging indexes.
2602
+ * @protected
2603
+ * @type {Array}
2604
+ */
2605
+ this._pages = [];
2606
+
2607
+ /**
2608
+ * All DOM elements of the user interface.
2609
+ * @protected
2610
+ * @type {Object}
2611
+ */
2612
+ this._controls = {};
2613
+
2614
+ /**
2615
+ * Markup for an indicator.
2616
+ * @protected
2617
+ * @type {Array.<String>}
2618
+ */
2619
+ this._templates = [];
2620
+
2621
+ /**
2622
+ * The carousel element.
2623
+ * @type {jQuery}
2624
+ */
2625
+ this.$element = this._core.$element;
2626
+
2627
+ /**
2628
+ * Overridden methods of the carousel.
2629
+ * @protected
2630
+ * @type {Object}
2631
+ */
2632
+ this._overrides = {
2633
+ next: this._core.next,
2634
+ prev: this._core.prev,
2635
+ to: this._core.to
2636
+ };
2637
+
2638
+ /**
2639
+ * All event handlers.
2640
+ * @protected
2641
+ * @type {Object}
2642
+ */
2643
+ this._handlers = {
2644
+ 'prepared.owl.carousel': $.proxy(function(e) {
2645
+ if (this._core.settings.dotsData) {
2646
+ this._templates.push($(e.content).find('[data-dot]').andSelf('[data-dot]').attr('data-dot'));
2647
+ }
2648
+ }, this),
2649
+ 'add.owl.carousel': $.proxy(function(e) {
2650
+ if (this._core.settings.dotsData) {
2651
+ this._templates.splice(e.position, 0, $(e.content).find('[data-dot]').andSelf('[data-dot]').attr('data-dot'));
2652
+ }
2653
+ }, this),
2654
+ 'remove.owl.carousel prepared.owl.carousel': $.proxy(function(e) {
2655
+ if (this._core.settings.dotsData) {
2656
+ this._templates.splice(e.position, 1);
2657
+ }
2658
+ }, this),
2659
+ 'change.owl.carousel': $.proxy(function(e) {
2660
+ if (e.property.name == 'position') {
2661
+ if (!this._core.state.revert && !this._core.settings.loop && this._core.settings.navRewind) {
2662
+ var current = this._core.current(),
2663
+ maximum = this._core.maximum(),
2664
+ minimum = this._core.minimum();
2665
+ e.data = e.property.value > maximum
2666
+ ? current >= maximum ? minimum : maximum
2667
+ : e.property.value < minimum ? maximum : e.property.value;
2668
+ }
2669
+ }
2670
+ }, this),
2671
+ 'changed.owl.carousel': $.proxy(function(e) {
2672
+ if (e.property.name == 'position') {
2673
+ this.draw();
2674
+ }
2675
+ }, this),
2676
+ 'refreshed.owl.carousel': $.proxy(function() {
2677
+ if (!this._initialized) {
2678
+ this.initialize();
2679
+ this._initialized = true;
2680
+ }
2681
+ this._core.trigger('refresh', null, 'navigation');
2682
+ this.update();
2683
+ this.draw();
2684
+ this._core.trigger('refreshed', null, 'navigation');
2685
+ }, this)
2686
+ };
2687
+
2688
+ // set default options
2689
+ this._core.options = $.extend({}, Navigation.Defaults, this._core.options);
2690
+
2691
+ // register event handlers
2692
+ this.$element.on(this._handlers);
2693
+ }
2694
+
2695
+ /**
2696
+ * Default options.
2697
+ * @public
2698
+ * @todo Rename `slideBy` to `navBy`
2699
+ */
2700
+ Navigation.Defaults = {
2701
+ nav: false,
2702
+ navRewind: true,
2703
+ navText: [ 'prev', 'next' ],
2704
+ navSpeed: false,
2705
+ navElement: 'div',
2706
+ navContainer: false,
2707
+ navContainerClass: 'owl-nav',
2708
+ navClass: [ 'owl-prev', 'owl-next' ],
2709
+ slideBy: 1,
2710
+ dotClass: 'owl-dot',
2711
+ dotsClass: 'owl-dots',
2712
+ dots: true,
2713
+ dotsEach: false,
2714
+ dotData: false,
2715
+ dotsSpeed: false,
2716
+ dotsContainer: false,
2717
+ controlsClass: 'owl-controls'
2718
+ }
2719
+
2720
+ /**
2721
+ * Initializes the layout of the plugin and extends the carousel.
2722
+ * @protected
2723
+ */
2724
+ Navigation.prototype.initialize = function() {
2725
+ var $container, override,
2726
+ options = this._core.settings;
2727
+
2728
+ // create the indicator template
2729
+ if (!options.dotsData) {
2730
+ this._templates = [ $('<div>')
2731
+ .addClass(options.dotClass)
2732
+ .append($('<span>'))
2733
+ .prop('outerHTML') ];
2734
+ }
2735
+
2736
+ // create controls container if needed
2737
+ if (!options.navContainer || !options.dotsContainer) {
2738
+ this._controls.$container = $('<div>')
2739
+ .addClass(options.controlsClass)
2740
+ .appendTo(this.$element);
2741
+ }
2742
+
2743
+ // create DOM structure for absolute navigation
2744
+ this._controls.$indicators = options.dotsContainer ? $(options.dotsContainer)
2745
+ : $('<div>').hide().addClass(options.dotsClass).appendTo(this._controls.$container);
2746
+
2747
+ this._controls.$indicators.on('click', 'div', $.proxy(function(e) {
2748
+ var index = $(e.target).parent().is(this._controls.$indicators)
2749
+ ? $(e.target).index() : $(e.target).parent().index();
2750
+
2751
+ e.preventDefault();
2752
+
2753
+ this.to(index, options.dotsSpeed);
2754
+ }, this));
2755
+
2756
+ // create DOM structure for relative navigation
2757
+ $container = options.navContainer ? $(options.navContainer)
2758
+ : $('<div>').addClass(options.navContainerClass).prependTo(this._controls.$container);
2759
+
2760
+ this._controls.$next = $('<' + options.navElement + '>');
2761
+ this._controls.$previous = this._controls.$next.clone();
2762
+
2763
+ this._controls.$previous
2764
+ .addClass(options.navClass[0])
2765
+ .html(options.navText[0])
2766
+ .hide()
2767
+ .prependTo($container)
2768
+ .on('click', $.proxy(function(e) {
2769
+ this.prev(options.navSpeed);
2770
+ }, this));
2771
+ this._controls.$next
2772
+ .addClass(options.navClass[1])
2773
+ .html(options.navText[1])
2774
+ .hide()
2775
+ .appendTo($container)
2776
+ .on('click', $.proxy(function(e) {
2777
+ this.next(options.navSpeed);
2778
+ }, this));
2779
+
2780
+ // override public methods of the carousel
2781
+ for (override in this._overrides) {
2782
+ this._core[override] = $.proxy(this[override], this);
2783
+ }
2784
+ }
2785
+
2786
+ /**
2787
+ * Destroys the plugin.
2788
+ * @protected
2789
+ */
2790
+ Navigation.prototype.destroy = function() {
2791
+ var handler, control, property, override;
2792
+
2793
+ for (handler in this._handlers) {
2794
+ this.$element.off(handler, this._handlers[handler]);
2795
+ }
2796
+ for (control in this._controls) {
2797
+ this._controls[control].remove();
2798
+ }
2799
+ for (override in this.overides) {
2800
+ this._core[override] = this._overrides[override];
2801
+ }
2802
+ for (property in Object.getOwnPropertyNames(this)) {
2803
+ typeof this[property] != 'function' && (this[property] = null);
2804
+ }
2805
+ }
2806
+
2807
+ /**
2808
+ * Updates the internal state.
2809
+ * @protected
2810
+ */
2811
+ Navigation.prototype.update = function() {
2812
+ var i, j, k,
2813
+ options = this._core.settings,
2814
+ lower = this._core.clones().length / 2,
2815
+ upper = lower + this._core.items().length,
2816
+ size = options.center || options.autoWidth || options.dotData
2817
+ ? 1 : options.dotsEach || options.items;
2818
+
2819
+ if (options.slideBy !== 'page') {
2820
+ options.slideBy = Math.min(options.slideBy, options.items);
2821
+ }
2822
+
2823
+ if (options.dots || options.slideBy == 'page') {
2824
+ this._pages = [];
2825
+
2826
+ for (i = lower, j = 0, k = 0; i < upper; i++) {
2827
+ if (j >= size || j === 0) {
2828
+ this._pages.push({
2829
+ start: i - lower,
2830
+ end: i - lower + size - 1
2831
+ });
2832
+ j = 0, ++k;
2833
+ }
2834
+ j += this._core.mergers(this._core.relative(i));
2835
+ }
2836
+ }
2837
+ }
2838
+
2839
+ /**
2840
+ * Draws the user interface.
2841
+ * @todo The option `dotData` wont work.
2842
+ * @protected
2843
+ */
2844
+ Navigation.prototype.draw = function() {
2845
+ var difference, i, html = '',
2846
+ options = this._core.settings,
2847
+ $items = this._core.$stage.children(),
2848
+ index = this._core.relative(this._core.current());
2849
+
2850
+ if (options.nav && !options.loop && !options.navRewind) {
2851
+ this._controls.$previous.toggleClass('disabled', index <= 0);
2852
+ this._controls.$next.toggleClass('disabled', index >= this._core.maximum());
2853
+ }
2854
+
2855
+ this._controls.$previous.toggle(options.nav);
2856
+ this._controls.$next.toggle(options.nav);
2857
+
2858
+ if (options.dots) {
2859
+ difference = this._pages.length - this._controls.$indicators.children().length;
2860
+
2861
+ if (options.dotData && difference !== 0) {
2862
+ for (i = 0; i < this._controls.$indicators.children().length; i++) {
2863
+ html += this._templates[this._core.relative(i)];
2864
+ }
2865
+ this._controls.$indicators.html(html);
2866
+ } else if (difference > 0) {
2867
+ html = new Array(difference + 1).join(this._templates[0]);
2868
+ this._controls.$indicators.append(html);
2869
+ } else if (difference < 0) {
2870
+ this._controls.$indicators.children().slice(difference).remove();
2871
+ }
2872
+
2873
+ this._controls.$indicators.find('.active').removeClass('active');
2874
+ this._controls.$indicators.children().eq($.inArray(this.current(), this._pages)).addClass('active');
2875
+ }
2876
+
2877
+ this._controls.$indicators.toggle(options.dots);
2878
+ }
2879
+
2880
+ /**
2881
+ * Extends event data.
2882
+ * @protected
2883
+ * @param {Event} event - The event object which gets thrown.
2884
+ */
2885
+ Navigation.prototype.onTrigger = function(event) {
2886
+ var settings = this._core.settings;
2887
+
2888
+ event.page = {
2889
+ index: $.inArray(this.current(), this._pages),
2890
+ count: this._pages.length,
2891
+ size: settings && (settings.center || settings.autoWidth || settings.dotData
2892
+ ? 1 : settings.dotsEach || settings.items)
2893
+ };
2894
+ }
2895
+
2896
+ /**
2897
+ * Gets the current page position of the carousel.
2898
+ * @protected
2899
+ * @returns {Number}
2900
+ */
2901
+ Navigation.prototype.current = function() {
2902
+ var index = this._core.relative(this._core.current());
2903
+ return $.grep(this._pages, function(o) {
2904
+ return o.start <= index && o.end >= index;
2905
+ }).pop();
2906
+ }
2907
+
2908
+ /**
2909
+ * Gets the current succesor/predecessor position.
2910
+ * @protected
2911
+ * @returns {Number}
2912
+ */
2913
+ Navigation.prototype.getPosition = function(successor) {
2914
+ var position, length,
2915
+ options = this._core.settings;
2916
+
2917
+ if (options.slideBy == 'page') {
2918
+ position = $.inArray(this.current(), this._pages);
2919
+ length = this._pages.length;
2920
+ successor ? ++position : --position;
2921
+ position = this._pages[((position % length) + length) % length].start;
2922
+ } else {
2923
+ position = this._core.relative(this._core.current());
2924
+ length = this._core.items().length;
2925
+ successor ? position += options.slideBy : position -= options.slideBy;
2926
+ }
2927
+ return position;
2928
+ }
2929
+
2930
+ /**
2931
+ * Slides to the next item or page.
2932
+ * @public
2933
+ * @param {Number} [speed=false] - The time in milliseconds for the transition.
2934
+ */
2935
+ Navigation.prototype.next = function(speed) {
2936
+ $.proxy(this._overrides.to, this._core)(this.getPosition(true), speed);
2937
+ }
2938
+
2939
+ /**
2940
+ * Slides to the previous item or page.
2941
+ * @public
2942
+ * @param {Number} [speed=false] - The time in milliseconds for the transition.
2943
+ */
2944
+ Navigation.prototype.prev = function(speed) {
2945
+ $.proxy(this._overrides.to, this._core)(this.getPosition(false), speed);
2946
+ }
2947
+
2948
+ /**
2949
+ * Slides to the specified item or page.
2950
+ * @public
2951
+ * @param {Number} position - The position of the item or page.
2952
+ * @param {Number} [speed] - The time in milliseconds for the transition.
2953
+ * @param {Boolean} [standard=false] - Whether to use the standard behaviour or not.
2954
+ */
2955
+ Navigation.prototype.to = function(position, speed, standard) {
2956
+ var length;
2957
+
2958
+ if (!standard) {
2959
+ length = this._pages.length;
2960
+ $.proxy(this._overrides.to, this._core)(this._pages[((position % length) + length) % length].start, speed);
2961
+ } else {
2962
+ $.proxy(this._overrides.to, this._core)(position, speed);
2963
+ }
2964
+ }
2965
+
2966
+ $.fn.owlCarousel.Constructor.Plugins.Navigation = Navigation;
2967
+
2968
+ })(window.Zepto || window.jQuery, window, document);
2969
+
2970
+ /**
2971
+ * Hash Plugin
2972
+ * @version 2.0.0
2973
+ * @author Artus Kolanowski
2974
+ * @license The MIT License (MIT)
2975
+ */
2976
+ ;(function($, window, document, undefined) {
2977
+ 'use strict';
2978
+
2979
+ /**
2980
+ * Creates the hash plugin.
2981
+ * @class The Hash Plugin
2982
+ * @param {Owl} carousel - The Owl Carousel
2983
+ */
2984
+ var Hash = function(carousel) {
2985
+ /**
2986
+ * Reference to the core.
2987
+ * @protected
2988
+ * @type {Owl}
2989
+ */
2990
+ this._core = carousel;
2991
+
2992
+ /**
2993
+ * Hash table for the hashes.
2994
+ * @protected
2995
+ * @type {Object}
2996
+ */
2997
+ this._hashes = {};
2998
+
2999
+ /**
3000
+ * The carousel element.
3001
+ * @type {jQuery}
3002
+ */
3003
+ this.$element = this._core.$element;
3004
+
3005
+ /**
3006
+ * All event handlers.
3007
+ * @protected
3008
+ * @type {Object}
3009
+ */
3010
+ this._handlers = {
3011
+ 'initialized.owl.carousel': $.proxy(function() {
3012
+ if (this._core.settings.startPosition == 'URLHash') {
3013
+ $(window).trigger('hashchange.owl.navigation');
3014
+ }
3015
+ }, this),
3016
+ 'prepared.owl.carousel': $.proxy(function(e) {
3017
+ var hash = $(e.content).find('[data-hash]').andSelf('[data-hash]').attr('data-hash');
3018
+ this._hashes[hash] = e.content;
3019
+ }, this)
3020
+ };
3021
+
3022
+ // set default options
3023
+ this._core.options = $.extend({}, Hash.Defaults, this._core.options);
3024
+
3025
+ // register the event handlers
3026
+ this.$element.on(this._handlers);
3027
+
3028
+ // register event listener for hash navigation
3029
+ $(window).on('hashchange.owl.navigation', $.proxy(function() {
3030
+ var hash = window.location.hash.substring(1),
3031
+ items = this._core.$stage.children(),
3032
+ position = this._hashes[hash] && items.index(this._hashes[hash]) || 0;
3033
+
3034
+ if (!hash) {
3035
+ return false;
3036
+ }
3037
+
3038
+ this._core.to(position, false, true);
3039
+ }, this));
3040
+ }
3041
+
3042
+ /**
3043
+ * Default options.
3044
+ * @public
3045
+ */
3046
+ Hash.Defaults = {
3047
+ URLhashListener: false
3048
+ }
3049
+
3050
+ /**
3051
+ * Destroys the plugin.
3052
+ * @public
3053
+ */
3054
+ Hash.prototype.destroy = function() {
3055
+ var handler, property;
3056
+
3057
+ $(window).off('hashchange.owl.navigation');
3058
+
3059
+ for (handler in this._handlers) {
3060
+ this._core.$element.off(handler, this._handlers[handler]);
3061
+ }
3062
+ for (property in Object.getOwnPropertyNames(this)) {
3063
+ typeof this[property] != 'function' && (this[property] = null);
3064
+ }
3065
+ }
3066
+
3067
+ $.fn.owlCarousel.Constructor.Plugins.Hash = Hash;
3068
+
3069
+ })(window.Zepto || window.jQuery, window, document);
js/owl.carousel.min.js ADDED
@@ -0,0 +1,2 @@
 
 
1
+ !function(a,b,c,d){function e(b,c){this.settings=null,this.options=a.extend({},e.Defaults,c),this.$element=a(b),this.drag=a.extend({},m),this.state=a.extend({},n),this.e=a.extend({},o),this._plugins={},this._supress={},this._current=null,this._speed=null,this._coordinates=[],this._breakpoint=null,this._width=null,this._items=[],this._clones=[],this._mergers=[],this._invalidated={},this._pipe=[],a.each(e.Plugins,a.proxy(function(a,b){this._plugins[a[0].toLowerCase()+a.slice(1)]=new b(this)},this)),a.each(e.Pipe,a.proxy(function(b,c){this._pipe.push({filter:c.filter,run:a.proxy(c.run,this)})},this)),this.setup(),this.initialize()}function f(a){if(a.touches!==d)return{x:a.touches[0].pageX,y:a.touches[0].pageY};if(a.touches===d){if(a.pageX!==d)return{x:a.pageX,y:a.pageY};if(a.pageX===d)return{x:a.clientX,y:a.clientY}}}function g(a){var b,d,e=c.createElement("div"),f=a;for(b in f)if(d=f[b],"undefined"!=typeof e.style[d])return e=null,[d,b];return[!1]}function h(){return g(["transition","WebkitTransition","MozTransition","OTransition"])[1]}function i(){return g(["transform","WebkitTransform","MozTransform","OTransform","msTransform"])[0]}function j(){return g(["perspective","webkitPerspective","MozPerspective","OPerspective","MsPerspective"])[0]}function k(){return"ontouchstart"in b||!!navigator.msMaxTouchPoints}function l(){return b.navigator.msPointerEnabled}var m,n,o;m={start:0,startX:0,startY:0,current:0,currentX:0,currentY:0,offsetX:0,offsetY:0,distance:null,startTime:0,endTime:0,updatedX:0,targetEl:null},n={isTouch:!1,isScrolling:!1,isSwiping:!1,direction:!1,inMotion:!1},o={_onDragStart:null,_onDragMove:null,_onDragEnd:null,_transitionEnd:null,_resizer:null,_responsiveCall:null,_goToLoop:null,_checkVisibile:null},e.Defaults={items:3,loop:!1,center:!1,mouseDrag:!0,touchDrag:!0,pullDrag:!0,freeDrag:!1,margin:0,stagePadding:0,merge:!1,mergeFit:!0,autoWidth:!1,startPosition:0,rtl:!1,smartSpeed:250,fluidSpeed:!1,dragEndSpeed:!1,responsive:{},responsiveRefreshRate:200,responsiveBaseElement:b,responsiveClass:!1,fallbackEasing:"swing",info:!1,nestedItemSelector:!1,itemElement:"div",stageElement:"div",themeClass:"owl-theme",baseClass:"owl-carousel",itemClass:"owl-item",centerClass:"center",activeClass:"active"},e.Width={Default:"default",Inner:"inner",Outer:"outer"},e.Plugins={},e.Pipe=[{filter:["width","items","settings"],run:function(a){a.current=this._items&&this._items[this.relative(this._current)]}},{filter:["items","settings"],run:function(){var a=this._clones,b=this.$stage.children(".cloned");(b.length!==a.length||!this.settings.loop&&a.length>0)&&(this.$stage.children(".cloned").remove(),this._clones=[])}},{filter:["items","settings"],run:function(){var a,b,c=this._clones,d=this._items,e=this.settings.loop?c.length-Math.max(2*this.settings.items,4):0;for(a=0,b=Math.abs(e/2);b>a;a++)e>0?(this.$stage.children().eq(d.length+c.length-1).remove(),c.pop(),this.$stage.children().eq(0).remove(),c.pop()):(c.push(c.length/2),this.$stage.append(d[c[c.length-1]].clone().addClass("cloned")),c.push(d.length-1-(c.length-1)/2),this.$stage.prepend(d[c[c.length-1]].clone().addClass("cloned")))}},{filter:["width","items","settings"],run:function(){var a,b,c,d=this.settings.rtl?1:-1,e=(this.width()/this.settings.items).toFixed(3),f=0;for(this._coordinates=[],b=0,c=this._clones.length+this._items.length;c>b;b++)a=this._mergers[this.relative(b)],a=this.settings.mergeFit&&Math.min(a,this.settings.items)||a,f+=(this.settings.autoWidth?this._items[this.relative(b)].width()+this.settings.margin:e*a)*d,this._coordinates.push(f)}},{filter:["width","items","settings"],run:function(){var b,c,d=(this.width()/this.settings.items).toFixed(3),e={width:Math.abs(this._coordinates[this._coordinates.length-1])+2*this.settings.stagePadding,"padding-left":this.settings.stagePadding||"","padding-right":this.settings.stagePadding||""};if(this.$stage.css(e),e={width:this.settings.autoWidth?"auto":d-this.settings.margin},e[this.settings.rtl?"margin-left":"margin-right"]=this.settings.margin,!this.settings.autoWidth&&a.grep(this._mergers,function(a){return a>1}).length>0)for(b=0,c=this._coordinates.length;c>b;b++)e.width=Math.abs(this._coordinates[b])-Math.abs(this._coordinates[b-1]||0)-this.settings.margin,this.$stage.children().eq(b).css(e);else this.$stage.children().css(e)}},{filter:["width","items","settings"],run:function(a){a.current&&this.reset(this.$stage.children().index(a.current))}},{filter:["position"],run:function(){this.animate(this.coordinates(this._current))}},{filter:["width","position","items","settings"],run:function(){var a,b,c,d,e=this.settings.rtl?1:-1,f=2*this.settings.stagePadding,g=this.coordinates(this.current())+f,h=g+this.width()*e,i=[];for(c=0,d=this._coordinates.length;d>c;c++)a=this._coordinates[c-1]||0,b=Math.abs(this._coordinates[c])+f*e,(this.op(a,"<=",g)&&this.op(a,">",h)||this.op(b,"<",g)&&this.op(b,">",h))&&i.push(c);this.$stage.children("."+this.settings.activeClass).removeClass(this.settings.activeClass),this.$stage.children(":eq("+i.join("), :eq(")+")").addClass(this.settings.activeClass),this.settings.center&&(this.$stage.children("."+this.settings.centerClass).removeClass(this.settings.centerClass),this.$stage.children().eq(this.current()).addClass(this.settings.centerClass))}}],e.prototype.initialize=function(){if(this.trigger("initialize"),this.$element.addClass(this.settings.baseClass).addClass(this.settings.themeClass).toggleClass("owl-rtl",this.settings.rtl),this.browserSupport(),this.settings.autoWidth&&this.state.imagesLoaded!==!0){var b,c,e;if(b=this.$element.find("img"),c=this.settings.nestedItemSelector?"."+this.settings.nestedItemSelector:d,e=this.$element.children(c).width(),b.length&&0>=e)return this.preloadAutoWidthImages(b),!1}this.$element.addClass("owl-loading"),this.$stage=a("<"+this.settings.stageElement+' class="owl-stage"/>').wrap('<div class="owl-stage-outer">'),this.$element.append(this.$stage.parent()),this.replace(this.$element.children().not(this.$stage.parent())),this._width=this.$element.width(),this.refresh(),this.$element.removeClass("owl-loading").addClass("owl-loaded"),this.eventsCall(),this.internalEvents(),this.addTriggerableEvents(),this.trigger("initialized")},e.prototype.setup=function(){var b=this.viewport(),c=this.options.responsive,d=-1,e=null;c?(a.each(c,function(a){b>=a&&a>d&&(d=Number(a))}),e=a.extend({},this.options,c[d]),delete e.responsive,e.responsiveClass&&this.$element.attr("class",function(a,b){return b.replace(/\b owl-responsive-\S+/g,"")}).addClass("owl-responsive-"+d)):e=a.extend({},this.options),(null===this.settings||this._breakpoint!==d)&&(this.trigger("change",{property:{name:"settings",value:e}}),this._breakpoint=d,this.settings=e,this.invalidate("settings"),this.trigger("changed",{property:{name:"settings",value:this.settings}}))},e.prototype.optionsLogic=function(){this.$element.toggleClass("owl-center",this.settings.center),this.settings.loop&&this._items.length<this.settings.items&&(this.settings.loop=!1),this.settings.autoWidth&&(this.settings.stagePadding=!1,this.settings.merge=!1)},e.prototype.prepare=function(b){var c=this.trigger("prepare",{content:b});return c.data||(c.data=a("<"+this.settings.itemElement+"/>").addClass(this.settings.itemClass).append(b)),this.trigger("prepared",{content:c.data}),c.data},e.prototype.update=function(){for(var b=0,c=this._pipe.length,d=a.proxy(function(a){return this[a]},this._invalidated),e={};c>b;)(this._invalidated.all||a.grep(this._pipe[b].filter,d).length>0)&&this._pipe[b].run(e),b++;this._invalidated={}},e.prototype.width=function(a){switch(a=a||e.Width.Default){case e.Width.Inner:case e.Width.Outer:return this._width;default:return this._width-2*this.settings.stagePadding+this.settings.margin}},e.prototype.refresh=function(){if(0===this._items.length)return!1;(new Date).getTime();this.trigger("refresh"),this.setup(),this.optionsLogic(),this.$stage.addClass("owl-refresh"),this.update(),this.$stage.removeClass("owl-refresh"),this.state.orientation=b.orientation,this.watchVisibility(),this.trigger("refreshed")},e.prototype.eventsCall=function(){this.e._onDragStart=a.proxy(function(a){this.onDragStart(a)},this),this.e._onDragMove=a.proxy(function(a){this.onDragMove(a)},this),this.e._onDragEnd=a.proxy(function(a){this.onDragEnd(a)},this),this.e._onResize=a.proxy(function(a){this.onResize(a)},this),this.e._transitionEnd=a.proxy(function(a){this.transitionEnd(a)},this),this.e._preventClick=a.proxy(function(a){this.preventClick(a)},this)},e.prototype.onThrottledResize=function(){b.clearTimeout(this.resizeTimer),this.resizeTimer=b.setTimeout(this.e._onResize,this.settings.responsiveRefreshRate)},e.prototype.onResize=function(){return this._items.length?this._width===this.$element.width()?!1:this.trigger("resize").isDefaultPrevented()?!1:(this._width=this.$element.width(),this.invalidate("width"),this.refresh(),void this.trigger("resized")):!1},e.prototype.eventsRouter=function(a){var b=a.type;"mousedown"===b||"touchstart"===b?this.onDragStart(a):"mousemove"===b||"touchmove"===b?this.onDragMove(a):"mouseup"===b||"touchend"===b?this.onDragEnd(a):"touchcancel"===b&&this.onDragEnd(a)},e.prototype.internalEvents=function(){var c=(k(),l());this.settings.mouseDrag?(this.$stage.on("mousedown",a.proxy(function(a){this.eventsRouter(a)},this)),this.$stage.on("dragstart",function(){return!1}),this.$stage.get(0).onselectstart=function(){return!1}):this.$element.addClass("owl-text-select-on"),this.settings.touchDrag&&!c&&this.$stage.on("touchstart touchcancel",a.proxy(function(a){this.eventsRouter(a)},this)),this.transitionEndVendor&&this.on(this.$stage.get(0),this.transitionEndVendor,this.e._transitionEnd,!1),this.settings.responsive!==!1&&this.on(b,"resize",a.proxy(this.onThrottledResize,this))},e.prototype.onDragStart=function(d){var e,g,h,i;if(e=d.originalEvent||d||b.event,3===e.which||this.state.isTouch)return!1;if("mousedown"===e.type&&this.$stage.addClass("owl-grab"),this.trigger("drag"),this.drag.startTime=(new Date).getTime(),this.speed(0),this.state.isTouch=!0,this.state.isScrolling=!1,this.state.isSwiping=!1,this.drag.distance=0,g=f(e).x,h=f(e).y,this.drag.offsetX=this.$stage.position().left,this.drag.offsetY=this.$stage.position().top,this.settings.rtl&&(this.drag.offsetX=this.$stage.position().left+this.$stage.width()-this.width()+this.settings.margin),this.state.inMotion&&this.support3d)i=this.getTransformProperty(),this.drag.offsetX=i,this.animate(i),this.state.inMotion=!0;else if(this.state.inMotion&&!this.support3d)return this.state.inMotion=!1,!1;this.drag.startX=g-this.drag.offsetX,this.drag.startY=h-this.drag.offsetY,this.drag.start=g-this.drag.startX,this.drag.targetEl=e.target||e.srcElement,this.drag.updatedX=this.drag.start,("IMG"===this.drag.targetEl.tagName||"A"===this.drag.targetEl.tagName)&&(this.drag.targetEl.draggable=!1),a(c).on("mousemove.owl.dragEvents mouseup.owl.dragEvents touchmove.owl.dragEvents touchend.owl.dragEvents",a.proxy(function(a){this.eventsRouter(a)},this))},e.prototype.onDragMove=function(a){var c,e,g,h,i,j;this.state.isTouch&&(this.state.isScrolling||(c=a.originalEvent||a||b.event,e=f(c).x,g=f(c).y,this.drag.currentX=e-this.drag.startX,this.drag.currentY=g-this.drag.startY,this.drag.distance=this.drag.currentX-this.drag.offsetX,this.drag.distance<0?this.state.direction=this.settings.rtl?"right":"left":this.drag.distance>0&&(this.state.direction=this.settings.rtl?"left":"right"),this.settings.loop?this.op(this.drag.currentX,">",this.coordinates(this.minimum()))&&"right"===this.state.direction?this.drag.currentX-=(this.settings.center&&this.coordinates(0))-this.coordinates(this._items.length):this.op(this.drag.currentX,"<",this.coordinates(this.maximum()))&&"left"===this.state.direction&&(this.drag.currentX+=(this.settings.center&&this.coordinates(0))-this.coordinates(this._items.length)):(h=this.coordinates(this.settings.rtl?this.maximum():this.minimum()),i=this.coordinates(this.settings.rtl?this.minimum():this.maximum()),j=this.settings.pullDrag?this.drag.distance/5:0,this.drag.currentX=Math.max(Math.min(this.drag.currentX,h+j),i+j)),(this.drag.distance>8||this.drag.distance<-8)&&(c.preventDefault!==d?c.preventDefault():c.returnValue=!1,this.state.isSwiping=!0),this.drag.updatedX=this.drag.currentX,(this.drag.currentY>16||this.drag.currentY<-16)&&this.state.isSwiping===!1&&(this.state.isScrolling=!0,this.drag.updatedX=this.drag.start),this.animate(this.drag.updatedX)))},e.prototype.onDragEnd=function(b){var d,e,f;if(this.state.isTouch){if("mouseup"===b.type&&this.$stage.removeClass("owl-grab"),this.trigger("dragged"),this.drag.targetEl.removeAttribute("draggable"),this.state.isTouch=!1,this.state.isScrolling=!1,this.state.isSwiping=!1,0===this.drag.distance&&this.state.inMotion!==!0)return this.state.inMotion=!1,!1;this.drag.endTime=(new Date).getTime(),d=this.drag.endTime-this.drag.startTime,e=Math.abs(this.drag.distance),(e>3||d>300)&&this.removeClick(this.drag.targetEl),f=this.closest(this.drag.updatedX),this.speed(this.settings.dragEndSpeed||this.settings.smartSpeed),this.current(f),this.invalidate("position"),this.update(),this.settings.pullDrag||this.drag.updatedX!==this.coordinates(f)||this.transitionEnd(),this.drag.distance=0,a(c).off(".owl.dragEvents")}},e.prototype.removeClick=function(c){this.drag.targetEl=c,a(c).on("click.preventClick",this.e._preventClick),b.setTimeout(function(){a(c).off("click.preventClick")},300)},e.prototype.preventClick=function(b){b.preventDefault?b.preventDefault():b.returnValue=!1,b.stopPropagation&&b.stopPropagation(),a(b.target).off("click.preventClick")},e.prototype.getTransformProperty=function(){var a,c;return a=b.getComputedStyle(this.$stage.get(0),null).getPropertyValue(this.vendorName+"transform"),a=a.replace(/matrix(3d)?\(|\)/g,"").split(","),c=16===a.length,c!==!0?a[4]:a[12]},e.prototype.closest=function(b){var c=-1,d=30,e=this.width(),f=this.coordinates();return this.settings.freeDrag||a.each(f,a.proxy(function(a,g){return b>g-d&&g+d>b?c=a:this.op(b,"<",g)&&this.op(b,">",f[a+1]||g-e)&&(c="left"===this.state.direction?a+1:a),-1===c},this)),this.settings.loop||(this.op(b,">",f[this.minimum()])?c=b=this.minimum():this.op(b,"<",f[this.maximum()])&&(c=b=this.maximum())),c},e.prototype.animate=function(b){this.trigger("translate"),this.state.inMotion=this.speed()>0,this.support3d?this.$stage.css({transform:"translate3d("+b+"px,0px, 0px)",transition:this.speed()/1e3+"s"}):this.state.isTouch?this.$stage.css({left:b+"px"}):this.$stage.animate({left:b},this.speed()/1e3,this.settings.fallbackEasing,a.proxy(function(){this.state.inMotion&&this.transitionEnd()},this))},e.prototype.current=function(a){if(a===d)return this._current;if(0===this._items.length)return d;if(a=this.normalize(a),this._current!==a){var b=this.trigger("change",{property:{name:"position",value:a}});b.data!==d&&(a=this.normalize(b.data)),this._current=a,this.invalidate("position"),this.trigger("changed",{property:{name:"position",value:this._current}})}return this._current},e.prototype.invalidate=function(a){this._invalidated[a]=!0},e.prototype.reset=function(a){a=this.normalize(a),a!==d&&(this._speed=0,this._current=a,this.suppress(["translate","translated"]),this.animate(this.coordinates(a)),this.release(["translate","translated"]))},e.prototype.normalize=function(b,c){var e=c?this._items.length:this._items.length+this._clones.length;return!a.isNumeric(b)||1>e?d:b=this._clones.length?(b%e+e)%e:Math.max(this.minimum(c),Math.min(this.maximum(c),b))},e.prototype.relative=function(a){return a=this.normalize(a),a-=this._clones.length/2,this.normalize(a,!0)},e.prototype.maximum=function(a){var b,c,d,e=0,f=this.settings;if(a)return this._items.length-1;if(!f.loop&&f.center)b=this._items.length-1;else if(f.loop||f.center)if(f.loop||f.center)b=this._items.length+f.items;else{if(!f.autoWidth&&!f.merge)throw"Can not detect maximum absolute position.";for(revert=f.rtl?1:-1,c=this.$stage.width()-this.$element.width();(d=this.coordinates(e))&&!(d*revert>=c);)b=++e}else b=this._items.length-f.items;return b},e.prototype.minimum=function(a){return a?0:this._clones.length/2},e.prototype.items=function(a){return a===d?this._items.slice():(a=this.normalize(a,!0),this._items[a])},e.prototype.mergers=function(a){return a===d?this._mergers.slice():(a=this.normalize(a,!0),this._mergers[a])},e.prototype.clones=function(b){var c=this._clones.length/2,e=c+this._items.length,f=function(a){return a%2===0?e+a/2:c-(a+1)/2};return b===d?a.map(this._clones,function(a,b){return f(b)}):a.map(this._clones,function(a,c){return a===b?f(c):null})},e.prototype.speed=function(a){return a!==d&&(this._speed=a),this._speed},e.prototype.coordinates=function(b){var c=null;return b===d?a.map(this._coordinates,a.proxy(function(a,b){return this.coordinates(b)},this)):(this.settings.center?(c=this._coordinates[b],c+=(this.width()-c+(this._coordinates[b-1]||0))/2*(this.settings.rtl?-1:1)):c=this._coordinates[b-1]||0,c)},e.prototype.duration=function(a,b,c){return Math.min(Math.max(Math.abs(b-a),1),6)*Math.abs(c||this.settings.smartSpeed)},e.prototype.to=function(c,d){if(this.settings.loop){var e=c-this.relative(this.current()),f=this.current(),g=this.current(),h=this.current()+e,i=0>g-h?!0:!1,j=this._clones.length+this._items.length;h<this.settings.items&&i===!1?(f=g+this._items.length,this.reset(f)):h>=j-this.settings.items&&i===!0&&(f=g-this._items.length,this.reset(f)),b.clearTimeout(this.e._goToLoop),this.e._goToLoop=b.setTimeout(a.proxy(function(){this.speed(this.duration(this.current(),f+e,d)),this.current(f+e),this.update()},this),30)}else this.speed(this.duration(this.current(),c,d)),this.current(c),this.update()},e.prototype.next=function(a){a=a||!1,this.to(this.relative(this.current())+1,a)},e.prototype.prev=function(a){a=a||!1,this.to(this.relative(this.current())-1,a)},e.prototype.transitionEnd=function(a){return a!==d&&(a.stopPropagation(),(a.target||a.srcElement||a.originalTarget)!==this.$stage.get(0))?!1:(this.state.inMotion=!1,void this.trigger("translated"))},e.prototype.viewport=function(){var d;if(this.options.responsiveBaseElement!==b)d=a(this.options.responsiveBaseElement).width();else if(b.innerWidth)d=b.innerWidth;else{if(!c.documentElement||!c.documentElement.clientWidth)throw"Can not detect viewport width.";d=c.documentElement.clientWidth}return d},e.prototype.replace=function(b){this.$stage.empty(),this._items=[],b&&(b=b instanceof jQuery?b:a(b)),this.settings.nestedItemSelector&&(b=b.find("."+this.settings.nestedItemSelector)),b.filter(function(){return 1===this.nodeType}).each(a.proxy(function(a,b){b=this.prepare(b),this.$stage.append(b),this._items.push(b),this._mergers.push(1*b.find("[data-merge]").andSelf("[data-merge]").attr("data-merge")||1)},this)),this.reset(a.isNumeric(this.settings.startPosition)?this.settings.startPosition:0),this.invalidate("items")},e.prototype.add=function(a,b){b=b===d?this._items.length:this.normalize(b,!0),this.trigger("add",{content:a,position:b}),0===this._items.length||b===this._items.length?(this.$stage.append(a),this._items.push(a),this._mergers.push(1*a.find("[data-merge]").andSelf("[data-merge]").attr("data-merge")||1)):(this._items[b].before(a),this._items.splice(b,0,a),this._mergers.splice(b,0,1*a.find("[data-merge]").andSelf("[data-merge]").attr("data-merge")||1)),this.invalidate("items"),this.trigger("added",{content:a,position:b})},e.prototype.remove=function(a){a=this.normalize(a,!0),a!==d&&(this.trigger("remove",{content:this._items[a],position:a}),this._items[a].remove(),this._items.splice(a,1),this._mergers.splice(a,1),this.invalidate("items"),this.trigger("removed",{content:null,position:a}))},e.prototype.addTriggerableEvents=function(){var b=a.proxy(function(b,c){return a.proxy(function(a){a.relatedTarget!==this&&(this.suppress([c]),b.apply(this,[].slice.call(arguments,1)),this.release([c]))},this)},this);a.each({next:this.next,prev:this.prev,to:this.to,destroy:this.destroy,refresh:this.refresh,replace:this.replace,add:this.add,remove:this.remove},a.proxy(function(a,c){this.$element.on(a+".owl.carousel",b(c,a+".owl.carousel"))},this))},e.prototype.watchVisibility=function(){function c(a){return a.offsetWidth>0&&a.offsetHeight>0}function d(){c(this.$element.get(0))&&(this.$element.removeClass("owl-hidden"),this.refresh(),b.clearInterval(this.e._checkVisibile))}c(this.$element.get(0))||(this.$element.addClass("owl-hidden"),b.clearInterval(this.e._checkVisibile),this.e._checkVisibile=b.setInterval(a.proxy(d,this),500))},e.prototype.preloadAutoWidthImages=function(b){var c,d,e,f;c=0,d=this,b.each(function(g,h){e=a(h),f=new Image,f.onload=function(){c++,e.attr("src",f.src),e.css("opacity",1),c>=b.length&&(d.state.imagesLoaded=!0,d.initialize())},f.src=e.attr("src")||e.attr("data-src")||e.attr("data-src-retina")})},e.prototype.destroy=function(){this.$element.hasClass(this.settings.themeClass)&&this.$element.removeClass(this.settings.themeClass),this.settings.responsive!==!1&&a(b).off("resize.owl.carousel"),this.transitionEndVendor&&this.off(this.$stage.get(0),this.transitionEndVendor,this.e._transitionEnd);for(var d in this._plugins)this._plugins[d].destroy();(this.settings.mouseDrag||this.settings.touchDrag)&&(this.$stage.off("mousedown touchstart touchcancel"),a(c).off(".owl.dragEvents"),this.$stage.get(0).onselectstart=function(){},this.$stage.off("dragstart",function(){return!1})),this.$element.off(".owl"),this.$stage.children(".cloned").remove(),this.e=null,this.$element.removeData("owlCarousel"),this.$stage.children().contents().unwrap(),this.$stage.children().unwrap(),this.$stage.unwrap()},e.prototype.op=function(a,b,c){var d=this.settings.rtl;switch(b){case"<":return d?a>c:c>a;case">":return d?c>a:a>c;case">=":return d?c>=a:a>=c;case"<=":return d?a>=c:c>=a}},e.prototype.on=function(a,b,c,d){a.addEventListener?a.addEventListener(b,c,d):a.attachEvent&&a.attachEvent("on"+b,c)},e.prototype.off=function(a,b,c,d){a.removeEventListener?a.removeEventListener(b,c,d):a.detachEvent&&a.detachEvent("on"+b,c)},e.prototype.trigger=function(b,c,d){var e={item:{count:this._items.length,index:this.current()}},f=a.camelCase(a.grep(["on",b,d],function(a){return a}).join("-").toLowerCase()),g=a.Event([b,"owl",d||"carousel"].join(".").toLowerCase(),a.extend({relatedTarget:this},e,c));return this._supress[b]||(a.each(this._plugins,function(a,b){b.onTrigger&&b.onTrigger(g)}),this.$element.trigger(g),this.settings&&"function"==typeof this.settings[f]&&this.settings[f].apply(this,g)),g},e.prototype.suppress=function(b){a.each(b,a.proxy(function(a,b){this._supress[b]=!0},this))},e.prototype.release=function(b){a.each(b,a.proxy(function(a,b){delete this._supress[b]},this))},e.prototype.browserSupport=function(){if(this.support3d=j(),this.support3d){this.transformVendor=i();var a=["transitionend","webkitTransitionEnd","transitionend","oTransitionEnd"];this.transitionEndVendor=a[h()],this.vendorName=this.transformVendor.replace(/Transform/i,""),this.vendorName=""!==this.vendorName?"-"+this.vendorName.toLowerCase()+"-":""}this.state.orientation=b.orientation},a.fn.owlCarousel=function(b){return this.each(function(){a(this).data("owlCarousel")||a(this).data("owlCarousel",new e(this,b))})},a.fn.owlCarousel.Constructor=e}(window.Zepto||window.jQuery,window,document),function(a,b){var c=function(b){this._core=b,this._loaded=[],this._handlers={"initialized.owl.carousel change.owl.carousel":a.proxy(function(b){if(b.namespace&&this._core.settings&&this._core.settings.lazyLoad&&(b.property&&"position"==b.property.name||"initialized"==b.type))for(var c=this._core.settings,d=c.center&&Math.ceil(c.items/2)||c.items,e=c.center&&-1*d||0,f=(b.property&&b.property.value||this._core.current())+e,g=this._core.clones().length,h=a.proxy(function(a,b){this.load(b)},this);e++<d;)this.load(g/2+this._core.relative(f)),g&&a.each(this._core.clones(this._core.relative(f++)),h)},this)},this._core.options=a.extend({},c.Defaults,this._core.options),this._core.$element.on(this._handlers)};c.Defaults={lazyLoad:!1},c.prototype.load=function(c){var d=this._core.$stage.children().eq(c),e=d&&d.find(".owl-lazy");!e||a.inArray(d.get(0),this._loaded)>-1||(e.each(a.proxy(function(c,d){var e,f=a(d),g=b.devicePixelRatio>1&&f.attr("data-src-retina")||f.attr("data-src");this._core.trigger("load",{element:f,url:g},"lazy"),f.is("img")?f.one("load.owl.lazy",a.proxy(function(){f.css("opacity",1),this._core.trigger("loaded",{element:f,url:g},"lazy")},this)).attr("src",g):(e=new Image,e.onload=a.proxy(function(){f.css({"background-image":"url("+g+")",opacity:"1"}),this._core.trigger("loaded",{element:f,url:g},"lazy")},this),e.src=g)},this)),this._loaded.push(d.get(0)))},c.prototype.destroy=function(){var a,b;for(a in this.handlers)this._core.$element.off(a,this.handlers[a]);for(b in Object.getOwnPropertyNames(this))"function"!=typeof this[b]&&(this[b]=null)},a.fn.owlCarousel.Constructor.Plugins.Lazy=c}(window.Zepto||window.jQuery,window,document),function(a){var b=function(c){this._core=c,this._handlers={"initialized.owl.carousel":a.proxy(function(){this._core.settings.autoHeight&&this.update()},this),"changed.owl.carousel":a.proxy(function(a){this._core.settings.autoHeight&&"position"==a.property.name&&this.update()},this),"loaded.owl.lazy":a.proxy(function(a){this._core.settings.autoHeight&&a.element.closest("."+this._core.settings.itemClass)===this._core.$stage.children().eq(this._core.current())&&this.update()},this)},this._core.options=a.extend({},b.Defaults,this._core.options),this._core.$element.on(this._handlers)};b.Defaults={autoHeight:!1,autoHeightClass:"owl-height"},b.prototype.update=function(){this._core.$stage.parent().height(this._core.$stage.children().eq(this._core.current()).height()).addClass(this._core.settings.autoHeightClass)},b.prototype.destroy=function(){var a,b;for(a in this._handlers)this._core.$element.off(a,this._handlers[a]);for(b in Object.getOwnPropertyNames(this))"function"!=typeof this[b]&&(this[b]=null)},a.fn.owlCarousel.Constructor.Plugins.AutoHeight=b}(window.Zepto||window.jQuery,window,document),function(a,b,c){var d=function(b){this._core=b,this._videos={},this._playing=null,this._fullscreen=!1,this._handlers={"resize.owl.carousel":a.proxy(function(a){this._core.settings.video&&!this.isInFullScreen()&&a.preventDefault()},this),"refresh.owl.carousel changed.owl.carousel":a.proxy(function(){this._playing&&this.stop()},this),"prepared.owl.carousel":a.proxy(function(b){var c=a(b.content).find(".owl-video");c.length&&(c.css("display","none"),this.fetch(c,a(b.content)))},this)},this._core.options=a.extend({},d.Defaults,this._core.options),this._core.$element.on(this._handlers),this._core.$element.on("click.owl.video",".owl-video-play-icon",a.proxy(function(a){this.play(a)},this))};d.Defaults={video:!1,videoHeight:!1,videoWidth:!1},d.prototype.fetch=function(a,b){var c=a.attr("data-vimeo-id")?"vimeo":"youtube",d=a.attr("data-vimeo-id")||a.attr("data-youtube-id"),e=a.attr("data-width")||this._core.settings.videoWidth,f=a.attr("data-height")||this._core.settings.videoHeight,g=a.attr("href");if(!g)throw new Error("Missing video URL.");if(d=g.match(/(http:|https:|)\/\/(player.|www.)?(vimeo\.com|youtu(be\.com|\.be|be\.googleapis\.com))\/(video\/|embed\/|watch\?v=|v\/)?([A-Za-z0-9._%-]*)(\&\S+)?/),d[3].indexOf("youtu")>-1)c="youtube";else{if(!(d[3].indexOf("vimeo")>-1))throw new Error("Video URL not supported.");c="vimeo"}d=d[6],this._videos[g]={type:c,id:d,width:e,height:f},b.attr("data-video",g),this.thumbnail(a,this._videos[g])},d.prototype.thumbnail=function(b,c){var d,e,f,g=c.width&&c.height?'style="width:'+c.width+"px;height:"+c.height+'px;"':"",h=b.find("img"),i="src",j="",k=this._core.settings,l=function(a){e='<div class="owl-video-play-icon"></div>',d=k.lazyLoad?'<div class="owl-video-tn '+j+'" '+i+'="'+a+'"></div>':'<div class="owl-video-tn" style="opacity:1;background-image:url('+a+')"></div>',b.after(d),b.after(e)};return b.wrap('<div class="owl-video-wrapper"'+g+"></div>"),this._core.settings.lazyLoad&&(i="data-src",j="owl-lazy"),h.length?(l(h.attr(i)),h.remove(),!1):void("youtube"===c.type?(f="http://img.youtube.com/vi/"+c.id+"/hqdefault.jpg",l(f)):"vimeo"===c.type&&a.ajax({type:"GET",url:"http://vimeo.com/api/v2/video/"+c.id+".json",jsonp:"callback",dataType:"jsonp",success:function(a){f=a[0].thumbnail_large,l(f)}}))},d.prototype.stop=function(){this._core.trigger("stop",null,"video"),this._playing.find(".owl-video-frame").remove(),this._playing.removeClass("owl-video-playing"),this._playing=null},d.prototype.play=function(b){this._core.trigger("play",null,"video"),this._playing&&this.stop();var c,d,e=a(b.target||b.srcElement),f=e.closest("."+this._core.settings.itemClass),g=this._videos[f.attr("data-video")],h=g.width||"100%",i=g.height||this._core.$stage.height();"youtube"===g.type?c='<iframe width="'+h+'" height="'+i+'" src="http://www.youtube.com/embed/'+g.id+"?autoplay=1&v="+g.id+'" frameborder="0" allowfullscreen></iframe>':"vimeo"===g.type&&(c='<iframe src="http://player.vimeo.com/video/'+g.id+'?autoplay=1" width="'+h+'" height="'+i+'" frameborder="0" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe>'),f.addClass("owl-video-playing"),this._playing=f,d=a('<div style="height:'+i+"px; width:"+h+'px" class="owl-video-frame">'+c+"</div>"),e.after(d)},d.prototype.isInFullScreen=function(){var d=c.fullscreenElement||c.mozFullScreenElement||c.webkitFullscreenElement;return d&&a(d).parent().hasClass("owl-video-frame")&&(this._core.speed(0),this._fullscreen=!0),d&&this._fullscreen&&this._playing?!1:this._fullscreen?(this._fullscreen=!1,!1):this._playing&&this._core.state.orientation!==b.orientation?(this._core.state.orientation=b.orientation,!1):!0},d.prototype.destroy=function(){var a,b;this._core.$element.off("click.owl.video");for(a in this._handlers)this._core.$element.off(a,this._handlers[a]);for(b in Object.getOwnPropertyNames(this))"function"!=typeof this[b]&&(this[b]=null)},a.fn.owlCarousel.Constructor.Plugins.Video=d}(window.Zepto||window.jQuery,window,document),function(a,b,c,d){var e=function(b){this.core=b,this.core.options=a.extend({},e.Defaults,this.core.options),this.swapping=!0,this.previous=d,this.next=d,this.handlers={"change.owl.carousel":a.proxy(function(a){"position"==a.property.name&&(this.previous=this.core.current(),this.next=a.property.value)},this),"drag.owl.carousel dragged.owl.carousel translated.owl.carousel":a.proxy(function(a){this.swapping="translated"==a.type},this),"translate.owl.carousel":a.proxy(function(){this.swapping&&(this.core.options.animateOut||this.core.options.animateIn)&&this.swap()},this)},this.core.$element.on(this.handlers)};e.Defaults={animateOut:!1,animateIn:!1},e.prototype.swap=function(){if(1===this.core.settings.items&&this.core.support3d){this.core.speed(0);var b,c=a.proxy(this.clear,this),d=this.core.$stage.children().eq(this.previous),e=this.core.$stage.children().eq(this.next),f=this.core.settings.animateIn,g=this.core.settings.animateOut;this.core.current()!==this.previous&&(g&&(b=this.core.coordinates(this.previous)-this.core.coordinates(this.next),d.css({left:b+"px"}).addClass("animated owl-animated-out").addClass(g).one("webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend",c)),f&&e.addClass("animated owl-animated-in").addClass(f).one("webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend",c))}},e.prototype.clear=function(b){a(b.target).css({left:""}).removeClass("animated owl-animated-out owl-animated-in").removeClass(this.core.settings.animateIn).removeClass(this.core.settings.animateOut),this.core.transitionEnd()},e.prototype.destroy=function(){var a,b;for(a in this.handlers)this.core.$element.off(a,this.handlers[a]);for(b in Object.getOwnPropertyNames(this))"function"!=typeof this[b]&&(this[b]=null)},a.fn.owlCarousel.Constructor.Plugins.Animate=e}(window.Zepto||window.jQuery,window,document),function(a,b,c){var d=function(b){this.core=b,this.core.options=a.extend({},d.Defaults,this.core.options),this.handlers={"translated.owl.carousel refreshed.owl.carousel":a.proxy(function(){this.autoplay()
2
+ },this),"play.owl.autoplay":a.proxy(function(a,b,c){this.play(b,c)},this),"stop.owl.autoplay":a.proxy(function(){this.stop()},this),"mouseover.owl.autoplay":a.proxy(function(){this.core.settings.autoplayHoverPause&&this.pause()},this),"mouseleave.owl.autoplay":a.proxy(function(){this.core.settings.autoplayHoverPause&&this.autoplay()},this)},this.core.$element.on(this.handlers)};d.Defaults={autoplay:!1,autoplayTimeout:5e3,autoplayHoverPause:!1,autoplaySpeed:!1},d.prototype.autoplay=function(){this.core.settings.autoplay&&!this.core.state.videoPlay?(b.clearInterval(this.interval),this.interval=b.setInterval(a.proxy(function(){this.play()},this),this.core.settings.autoplayTimeout)):b.clearInterval(this.interval)},d.prototype.play=function(){return c.hidden===!0||this.core.state.isTouch||this.core.state.isScrolling||this.core.state.isSwiping||this.core.state.inMotion?void 0:this.core.settings.autoplay===!1?void b.clearInterval(this.interval):void this.core.next(this.core.settings.autoplaySpeed)},d.prototype.stop=function(){b.clearInterval(this.interval)},d.prototype.pause=function(){b.clearInterval(this.interval)},d.prototype.destroy=function(){var a,c;b.clearInterval(this.interval);for(a in this.handlers)this.core.$element.off(a,this.handlers[a]);for(c in Object.getOwnPropertyNames(this))"function"!=typeof this[c]&&(this[c]=null)},a.fn.owlCarousel.Constructor.Plugins.autoplay=d}(window.Zepto||window.jQuery,window,document),function(a){"use strict";var b=function(c){this._core=c,this._initialized=!1,this._pages=[],this._controls={},this._templates=[],this.$element=this._core.$element,this._overrides={next:this._core.next,prev:this._core.prev,to:this._core.to},this._handlers={"prepared.owl.carousel":a.proxy(function(b){this._core.settings.dotsData&&this._templates.push(a(b.content).find("[data-dot]").andSelf("[data-dot]").attr("data-dot"))},this),"add.owl.carousel":a.proxy(function(b){this._core.settings.dotsData&&this._templates.splice(b.position,0,a(b.content).find("[data-dot]").andSelf("[data-dot]").attr("data-dot"))},this),"remove.owl.carousel prepared.owl.carousel":a.proxy(function(a){this._core.settings.dotsData&&this._templates.splice(a.position,1)},this),"change.owl.carousel":a.proxy(function(a){if("position"==a.property.name&&!this._core.state.revert&&!this._core.settings.loop&&this._core.settings.navRewind){var b=this._core.current(),c=this._core.maximum(),d=this._core.minimum();a.data=a.property.value>c?b>=c?d:c:a.property.value<d?c:a.property.value}},this),"changed.owl.carousel":a.proxy(function(a){"position"==a.property.name&&this.draw()},this),"refreshed.owl.carousel":a.proxy(function(){this._initialized||(this.initialize(),this._initialized=!0),this._core.trigger("refresh",null,"navigation"),this.update(),this.draw(),this._core.trigger("refreshed",null,"navigation")},this)},this._core.options=a.extend({},b.Defaults,this._core.options),this.$element.on(this._handlers)};b.Defaults={nav:!1,navRewind:!0,navText:["prev","next"],navSpeed:!1,navElement:"div",navContainer:!1,navContainerClass:"owl-nav",navClass:["owl-prev","owl-next"],slideBy:1,dotClass:"owl-dot",dotsClass:"owl-dots",dots:!0,dotsEach:!1,dotData:!1,dotsSpeed:!1,dotsContainer:!1,controlsClass:"owl-controls"},b.prototype.initialize=function(){var b,c,d=this._core.settings;d.dotsData||(this._templates=[a("<div>").addClass(d.dotClass).append(a("<span>")).prop("outerHTML")]),d.navContainer&&d.dotsContainer||(this._controls.$container=a("<div>").addClass(d.controlsClass).appendTo(this.$element)),this._controls.$indicators=d.dotsContainer?a(d.dotsContainer):a("<div>").hide().addClass(d.dotsClass).appendTo(this._controls.$container),this._controls.$indicators.on("click","div",a.proxy(function(b){var c=a(b.target).parent().is(this._controls.$indicators)?a(b.target).index():a(b.target).parent().index();b.preventDefault(),this.to(c,d.dotsSpeed)},this)),b=d.navContainer?a(d.navContainer):a("<div>").addClass(d.navContainerClass).prependTo(this._controls.$container),this._controls.$next=a("<"+d.navElement+">"),this._controls.$previous=this._controls.$next.clone(),this._controls.$previous.addClass(d.navClass[0]).html(d.navText[0]).hide().prependTo(b).on("click",a.proxy(function(){this.prev(d.navSpeed)},this)),this._controls.$next.addClass(d.navClass[1]).html(d.navText[1]).hide().appendTo(b).on("click",a.proxy(function(){this.next(d.navSpeed)},this));for(c in this._overrides)this._core[c]=a.proxy(this[c],this)},b.prototype.destroy=function(){var a,b,c,d;for(a in this._handlers)this.$element.off(a,this._handlers[a]);for(b in this._controls)this._controls[b].remove();for(d in this.overides)this._core[d]=this._overrides[d];for(c in Object.getOwnPropertyNames(this))"function"!=typeof this[c]&&(this[c]=null)},b.prototype.update=function(){var a,b,c,d=this._core.settings,e=this._core.clones().length/2,f=e+this._core.items().length,g=d.center||d.autoWidth||d.dotData?1:d.dotsEach||d.items;if("page"!==d.slideBy&&(d.slideBy=Math.min(d.slideBy,d.items)),d.dots||"page"==d.slideBy)for(this._pages=[],a=e,b=0,c=0;f>a;a++)(b>=g||0===b)&&(this._pages.push({start:a-e,end:a-e+g-1}),b=0,++c),b+=this._core.mergers(this._core.relative(a))},b.prototype.draw=function(){var b,c,d="",e=this._core.settings,f=(this._core.$stage.children(),this._core.relative(this._core.current()));if(!e.nav||e.loop||e.navRewind||(this._controls.$previous.toggleClass("disabled",0>=f),this._controls.$next.toggleClass("disabled",f>=this._core.maximum())),this._controls.$previous.toggle(e.nav),this._controls.$next.toggle(e.nav),e.dots){if(b=this._pages.length-this._controls.$indicators.children().length,e.dotData&&0!==b){for(c=0;c<this._controls.$indicators.children().length;c++)d+=this._templates[this._core.relative(c)];this._controls.$indicators.html(d)}else b>0?(d=new Array(b+1).join(this._templates[0]),this._controls.$indicators.append(d)):0>b&&this._controls.$indicators.children().slice(b).remove();this._controls.$indicators.find(".active").removeClass("active"),this._controls.$indicators.children().eq(a.inArray(this.current(),this._pages)).addClass("active")}this._controls.$indicators.toggle(e.dots)},b.prototype.onTrigger=function(b){var c=this._core.settings;b.page={index:a.inArray(this.current(),this._pages),count:this._pages.length,size:c&&(c.center||c.autoWidth||c.dotData?1:c.dotsEach||c.items)}},b.prototype.current=function(){var b=this._core.relative(this._core.current());return a.grep(this._pages,function(a){return a.start<=b&&a.end>=b}).pop()},b.prototype.getPosition=function(b){var c,d,e=this._core.settings;return"page"==e.slideBy?(c=a.inArray(this.current(),this._pages),d=this._pages.length,b?++c:--c,c=this._pages[(c%d+d)%d].start):(c=this._core.relative(this._core.current()),d=this._core.items().length,b?c+=e.slideBy:c-=e.slideBy),c},b.prototype.next=function(b){a.proxy(this._overrides.to,this._core)(this.getPosition(!0),b)},b.prototype.prev=function(b){a.proxy(this._overrides.to,this._core)(this.getPosition(!1),b)},b.prototype.to=function(b,c,d){var e;d?a.proxy(this._overrides.to,this._core)(b,c):(e=this._pages.length,a.proxy(this._overrides.to,this._core)(this._pages[(b%e+e)%e].start,c))},a.fn.owlCarousel.Constructor.Plugins.Navigation=b}(window.Zepto||window.jQuery,window,document),function(a,b){"use strict";var c=function(d){this._core=d,this._hashes={},this.$element=this._core.$element,this._handlers={"initialized.owl.carousel":a.proxy(function(){"URLHash"==this._core.settings.startPosition&&a(b).trigger("hashchange.owl.navigation")},this),"prepared.owl.carousel":a.proxy(function(b){var c=a(b.content).find("[data-hash]").andSelf("[data-hash]").attr("data-hash");this._hashes[c]=b.content},this)},this._core.options=a.extend({},c.Defaults,this._core.options),this.$element.on(this._handlers),a(b).on("hashchange.owl.navigation",a.proxy(function(){var a=b.location.hash.substring(1),c=this._core.$stage.children(),d=this._hashes[a]&&c.index(this._hashes[a])||0;return a?void this._core.to(d,!1,!0):!1},this))};c.Defaults={URLhashListener:!1},c.prototype.destroy=function(){var c,d;a(b).off("hashchange.owl.navigation");for(c in this._handlers)this._core.$element.off(c,this._handlers[c]);for(d in Object.getOwnPropertyNames(this))"function"!=typeof this[d]&&(this[d]=null)},a.fn.owlCarousel.Constructor.Plugins.Hash=c}(window.Zepto||window.jQuery,window,document);
js/qunit-1.16.0.js ADDED
@@ -0,0 +1,2819 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /*!
2
+ * QUnit 1.16.0
3
+ * http://qunitjs.com/
4
+ *
5
+ * Copyright 2006, 2014 jQuery Foundation and other contributors
6
+ * Released under the MIT license
7
+ * http://jquery.org/license
8
+ *
9
+ * Date: 2014-12-03T16:32Z
10
+ */
11
+
12
+ (function( window ) {
13
+
14
+ var QUnit,
15
+ config,
16
+ onErrorFnPrev,
17
+ loggingCallbacks = {},
18
+ fileName = ( sourceFromStacktrace( 0 ) || "" ).replace( /(:\d+)+\)?/, "" ).replace( /.+\//, "" ),
19
+ toString = Object.prototype.toString,
20
+ hasOwn = Object.prototype.hasOwnProperty,
21
+ // Keep a local reference to Date (GH-283)
22
+ Date = window.Date,
23
+ now = Date.now || function() {
24
+ return new Date().getTime();
25
+ },
26
+ globalStartCalled = false,
27
+ runStarted = false,
28
+ setTimeout = window.setTimeout,
29
+ clearTimeout = window.clearTimeout,
30
+ defined = {
31
+ document: window.document !== undefined,
32
+ setTimeout: window.setTimeout !== undefined,
33
+ sessionStorage: (function() {
34
+ var x = "qunit-test-string";
35
+ try {
36
+ sessionStorage.setItem( x, x );
37
+ sessionStorage.removeItem( x );
38
+ return true;
39
+ } catch ( e ) {
40
+ return false;
41
+ }
42
+ }())
43
+ },
44
+ /**
45
+ * Provides a normalized error string, correcting an issue
46
+ * with IE 7 (and prior) where Error.prototype.toString is
47
+ * not properly implemented
48
+ *
49
+ * Based on http://es5.github.com/#x15.11.4.4
50
+ *
51
+ * @param {String|Error} error
52
+ * @return {String} error message
53
+ */
54
+ errorString = function( error ) {
55
+ var name, message,
56
+ errorString = error.toString();
57
+ if ( errorString.substring( 0, 7 ) === "[object" ) {
58
+ name = error.name ? error.name.toString() : "Error";
59
+ message = error.message ? error.message.toString() : "";
60
+ if ( name && message ) {
61
+ return name + ": " + message;
62
+ } else if ( name ) {
63
+ return name;
64
+ } else if ( message ) {
65
+ return message;
66
+ } else {
67
+ return "Error";
68
+ }
69
+ } else {
70
+ return errorString;
71
+ }
72
+ },
73
+ /**
74
+ * Makes a clone of an object using only Array or Object as base,
75
+ * and copies over the own enumerable properties.
76
+ *
77
+ * @param {Object} obj
78
+ * @return {Object} New object with only the own properties (recursively).
79
+ */
80
+ objectValues = function( obj ) {
81
+ var key, val,
82
+ vals = QUnit.is( "array", obj ) ? [] : {};
83
+ for ( key in obj ) {
84
+ if ( hasOwn.call( obj, key ) ) {
85
+ val = obj[ key ];
86
+ vals[ key ] = val === Object( val ) ? objectValues( val ) : val;
87
+ }
88
+ }
89
+ return vals;
90
+ };
91
+
92
+ QUnit = {};
93
+
94
+ /**
95
+ * Config object: Maintain internal state
96
+ * Later exposed as QUnit.config
97
+ * `config` initialized at top of scope
98
+ */
99
+ config = {
100
+ // The queue of tests to run
101
+ queue: [],
102
+
103
+ // block until document ready
104
+ blocking: true,
105
+
106
+ // when enabled, show only failing tests
107
+ // gets persisted through sessionStorage and can be changed in UI via checkbox
108
+ hidepassed: false,
109
+
110
+ // by default, run previously failed tests first
111
+ // very useful in combination with "Hide passed tests" checked
112
+ reorder: true,
113
+
114
+ // by default, modify document.title when suite is done
115
+ altertitle: true,
116
+
117
+ // by default, scroll to top of the page when suite is done
118
+ scrolltop: true,
119
+
120
+ // when enabled, all tests must call expect()
121
+ requireExpects: false,
122
+
123
+ // add checkboxes that are persisted in the query-string
124
+ // when enabled, the id is set to `true` as a `QUnit.config` property
125
+ urlConfig: [
126
+ {
127
+ id: "hidepassed",
128
+ label: "Hide passed tests",
129
+ tooltip: "Only show tests and assertions that fail. Stored as query-strings."
130
+ },
131
+ {
132
+ id: "noglobals",
133
+ label: "Check for Globals",
134
+ tooltip: "Enabling this will test if any test introduces new properties on the " +
135
+ "`window` object. Stored as query-strings."
136
+ },
137
+ {
138
+ id: "notrycatch",
139
+ label: "No try-catch",
140
+ tooltip: "Enabling this will run tests outside of a try-catch block. Makes debugging " +
141
+ "exceptions in IE reasonable. Stored as query-strings."
142
+ }
143
+ ],
144
+
145
+ // Set of all modules.
146
+ modules: [],
147
+
148
+ // The first unnamed module
149
+ currentModule: {
150
+ name: "",
151
+ tests: []
152
+ },
153
+
154
+ callbacks: {}
155
+ };
156
+
157
+ // Push a loose unnamed module to the modules collection
158
+ config.modules.push( config.currentModule );
159
+
160
+ // Initialize more QUnit.config and QUnit.urlParams
161
+ (function() {
162
+ var i, current,
163
+ location = window.location || { search: "", protocol: "file:" },
164
+ params = location.search.slice( 1 ).split( "&" ),
165
+ length = params.length,
166
+ urlParams = {};
167
+
168
+ if ( params[ 0 ] ) {
169
+ for ( i = 0; i < length; i++ ) {
170
+ current = params[ i ].split( "=" );
171
+ current[ 0 ] = decodeURIComponent( current[ 0 ] );
172
+
173
+ // allow just a key to turn on a flag, e.g., test.html?noglobals
174
+ current[ 1 ] = current[ 1 ] ? decodeURIComponent( current[ 1 ] ) : true;
175
+ if ( urlParams[ current[ 0 ] ] ) {
176
+ urlParams[ current[ 0 ] ] = [].concat( urlParams[ current[ 0 ] ], current[ 1 ] );
177
+ } else {
178
+ urlParams[ current[ 0 ] ] = current[ 1 ];
179
+ }
180
+ }
181
+ }
182
+
183
+ QUnit.urlParams = urlParams;
184
+
185
+ // String search anywhere in moduleName+testName
186
+ config.filter = urlParams.filter;
187
+
188
+ config.testId = [];
189
+ if ( urlParams.testId ) {
190
+
191
+ // Ensure that urlParams.testId is an array
192
+ urlParams.testId = [].concat( urlParams.testId );
193
+ for ( i = 0; i < urlParams.testId.length; i++ ) {
194
+ config.testId.push( urlParams.testId[ i ] );
195
+ }
196
+ }
197
+
198
+ // Figure out if we're running the tests from a server or not
199
+ QUnit.isLocal = location.protocol === "file:";
200
+ }());
201
+
202
+ // Root QUnit object.
203
+ // `QUnit` initialized at top of scope
204
+ extend( QUnit, {
205
+
206
+ // call on start of module test to prepend name to all tests
207
+ module: function( name, testEnvironment ) {
208
+ var currentModule = {
209
+ name: name,
210
+ testEnvironment: testEnvironment,
211
+ tests: []
212
+ };
213
+
214
+ // DEPRECATED: handles setup/teardown functions,
215
+ // beforeEach and afterEach should be used instead
216
+ if ( testEnvironment && testEnvironment.setup ) {
217
+ testEnvironment.beforeEach = testEnvironment.setup;
218
+ delete testEnvironment.setup;
219
+ }
220
+ if ( testEnvironment && testEnvironment.teardown ) {
221
+ testEnvironment.afterEach = testEnvironment.teardown;
222
+ delete testEnvironment.teardown;
223
+ }
224
+
225
+ config.modules.push( currentModule );
226
+ config.currentModule = currentModule;
227
+ },
228
+
229
+ // DEPRECATED: QUnit.asyncTest() will be removed in QUnit 2.0.
230
+ asyncTest: function( testName, expected, callback ) {
231
+ if ( arguments.length === 2 ) {
232
+ callback = expected;
233
+ expected = null;
234
+ }
235
+
236
+ QUnit.test( testName, expected, callback, true );
237
+ },
238
+
239
+ test: function( testName, expected, callback, async ) {
240
+ var test;
241
+
242
+ if ( arguments.length === 2 ) {
243
+ callback = expected;
244
+ expected = null;
245
+ }
246
+
247
+ test = new Test({
248
+ testName: testName,
249
+ expected: expected,
250
+ async: async,
251
+ callback: callback
252
+ });
253
+
254
+ test.queue();
255
+ },
256
+
257
+ skip: function( testName ) {
258
+ var test = new Test({
259
+ testName: testName,
260
+ skip: true
261
+ });
262
+
263
+ test.queue();
264
+ },
265
+
266
+ // DEPRECATED: The functionality of QUnit.start() will be altered in QUnit 2.0.
267
+ // In QUnit 2.0, invoking it will ONLY affect the `QUnit.config.autostart` blocking behavior.
268
+ start: function( count ) {
269
+ var globalStartAlreadyCalled = globalStartCalled;
270
+
271
+ if ( !config.current ) {
272
+ globalStartCalled = true;
273
+
274
+ if ( runStarted ) {
275
+ throw new Error( "Called start() outside of a test context while already started" );
276
+ } else if ( globalStartAlreadyCalled || count > 1 ) {
277
+ throw new Error( "Called start() outside of a test context too many times" );
278
+ } else if ( config.autostart ) {
279
+ throw new Error( "Called start() outside of a test context when " +
280
+ "QUnit.config.autostart was true" );
281
+ } else if ( !config.pageLoaded ) {
282
+
283
+ // The page isn't completely loaded yet, so bail out and let `QUnit.load` handle it
284
+ config.autostart = true;
285
+ return;
286
+ }
287
+ } else {
288
+
289
+ // If a test is running, adjust its semaphore
290
+ config.current.semaphore -= count || 1;
291
+
292
+ // Don't start until equal number of stop-calls
293
+ if ( config.current.semaphore > 0 ) {
294
+ return;
295
+ }
296
+
297
+ // throw an Error if start is called more often than stop
298
+ if ( config.current.semaphore < 0 ) {
299
+ config.current.semaphore = 0;
300
+
301
+ QUnit.pushFailure(
302
+ "Called start() while already started (test's semaphore was 0 already)",
303
+ sourceFromStacktrace( 2 )
304
+ );
305
+ return;
306
+ }
307
+ }
308
+
309
+ resumeProcessing();
310
+ },
311
+
312
+ // DEPRECATED: QUnit.stop() will be removed in QUnit 2.0.
313
+ stop: function( count ) {
314
+
315
+ // If there isn't a test running, don't allow QUnit.stop() to be called
316
+ if ( !config.current ) {
317
+ throw new Error( "Called stop() outside of a test context" );
318
+ }
319
+
320
+ // If a test is running, adjust its semaphore
321
+ config.current.semaphore += count || 1;
322
+
323
+ pauseProcessing();
324
+ },
325
+
326
+ config: config,
327
+
328
+ // Safe object type checking
329
+ is: function( type, obj ) {
330
+ return QUnit.objectType( obj ) === type;
331
+ },
332
+
333
+ objectType: function( obj ) {
334
+ if ( typeof obj === "undefined" ) {
335
+ return "undefined";
336
+ }
337
+
338
+ // Consider: typeof null === object
339
+ if ( obj === null ) {
340
+ return "null";
341
+ }
342
+
343
+ var match = toString.call( obj ).match( /^\[object\s(.*)\]$/ ),
344
+ type = match && match[ 1 ] || "";
345
+
346
+ switch ( type ) {
347
+ case "Number":
348
+ if ( isNaN( obj ) ) {
349
+ return "nan";
350
+ }
351
+ return "number";
352
+ case "String":
353
+ case "Boolean":
354
+ case "Array":
355
+ case "Date":
356
+ case "RegExp":
357
+ case "Function":
358
+ return type.toLowerCase();
359
+ }
360
+ if ( typeof obj === "object" ) {
361
+ return "object";
362
+ }
363
+ return undefined;
364
+ },
365
+
366
+ url: function( params ) {
367
+ params = extend( extend( {}, QUnit.urlParams ), params );
368
+ var key,
369
+ querystring = "?";
370
+
371
+ for ( key in params ) {
372
+ if ( hasOwn.call( params, key ) ) {
373
+ querystring += encodeURIComponent( key );
374
+ if ( params[ key ] !== true ) {
375
+ querystring += "=" + encodeURIComponent( params[ key ] );
376
+ }
377
+ querystring += "&";
378
+ }
379
+ }
380
+ return location.protocol + "//" + location.host +
381
+ location.pathname + querystring.slice( 0, -1 );
382
+ },
383
+
384
+ extend: extend,
385
+
386
+ load: function() {
387
+ config.pageLoaded = true;
388
+
389
+ // Initialize the configuration options
390
+ extend( config, {
391
+ stats: { all: 0, bad: 0 },
392
+ moduleStats: { all: 0, bad: 0 },
393
+ started: 0,
394
+ updateRate: 1000,
395
+ autostart: true,
396
+ filter: ""
397
+ }, true );
398
+
399
+ config.blocking = false;
400
+
401
+ if ( config.autostart ) {
402
+ resumeProcessing();
403
+ }
404
+ }
405
+ });
406
+
407
+ // Register logging callbacks
408
+ (function() {
409
+ var i, l, key,
410
+ callbacks = [ "begin", "done", "log", "testStart", "testDone",
411
+ "moduleStart", "moduleDone" ];
412
+
413
+ function registerLoggingCallback( key ) {
414
+ var loggingCallback = function( callback ) {
415
+ if ( QUnit.objectType( callback ) !== "function" ) {
416
+ throw new Error(
417
+ "QUnit logging methods require a callback function as their first parameters."
418
+ );
419
+ }
420
+
421
+ config.callbacks[ key ].push( callback );
422
+ };
423
+
424
+ // DEPRECATED: This will be removed on QUnit 2.0.0+
425
+ // Stores the registered functions allowing restoring
426
+ // at verifyLoggingCallbacks() if modified
427
+ loggingCallbacks[ key ] = loggingCallback;
428
+
429
+ return loggingCallback;
430
+ }
431
+
432
+ for ( i = 0, l = callbacks.length; i < l; i++ ) {
433
+ key = callbacks[ i ];
434
+
435
+ // Initialize key collection of logging callback
436
+ if ( QUnit.objectType( config.callbacks[ key ] ) === "undefined" ) {
437
+ config.callbacks[ key ] = [];
438
+ }
439
+
440
+ QUnit[ key ] = registerLoggingCallback( key );
441
+ }
442
+ })();
443
+
444
+ // `onErrorFnPrev` initialized at top of scope
445
+ // Preserve other handlers
446
+ onErrorFnPrev = window.onerror;
447
+
448
+ // Cover uncaught exceptions
449
+ // Returning true will suppress the default browser handler,
450
+ // returning false will let it run.
451
+ window.onerror = function( error, filePath, linerNr ) {
452
+ var ret = false;
453
+ if ( onErrorFnPrev ) {
454
+ ret = onErrorFnPrev( error, filePath, linerNr );
455
+ }
456
+
457
+ // Treat return value as window.onerror itself does,
458
+ // Only do our handling if not suppressed.
459
+ if ( ret !== true ) {
460
+ if ( QUnit.config.current ) {
461
+ if ( QUnit.config.current.ignoreGlobalErrors ) {
462
+ return true;
463
+ }
464
+ QUnit.pushFailure( error, filePath + ":" + linerNr );
465
+ } else {
466
+ QUnit.test( "global failure", extend(function() {
467
+ QUnit.pushFailure( error, filePath + ":" + linerNr );
468
+ }, { validTest: true } ) );
469
+ }
470
+ return false;
471
+ }
472
+
473
+ return ret;
474
+ };
475
+
476
+ function done() {
477
+ var runtime, passed;
478
+
479
+ config.autorun = true;
480
+
481
+ // Log the last module results
482
+ if ( config.previousModule ) {
483
+ runLoggingCallbacks( "moduleDone", {
484
+ name: config.previousModule.name,
485
+ tests: config.previousModule.tests,
486
+ failed: config.moduleStats.bad,
487
+ passed: config.moduleStats.all - config.moduleStats.bad,
488
+ total: config.moduleStats.all,
489
+ runtime: now() - config.moduleStats.started
490
+ });
491
+ }
492
+ delete config.previousModule;
493
+
494
+ runtime = now() - config.started;
495
+ passed = config.stats.all - config.stats.bad;
496
+
497
+ runLoggingCallbacks( "done", {
498
+ failed: config.stats.bad,
499
+ passed: passed,
500
+ total: config.stats.all,
501
+ runtime: runtime
502
+ });
503
+ }
504
+
505
+ // Doesn't support IE6 to IE9
506
+ // See also https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Error/Stack
507
+ function extractStacktrace( e, offset ) {
508
+ offset = offset === undefined ? 4 : offset;
509
+
510
+ var stack, include, i;
511
+
512
+ if ( e.stacktrace ) {
513
+
514
+ // Opera 12.x
515
+ return e.stacktrace.split( "\n" )[ offset + 3 ];
516
+ } else if ( e.stack ) {
517
+
518
+ // Firefox, Chrome, Safari 6+, IE10+, PhantomJS and Node
519
+ stack = e.stack.split( "\n" );
520
+ if ( /^error$/i.test( stack[ 0 ] ) ) {
521
+ stack.shift();
522
+ }
523
+ if ( fileName ) {
524
+ include = [];
525
+ for ( i = offset; i < stack.length; i++ ) {
526
+ if ( stack[ i ].indexOf( fileName ) !== -1 ) {
527
+ break;
528
+ }
529
+ include.push( stack[ i ] );
530
+ }
531
+ if ( include.length ) {
532
+ return include.join( "\n" );
533
+ }
534
+ }
535
+ return stack[ offset ];
536
+ } else if ( e.sourceURL ) {
537
+
538
+ // Safari < 6
539
+ // exclude useless self-reference for generated Error objects
540
+ if ( /qunit.js$/.test( e.sourceURL ) ) {
541
+ return;
542
+ }
543
+
544
+ // for actual exceptions, this is useful
545
+ return e.sourceURL + ":" + e.line;
546
+ }
547
+ }
548
+
549
+ function sourceFromStacktrace( offset ) {
550
+ var e = new Error();
551
+ if ( !e.stack ) {
552
+ try {
553
+ throw e;
554
+ } catch ( err ) {
555
+ // This should already be true in most browsers
556
+ e = err;
557
+ }
558
+ }
559
+ return extractStacktrace( e, offset );
560
+ }
561
+
562
+ function synchronize( callback, last ) {
563
+ if ( QUnit.objectType( callback ) === "array" ) {
564
+ while ( callback.length ) {
565
+ synchronize( callback.shift() );
566
+ }
567
+ return;
568
+ }
569
+ config.queue.push( callback );
570
+
571
+ if ( config.autorun && !config.blocking ) {
572
+ process( last );
573
+ }
574
+ }
575
+
576
+ function process( last ) {
577
+ function next() {
578
+ process( last );
579
+ }
580
+ var start = now();
581
+ config.depth = config.depth ? config.depth + 1 : 1;
582
+
583
+ while ( config.queue.length && !config.blocking ) {
584
+ if ( !defined.setTimeout || config.updateRate <= 0 ||
585
+ ( ( now() - start ) < config.updateRate ) ) {
586
+ if ( config.current ) {
587
+
588
+ // Reset async tracking for each phase of the Test lifecycle
589
+ config.current.usedAsync = false;
590
+ }
591
+ config.queue.shift()();
592
+ } else {
593
+ setTimeout( next, 13 );
594
+ break;
595
+ }
596
+ }
597
+ config.depth--;
598
+ if ( last && !config.blocking && !config.queue.length && config.depth === 0 ) {
599
+ done();
600
+ }
601
+ }
602
+
603
+ function begin() {
604
+ var i, l,
605
+ modulesLog = [];
606
+
607
+ // If the test run hasn't officially begun yet
608
+ if ( !config.started ) {
609
+
610
+ // Record the time of the test run's beginning
611
+ config.started = now();
612
+
613
+ verifyLoggingCallbacks();
614
+
615
+ // Delete the loose unnamed module if unused.
616
+ if ( config.modules[ 0 ].name === "" && config.modules[ 0 ].tests.length === 0 ) {
617
+ config.modules.shift();
618
+ }
619
+
620
+ // Avoid unnecessary information by not logging modules' test environments
621
+ for ( i = 0, l = config.modules.length; i < l; i++ ) {
622
+ modulesLog.push({
623
+ name: config.modules[ i ].name,
624
+ tests: config.modules[ i ].tests
625
+ });
626
+ }
627
+
628
+ // The test run is officially beginning now
629
+ runLoggingCallbacks( "begin", {
630
+ totalTests: Test.count,
631
+ modules: modulesLog
632
+ });
633
+ }
634
+
635
+ config.blocking = false;
636
+ process( true );
637
+ }
638
+
639
+ function resumeProcessing() {
640
+ runStarted = true;
641
+
642
+ // A slight delay to allow this iteration of the event loop to finish (more assertions, etc.)
643
+ if ( defined.setTimeout ) {
644
+ setTimeout(function() {
645
+ if ( config.current && config.current.semaphore > 0 ) {
646
+ return;
647
+ }
648
+ if ( config.timeout ) {
649
+ clearTimeout( config.timeout );
650
+ }
651
+
652
+ begin();
653
+ }, 13 );
654
+ } else {
655
+ begin();
656
+ }
657
+ }
658
+
659
+ function pauseProcessing() {
660
+ config.blocking = true;
661
+
662
+ if ( config.testTimeout && defined.setTimeout ) {
663
+ clearTimeout( config.timeout );
664
+ config.timeout = setTimeout(function() {
665
+ if ( config.current ) {
666
+ config.current.semaphore = 0;
667
+ QUnit.pushFailure( "Test timed out", sourceFromStacktrace( 2 ) );
668
+ } else {
669
+ throw new Error( "Test timed out" );
670
+ }
671
+ resumeProcessing();
672
+ }, config.testTimeout );
673
+ }
674
+ }
675
+
676
+ function saveGlobal() {
677
+ config.pollution = [];
678
+
679
+ if ( config.noglobals ) {
680
+ for ( var key in window ) {
681
+ if ( hasOwn.call( window, key ) ) {
682
+ // in Opera sometimes DOM element ids show up here, ignore them
683
+ if ( /^qunit-test-output/.test( key ) ) {
684
+ continue;
685
+ }
686
+ config.pollution.push( key );
687
+ }
688
+ }
689
+ }
690
+ }
691
+
692
+ function checkPollution() {
693
+ var newGlobals,
694
+ deletedGlobals,
695
+ old = config.pollution;
696
+
697
+ saveGlobal();
698
+
699
+ newGlobals = diff( config.pollution, old );
700
+ if ( newGlobals.length > 0 ) {
701
+ QUnit.pushFailure( "Introduced global variable(s): " + newGlobals.join( ", " ) );
702
+ }
703
+
704
+ deletedGlobals = diff( old, config.pollution );
705
+ if ( deletedGlobals.length > 0 ) {
706
+ QUnit.pushFailure( "Deleted global variable(s): " + deletedGlobals.join( ", " ) );
707
+ }
708
+ }
709
+
710
+ // returns a new Array with the elements that are in a but not in b
711
+ function diff( a, b ) {
712
+ var i, j,
713
+ result = a.slice();
714
+
715
+ for ( i = 0; i < result.length; i++ ) {
716
+ for ( j = 0; j < b.length; j++ ) {
717
+ if ( result[ i ] === b[ j ] ) {
718
+ result.splice( i, 1 );
719
+ i--;
720
+ break;
721
+ }
722
+ }
723
+ }
724
+ return result;
725
+ }
726
+
727
+ function extend( a, b, undefOnly ) {
728
+ for ( var prop in b ) {
729
+ if ( hasOwn.call( b, prop ) ) {
730
+
731
+ // Avoid "Member not found" error in IE8 caused by messing with window.constructor
732
+ if ( !( prop === "constructor" && a === window ) ) {
733
+ if ( b[ prop ] === undefined ) {
734
+ delete a[ prop ];
735
+ } else if ( !( undefOnly && typeof a[ prop ] !== "undefined" ) ) {
736
+ a[ prop ] = b[ prop ];
737
+ }
738
+ }
739
+ }
740
+ }
741
+
742
+ return a;
743
+ }
744
+
745
+ function runLoggingCallbacks( key, args ) {
746
+ var i, l, callbacks;
747
+
748
+ callbacks = config.callbacks[ key ];
749
+ for ( i = 0, l = callbacks.length; i < l; i++ ) {
750
+ callbacks[ i ]( args );
751
+ }
752
+ }
753
+
754
+ // DEPRECATED: This will be removed on 2.0.0+
755
+ // This function verifies if the loggingCallbacks were modified by the user
756
+ // If so, it will restore it, assign the given callback and print a console warning
757
+ function verifyLoggingCallbacks() {
758
+ var loggingCallback, userCallback;
759
+
760
+ for ( loggingCallback in loggingCallbacks ) {
761
+ if ( QUnit[ loggingCallback ] !== loggingCallbacks[ loggingCallback ] ) {
762
+
763
+ userCallback = QUnit[ loggingCallback ];
764
+
765
+ // Restore the callback function
766
+ QUnit[ loggingCallback ] = loggingCallbacks[ loggingCallback ];
767
+
768
+ // Assign the deprecated given callback
769
+ QUnit[ loggingCallback ]( userCallback );
770
+
771
+ if ( window.console && window.console.warn ) {
772
+ window.console.warn(
773
+ "QUnit." + loggingCallback + " was replaced with a new value.\n" +
774
+ "Please, check out the documentation on how to apply logging callbacks.\n" +
775
+ "Reference: http://api.qunitjs.com/category/callbacks/"
776
+ );
777
+ }
778
+ }
779
+ }
780
+ }
781
+
782
+ // from jquery.js
783
+ function inArray( elem, array ) {
784
+ if ( array.indexOf ) {
785
+ return array.indexOf( elem );
786
+ }
787
+
788
+ for ( var i = 0, length = array.length; i < length; i++ ) {
789
+ if ( array[ i ] === elem ) {
790
+ return i;
791
+ }
792
+ }
793
+
794
+ return -1;
795
+ }
796
+
797
+ function Test( settings ) {
798
+ var i, l;
799
+
800
+ ++Test.count;
801
+
802
+ extend( this, settings );
803
+ this.assertions = [];
804
+ this.semaphore = 0;
805
+ this.usedAsync = false;
806
+ this.module = config.currentModule;
807
+ this.stack = sourceFromStacktrace( 3 );
808
+
809
+ // Register unique strings
810
+ for ( i = 0, l = this.module.tests; i < l.length; i++ ) {
811
+ if ( this.module.tests[ i ].name === this.testName ) {
812
+ this.testName += " ";
813
+ }
814
+ }
815
+
816
+ this.testId = generateHash( this.module.name, this.testName );
817
+
818
+ this.module.tests.push({
819
+ name: this.testName,
820
+ testId: this.testId
821
+ });
822
+
823
+ if ( settings.skip ) {
824
+
825
+ // Skipped tests will fully ignore any sent callback
826
+ this.callback = function() {};
827
+ this.async = false;
828
+ this.expected = 0;
829
+ } else {
830
+ this.assert = new Assert( this );
831
+ }
832
+ }
833
+
834
+ Test.count = 0;
835
+
836
+ Test.prototype = {
837
+ before: function() {
838
+ if (
839
+
840
+ // Emit moduleStart when we're switching from one module to another
841
+ this.module !== config.previousModule ||
842
+
843
+ // They could be equal (both undefined) but if the previousModule property doesn't
844
+ // yet exist it means this is the first test in a suite that isn't wrapped in a
845
+ // module, in which case we'll just emit a moduleStart event for 'undefined'.
846
+ // Without this, reporters can get testStart before moduleStart which is a problem.
847
+ !hasOwn.call( config, "previousModule" )
848
+ ) {
849
+ if ( hasOwn.call( config, "previousModule" ) ) {
850
+ runLoggingCallbacks( "moduleDone", {
851
+ name: config.previousModule.name,
852
+ tests: config.previousModule.tests,
853
+ failed: config.moduleStats.bad,
854
+ passed: config.moduleStats.all - config.moduleStats.bad,
855
+ total: config.moduleStats.all,
856
+ runtime: now() - config.moduleStats.started
857
+ });
858
+ }
859
+ config.previousModule = this.module;
860
+ config.moduleStats = { all: 0, bad: 0, started: now() };
861
+ runLoggingCallbacks( "moduleStart", {
862
+ name: this.module.name,
863
+ tests: this.module.tests
864
+ });
865
+ }
866
+
867
+ config.current = this;
868
+
869
+ this.testEnvironment = extend( {}, this.module.testEnvironment );
870
+ delete this.testEnvironment.beforeEach;
871
+ delete this.testEnvironment.afterEach;
872
+
873
+ this.started = now();
874
+ runLoggingCallbacks( "testStart", {
875
+ name: this.testName,
876
+ module: this.module.name,
877
+ testId: this.testId
878
+ });
879
+
880
+ if ( !config.pollution ) {
881
+ saveGlobal();
882
+ }
883
+ },
884
+
885
+ run: function() {
886
+ var promise;
887
+
888
+ config.current = this;
889
+
890
+ if ( this.async ) {
891
+ QUnit.stop();
892
+ }
893
+
894
+ this.callbackStarted = now();
895
+
896
+ if ( config.notrycatch ) {
897
+ promise = this.callback.call( this.testEnvironment, this.assert );
898
+ this.resolvePromise( promise );
899
+ return;
900
+ }
901
+
902
+ try {
903
+ promise = this.callback.call( this.testEnvironment, this.assert );
904
+ this.resolvePromise( promise );
905
+ } catch ( e ) {
906
+ this.pushFailure( "Died on test #" + ( this.assertions.length + 1 ) + " " +
907
+ this.stack + ": " + ( e.message || e ), extractStacktrace( e, 0 ) );
908
+
909
+ // else next test will carry the responsibility
910
+ saveGlobal();
911
+
912
+ // Restart the tests if they're blocking
913
+ if ( config.blocking ) {
914
+ QUnit.start();
915
+ }
916
+ }
917
+ },
918
+
919
+ after: function() {
920
+ checkPollution();
921
+ },
922
+
923
+ queueHook: function( hook, hookName ) {
924
+ var promise,
925
+ test = this;
926
+ return function runHook() {
927
+ config.current = test;
928
+ if ( config.notrycatch ) {
929
+ promise = hook.call( test.testEnvironment, test.assert );
930
+ test.resolvePromise( promise, hookName );
931
+ return;
932
+ }
933
+ try {
934
+ promise = hook.call( test.testEnvironment, test.assert );
935
+ test.resolvePromise( promise, hookName );
936
+ } catch ( error ) {
937
+ test.pushFailure( hookName + " failed on " + test.testName + ": " +
938
+ ( error.message || error ), extractStacktrace( error, 0 ) );
939
+ }
940
+ };
941
+ },
942
+
943
+ // Currently only used for module level hooks, can be used to add global level ones
944
+ hooks: function( handler ) {
945
+ var hooks = [];
946
+
947
+ // Hooks are ignored on skipped tests
948
+ if ( this.skip ) {
949
+ return hooks;
950
+ }
951
+
952
+ if ( this.module.testEnvironment &&
953
+ QUnit.objectType( this.module.testEnvironment[ handler ] ) === "function" ) {
954
+ hooks.push( this.queueHook( this.module.testEnvironment[ handler ], handler ) );
955
+ }
956
+
957
+ return hooks;
958
+ },
959
+
960
+ finish: function() {
961
+ config.current = this;
962
+ if ( config.requireExpects && this.expected === null ) {
963
+ this.pushFailure( "Expected number of assertions to be defined, but expect() was " +
964
+ "not called.", this.stack );
965
+ } else if ( this.expected !== null && this.expected !== this.assertions.length ) {
966
+ this.pushFailure( "Expected " + this.expected + " assertions, but " +
967
+ this.assertions.length + " were run", this.stack );
968
+ } else if ( this.expected === null && !this.assertions.length ) {
969
+ this.pushFailure( "Expected at least one assertion, but none were run - call " +
970
+ "expect(0) to accept zero assertions.", this.stack );
971
+ }
972
+
973
+ var i,
974
+ bad = 0;
975
+
976
+ this.runtime = now() - this.started;
977
+ config.stats.all += this.assertions.length;
978
+ config.moduleStats.all += this.assertions.length;
979
+
980
+ for ( i = 0; i < this.assertions.length; i++ ) {
981
+ if ( !this.assertions[ i ].result ) {
982
+ bad++;
983
+ config.stats.bad++;
984
+ config.moduleStats.bad++;
985
+ }
986
+ }
987
+
988
+ runLoggingCallbacks( "testDone", {
989
+ name: this.testName,
990
+ module: this.module.name,
991
+ skipped: !!this.skip,
992
+ failed: bad,
993
+ passed: this.assertions.length - bad,
994
+ total: this.assertions.length,
995
+ runtime: this.runtime,
996
+
997
+ // HTML Reporter use
998
+ assertions: this.assertions,
999
+ testId: this.testId,
1000
+
1001
+ // DEPRECATED: this property will be removed in 2.0.0, use runtime instead
1002
+ duration: this.runtime
1003
+ });
1004
+
1005
+ // QUnit.reset() is deprecated and will be replaced for a new
1006
+ // fixture reset function on QUnit 2.0/2.1.
1007
+ // It's still called here for backwards compatibility handling
1008
+ QUnit.reset();
1009
+
1010
+ config.current = undefined;
1011
+ },
1012
+
1013
+ queue: function() {
1014
+ var bad,
1015
+ test = this;
1016
+
1017
+ if ( !this.valid() ) {
1018
+ return;
1019
+ }
1020
+
1021
+ function run() {
1022
+
1023
+ // each of these can by async
1024
+ synchronize([
1025
+ function() {
1026
+ test.before();
1027
+ },
1028
+
1029
+ test.hooks( "beforeEach" ),
1030
+
1031
+ function() {
1032
+ test.run();
1033
+ },
1034
+
1035
+ test.hooks( "afterEach" ).reverse(),
1036
+
1037
+ function() {
1038
+ test.after();
1039
+ },
1040
+ function() {
1041
+ test.finish();
1042
+ }
1043
+ ]);
1044
+ }
1045
+
1046
+ // `bad` initialized at top of scope
1047
+ // defer when previous test run passed, if storage is available
1048
+ bad = QUnit.config.reorder && defined.sessionStorage &&
1049
+ +sessionStorage.getItem( "qunit-test-" + this.module.name + "-" + this.testName );
1050
+
1051
+ if ( bad ) {
1052
+ run();
1053
+ } else {
1054
+ synchronize( run, true );
1055
+ }
1056
+ },
1057
+
1058
+ push: function( result, actual, expected, message ) {
1059
+ var source,
1060
+ details = {
1061
+ module: this.module.name,
1062
+ name: this.testName,
1063
+ result: result,
1064
+ message: message,
1065
+ actual: actual,
1066
+ expected: expected,
1067
+ testId: this.testId,
1068
+ runtime: now() - this.started
1069
+ };
1070
+
1071
+ if ( !result ) {
1072
+ source = sourceFromStacktrace();
1073
+
1074
+ if ( source ) {
1075
+ details.source = source;
1076
+ }
1077
+ }
1078
+
1079
+ runLoggingCallbacks( "log", details );
1080
+
1081
+ this.assertions.push({
1082
+ result: !!result,
1083
+ message: message
1084
+ });
1085
+ },
1086
+
1087
+ pushFailure: function( message, source, actual ) {
1088
+ if ( !this instanceof Test ) {
1089
+ throw new Error( "pushFailure() assertion outside test context, was " +
1090
+ sourceFromStacktrace( 2 ) );
1091
+ }
1092
+
1093
+ var details = {
1094
+ module: this.module.name,
1095
+ name: this.testName,
1096
+ result: false,
1097
+ message: message || "error",
1098
+ actual: actual || null,
1099
+ testId: this.testId,
1100
+ runtime: now() - this.started
1101
+ };
1102
+
1103
+ if ( source ) {
1104
+ details.source = source;
1105
+ }
1106
+
1107
+ runLoggingCallbacks( "log", details );
1108
+
1109
+ this.assertions.push({
1110
+ result: false,
1111
+ message: message
1112
+ });
1113
+ },
1114
+
1115
+ resolvePromise: function( promise, phase ) {
1116
+ var then, message,
1117
+ test = this;
1118
+ if ( promise != null ) {
1119
+ then = promise.then;
1120
+ if ( QUnit.objectType( then ) === "function" ) {
1121
+ QUnit.stop();
1122
+ then.call(
1123
+ promise,
1124
+ QUnit.start,
1125
+ function( error ) {
1126
+ message = "Promise rejected " +
1127
+ ( !phase ? "during" : phase.replace( /Each$/, "" ) ) +
1128
+ " " + test.testName + ": " + ( error.message || error );
1129
+ test.pushFailure( message, extractStacktrace( error, 0 ) );
1130
+
1131
+ // else next test will carry the responsibility
1132
+ saveGlobal();
1133
+
1134
+ // Unblock
1135
+ QUnit.start();
1136
+ }
1137
+ );
1138
+ }
1139
+ }
1140
+ },
1141
+
1142
+ valid: function() {
1143
+ var include,
1144
+ filter = config.filter && config.filter.toLowerCase(),
1145
+ module = QUnit.urlParams.module && QUnit.urlParams.module.toLowerCase(),
1146
+ fullName = ( this.module.name + ": " + this.testName ).toLowerCase();
1147
+
1148
+ // Internally-generated tests are always valid
1149
+ if ( this.callback && this.callback.validTest ) {
1150
+ return true;
1151
+ }
1152
+
1153
+ if ( config.testId.length > 0 && inArray( this.testId, config.testId ) < 0 ) {
1154
+ return false;
1155
+ }
1156
+
1157
+ if ( module && ( !this.module.name || this.module.name.toLowerCase() !== module ) ) {
1158
+ return false;
1159
+ }
1160
+
1161
+ if ( !filter ) {
1162
+ return true;
1163
+ }
1164
+
1165
+ include = filter.charAt( 0 ) !== "!";
1166
+ if ( !include ) {
1167
+ filter = filter.slice( 1 );
1168
+ }
1169
+
1170
+ // If the filter matches, we need to honour include
1171
+ if ( fullName.indexOf( filter ) !== -1 ) {
1172
+ return include;
1173
+ }
1174
+
1175
+ // Otherwise, do the opposite
1176
+ return !include;
1177
+ }
1178
+
1179
+ };
1180
+
1181
+ // Resets the test setup. Useful for tests that modify the DOM.
1182
+ /*
1183
+ DEPRECATED: Use multiple tests instead of resetting inside a test.
1184
+ Use testStart or testDone for custom cleanup.
1185
+ This method will throw an error in 2.0, and will be removed in 2.1
1186
+ */
1187
+ QUnit.reset = function() {
1188
+
1189
+ // Return on non-browser environments
1190
+ // This is necessary to not break on node tests
1191
+ if ( typeof window === "undefined" ) {
1192
+ return;
1193
+ }
1194
+
1195
+ var fixture = defined.document && document.getElementById &&
1196
+ document.getElementById( "qunit-fixture" );
1197
+
1198
+ if ( fixture ) {
1199
+ fixture.innerHTML = config.fixture;
1200
+ }
1201
+ };
1202
+
1203
+ QUnit.pushFailure = function() {
1204
+ if ( !QUnit.config.current ) {
1205
+ throw new Error( "pushFailure() assertion outside test context, in " +
1206
+ sourceFromStacktrace( 2 ) );
1207
+ }
1208
+
1209
+ // Gets current test obj
1210
+ var currentTest = QUnit.config.current;
1211
+
1212
+ return currentTest.pushFailure.apply( currentTest, arguments );
1213
+ };
1214
+
1215
+ // Based on Java's String.hashCode, a simple but not
1216
+ // rigorously collision resistant hashing function
1217
+ function generateHash( module, testName ) {
1218
+ var hex,
1219
+ i = 0,
1220
+ hash = 0,
1221
+ str = module + "\x1C" + testName,
1222
+ len = str.length;
1223
+
1224
+ for ( ; i < len; i++ ) {
1225
+ hash = ( ( hash << 5 ) - hash ) + str.charCodeAt( i );
1226
+ hash |= 0;
1227
+ }
1228
+
1229
+ // Convert the possibly negative integer hash code into an 8 character hex string, which isn't
1230
+ // strictly necessary but increases user understanding that the id is a SHA-like hash
1231
+ hex = ( 0x100000000 + hash ).toString( 16 );
1232
+ if ( hex.length < 8 ) {
1233
+ hex = "0000000" + hex;
1234
+ }
1235
+
1236
+ return hex.slice( -8 );
1237
+ }
1238
+
1239
+ function Assert( testContext ) {
1240
+ this.test = testContext;
1241
+ }
1242
+
1243
+ // Assert helpers
1244
+ QUnit.assert = Assert.prototype = {
1245
+
1246
+ // Specify the number of expected assertions to guarantee that failed test
1247
+ // (no assertions are run at all) don't slip through.
1248
+ expect: function( asserts ) {
1249
+ if ( arguments.length === 1 ) {
1250
+ this.test.expected = asserts;
1251
+ } else {
1252
+ return this.test.expected;
1253
+ }
1254
+ },
1255
+
1256
+ // Increment this Test's semaphore counter, then return a single-use function that
1257
+ // decrements that counter a maximum of once.
1258
+ async: function() {
1259
+ var test = this.test,
1260
+ popped = false;
1261
+
1262
+ test.semaphore += 1;
1263
+ test.usedAsync = true;
1264
+ pauseProcessing();
1265
+
1266
+ return function done() {
1267
+ if ( !popped ) {
1268
+ test.semaphore -= 1;
1269
+ popped = true;
1270
+ resumeProcessing();
1271
+ } else {
1272
+ test.pushFailure( "Called the callback returned from `assert.async` more than once",
1273
+ sourceFromStacktrace( 2 ) );
1274
+ }
1275
+ };
1276
+ },
1277
+
1278
+ // Exports test.push() to the user API
1279
+ push: function( /* result, actual, expected, message */ ) {
1280
+ var assert = this,
1281
+ currentTest = ( assert instanceof Assert && assert.test ) || QUnit.config.current;
1282
+
1283
+ // Backwards compatibility fix.
1284
+ // Allows the direct use of global exported assertions and QUnit.assert.*
1285
+ // Although, it's use is not recommended as it can leak assertions
1286
+ // to other tests from async tests, because we only get a reference to the current test,
1287
+ // not exactly the test where assertion were intended to be called.
1288
+ if ( !currentTest ) {
1289
+ throw new Error( "assertion outside test context, in " + sourceFromStacktrace( 2 ) );
1290
+ }
1291
+
1292
+ if ( currentTest.usedAsync === true && currentTest.semaphore === 0 ) {
1293
+ currentTest.pushFailure( "Assertion after the final `assert.async` was resolved",
1294
+ sourceFromStacktrace( 2 ) );
1295
+
1296
+ // Allow this assertion to continue running anyway...
1297
+ }
1298
+
1299
+ if ( !( assert instanceof Assert ) ) {
1300
+ assert = currentTest.assert;
1301
+ }
1302
+ return assert.test.push.apply( assert.test, arguments );
1303
+ },
1304
+
1305
+ /**
1306
+ * Asserts rough true-ish result.
1307
+ * @name ok
1308
+ * @function
1309
+ * @example ok( "asdfasdf".length > 5, "There must be at least 5 chars" );
1310
+ */
1311
+ ok: function( result, message ) {
1312
+ message = message || ( result ? "okay" : "failed, expected argument to be truthy, was: " +
1313
+ QUnit.dump.parse( result ) );
1314
+ this.push( !!result, result, true, message );
1315
+ },
1316
+
1317
+ /**
1318
+ * Assert that the first two arguments are equal, with an optional message.
1319
+ * Prints out both actual and expected values.
1320
+ * @name equal
1321
+ * @function
1322
+ * @example equal( format( "{0} bytes.", 2), "2 bytes.", "replaces {0} with next argument" );
1323
+ */
1324
+ equal: function( actual, expected, message ) {
1325
+ /*jshint eqeqeq:false */
1326
+ this.push( expected == actual, actual, expected, message );
1327
+ },
1328
+
1329
+ /**
1330
+ * @name notEqual
1331
+ * @function
1332
+ */
1333
+ notEqual: function( actual, expected, message ) {
1334
+ /*jshint eqeqeq:false */
1335
+ this.push( expected != actual, actual, expected, message );
1336
+ },
1337
+
1338
+ /**
1339
+ * @name propEqual
1340
+ * @function
1341
+ */
1342
+ propEqual: function( actual, expected, message ) {
1343
+ actual = objectValues( actual );
1344
+ expected = objectValues( expected );
1345
+ this.push( QUnit.equiv( actual, expected ), actual, expected, message );
1346
+ },
1347
+
1348
+ /**
1349
+ * @name notPropEqual
1350
+ * @function
1351
+ */
1352
+ notPropEqual: function( actual, expected, message ) {
1353
+ actual = objectValues( actual );
1354
+ expected = objectValues( expected );
1355
+ this.push( !QUnit.equiv( actual, expected ), actual, expected, message );
1356
+ },
1357
+
1358
+ /**
1359
+ * @name deepEqual
1360
+ * @function
1361
+ */
1362
+ deepEqual: function( actual, expected, message ) {
1363
+ this.push( QUnit.equiv( actual, expected ), actual, expected, message );
1364
+ },
1365
+
1366
+ /**
1367
+ * @name notDeepEqual
1368
+ * @function
1369
+ */
1370
+ notDeepEqual: function( actual, expected, message ) {
1371
+ this.push( !QUnit.equiv( actual, expected ), actual, expected, message );
1372
+ },
1373
+
1374
+ /**
1375
+ * @name strictEqual
1376
+ * @function
1377
+ */
1378
+ strictEqual: function( actual, expected, message ) {
1379
+ this.push( expected === actual, actual, expected, message );
1380
+ },
1381
+
1382
+ /**
1383
+ * @name notStrictEqual
1384
+ * @function
1385
+ */
1386
+ notStrictEqual: function( actual, expected, message ) {
1387
+ this.push( expected !== actual, actual, expected, message );
1388
+ },
1389
+
1390
+ "throws": function( block, expected, message ) {
1391
+ var actual, expectedType,
1392
+ expectedOutput = expected,
1393
+ ok = false;
1394
+
1395
+ // 'expected' is optional unless doing string comparison
1396
+ if ( message == null && typeof expected === "string" ) {
1397
+ message = expected;
1398
+ expected = null;
1399
+ }
1400
+
1401
+ this.test.ignoreGlobalErrors = true;
1402
+ try {
1403
+ block.call( this.test.testEnvironment );
1404
+ } catch (e) {
1405
+ actual = e;
1406
+ }
1407
+ this.test.ignoreGlobalErrors = false;
1408
+
1409
+ if ( actual ) {
1410
+ expectedType = QUnit.objectType( expected );
1411
+
1412
+ // we don't want to validate thrown error
1413
+ if ( !expected ) {
1414
+ ok = true;
1415
+ expectedOutput = null;
1416
+
1417
+ // expected is a regexp
1418
+ } else if ( expectedType === "regexp" ) {
1419
+ ok = expected.test( errorString( actual ) );
1420
+
1421
+ // expected is a string
1422
+ } else if ( expectedType === "string" ) {
1423
+ ok = expected === errorString( actual );
1424
+
1425
+ // expected is a constructor, maybe an Error constructor
1426
+ } else if ( expectedType === "function" && actual instanceof expected ) {
1427
+ ok = true;
1428
+
1429
+ // expected is an Error object
1430
+ } else if ( expectedType === "object" ) {
1431
+ ok = actual instanceof expected.constructor &&
1432
+ actual.name === expected.name &&
1433
+ actual.message === expected.message;
1434
+
1435
+ // expected is a validation function which returns true if validation passed
1436
+ } else if ( expectedType === "function" && expected.call( {}, actual ) === true ) {
1437
+ expectedOutput = null;
1438
+ ok = true;
1439
+ }
1440
+
1441
+ this.push( ok, actual, expectedOutput, message );
1442
+ } else {
1443
+ this.test.pushFailure( message, null, "No exception was thrown." );
1444
+ }
1445
+ }
1446
+ };
1447
+
1448
+ // Provide an alternative to assert.throws(), for enviroments that consider throws a reserved word
1449
+ // Known to us are: Closure Compiler, Narwhal
1450
+ (function() {
1451
+ /*jshint sub:true */
1452
+ Assert.prototype.raises = Assert.prototype[ "throws" ];
1453
+ }());
1454
+
1455
+ // Test for equality any JavaScript type.
1456
+ // Author: Philippe Rathé <prathe@gmail.com>
1457
+ QUnit.equiv = (function() {
1458
+
1459
+ // Call the o related callback with the given arguments.
1460
+ function bindCallbacks( o, callbacks, args ) {
1461
+ var prop = QUnit.objectType( o );
1462
+ if ( prop ) {
1463
+ if ( QUnit.objectType( callbacks[ prop ] ) === "function" ) {
1464
+ return callbacks[ prop ].apply( callbacks, args );
1465
+ } else {
1466
+ return callbacks[ prop ]; // or undefined
1467
+ }
1468
+ }
1469
+ }
1470
+
1471
+ // the real equiv function
1472
+ var innerEquiv,
1473
+
1474
+ // stack to decide between skip/abort functions
1475
+ callers = [],
1476
+
1477
+ // stack to avoiding loops from circular referencing
1478
+ parents = [],
1479
+ parentsB = [],
1480
+
1481
+ getProto = Object.getPrototypeOf || function( obj ) {
1482
+ /* jshint camelcase: false, proto: true */
1483
+ return obj.__proto__;
1484
+ },
1485
+ callbacks = (function() {
1486
+
1487
+ // for string, boolean, number and null
1488
+ function useStrictEquality( b, a ) {
1489
+
1490
+ /*jshint eqeqeq:false */
1491
+ if ( b instanceof a.constructor || a instanceof b.constructor ) {
1492
+
1493
+ // to catch short annotation VS 'new' annotation of a
1494
+ // declaration
1495
+ // e.g. var i = 1;
1496
+ // var j = new Number(1);
1497
+ return a == b;
1498
+ } else {
1499
+ return a === b;
1500
+ }
1501
+ }
1502
+
1503
+ return {
1504
+ "string": useStrictEquality,
1505
+ "boolean": useStrictEquality,
1506
+ "number": useStrictEquality,
1507
+ "null": useStrictEquality,
1508
+ "undefined": useStrictEquality,
1509
+
1510
+ "nan": function( b ) {
1511
+ return isNaN( b );
1512
+ },
1513
+
1514
+ "date": function( b, a ) {
1515
+ return QUnit.objectType( b ) === "date" && a.valueOf() === b.valueOf();
1516
+ },
1517
+
1518
+ "regexp": function( b, a ) {
1519
+ return QUnit.objectType( b ) === "regexp" &&
1520
+
1521
+ // the regex itself
1522
+ a.source === b.source &&
1523
+
1524
+ // and its modifiers
1525
+ a.global === b.global &&
1526
+
1527
+ // (gmi) ...
1528
+ a.ignoreCase === b.ignoreCase &&
1529
+ a.multiline === b.multiline &&
1530
+ a.sticky === b.sticky;
1531
+ },
1532
+
1533
+ // - skip when the property is a method of an instance (OOP)
1534
+ // - abort otherwise,
1535
+ // initial === would have catch identical references anyway
1536
+ "function": function() {
1537
+ var caller = callers[ callers.length - 1 ];
1538
+ return caller !== Object && typeof caller !== "undefined";
1539
+ },
1540
+
1541
+ "array": function( b, a ) {
1542
+ var i, j, len, loop, aCircular, bCircular;
1543
+
1544
+ // b could be an object literal here
1545
+ if ( QUnit.objectType( b ) !== "array" ) {
1546
+ return false;
1547
+ }
1548
+
1549
+ len = a.length;
1550
+ if ( len !== b.length ) {
1551
+ // safe and faster
1552
+ return false;
1553
+ }
1554
+
1555
+ // track reference to avoid circular references
1556
+ parents.push( a );
1557
+ parentsB.push( b );
1558
+ for ( i = 0; i < len; i++ ) {
1559
+ loop = false;
1560
+ for ( j = 0; j < parents.length; j++ ) {
1561
+ aCircular = parents[ j ] === a[ i ];
1562
+ bCircular = parentsB[ j ] === b[ i ];
1563
+ if ( aCircular || bCircular ) {
1564
+ if ( a[ i ] === b[ i ] || aCircular && bCircular ) {
1565
+ loop = true;
1566
+ } else {
1567
+ parents.pop();
1568
+ parentsB.pop();
1569
+ return false;
1570
+ }
1571
+ }
1572
+ }
1573
+ if ( !loop && !innerEquiv( a[ i ], b[ i ] ) ) {
1574
+ parents.pop();
1575
+ parentsB.pop();
1576
+ return false;
1577
+ }
1578
+ }
1579
+ parents.pop();
1580
+ parentsB.pop();
1581
+ return true;
1582
+ },
1583
+
1584
+ "object": function( b, a ) {
1585
+
1586
+ /*jshint forin:false */
1587
+ var i, j, loop, aCircular, bCircular,
1588
+ // Default to true
1589
+ eq = true,
1590
+ aProperties = [],
1591
+ bProperties = [];
1592
+
1593
+ // comparing constructors is more strict than using
1594
+ // instanceof
1595
+ if ( a.constructor !== b.constructor ) {
1596
+
1597
+ // Allow objects with no prototype to be equivalent to
1598
+ // objects with Object as their constructor.
1599
+ if ( !( ( getProto( a ) === null && getProto( b ) === Object.prototype ) ||
1600
+ ( getProto( b ) === null && getProto( a ) === Object.prototype ) ) ) {
1601
+ return false;
1602
+ }
1603
+ }
1604
+
1605
+ // stack constructor before traversing properties
1606
+ callers.push( a.constructor );
1607
+
1608
+ // track reference to avoid circular references
1609
+ parents.push( a );
1610
+ parentsB.push( b );
1611
+
1612
+ // be strict: don't ensure hasOwnProperty and go deep
1613
+ for ( i in a ) {
1614
+ loop = false;
1615
+ for ( j = 0; j < parents.length; j++ ) {
1616
+ aCircular = parents[ j ] === a[ i ];
1617
+ bCircular = parentsB[ j ] === b[ i ];
1618
+ if ( aCircular || bCircular ) {
1619
+ if ( a[ i ] === b[ i ] || aCircular && bCircular ) {
1620
+ loop = true;
1621
+ } else {
1622
+ eq = false;
1623
+ break;
1624
+ }
1625
+ }
1626
+ }
1627
+ aProperties.push( i );
1628
+ if ( !loop && !innerEquiv( a[ i ], b[ i ] ) ) {
1629
+ eq = false;
1630
+ break;
1631
+ }
1632
+ }
1633
+
1634
+ parents.pop();
1635
+ parentsB.pop();
1636
+ callers.pop(); // unstack, we are done
1637
+
1638
+ for ( i in b ) {
1639
+ bProperties.push( i ); // collect b's properties
1640
+ }
1641
+
1642
+ // Ensures identical properties name
1643
+ return eq && innerEquiv( aProperties.sort(), bProperties.sort() );
1644
+ }
1645
+ };
1646
+ }());
1647
+
1648
+ innerEquiv = function() { // can take multiple arguments
1649
+ var args = [].slice.apply( arguments );
1650
+ if ( args.length < 2 ) {
1651
+ return true; // end transition
1652
+ }
1653
+
1654
+ return ( (function( a, b ) {
1655
+ if ( a === b ) {
1656
+ return true; // catch the most you can
1657
+ } else if ( a === null || b === null || typeof a === "undefined" ||
1658
+ typeof b === "undefined" ||
1659
+ QUnit.objectType( a ) !== QUnit.objectType( b ) ) {
1660
+
1661
+ // don't lose time with error prone cases
1662
+ return false;
1663
+ } else {
1664
+ return bindCallbacks( a, callbacks, [ b, a ] );
1665
+ }
1666
+
1667
+ // apply transition with (1..n) arguments
1668
+ }( args[ 0 ], args[ 1 ] ) ) &&
1669
+ innerEquiv.apply( this, args.splice( 1, args.length - 1 ) ) );
1670
+ };
1671
+
1672
+ return innerEquiv;
1673
+ }());
1674
+
1675
+ // Based on jsDump by Ariel Flesler
1676
+ // http://flesler.blogspot.com/2008/05/jsdump-pretty-dump-of-any-javascript.html
1677
+ QUnit.dump = (function() {
1678
+ function quote( str ) {
1679
+ return "\"" + str.toString().replace( /"/g, "\\\"" ) + "\"";
1680
+ }
1681
+ function literal( o ) {
1682
+ return o + "";
1683
+ }
1684
+ function join( pre, arr, post ) {
1685
+ var s = dump.separator(),
1686
+ base = dump.indent(),
1687
+ inner = dump.indent( 1 );
1688
+ if ( arr.join ) {
1689
+ arr = arr.join( "," + s + inner );
1690
+ }
1691
+ if ( !arr ) {
1692
+ return pre + post;
1693
+ }
1694
+ return [ pre, inner + arr, base + post ].join( s );
1695
+ }
1696
+ function array( arr, stack ) {
1697
+ var i = arr.length,
1698
+ ret = new Array( i );
1699
+
1700
+ if ( dump.maxDepth && dump.depth > dump.maxDepth ) {
1701
+ return "[object Array]";
1702
+ }
1703
+
1704
+ this.up();
1705
+ while ( i-- ) {
1706
+ ret[ i ] = this.parse( arr[ i ], undefined, stack );
1707
+ }
1708
+ this.down();
1709
+ return join( "[", ret, "]" );
1710
+ }
1711
+
1712
+ var reName = /^function (\w+)/,
1713
+ dump = {
1714
+
1715
+ // objType is used mostly internally, you can fix a (custom) type in advance
1716
+ parse: function( obj, objType, stack ) {
1717
+ stack = stack || [];
1718
+ var res, parser, parserType,
1719
+ inStack = inArray( obj, stack );
1720
+
1721
+ if ( inStack !== -1 ) {
1722
+ return "recursion(" + ( inStack - stack.length ) + ")";
1723
+ }
1724
+
1725
+ objType = objType || this.typeOf( obj );
1726
+ parser = this.parsers[ objType ];
1727
+ parserType = typeof parser;
1728
+
1729
+ if ( parserType === "function" ) {
1730
+ stack.push( obj );
1731
+ res = parser.call( this, obj, stack );
1732
+ stack.pop();
1733
+ return res;
1734
+ }
1735
+ return ( parserType === "string" ) ? parser : this.parsers.error;
1736
+ },
1737
+ typeOf: function( obj ) {
1738
+ var type;
1739
+ if ( obj === null ) {
1740
+ type = "null";
1741
+ } else if ( typeof obj === "undefined" ) {
1742
+ type = "undefined";
1743
+ } else if ( QUnit.is( "regexp", obj ) ) {
1744
+ type = "regexp";
1745
+ } else if ( QUnit.is( "date", obj ) ) {
1746
+ type = "date";
1747
+ } else if ( QUnit.is( "function", obj ) ) {
1748
+ type = "function";
1749
+ } else if ( obj.setInterval !== undefined &&
1750
+ obj.document !== undefined &&
1751
+ obj.nodeType === undefined ) {
1752
+ type = "window";
1753
+ } else if ( obj.nodeType === 9 ) {
1754
+ type = "document";
1755
+ } else if ( obj.nodeType ) {
1756
+ type = "node";
1757
+ } else if (
1758
+
1759
+ // native arrays
1760
+ toString.call( obj ) === "[object Array]" ||
1761
+
1762
+ // NodeList objects
1763
+ ( typeof obj.length === "number" && obj.item !== undefined &&
1764
+ ( obj.length ? obj.item( 0 ) === obj[ 0 ] : ( obj.item( 0 ) === null &&
1765
+ obj[ 0 ] === undefined ) ) )
1766
+ ) {
1767
+ type = "array";
1768
+ } else if ( obj.constructor === Error.prototype.constructor ) {
1769
+ type = "error";
1770
+ } else {
1771
+ type = typeof obj;
1772
+ }
1773
+ return type;
1774
+ },
1775
+ separator: function() {
1776
+ return this.multiline ? this.HTML ? "<br />" : "\n" : this.HTML ? "&#160;" : " ";
1777
+ },
1778
+ // extra can be a number, shortcut for increasing-calling-decreasing
1779
+ indent: function( extra ) {
1780
+ if ( !this.multiline ) {
1781
+ return "";
1782
+ }
1783
+ var chr = this.indentChar;
1784
+ if ( this.HTML ) {
1785
+ chr = chr.replace( /\t/g, " " ).replace( / /g, "&#160;" );
1786
+ }
1787
+ return new Array( this.depth + ( extra || 0 ) ).join( chr );
1788
+ },
1789
+ up: function( a ) {
1790
+ this.depth += a || 1;
1791
+ },
1792
+ down: function( a ) {
1793
+ this.depth -= a || 1;
1794
+ },
1795
+ setParser: function( name, parser ) {
1796
+ this.parsers[ name ] = parser;
1797
+ },
1798
+ // The next 3 are exposed so you can use them
1799
+ quote: quote,
1800
+ literal: literal,
1801
+ join: join,
1802
+ //
1803
+ depth: 1,
1804
+ maxDepth: 5,
1805
+
1806
+ // This is the list of parsers, to modify them, use dump.setParser
1807
+ parsers: {
1808
+ window: "[Window]",
1809
+ document: "[Document]",
1810
+ error: function( error ) {
1811
+ return "Error(\"" + error.message + "\")";
1812
+ },
1813
+ unknown: "[Unknown]",
1814
+ "null": "null",
1815
+ "undefined": "undefined",
1816
+ "function": function( fn ) {
1817
+ var ret = "function",
1818
+
1819
+ // functions never have name in IE
1820
+ name = "name" in fn ? fn.name : ( reName.exec( fn ) || [] )[ 1 ];
1821
+
1822
+ if ( name ) {
1823
+ ret += " " + name;
1824
+ }
1825
+ ret += "( ";
1826
+
1827
+ ret = [ ret, dump.parse( fn, "functionArgs" ), "){" ].join( "" );
1828
+ return join( ret, dump.parse( fn, "functionCode" ), "}" );
1829
+ },
1830
+ array: array,
1831
+ nodelist: array,
1832
+ "arguments": array,
1833
+ object: function( map, stack ) {
1834
+ var keys, key, val, i, nonEnumerableProperties,
1835
+ ret = [];
1836
+
1837
+ if ( dump.maxDepth && dump.depth > dump.maxDepth ) {
1838
+ return "[object Object]";
1839
+ }
1840
+
1841
+ dump.up();
1842
+ keys = [];
1843
+ for ( key in map ) {
1844
+ keys.push( key );
1845
+ }
1846
+
1847
+ // Some properties are not always enumerable on Error objects.
1848
+ nonEnumerableProperties = [ "message", "name" ];
1849
+ for ( i in nonEnumerableProperties ) {
1850
+ key = nonEnumerableProperties[ i ];
1851
+ if ( key in map && !( key in keys ) ) {
1852
+ keys.push( key );
1853
+ }
1854
+ }
1855
+ keys.sort();
1856
+ for ( i = 0; i < keys.length; i++ ) {
1857
+ key = keys[ i ];
1858
+ val = map[ key ];
1859
+ ret.push( dump.parse( key, "key" ) + ": " +
1860
+ dump.parse( val, undefined, stack ) );
1861
+ }
1862
+ dump.down();
1863
+ return join( "{", ret, "}" );
1864
+ },
1865
+ node: function( node ) {
1866
+ var len, i, val,
1867
+ open = dump.HTML ? "&lt;" : "<",
1868
+ close = dump.HTML ? "&gt;" : ">",
1869
+ tag = node.nodeName.toLowerCase(),
1870
+ ret = open + tag,
1871
+ attrs = node.attributes;
1872
+
1873
+ if ( attrs ) {
1874
+ for ( i = 0, len = attrs.length; i < len; i++ ) {
1875
+ val = attrs[ i ].nodeValue;
1876
+
1877
+ // IE6 includes all attributes in .attributes, even ones not explicitly
1878
+ // set. Those have values like undefined, null, 0, false, "" or
1879
+ // "inherit".
1880
+ if ( val && val !== "inherit" ) {
1881
+ ret += " " + attrs[ i ].nodeName + "=" +
1882
+ dump.parse( val, "attribute" );
1883
+ }
1884
+ }
1885
+ }
1886
+ ret += close;
1887
+
1888
+ // Show content of TextNode or CDATASection
1889
+ if ( node.nodeType === 3 || node.nodeType === 4 ) {
1890
+ ret += node.nodeValue;
1891
+ }
1892
+
1893
+ return ret + open + "/" + tag + close;
1894
+ },
1895
+
1896
+ // function calls it internally, it's the arguments part of the function
1897
+ functionArgs: function( fn ) {
1898
+ var args,
1899
+ l = fn.length;
1900
+
1901
+ if ( !l ) {
1902
+ return "";
1903
+ }
1904
+
1905
+ args = new Array( l );
1906
+ while ( l-- ) {
1907
+
1908
+ // 97 is 'a'
1909
+ args[ l ] = String.fromCharCode( 97 + l );
1910
+ }
1911
+ return " " + args.join( ", " ) + " ";
1912
+ },
1913
+ // object calls it internally, the key part of an item in a map
1914
+ key: quote,
1915
+ // function calls it internally, it's the content of the function
1916
+ functionCode: "[code]",
1917
+ // node calls it internally, it's an html attribute value
1918
+ attribute: quote,
1919
+ string: quote,
1920
+ date: quote,
1921
+ regexp: literal,
1922
+ number: literal,
1923
+ "boolean": literal
1924
+ },
1925
+ // if true, entities are escaped ( <, >, \t, space and \n )
1926
+ HTML: false,
1927
+ // indentation unit
1928
+ indentChar: " ",
1929
+ // if true, items in a collection, are separated by a \n, else just a space.
1930
+ multiline: true
1931
+ };
1932
+
1933
+ return dump;
1934
+ }());
1935
+
1936
+ // back compat
1937
+ QUnit.jsDump = QUnit.dump;
1938
+
1939
+ // For browser, export only select globals
1940
+ if ( typeof window !== "undefined" ) {
1941
+
1942
+ // Deprecated
1943
+ // Extend assert methods to QUnit and Global scope through Backwards compatibility
1944
+ (function() {
1945
+ var i,
1946
+ assertions = Assert.prototype;
1947
+
1948
+ function applyCurrent( current ) {
1949
+ return function() {
1950
+ var assert = new Assert( QUnit.config.current );
1951
+ current.apply( assert, arguments );
1952
+ };
1953
+ }
1954
+
1955
+ for ( i in assertions ) {
1956
+ QUnit[ i ] = applyCurrent( assertions[ i ] );
1957
+ }
1958
+ })();
1959
+
1960
+ (function() {
1961
+ var i, l,
1962
+ keys = [
1963
+ "test",
1964
+ "module",
1965
+ "expect",
1966
+ "asyncTest",
1967
+ "start",
1968
+ "stop",
1969
+ "ok",
1970
+ "equal",
1971
+ "notEqual",
1972
+ "propEqual",
1973
+ "notPropEqual",
1974
+ "deepEqual",
1975
+ "notDeepEqual",
1976
+ "strictEqual",
1977
+ "notStrictEqual",
1978
+ "throws"
1979
+ ];
1980
+
1981
+ for ( i = 0, l = keys.length; i < l; i++ ) {
1982
+ window[ keys[ i ] ] = QUnit[ keys[ i ] ];
1983
+ }
1984
+ })();
1985
+
1986
+ window.QUnit = QUnit;
1987
+ }
1988
+
1989
+ // For nodejs
1990
+ if ( typeof module !== "undefined" && module.exports ) {
1991
+ module.exports = QUnit;
1992
+ }
1993
+
1994
+ // For CommonJS with exports, but without module.exports, like Rhino
1995
+ if ( typeof exports !== "undefined" ) {
1996
+ exports.QUnit = QUnit;
1997
+ }
1998
+
1999
+ // Get a reference to the global object, like window in browsers
2000
+ }( (function() {
2001
+ return this;
2002
+ })() ));
2003
+
2004
+ /*istanbul ignore next */
2005
+ // jscs:disable maximumLineLength
2006
+ /*
2007
+ * Javascript Diff Algorithm
2008
+ * By John Resig (http://ejohn.org/)
2009
+ * Modified by Chu Alan "sprite"
2010
+ *
2011
+ * Released under the MIT license.
2012
+ *
2013
+ * More Info:
2014
+ * http://ejohn.org/projects/javascript-diff-algorithm/
2015
+ *
2016
+ * Usage: QUnit.diff(expected, actual)
2017
+ *
2018
+ * QUnit.diff( "the quick brown fox jumped over", "the quick fox jumps over" ) == "the quick <del>brown </del> fox <del>jumped </del><ins>jumps </ins> over"
2019
+ */
2020
+ QUnit.diff = (function() {
2021
+ var hasOwn = Object.prototype.hasOwnProperty;
2022
+
2023
+ /*jshint eqeqeq:false, eqnull:true */
2024
+ function diff( o, n ) {
2025
+ var i,
2026
+ ns = {},
2027
+ os = {};
2028
+
2029
+ for ( i = 0; i < n.length; i++ ) {
2030
+ if ( !hasOwn.call( ns, n[ i ] ) ) {
2031
+ ns[ n[ i ] ] = {
2032
+ rows: [],
2033
+ o: null
2034
+ };
2035
+ }
2036
+ ns[ n[ i ] ].rows.push( i );
2037
+ }
2038
+
2039
+ for ( i = 0; i < o.length; i++ ) {
2040
+ if ( !hasOwn.call( os, o[ i ] ) ) {
2041
+ os[ o[ i ] ] = {
2042
+ rows: [],
2043
+ n: null
2044
+ };
2045
+ }
2046
+ os[ o[ i ] ].rows.push( i );
2047
+ }
2048
+
2049
+ for ( i in ns ) {
2050
+ if ( hasOwn.call( ns, i ) ) {
2051
+ if ( ns[ i ].rows.length === 1 && hasOwn.call( os, i ) && os[ i ].rows.length === 1 ) {
2052
+ n[ ns[ i ].rows[ 0 ] ] = {
2053
+ text: n[ ns[ i ].rows[ 0 ] ],
2054
+ row: os[ i ].rows[ 0 ]
2055
+ };
2056
+ o[ os[ i ].rows[ 0 ] ] = {
2057
+ text: o[ os[ i ].rows[ 0 ] ],
2058
+ row: ns[ i ].rows[ 0 ]
2059
+ };
2060
+ }
2061
+ }
2062
+ }
2063
+
2064
+ for ( i = 0; i < n.length - 1; i++ ) {
2065
+ if ( n[ i ].text != null && n[ i + 1 ].text == null && n[ i ].row + 1 < o.length && o[ n[ i ].row + 1 ].text == null &&
2066
+ n[ i + 1 ] == o[ n[ i ].row + 1 ] ) {
2067
+
2068
+ n[ i + 1 ] = {
2069
+ text: n[ i + 1 ],
2070
+ row: n[ i ].row + 1
2071
+ };
2072
+ o[ n[ i ].row + 1 ] = {
2073
+ text: o[ n[ i ].row + 1 ],
2074
+ row: i + 1
2075
+ };
2076
+ }
2077
+ }
2078
+
2079
+ for ( i = n.length - 1; i > 0; i-- ) {
2080
+ if ( n[ i ].text != null && n[ i - 1 ].text == null && n[ i ].row > 0 && o[ n[ i ].row - 1 ].text == null &&
2081
+ n[ i - 1 ] == o[ n[ i ].row - 1 ] ) {
2082
+
2083
+ n[ i - 1 ] = {
2084
+ text: n[ i - 1 ],
2085
+ row: n[ i ].row - 1
2086
+ };
2087
+ o[ n[ i ].row - 1 ] = {
2088
+ text: o[ n[ i ].row - 1 ],
2089
+ row: i - 1
2090
+ };
2091
+ }
2092
+ }
2093
+
2094
+ return {
2095
+ o: o,
2096
+ n: n
2097
+ };
2098
+ }
2099
+
2100
+ return function( o, n ) {
2101
+ o = o.replace( /\s+$/, "" );
2102
+ n = n.replace( /\s+$/, "" );
2103
+
2104
+ var i, pre,
2105
+ str = "",
2106
+ out = diff( o === "" ? [] : o.split( /\s+/ ), n === "" ? [] : n.split( /\s+/ ) ),
2107
+ oSpace = o.match( /\s+/g ),
2108
+ nSpace = n.match( /\s+/g );
2109
+
2110
+ if ( oSpace == null ) {
2111
+ oSpace = [ " " ];
2112
+ } else {
2113
+ oSpace.push( " " );
2114
+ }
2115
+
2116
+ if ( nSpace == null ) {
2117
+ nSpace = [ " " ];
2118
+ } else {
2119
+ nSpace.push( " " );
2120
+ }
2121
+
2122
+ if ( out.n.length === 0 ) {
2123
+ for ( i = 0; i < out.o.length; i++ ) {
2124
+ str += "<del>" + out.o[ i ] + oSpace[ i ] + "</del>";
2125
+ }
2126
+ } else {
2127
+ if ( out.n[ 0 ].text == null ) {
2128
+ for ( n = 0; n < out.o.length && out.o[ n ].text == null; n++ ) {
2129
+ str += "<del>" + out.o[ n ] + oSpace[ n ] + "</del>";
2130
+ }
2131
+ }
2132
+
2133
+ for ( i = 0; i < out.n.length; i++ ) {
2134
+ if ( out.n[ i ].text == null ) {
2135
+ str += "<ins>" + out.n[ i ] + nSpace[ i ] + "</ins>";
2136
+ } else {
2137
+
2138
+ // `pre` initialized at top of scope
2139
+ pre = "";
2140
+
2141
+ for ( n = out.n[ i ].row + 1; n < out.o.length && out.o[ n ].text == null; n++ ) {
2142
+ pre += "<del>" + out.o[ n ] + oSpace[ n ] + "</del>";
2143
+ }
2144
+ str += " " + out.n[ i ].text + nSpace[ i ] + pre;
2145
+ }
2146
+ }
2147
+ }
2148
+
2149
+ return str;
2150
+ };
2151
+ }());
2152
+ // jscs:enable
2153
+
2154
+ (function() {
2155
+
2156
+ // Deprecated QUnit.init - Ref #530
2157
+ // Re-initialize the configuration options
2158
+ QUnit.init = function() {
2159
+ var tests, banner, result, qunit,
2160
+ config = QUnit.config;
2161
+
2162
+ config.stats = { all: 0, bad: 0 };
2163
+ config.moduleStats = { all: 0, bad: 0 };
2164
+ config.started = 0;
2165
+ config.updateRate = 1000;
2166
+ config.blocking = false;
2167
+ config.autostart = true;
2168
+ config.autorun = false;
2169
+ config.filter = "";
2170
+ config.queue = [];
2171
+
2172
+ // Return on non-browser environments
2173
+ // This is necessary to not break on node tests
2174
+ if ( typeof window === "undefined" ) {
2175
+ return;
2176
+ }
2177
+
2178
+ qunit = id( "qunit" );
2179
+ if ( qunit ) {
2180
+ qunit.innerHTML =
2181
+ "<h1 id='qunit-header'>" + escapeText( document.title ) + "</h1>" +
2182
+ "<h2 id='qunit-banner'></h2>" +
2183
+ "<div id='qunit-testrunner-toolbar'></div>" +
2184
+ "<h2 id='qunit-userAgent'></h2>" +
2185
+ "<ol id='qunit-tests'></ol>";
2186
+ }
2187
+
2188
+ tests = id( "qunit-tests" );
2189
+ banner = id( "qunit-banner" );
2190
+ result = id( "qunit-testresult" );
2191
+
2192
+ if ( tests ) {
2193
+ tests.innerHTML = "";
2194
+ }
2195
+
2196
+ if ( banner ) {
2197
+ banner.className = "";
2198
+ }
2199
+
2200
+ if ( result ) {
2201
+ result.parentNode.removeChild( result );
2202
+ }
2203
+
2204
+ if ( tests ) {
2205
+ result = document.createElement( "p" );
2206
+ result.id = "qunit-testresult";
2207
+ result.className = "result";
2208
+ tests.parentNode.insertBefore( result, tests );
2209
+ result.innerHTML = "Running...<br />&#160;";
2210
+ }
2211
+ };
2212
+
2213
+ // Don't load the HTML Reporter on non-Browser environments
2214
+ if ( typeof window === "undefined" ) {
2215
+ return;
2216
+ }
2217
+
2218
+ var config = QUnit.config,
2219
+ hasOwn = Object.prototype.hasOwnProperty,
2220
+ defined = {
2221
+ document: window.document !== undefined,
2222
+ sessionStorage: (function() {
2223
+ var x = "qunit-test-string";
2224
+ try {
2225
+ sessionStorage.setItem( x, x );
2226
+ sessionStorage.removeItem( x );
2227
+ return true;
2228
+ } catch ( e ) {
2229
+ return false;
2230
+ }
2231
+ }())
2232
+ },
2233
+ modulesList = [];
2234
+
2235
+ /**
2236
+ * Escape text for attribute or text content.
2237
+ */
2238
+ function escapeText( s ) {
2239
+ if ( !s ) {
2240
+ return "";
2241
+ }
2242
+ s = s + "";
2243
+
2244
+ // Both single quotes and double quotes (for attributes)
2245
+ return s.replace( /['"<>&]/g, function( s ) {
2246
+ switch ( s ) {
2247
+ case "'":
2248
+ return "&#039;";
2249
+ case "\"":
2250
+ return "&quot;";
2251
+ case "<":
2252
+ return "&lt;";
2253
+ case ">":
2254
+ return "&gt;";
2255
+ case "&":
2256
+ return "&amp;";
2257
+ }
2258
+ });
2259
+ }
2260
+
2261
+ /**
2262
+ * @param {HTMLElement} elem
2263
+ * @param {string} type
2264
+ * @param {Function} fn
2265
+ */
2266
+ function addEvent( elem, type, fn ) {
2267
+ if ( elem.addEventListener ) {
2268
+
2269
+ // Standards-based browsers
2270
+ elem.addEventListener( type, fn, false );
2271
+ } else if ( elem.attachEvent ) {
2272
+
2273
+ // support: IE <9
2274
+ elem.attachEvent( "on" + type, fn );
2275
+ }
2276
+ }
2277
+
2278
+ /**
2279
+ * @param {Array|NodeList} elems
2280
+ * @param {string} type
2281
+ * @param {Function} fn
2282
+ */
2283
+ function addEvents( elems, type, fn ) {
2284
+ var i = elems.length;
2285
+ while ( i-- ) {
2286
+ addEvent( elems[ i ], type, fn );
2287
+ }
2288
+ }
2289
+
2290
+ function hasClass( elem, name ) {
2291
+ return ( " " + elem.className + " " ).indexOf( " " + name + " " ) >= 0;
2292
+ }
2293
+
2294
+ function addClass( elem, name ) {
2295
+ if ( !hasClass( elem, name ) ) {
2296
+ elem.className += ( elem.className ? " " : "" ) + name;
2297
+ }
2298
+ }
2299
+
2300
+ function toggleClass( elem, name ) {
2301
+ if ( hasClass( elem, name ) ) {
2302
+ removeClass( elem, name );
2303
+ } else {
2304
+ addClass( elem, name );
2305
+ }
2306
+ }
2307
+
2308
+ function removeClass( elem, name ) {
2309
+ var set = " " + elem.className + " ";
2310
+
2311
+ // Class name may appear multiple times
2312
+ while ( set.indexOf( " " + name + " " ) >= 0 ) {
2313
+ set = set.replace( " " + name + " ", " " );
2314
+ }
2315
+
2316
+ // trim for prettiness
2317
+ elem.className = typeof set.trim === "function" ? set.trim() : set.replace( /^\s+|\s+$/g, "" );
2318
+ }
2319
+
2320
+ function id( name ) {
2321
+ return defined.document && document.getElementById && document.getElementById( name );
2322
+ }
2323
+
2324
+ function getUrlConfigHtml() {
2325
+ var i, j, val,
2326
+ escaped, escapedTooltip,
2327
+ selection = false,
2328
+ len = config.urlConfig.length,
2329
+ urlConfigHtml = "";
2330
+
2331
+ for ( i = 0; i < len; i++ ) {
2332
+ val = config.urlConfig[ i ];
2333
+ if ( typeof val === "string" ) {
2334
+ val = {
2335
+ id: val,
2336
+ label: val
2337
+ };
2338
+ }
2339
+
2340
+ escaped = escapeText( val.id );
2341
+ escapedTooltip = escapeText( val.tooltip );
2342
+
2343
+ config[ val.id ] = QUnit.urlParams[ val.id ];
2344
+ if ( !val.value || typeof val.value === "string" ) {
2345
+ urlConfigHtml += "<input id='qunit-urlconfig-" + escaped +
2346
+ "' name='" + escaped + "' type='checkbox'" +
2347
+ ( val.value ? " value='" + escapeText( val.value ) + "'" : "" ) +
2348
+ ( config[ val.id ] ? " checked='checked'" : "" ) +
2349
+ " title='" + escapedTooltip + "' /><label for='qunit-urlconfig-" + escaped +
2350
+ "' title='" + escapedTooltip + "'>" + val.label + "</label>";
2351
+ } else {
2352
+ urlConfigHtml += "<label for='qunit-urlconfig-" + escaped +
2353
+ "' title='" + escapedTooltip + "'>" + val.label +
2354
+ ": </label><select id='qunit-urlconfig-" + escaped +
2355
+ "' name='" + escaped + "' title='" + escapedTooltip + "'><option></option>";
2356
+
2357
+ if ( QUnit.is( "array", val.value ) ) {
2358
+ for ( j = 0; j < val.value.length; j++ ) {
2359
+ escaped = escapeText( val.value[ j ] );
2360
+ urlConfigHtml += "<option value='" + escaped + "'" +
2361
+ ( config[ val.id ] === val.value[ j ] ?
2362
+ ( selection = true ) && " selected='selected'" : "" ) +
2363
+ ">" + escaped + "</option>";
2364
+ }
2365
+ } else {
2366
+ for ( j in val.value ) {
2367
+ if ( hasOwn.call( val.value, j ) ) {
2368
+ urlConfigHtml += "<option value='" + escapeText( j ) + "'" +
2369
+ ( config[ val.id ] === j ?
2370
+ ( selection = true ) && " selected='selected'" : "" ) +
2371
+ ">" + escapeText( val.value[ j ] ) + "</option>";
2372
+ }
2373
+ }
2374
+ }
2375
+ if ( config[ val.id ] && !selection ) {
2376
+ escaped = escapeText( config[ val.id ] );
2377
+ urlConfigHtml += "<option value='" + escaped +
2378
+ "' selected='selected' disabled='disabled'>" + escaped + "</option>";
2379
+ }
2380
+ urlConfigHtml += "</select>";
2381
+ }
2382
+ }
2383
+
2384
+ return urlConfigHtml;
2385
+ }
2386
+
2387
+ // Handle "click" events on toolbar checkboxes and "change" for select menus.
2388
+ // Updates the URL with the new state of `config.urlConfig` values.
2389
+ function toolbarChanged() {
2390
+ var updatedUrl, value,
2391
+ field = this,
2392
+ params = {};
2393
+
2394
+ // Detect if field is a select menu or a checkbox
2395
+ if ( "selectedIndex" in field ) {
2396
+ value = field.options[ field.selectedIndex ].value || undefined;
2397
+ } else {
2398
+ value = field.checked ? ( field.defaultValue || true ) : undefined;
2399
+ }
2400
+
2401
+ params[ field.name ] = value;
2402
+ updatedUrl = QUnit.url( params );
2403
+
2404
+ if ( "hidepassed" === field.name && "replaceState" in window.history ) {
2405
+ config[ field.name ] = value || false;
2406
+ if ( value ) {
2407
+ addClass( id( "qunit-tests" ), "hidepass" );
2408
+ } else {
2409
+ removeClass( id( "qunit-tests" ), "hidepass" );
2410
+ }
2411
+
2412
+ // It is not necessary to refresh the whole page
2413
+ window.history.replaceState( null, "", updatedUrl );
2414
+ } else {
2415
+ window.location = updatedUrl;
2416
+ }
2417
+ }
2418
+
2419
+ function toolbarUrlConfigContainer() {
2420
+ var urlConfigContainer = document.createElement( "span" );
2421
+
2422
+ urlConfigContainer.innerHTML = getUrlConfigHtml();
2423
+
2424
+ // For oldIE support:
2425
+ // * Add handlers to the individual elements instead of the container
2426
+ // * Use "click" instead of "change" for checkboxes
2427
+ addEvents( urlConfigContainer.getElementsByTagName( "input" ), "click", toolbarChanged );
2428
+ addEvents( urlConfigContainer.getElementsByTagName( "select" ), "change", toolbarChanged );
2429
+
2430
+ return urlConfigContainer;
2431
+ }
2432
+
2433
+ function toolbarModuleFilterHtml() {
2434
+ var i,
2435
+ moduleFilterHtml = "";
2436
+
2437
+ if ( !modulesList.length ) {
2438
+ return false;
2439
+ }
2440
+
2441
+ modulesList.sort(function( a, b ) {
2442
+ return a.localeCompare( b );
2443
+ });
2444
+
2445
+ moduleFilterHtml += "<label for='qunit-modulefilter'>Module: </label>" +
2446
+ "<select id='qunit-modulefilter' name='modulefilter'><option value='' " +
2447
+ ( QUnit.urlParams.module === undefined ? "selected='selected'" : "" ) +
2448
+ ">< All Modules ></option>";
2449
+
2450
+ for ( i = 0; i < modulesList.length; i++ ) {
2451
+ moduleFilterHtml += "<option value='" +
2452
+ escapeText( encodeURIComponent( modulesList[ i ] ) ) + "' " +
2453
+ ( QUnit.urlParams.module === modulesList[ i ] ? "selected='selected'" : "" ) +
2454
+ ">" + escapeText( modulesList[ i ] ) + "</option>";
2455
+ }
2456
+ moduleFilterHtml += "</select>";
2457
+
2458
+ return moduleFilterHtml;
2459
+ }
2460
+
2461
+ function toolbarModuleFilter() {
2462
+ var toolbar = id( "qunit-testrunner-toolbar" ),
2463
+ moduleFilter = document.createElement( "span" ),
2464
+ moduleFilterHtml = toolbarModuleFilterHtml();
2465
+
2466
+ if ( !moduleFilterHtml ) {
2467
+ return false;
2468
+ }
2469
+
2470
+ moduleFilter.setAttribute( "id", "qunit-modulefilter-container" );
2471
+ moduleFilter.innerHTML = moduleFilterHtml;
2472
+
2473
+ addEvent( moduleFilter.lastChild, "change", function() {
2474
+ var selectBox = moduleFilter.getElementsByTagName( "select" )[ 0 ],
2475
+ selection = decodeURIComponent( selectBox.options[ selectBox.selectedIndex ].value );
2476
+
2477
+ window.location = QUnit.url({
2478
+ module: ( selection === "" ) ? undefined : selection,
2479
+
2480
+ // Remove any existing filters
2481
+ filter: undefined,
2482
+ testId: undefined
2483
+ });
2484
+ });
2485
+
2486
+ toolbar.appendChild( moduleFilter );
2487
+ }
2488
+
2489
+ function appendToolbar() {
2490
+ var toolbar = id( "qunit-testrunner-toolbar" );
2491
+
2492
+ if ( toolbar ) {
2493
+ toolbar.appendChild( toolbarUrlConfigContainer() );
2494
+ }
2495
+ }
2496
+
2497
+ function appendBanner() {
2498
+ var banner = id( "qunit-banner" );
2499
+
2500
+ if ( banner ) {
2501
+ banner.className = "";
2502
+ banner.innerHTML = "<a href='" +
2503
+ QUnit.url({ filter: undefined, module: undefined, testId: undefined }) +
2504
+ "'>" + banner.innerHTML + "</a> ";
2505
+ }
2506
+ }
2507
+
2508
+ function appendTestResults() {
2509
+ var tests = id( "qunit-tests" ),
2510
+ result = id( "qunit-testresult" );
2511
+
2512
+ if ( result ) {
2513
+ result.parentNode.removeChild( result );
2514
+ }
2515
+
2516
+ if ( tests ) {
2517
+ tests.innerHTML = "";
2518
+ result = document.createElement( "p" );
2519
+ result.id = "qunit-testresult";
2520
+ result.className = "result";
2521
+ tests.parentNode.insertBefore( result, tests );
2522
+ result.innerHTML = "Running...<br />&#160;";
2523
+ }
2524
+ }
2525
+
2526
+ function storeFixture() {
2527
+ var fixture = id( "qunit-fixture" );
2528
+ if ( fixture ) {
2529
+ config.fixture = fixture.innerHTML;
2530
+ }
2531
+ }
2532
+
2533
+ function appendUserAgent() {
2534
+ var userAgent = id( "qunit-userAgent" );
2535
+ if ( userAgent ) {
2536
+ userAgent.innerHTML = navigator.userAgent;
2537
+ }
2538
+ }
2539
+
2540
+ function appendTestsList( modules ) {
2541
+ var i, l, x, z, test, moduleObj;
2542
+
2543
+ for ( i = 0, l = modules.length; i < l; i++ ) {
2544
+ moduleObj = modules[ i ];
2545
+
2546
+ if ( moduleObj.name ) {
2547
+ modulesList.push( moduleObj.name );
2548
+ }
2549
+
2550
+ for ( x = 0, z = moduleObj.tests.length; x < z; x++ ) {
2551
+ test = moduleObj.tests[ x ];
2552
+
2553
+ appendTest( test.name, test.testId, moduleObj.name );
2554
+ }
2555
+ }
2556
+ }
2557
+
2558
+ function appendTest( name, testId, moduleName ) {
2559
+ var title, rerunTrigger, testBlock, assertList,
2560
+ tests = id( "qunit-tests" );
2561
+
2562
+ if ( !tests ) {
2563
+ return;
2564
+ }
2565
+
2566
+ title = document.createElement( "strong" );
2567
+ title.innerHTML = getNameHtml( name, moduleName );
2568
+
2569
+ rerunTrigger = document.createElement( "a" );
2570
+ rerunTrigger.innerHTML = "Rerun";
2571
+ rerunTrigger.href = QUnit.url({ testId: testId });
2572
+
2573
+ testBlock = document.createElement( "li" );
2574
+ testBlock.appendChild( title );
2575
+ testBlock.appendChild( rerunTrigger );
2576
+ testBlock.id = "qunit-test-output-" + testId;
2577
+
2578
+ assertList = document.createElement( "ol" );
2579
+ assertList.className = "qunit-assert-list";
2580
+
2581
+ testBlock.appendChild( assertList );
2582
+
2583
+ tests.appendChild( testBlock );
2584
+ }
2585
+
2586
+ // HTML Reporter initialization and load
2587
+ QUnit.begin(function( details ) {
2588
+ var qunit = id( "qunit" );
2589
+
2590
+ // Fixture is the only one necessary to run without the #qunit element
2591
+ storeFixture();
2592
+
2593
+ if ( !qunit ) {
2594
+ return;
2595
+ }
2596
+
2597
+ qunit.innerHTML =
2598
+ "<h1 id='qunit-header'>" + escapeText( document.title ) + "</h1>" +
2599
+ "<h2 id='qunit-banner'></h2>" +
2600
+ "<div id='qunit-testrunner-toolbar'></div>" +
2601
+ "<h2 id='qunit-userAgent'></h2>" +
2602
+ "<ol id='qunit-tests'></ol>";
2603
+
2604
+ appendBanner();
2605
+ appendTestResults();
2606
+ appendUserAgent();
2607
+ appendToolbar();
2608
+ appendTestsList( details.modules );
2609
+ toolbarModuleFilter();
2610
+
2611
+ if ( config.hidepassed ) {
2612
+ addClass( qunit.lastChild, "hidepass" );
2613
+ }
2614
+ });
2615
+
2616
+ QUnit.done(function( details ) {
2617
+ var i, key,
2618
+ banner = id( "qunit-banner" ),
2619
+ tests = id( "qunit-tests" ),
2620
+ html = [
2621
+ "Tests completed in ",
2622
+ details.runtime,
2623
+ " milliseconds.<br />",
2624
+ "<span class='passed'>",
2625
+ details.passed,
2626
+ "</span> assertions of <span class='total'>",
2627
+ details.total,
2628
+ "</span> passed, <span class='failed'>",
2629
+ details.failed,
2630
+ "</span> failed."
2631
+ ].join( "" );
2632
+
2633
+ if ( banner ) {
2634
+ banner.className = details.failed ? "qunit-fail" : "qunit-pass";
2635
+ }
2636
+
2637
+ if ( tests ) {
2638
+ id( "qunit-testresult" ).innerHTML = html;
2639
+ }
2640
+
2641
+ if ( config.altertitle && defined.document && document.title ) {
2642
+
2643
+ // show ✖ for good, ✔ for bad suite result in title
2644
+ // use escape sequences in case file gets loaded with non-utf-8-charset
2645
+ document.title = [
2646
+ ( details.failed ? "\u2716" : "\u2714" ),
2647
+ document.title.replace( /^[\u2714\u2716] /i, "" )
2648
+ ].join( " " );
2649
+ }
2650
+
2651
+ // clear own sessionStorage items if all tests passed
2652
+ if ( config.reorder && defined.sessionStorage && details.failed === 0 ) {
2653
+ for ( i = 0; i < sessionStorage.length; i++ ) {
2654
+ key = sessionStorage.key( i++ );
2655
+ if ( key.indexOf( "qunit-test-" ) === 0 ) {
2656
+ sessionStorage.removeItem( key );
2657
+ }
2658
+ }
2659
+ }
2660
+
2661
+ // scroll back to top to show results
2662
+ if ( config.scrolltop && window.scrollTo ) {
2663
+ window.scrollTo( 0, 0 );
2664
+ }
2665
+ });
2666
+
2667
+ function getNameHtml( name, module ) {
2668
+ var nameHtml = "";
2669
+
2670
+ if ( module ) {
2671
+ nameHtml = "<span class='module-name'>" + escapeText( module ) + "</span>: ";
2672
+ }
2673
+
2674
+ nameHtml += "<span class='test-name'>" + escapeText( name ) + "</span>";
2675
+
2676
+ return nameHtml;
2677
+ }
2678
+
2679
+ QUnit.testStart(function( details ) {
2680
+ var running, testBlock;
2681
+
2682
+ testBlock = id( "qunit-test-output-" + details.testId );
2683
+ if ( testBlock ) {
2684
+ testBlock.className = "running";
2685
+ } else {
2686
+
2687
+ // Report later registered tests
2688
+ appendTest( details.name, details.testId, details.module );
2689
+ }
2690
+
2691
+ running = id( "qunit-testresult" );
2692
+ if ( running ) {
2693
+ running.innerHTML = "Running: <br />" + getNameHtml( details.name, details.module );
2694
+ }
2695
+
2696
+ });
2697
+
2698
+ QUnit.log(function( details ) {
2699
+ var assertList, assertLi,
2700
+ message, expected, actual,
2701
+ testItem = id( "qunit-test-output-" + details.testId );
2702
+
2703
+ if ( !testItem ) {
2704
+ return;
2705
+ }
2706
+
2707
+ message = escapeText( details.message ) || ( details.result ? "okay" : "failed" );
2708
+ message = "<span class='test-message'>" + message + "</span>";
2709
+ message += "<span class='runtime'>@ " + details.runtime + " ms</span>";
2710
+
2711
+ // pushFailure doesn't provide details.expected
2712
+ // when it calls, it's implicit to also not show expected and diff stuff
2713
+ // Also, we need to check details.expected existence, as it can exist and be undefined
2714
+ if ( !details.result && hasOwn.call( details, "expected" ) ) {
2715
+ expected = escapeText( QUnit.dump.parse( details.expected ) );
2716
+ actual = escapeText( QUnit.dump.parse( details.actual ) );
2717
+ message += "<table><tr class='test-expected'><th>Expected: </th><td><pre>" +
2718
+ expected +
2719
+ "</pre></td></tr>";
2720
+
2721
+ if ( actual !== expected ) {
2722
+ message += "<tr class='test-actual'><th>Result: </th><td><pre>" +
2723
+ actual + "</pre></td></tr>" +
2724
+ "<tr class='test-diff'><th>Diff: </th><td><pre>" +
2725
+ QUnit.diff( expected, actual ) + "</pre></td></tr>";
2726
+ }
2727
+
2728
+ if ( details.source ) {
2729
+ message += "<tr class='test-source'><th>Source: </th><td><pre>" +
2730
+ escapeText( details.source ) + "</pre></td></tr>";
2731
+ }
2732
+
2733
+ message += "</table>";
2734
+
2735
+ // this occours when pushFailure is set and we have an extracted stack trace
2736
+ } else if ( !details.result && details.source ) {
2737
+ message += "<table>" +
2738
+ "<tr class='test-source'><th>Source: </th><td><pre>" +
2739
+ escapeText( details.source ) + "</pre></td></tr>" +
2740
+ "</table>";
2741
+ }
2742
+
2743
+ assertList = testItem.getElementsByTagName( "ol" )[ 0 ];
2744
+
2745
+ assertLi = document.createElement( "li" );
2746
+ assertLi.className = details.result ? "pass" : "fail";
2747
+ assertLi.innerHTML = message;
2748
+ assertList.appendChild( assertLi );
2749
+ });
2750
+
2751
+ QUnit.testDone(function( details ) {
2752
+ var testTitle, time, testItem, assertList,
2753
+ good, bad, testCounts, skipped,
2754
+ tests = id( "qunit-tests" );
2755
+
2756
+ if ( !tests ) {
2757
+ return;
2758
+ }
2759
+
2760
+ testItem = id( "qunit-test-output-" + details.testId );
2761
+
2762
+ assertList = testItem.getElementsByTagName( "ol" )[ 0 ];
2763
+
2764
+ good = details.passed;
2765
+ bad = details.failed;
2766
+
2767
+ // store result when possible
2768
+ if ( config.reorder && defined.sessionStorage ) {
2769
+ if ( bad ) {
2770
+ sessionStorage.setItem( "qunit-test-" + details.module + "-" + details.name, bad );
2771
+ } else {
2772
+ sessionStorage.removeItem( "qunit-test-" + details.module + "-" + details.name );
2773
+ }
2774
+ }
2775
+
2776
+ if ( bad === 0 ) {
2777
+ addClass( assertList, "qunit-collapsed" );
2778
+ }
2779
+
2780
+ // testItem.firstChild is the test name
2781
+ testTitle = testItem.firstChild;
2782
+
2783
+ testCounts = bad ?
2784
+ "<b class='failed'>" + bad + "</b>, " + "<b class='passed'>" + good + "</b>, " :
2785
+ "";
2786
+
2787
+ testTitle.innerHTML += " <b class='counts'>(" + testCounts +
2788
+ details.assertions.length + ")</b>";
2789
+
2790
+ if ( details.skipped ) {
2791
+ addClass( testItem, "skipped" );
2792
+ skipped = document.createElement( "em" );
2793
+ skipped.className = "qunit-skipped-label";
2794
+ skipped.innerHTML = "skipped";
2795
+ testItem.insertBefore( skipped, testTitle );
2796
+ } else {
2797
+ addEvent( testTitle, "click", function() {
2798
+ toggleClass( assertList, "qunit-collapsed" );
2799
+ });
2800
+
2801
+ testItem.className = bad ? "fail" : "pass";
2802
+
2803
+ time = document.createElement( "span" );
2804
+ time.className = "runtime";
2805
+ time.innerHTML = details.runtime + " ms";
2806
+ testItem.insertBefore( time, assertList );
2807
+ }
2808
+ });
2809
+
2810
+ if ( !defined.document || document.readyState === "complete" ) {
2811
+ config.pageLoaded = true;
2812
+ config.autorun = true;
2813
+ }
2814
+
2815
+ if ( defined.document ) {
2816
+ addEvent( window, "load", QUnit.load );
2817
+ }
2818
+
2819
+ })();
lang/nggallery-fi.mo CHANGED
Binary file
lang/nggallery-fi.po CHANGED
@@ -1,9488 +1,4229 @@
1
- <!DOCTYPE html>
2
- <html lang="en">
3
- <head>
4
- <meta http-equiv="X-UA-Compatible" content="IE=edge" />
5
- <meta charset="utf-8">
6
- <title>
7
- niknetniko / NextCellent
8
- / source / lang / nggallery-fi.po
9
- &mdash; Bitbucket
10
- </title>
11
- <link rel="icon" type="image/png" href="https://d3oaxc4q5k2d6q.cloudfront.net/m/f8a094b2aa66/img/favicon.png">
12
- <meta id="bb-canon-url" name="bb-canon-url" content="https://bitbucket.org">
13
-
14
-
15
-
16
- <link rel="stylesheet" href="https://d3oaxc4q5k2d6q.cloudfront.net/m/f8a094b2aa66/compressed/css/dac467b8bdcd.css" type="text/css" />
17
- <link rel="stylesheet" href="https://d3oaxc4q5k2d6q.cloudfront.net/m/f8a094b2aa66/compressed/css/54bc1ce87a14.css" type="text/css" />
18
-
19
-
20
- <!--[if lte IE 9]><link rel="stylesheet" href="https://d3oaxc4q5k2d6q.cloudfront.net/m/f8a094b2aa66/bower_components/fd-slider/css/fd-slider.css" media="all"><![endif]-->
21
- <!--[if IE 9]><link rel="stylesheet" href="https://d3oaxc4q5k2d6q.cloudfront.net/m/f8a094b2aa66/bower_components/bb-aui/aui-next/css/aui-ie9.css" media="all"><![endif]-->
22
- <!--[if IE]><link rel="stylesheet" href="https://d3oaxc4q5k2d6q.cloudfront.net/m/f8a094b2aa66/css/aui-overrides-ie.css" media="all"><![endif]-->
23
- <meta name="description" content=""/>
24
- <link rel="search" type="application/opensearchdescription+xml" href="/opensearch.xml" title="Bitbucket" />
25
-
26
-
27
- <link href="/niknetniko/nextcellent/rss?token=32c9b140e5facc1f7f288ff47258ebb7" rel="alternate nofollow" type="application/rss+xml" title="RSS feed for NextCellent" />
28
-
29
-
30
- <script type="text/javascript">(window.NREUM||(NREUM={})).loader_config={xpid:"VwMGVVZSGwIIUFBQDwU="};window.NREUM||(NREUM={}),__nr_require=function(t,e,n){function r(n){if(!e[n]){var o=e[n]={exports:{}};t[n][0].call(o.exports,function(e){var o=t[n][1][e];return r(o?o:e)},o,o.exports)}return e[n].exports}if("function"==typeof __nr_require)return __nr_require;for(var o=0;o<n.length;o++)r(n[o]);return r}({1:[function(t,e){function n(t,e,n){n||(n={});for(var r=o[t],a=r&&r.length||0,s=n[i]||(n[i]={}),u=0;a>u;u++)r[u].apply(s,e);return s}function r(t,e){var n=o[t]||(o[t]=[]);n.push(e)}var o={},i="nr@context";e.exports={on:r,emit:n}},{}],2:[function(t){function e(t,e,n,i,s){try{u?u-=1:r("err",[s||new UncaughtException(t,e,n)])}catch(c){try{r("ierr",[c,(new Date).getTime(),!0])}catch(d){}}return"function"==typeof a?a.apply(this,o(arguments)):!1}function UncaughtException(t,e,n){this.message=t||"Uncaught error with no additional information",this.sourceURL=e,this.line=n}function n(t){r("err",[t,(new Date).getTime()])}var r=t("handle"),o=t(6),i=t(5),a=window.onerror,s=!1,u=0;t("loader").features.push("err"),window.onerror=e,NREUM.noticeError=n;try{throw new Error}catch(c){"stack"in c&&(t(1),t(2),"addEventListener"in window&&t(3),window.XMLHttpRequest&&XMLHttpRequest.prototype&&XMLHttpRequest.prototype.addEventListener&&t(4),s=!0)}i.on("fn-start",function(){s&&(u+=1)}),i.on("fn-err",function(t,e,r){s&&(this.thrown=!0,n(r))}),i.on("fn-end",function(){s&&!this.thrown&&u>0&&(u-=1)}),i.on("internal-error",function(t){r("ierr",[t,(new Date).getTime(),!0])})},{1:5,2:4,3:3,4:6,5:1,6:14,handle:"D5DuLP",loader:"G9z0Bl"}],3:[function(t){function e(t){r.inPlace(t,["addEventListener","removeEventListener"],"-",n)}function n(t){return t[1]}var r=t(1),o=(t(3),t(2));if(e(window),"getPrototypeOf"in Object){for(var i=document;i&&!i.hasOwnProperty("addEventListener");)i=Object.getPrototypeOf(i);i&&e(i);for(var a=XMLHttpRequest.prototype;a&&!a.hasOwnProperty("addEventListener");)a=Object.getPrototypeOf(a);a&&e(a)}else XMLHttpRequest.prototype.hasOwnProperty("addEventListener")&&e(XMLHttpRequest.prototype);o.on("addEventListener-start",function(t){if(t[1]){var e=t[1];"function"==typeof e?this.wrapped=e["nr@wrapped"]?t[1]=e["nr@wrapped"]:e["nr@wrapped"]=t[1]=r(e,"fn-"):"function"==typeof e.handleEvent&&r.inPlace(e,["handleEvent"],"fn-")}}),o.on("removeEventListener-start",function(t){var e=this.wrapped;e&&(t[1]=e)})},{1:15,2:1,3:14}],4:[function(t){var e=(t(3),t(1)),n=t(2);e.inPlace(window,["requestAnimationFrame","mozRequestAnimationFrame","webkitRequestAnimationFrame","msRequestAnimationFrame"],"raf-"),n.on("raf-start",function(t){t[0]=e(t[0],"fn-")})},{1:15,2:1,3:14}],5:[function(t){function e(t){var e=t[0];"string"==typeof e&&(e=new Function(e)),t[0]=n(e,"fn-")}var n=(t(3),t(1)),r=t(2);n.inPlace(window,["setTimeout","setInterval","setImmediate"],"setTimer-"),r.on("setTimer-start",e)},{1:15,2:1,3:14}],6:[function(t){function e(){o.inPlace(this,s,"fn-")}function n(t,e){o.inPlace(e,["onreadystatechange"],"fn-")}function r(t,e){return e}var o=t(1),i=t(2),a=window.XMLHttpRequest,s=["onload","onerror","onabort","onloadstart","onloadend","onprogress","ontimeout"];window.XMLHttpRequest=function(t){var n=new a(t);try{i.emit("new-xhr",[],n),o.inPlace(n,["addEventListener","removeEventListener"],"-",function(t,e){return e}),n.addEventListener("readystatechange",e,!1)}catch(r){try{i.emit("internal-error",r)}catch(s){}}return n},window.XMLHttpRequest.prototype=a.prototype,o.inPlace(XMLHttpRequest.prototype,["open","send"],"-xhr-",r),i.on("send-xhr-start",n),i.on("open-xhr-start",n)},{1:15,2:1}],7:[function(t){function e(){function e(t){if("string"==typeof t&&t.length)return t.length;if("object"!=typeof t)return void 0;if("undefined"!=typeof ArrayBuffer&&t instanceof ArrayBuffer&&t.byteLength)return t.byteLength;if("undefined"!=typeof Blob&&t instanceof Blob&&t.size)return t.size;if("undefined"!=typeof FormData&&t instanceof FormData)return void 0;try{return JSON.stringify(t).length}catch(e){return void 0}}function n(t){var n=this.params,r=this.metrics;if(!this.ended){this.ended=!0;for(var i=0;u>i;i++)t.removeEventListener(s[i],this.listener,!1);if(!n.aborted){if(r.duration=(new Date).getTime()-this.startTime,4===t.readyState){n.status=t.status;var a=t.responseType,c="arraybuffer"===a||"blob"===a||"json"===a?t.response:t.responseText,d=e(c);if(d&&(r.rxSize=d),this.sameOrigin){var f=t.getResponseHeader("X-NewRelic-App-Data");f&&(n.cat=f.split(", ").pop())}}else n.status=0;r.cbTime=this.cbTime,o("xhr",[n,r])}}}function r(t,e){var n=i(e),r=t.params;r.host=n.hostname+":"+n.port,r.pathname=n.pathname,t.sameOrigin=n.sameOrigin}t("loader").features.push("xhr");var o=t("handle"),i=t(1),a=t(5),s=["load","error","abort","timeout"],u=s.length,c=t(2);t(3),t(4),a.on("new-xhr",function(){this.totalCbs=0,this.called=0,this.cbTime=0,this.end=n,this.ended=!1,this.xhrGuids={}}),a.on("open-xhr-start",function(t){this.params={method:t[0]},r(this,t[1]),this.metrics={}}),a.on("open-xhr-end",function(t,e){"loader_config"in NREUM&&"xpid"in NREUM.loader_config&&this.sameOrigin&&e.setRequestHeader("X-NewRelic-ID",NREUM.loader_config.xpid)}),a.on("send-xhr-start",function(t,n){var r=this.metrics,o=t[0],i=this;if(r&&o){var c=e(o);c&&(r.txSize=c)}this.startTime=(new Date).getTime(),this.listener=function(t){try{"abort"===t.type&&(i.params.aborted=!0),("load"!==t.type||i.called===i.totalCbs&&(i.onloadCalled||"function"!=typeof n.onload))&&i.end(n)}catch(e){try{a.emit("internal-error",e)}catch(r){}}};for(var d=0;u>d;d++)n.addEventListener(s[d],this.listener,!1)}),a.on("xhr-cb-time",function(t,e,n){this.cbTime+=t,e?this.onloadCalled=!0:this.called+=1,this.called!==this.totalCbs||!this.onloadCalled&&"function"==typeof n.onload||this.end(n)}),a.on("xhr-load-added",function(t,e){var n=""+c(t)+!!e;this.xhrGuids&&!this.xhrGuids[n]&&(this.xhrGuids[n]=!0,this.totalCbs+=1)}),a.on("xhr-load-removed",function(t,e){var n=""+c(t)+!!e;this.xhrGuids&&this.xhrGuids[n]&&(delete this.xhrGuids[n],this.totalCbs-=1)}),a.on("addEventListener-end",function(t,e){e instanceof XMLHttpRequest&&"load"===t[0]&&a.emit("xhr-load-added",[t[1],t[2]],e)}),a.on("removeEventListener-end",function(t,e){e instanceof XMLHttpRequest&&"load"===t[0]&&a.emit("xhr-load-removed",[t[1],t[2]],e)}),a.on("fn-start",function(t,e,n){e instanceof XMLHttpRequest&&("onload"===n&&(this.onload=!0),("load"===(t[0]&&t[0].type)||this.onload)&&(this.xhrCbStart=(new Date).getTime()))}),a.on("fn-end",function(t,e){this.xhrCbStart&&a.emit("xhr-cb-time",[(new Date).getTime()-this.xhrCbStart,this.onload,e],e)})}window.XMLHttpRequest&&XMLHttpRequest.prototype&&XMLHttpRequest.prototype.addEventListener&&!/CriOS/.test(navigator.userAgent)&&e()},{1:8,2:11,3:3,4:6,5:1,handle:"D5DuLP",loader:"G9z0Bl"}],8:[function(t,e){e.exports=function(t){var e=document.createElement("a"),n=window.location,r={};e.href=t,r.port=e.port;var o=e.href.split("://");return!r.port&&o[1]&&(r.port=o[1].split("/")[0].split(":")[1]),r.port&&"0"!==r.port||(r.port="https"===o[0]?"443":"80"),r.hostname=e.hostname||n.hostname,r.pathname=e.pathname,"/"!==r.pathname.charAt(0)&&(r.pathname="/"+r.pathname),r.sameOrigin=!e.hostname||e.hostname===document.domain&&e.port===n.port&&e.protocol===n.protocol,r}},{}],handle:[function(t,e){e.exports=t("D5DuLP")},{}],D5DuLP:[function(t,e){function n(t,e){var n=r[t];return n?n.apply(this,e):(o[t]||(o[t]=[]),void o[t].push(e))}var r={},o={};e.exports=n,n.queues=o,n.handlers=r},{}],11:[function(t,e){function n(t){if(!t||"object"!=typeof t&&"function"!=typeof t)return-1;if(t===window)return 0;if(o.call(t,"__nr"))return t.__nr;try{return Object.defineProperty(t,"__nr",{value:r,writable:!0,enumerable:!1}),r}catch(e){return t.__nr=r,r}finally{r+=1}}var r=1,o=Object.prototype.hasOwnProperty;e.exports=n},{}],loader:[function(t,e){e.exports=t("G9z0Bl")},{}],G9z0Bl:[function(t,e){function n(){var t=p.info=NREUM.info;if(t&&t.agent&&t.licenseKey&&t.applicationID&&u&&u.body){p.proto="https"===f.split(":")[0]||t.sslForHttp?"https://":"http://",a("mark",["onload",i()]);var e=u.createElement("script");e.src=p.proto+t.agent,u.body.appendChild(e)}}function r(){"complete"===u.readyState&&o()}function o(){a("mark",["domContent",i()])}function i(){return(new Date).getTime()}var a=t("handle"),s=window,u=s.document,c="addEventListener",d="attachEvent",f=(""+location).split("?")[0],p=e.exports={offset:i(),origin:f,features:[]};u[c]?(u[c]("DOMContentLoaded",o,!1),s[c]("load",n,!1)):(u[d]("onreadystatechange",r),s[d]("onload",n)),a("mark",["firstbyte",i()])},{handle:"D5DuLP"}],14:[function(t,e){function n(t,e,n){e||(e=0),"undefined"==typeof n&&(n=t?t.length:0);for(var r=-1,o=n-e||0,i=Array(0>o?0:o);++r<o;)i[r]=t[e+r];return i}e.exports=n},{}],15:[function(t,e){function n(t,e,r,s){function nrWrapper(){try{var n,a=u(arguments),c=this,d=r&&r(a,c)||{}}catch(f){i([f,"",[a,c,s],d])}o(e+"start",[a,c,s],d);try{return n=t.apply(c,a)}catch(p){throw o(e+"err",[a,c,p],d),p}finally{o(e+"end",[a,c,n],d)}}return a(t)?t:(e||(e=""),nrWrapper[n.flag]=!0,nrWrapper)}function r(t,e,r,o){r||(r="");var i,s,u,c="-"===r.charAt(0);for(u=0;u<e.length;u++)s=e[u],i=t[s],a(i)||(t[s]=n(i,c?s+r:r,o,s,t))}function o(t,e,n){try{s.emit(t,e,n)}catch(r){i([r,t,e,n])}}function i(t){try{s.emit("internal-error",t)}catch(e){}}function a(t){return!(t&&"function"==typeof t&&t.apply&&!t[n.flag])}var s=t(1),u=t(2);e.exports=n,n.inPlace=r,n.flag="nr@wrapper"},{1:1,2:14}]},{},["G9z0Bl",2,7]);</script></head>
31
- <body class="production aui-page-sidebar aui-sidebar-collapsed"
32
- data-base-url="https://bitbucket.org"
33
- data-no-avatar-image="https://d3oaxc4q5k2d6q.cloudfront.net/m/f8a094b2aa66/img/default_avatar/16/user_blue.png"
34
- data-current-user="{&quot;username&quot;: &quot;wpgetready&quot;, &quot;displayName&quot;: &quot;Fernando Zorrilla&quot;, &quot;firstName&quot;: &quot;Fernando&quot;, &quot;avatarUrl&quot;: &quot;https://secure.gravatar.com/avatar/b985a98ea07b351258210b2d07e1b99a?d=https%3A%2F%2Fd3oaxc4q5k2d6q.cloudfront.net%2Fm%2Ff8a094b2aa66%2Fimg%2Fdefault_avatar%2F32%2Fuser_blue.png&amp;s=32&quot;, &quot;lastName&quot;: &quot;Zorrilla&quot;, &quot;isTeam&quot;: false, &quot;isSshEnabled&quot;: false, &quot;isKbdShortcutsEnabled&quot;: true, &quot;id&quot;: 1812593, &quot;isAuthenticated&quot;: true}"
35
- data-atlassian-id="{&quot;loginStatusUrl&quot;: &quot;https://id.atlassian.com/profile/rest/profile&quot;}"
36
-
37
- data-flag-upload-image="true"
38
- data-flag-pr-tasks="true"
39
- data-current-repo="{&quot;scm&quot;: &quot;git&quot;, &quot;readOnly&quot;: false, &quot;mainbranch&quot;: {&quot;name&quot;: &quot;master&quot;}, &quot;language&quot;: &quot;php&quot;, &quot;creator&quot;: {&quot;username&quot;: &quot;niknetniko&quot;}, &quot;owner&quot;: {&quot;username&quot;: &quot;niknetniko&quot;, &quot;isTeam&quot;: false}, &quot;fullslug&quot;: &quot;niknetniko/nextcellent&quot;, &quot;slug&quot;: &quot;nextcellent&quot;, &quot;id&quot;: 4335953, &quot;pygmentsLanguage&quot;: &quot;php&quot;}"
40
- data-current-cset="1c1562ecb0e994fde9fba00d66844dddcda9c403"
41
-
42
-
43
-
44
- >
45
- <script type="text/javascript" src="https://d3oaxc4q5k2d6q.cloudfront.net/m/f8a094b2aa66/compressed/js/9f0feb819aab.js"></script>
46
-
47
- <div id="page">
48
- <div id="wrapper">
49
-
50
-
51
-
52
-
53
- <header id="header" role="banner">
54
-
55
-
56
-
57
-
58
-
59
- <nav class="aui-header aui-dropdown2-trigger-group" role="navigation">
60
- <div class="aui-header-inner">
61
- <div class="aui-header-primary">
62
-
63
-
64
- <div class="aui-header-before">
65
- <a class="aui-dropdown2-trigger app-switcher-trigger" aria-owns="app-switcher" aria-haspopup="true" tabindex="0" aria-controls="app-switcher">
66
- <span class="aui-icon aui-icon-small aui-iconfont-appswitcher">Linked applications</span>
67
- </a>
68
-
69
- <nav id="app-switcher" class="aui-dropdown2 aui-style-default aui-dropdown2-disable-active-class">
70
- <div class="aui-dropdown2-section blank-slate">
71
- <h2>Connect Bitbucket with other great Atlassian products:</h2>
72
- <dl>
73
- <dt class="jira">JIRA</dt>
74
- <dd>Project and issue tracking</dd>
75
- <dt class="confluence">Confluence</dt>
76
- <dd>Collaboration and content sharing</dd>
77
- <dt class="bamboo">Bamboo</dt>
78
- <dd>Continuous integration</dd>
79
- </dl>
80
- <a href="https://www.atlassian.com/ondemand/signup/?product=jira.ondemand,bitbucket.ondemand&amp;utm_source=bitbucket&amp;utm_medium=button&amp;utm_campaign=app_switcher&amp;utm_content=trial_button"
81
- class="aui-button aui-button-primary aui-style" target="_blank" id="ondemand-trial">Free trial</a>
82
- <a href="https://www.atlassian.com/software/ondemand/overview?utm_source=bitbucket&amp;utm_medium=button&amp;utm_campaign=app_switcher&amp;utm_content=learn_more_button"
83
- class="aui-button aui-style" target="_blank" id="ondemand-learn-more">Learn more</a>
84
- </div>
85
- </nav>
86
-
87
- </div>
88
-
89
-
90
-
91
- <h1 class="aui-header-logo aui-header-logo-bitbucket " id="logo">
92
- <a href="/">
93
- <span class="aui-header-logo-device">Bitbucket</span>
94
- </a>
95
- </h1>
96
-
97
-
98
- <script id="repo-dropdown-template" type="text/html">
99
-
100
-
101
- [[#hasViewed]]
102
- <div class="aui-dropdown2-section">
103
- <strong class="viewed">Recently viewed</strong>
104
- <ul class="aui-list-truncate">
105
- [[#viewed]]
106
- <li class="[[#is_private]]private[[/is_private]][[^is_private]]public[[/is_private]] repository">
107
- <a href="[[url]]" title="[[owner]]/[[name]]" class="aui-icon-container recently-viewed repo-link">
108
- <img class="repo-avatar size16" src="[[{avatar}]]" alt="[[owner]]/[[name]] avatar"/>
109
- [[owner]] / [[name]]
110
- </a>
111
- </li>
112
- [[/viewed]]
113
- </ul>
114
- </div>
115
- [[/hasViewed]]
116
- [[#hasUpdated]]
117
- <div class="aui-dropdown2-section">
118
- <strong class="updated">Recently updated</strong>
119
- <ul class="aui-list-truncate">
120
- [[#updated]]
121
- <li class="[[#is_private]]private[[/is_private]][[^is_private]]public[[/is_private]] repository">
122
- <a href="[[url]]" title="[[owner]]/[[name]]" class="aui-icon-container recently-updated repo-link">
123
- <img class="repo-avatar size16" src="[[{avatar}]]" alt="[[owner]]/[[name]] avatar"/>
124
- [[owner]] / [[name]]
125
- </a>
126
- </li>
127
- [[/updated]]
128
- </ul>
129
- </div>
130
- [[/hasUpdated]]
131
-
132
- </script>
133
- <ul class="aui-nav">
134
-
135
- <li>
136
- <a class="aui-dropdown2-trigger"
137
- aria-owns="dashboard-dropdown" aria-haspopup="true" href="/dashboard/overview " id="dashboard-dropdown-trigger">
138
- Dashboard
139
- <span class="aui-icon-dropdown"></span>
140
- </a>
141
- <nav id="dashboard-dropdown" class="aui-dropdown2 aui-style-default">
142
- <div class="aui-dropdown2-section">
143
- <ul>
144
- <li>
145
- <a href="/dashboard/overview" id="dashboard-overview-link">
146
- Overview
147
- </a>
148
- </li>
149
- <li>
150
- <a href="/dashboard/pullrequests" id="dashboard-prs-link">
151
- Pull requests
152
- </a>
153
- </li>
154
- <li>
155
- <a href="/dashboard/issues" id="dashboard-issues-link">
156
- Issues
157
- </a>
158
- </li>
159
- </ul>
160
- </div>
161
- </nav>
162
- </li>
163
-
164
- <script id="team-dropdown-template" type="text/html">
165
-
166
-
167
- <div class="aui-dropdown2-section primary">
168
- <ul class="aui-list-truncate">
169
- [[#teams]]
170
- <li>
171
- <a href="/[[username]]" class="aui-icon-container team-link">
172
- <img class="avatar avatar16" src="[[avatar]]" alt="" width="16" height="16" />[[display_name]]
173
- </a>
174
- </li>
175
- [[/teams]]
176
- </ul>
177
- </div>
178
-
179
- <div class="aui-dropdown2-section">
180
- <ul>
181
- <li>
182
- <a href="/account/create-team/?team_source=header"
183
- data-modules="registration/create-team-link"
184
- id="create-team-link">Create team</a>
185
- </li>
186
- </ul>
187
- </div>
188
-
189
- </script>
190
- <li>
191
- <a class="aui-dropdown2-trigger" href="#" id="teams-dropdown-trigger"
192
- aria-owns="teams-dropdown" aria-haspopup="true">
193
- Teams
194
- <span class="aui-icon-dropdown"></span>
195
- </a>
196
- <div id="teams-dropdown" class="aui-dropdown2 aui-style-default">
197
- <div class="aui-dropdown2-section blank-slate">
198
- <p>Organize your team's work and supercharge repository administration.</p>
199
- <a class="aui-button aui-button-primary" id="create-team-blank-slate"
200
- href="/account/create-team/?team_source=menu_blank">
201
- Create team
202
- </a>
203
- </div>
204
- </div>
205
- </li>
206
-
207
- <li>
208
- <a class="aui-dropdown2-trigger selected"
209
- aria-owns="repo-dropdown" aria-haspopup="true" href="/repo/mine " id="repositories-dropdown-trigger">
210
- Repositories
211
- <span class="aui-icon-dropdown"></span>
212
- </a>
213
- <nav id="repo-dropdown" class="aui-dropdown2 aui-style-default">
214
- <div id="repo-dropdown-recent"></div>
215
- <div class="aui-dropdown2-section">
216
- <ul>
217
- <li>
218
- <a href="/repo/create" class="new-repository" id="create-repo-link">
219
- Create repository
220
- </a>
221
- </li>
222
- <li>
223
- <a href="/repo/import" class="import-repository" id="import-repo-link">
224
- Import repository
225
- </a>
226
- </li>
227
- </ul>
228
- </div>
229
- </nav>
230
- </li>
231
-
232
- <li>
233
-
234
- <a class="aui-button aui-button-primary aui-style"
235
- href="/repo/create" id="repo-create-cta"
236
- title="Create repository">
237
- Create
238
- </a>
239
-
240
- </li>
241
-
242
- </ul>
243
-
244
- </div>
245
- <div class="aui-header-secondary">
246
-
247
- <ul role="menu" class="aui-nav">
248
-
249
- <li>
250
- <form action="/repo/all" method="get" class="aui-quicksearch">
251
- <label for="search-query" class="assistive">owner/repository</label>
252
- <input id="search-query" class="bb-repo-typeahead" type="text"
253
- placeholder="owner/repository" name="name" autocomplete="off"
254
- data-bb-typeahead-focus="false">
255
- </form>
256
- </li>
257
- <li>
258
- <a class="aui-dropdown2-trigger" id="help-dropdown-trigger"
259
- aria-controls="header-help-dropdown" aria-owns="header-help-dropdown"
260
- aria-haspopup="true" data-container="#header .aui-header-inner" href="#header-help-dropdown">
261
- <span class="aui-icon aui-icon-small aui-iconfont-help">Help</span><span class="aui-icon-dropdown"></span>
262
- </a>
263
- <nav id="header-help-dropdown" class="aui-dropdown2 aui-style-default aui-dropdown2-in-header" aria-hidden="true">
264
- <div class="aui-dropdown2-section">
265
- <ul>
266
- <li>
267
- <a href="/whats-new" id="features-link">
268
- Latest features
269
- </a>
270
- </li>
271
- </ul>
272
- </div>
273
- <div class="aui-dropdown2-section">
274
- <ul>
275
- <li>
276
- <a class="support-ga"
277
- data-support-gaq-page="DocumentationHome"
278
- href="https://confluence.atlassian.com/x/bgozDQ"
279
- target="_blank">
280
- Documentation
281
- </a>
282
- </li>
283
- <li>
284
- <a class="support-ga"
285
- data-support-gaq-page="Documentation101"
286
- href="https://confluence.atlassian.com/x/cgozDQ"
287
- target="_blank">
288
- Bitbucket 101
289
- </a>
290
- </li>
291
- <li>
292
- <a class="support-ga"
293
- data-support-gaq-page="GitTutorials"
294
- href="https://www.atlassian.com/git?utm_source=bitbucket&amp;utm_medium=link&amp;utm_campaign=help_dropdown&amp;utm_content=learn_git"
295
- target="_blank">
296
- Learn Git
297
- </a>
298
- </li>
299
- <li>
300
- <a class="support-ga"
301
- data-support-gaq-page="DocumentationKB"
302
- href="https://confluence.atlassian.com/x/2w4zDQ"
303
- target="_blank">
304
- Knowledge base
305
- </a>
306
- </li>
307
- </ul>
308
- </div>
309
- <div class="aui-dropdown2-section">
310
- <ul>
311
- <li>
312
- <a class="support-ga"
313
- data-support-gaq-page="Answers"
314
- href="https://answers.atlassian.com/tags/bitbucket/"
315
- target="_blank">
316
- Bitbucket on Atlassian Answers
317
- </a>
318
- </li>
319
- <li>
320
- <a class="support-ga"
321
- data-support-gaq-page="Home"
322
- href="/support">
323
- Support
324
- </a>
325
- </li>
326
- </ul>
327
- </div>
328
- </nav>
329
- </li>
330
-
331
-
332
-
333
-
334
- <li>
335
- <a class="aui-dropdown2-trigger"
336
- aria-owns="user-dropdown" aria-haspopup="true" data-container="#header .aui-header-inner"
337
- href="/wpgetready" title="wpgetready" id="user-dropdown-trigger">
338
- <div class="aui-avatar aui-avatar-small">
339
- <div class="aui-avatar-inner">
340
- <img src="https://secure.gravatar.com/avatar/b985a98ea07b351258210b2d07e1b99a?d=https%3A%2F%2Fd3oaxc4q5k2d6q.cloudfront.net%2Fm%2Ff8a094b2aa66%2Fimg%2Fdefault_avatar%2F32%2Fuser_blue.png&amp;s=32" alt="Logged in as wpgetready" height="24" width="24" />
341
- </div>
342
- </div>
343
- </a>
344
- <nav id="user-dropdown" class="aui-dropdown2 aui-style-default" aria-hidden="true">
345
- <div class="aui-dropdown2-section">
346
- <ul>
347
- <li>
348
- <a href="/wpgetready" id="profile-link">View profile</a>
349
- </li>
350
- <li>
351
- <a href="/account/user/wpgetready/" id="account-link">Manage account</a>
352
- </li>
353
- <li>
354
- <a href="/account/notifications/" id="inbox-link">Inbox <span id="inbox-unread-count"></span></a>
355
- </li>
356
- <li>
357
- <a href="#general-invite" class="general-invite-link" id="general-invite-dropdown">Invite a friend</a>
358
- <script id="general-invite-template" type="text/html">
359
-
360
- <div id="general-invite">
361
- <form class="aui invitation-form" id="general-invite-form" method="post" novalidate>
362
- <div class="error aui-message hidden">
363
- <span class="aui-icon icon-error"></span>
364
- <div class="message"></div>
365
- </div>
366
- <div class="field-group">
367
- <label for="id_general_email_address">Email address</label>
368
- <input type="email" id="id_general_email_address" name="email-address" class="text long-field">
369
- </div>
370
- </form>
371
- </div>
372
-
373
- </script>
374
- </li>
375
- </ul>
376
- </div>
377
- <div class="aui-dropdown2-section">
378
- <ul>
379
- <li>
380
-
381
- <a href="/account/signout/">Log out</a>
382
-
383
- </li>
384
- </ul>
385
- </div>
386
- </nav></li>
387
-
388
- </ul>
389
-
390
- </div>
391
- </div>
392
- </nav>
393
- </header>
394
-
395
-
396
- <header id="account-warning" role="banner" class="aui-message-banner warning
397
- ">
398
- <div class="aui-message-banner-inner">
399
- <span class="aui-icon aui-icon-warning"></span>
400
- <span class="message">
401
-
402
- </span>
403
- </div>
404
- </header>
405
-
406
-
407
-
408
- <header id="aui-message-bar">
409
-
410
- </header>
411
-
412
-
413
-
414
- <div id="content" role="main">
415
-
416
-
417
-
418
- <div class="aui-sidebar repo-sidebar" data-modules="components/repo-sidebar"
419
- aria-expanded="false">
420
- <div class="aui-sidebar-wrapper">
421
- <div class="aui-sidebar-body">
422
- <header class="aui-page-header">
423
- <div class="aui-page-header-inner">
424
- <div class="aui-page-header-image">
425
- <a href="/niknetniko/nextcellent" id="repo-avatar-link" class="repo-link">
426
- <span class="aui-avatar aui-avatar-large aui-avatar-project">
427
- <span class="aui-avatar-inner">
428
- <img src="https://d3oaxc4q5k2d6q.cloudfront.net/m/f8a094b2aa66/img/language-avatars/php_64.png" alt="">
429
- </span>
430
- </span>
431
- </a>
432
- </div>
433
- <div class="aui-page-header-main">
434
- <ol class="aui-nav aui-nav-breadcrumbs">
435
- <li>
436
- <a href="/niknetniko" id="repo-owner-link">niknetniko</a>
437
- </li>
438
- </ol>
439
- <h1>
440
-
441
- <a href="/niknetniko/nextcellent" title="NextCellent" class="entity-name">NextCellent</a>
442
- </h1>
443
- </div>
444
- </div>
445
- </header>
446
- <nav class="aui-navgroup aui-navgroup-vertical">
447
- <div class="aui-navgroup-inner">
448
-
449
-
450
- <div class="aui-sidebar-group aui-sidebar-group-actions repository-actions forks-enabled">
451
- <div class="aui-nav-heading">
452
- <strong>Actions</strong>
453
- </div>
454
- <ul id="repo-actions" class="aui-nav">
455
- <li>
456
- <a href="#clone" id="repo-clone-button" class="aui-nav-item">
457
- <span class="aui-icon icon-clone"></span>
458
- <span class="aui-nav-item-label">Clone</span>
459
- </a>
460
- </li>
461
-
462
- <li>
463
- <a href="/niknetniko/nextcellent/branches/compare"
464
- id="repo-compare-link" class="aui-nav-item">
465
- <span class="aui-icon aui-icon-small aui-iconfont-devtools-compare"></span>
466
- <span class="aui-nav-item-label">Compare</span>
467
- </a>
468
- </li>
469
-
470
- <li>
471
- <a href="/niknetniko/nextcellent/fork"
472
- id="repo-fork-link" class="aui-nav-item">
473
- <span class="aui-icon icon-fork"></span>
474
- <span class="aui-nav-item-label">Fork</span>
475
- </a>
476
- </li>
477
-
478
- </ul>
479
- </div>
480
-
481
-
482
- <div class="aui-sidebar-group aui-sidebar-group-tier-one repository-sections">
483
- <div class="aui-nav-heading">
484
- <strong>Navigation</strong>
485
- </div>
486
- <ul class="aui-nav">
487
-
488
- <li>
489
- <a href="/niknetniko/nextcellent/overview" id="repo-overview-link" class="aui-nav-item">
490
- <span class="aui-icon icon-overview"></span>
491
- <span class="aui-nav-item-label">Overview</span>
492
- </a>
493
- </li>
494
-
495
-
496
- <li class="aui-nav-selected">
497
- <a href="/niknetniko/nextcellent/src" id="repo-source-link" class="aui-nav-item">
498
- <span class="aui-icon icon-source"></span>
499
- <span class="aui-nav-item-label">Source</span>
500
- </a>
501
- </li>
502
-
503
-
504
- <li>
505
- <a href="/niknetniko/nextcellent/commits" id="repo-commits-link" class="aui-nav-item">
506
- <span class="aui-icon icon-commits"></span>
507
- <span class="aui-nav-item-label">Commits</span>
508
- </a>
509
- </li>
510
-
511
-
512
- <li>
513
- <a href="/niknetniko/nextcellent/branches" id="repo-branches-link" class="aui-nav-item">
514
- <span class="aui-icon icon-branches"></span>
515
- <span class="aui-nav-item-label">Branches</span>
516
- </a>
517
- </li>
518
-
519
-
520
- <li>
521
- <a href="/niknetniko/nextcellent/pull-requests" id="repo-pullrequests-link" class="aui-nav-item">
522
-
523
-
524
-
525
- <span class="aui-icon icon-pull-requests"></span>
526
- <span class="aui-nav-item-label">Pull requests</span>
527
- </a>
528
- </li>
529
-
530
-
531
-
532
-
533
- <li id="issues-tab" class="
534
-
535
- ">
536
- <a href="/niknetniko/nextcellent/issues?status=new&amp;status=open" id="repo-issues-link" class="aui-nav-item">
537
-
538
-
539
-
540
- <span class="aui-icon icon-issues"></span>
541
- <span class="aui-nav-item-label">Issues</span>
542
- </a>
543
- </li>
544
- <li id="wiki-tab" class="
545
-
546
- hidden
547
-
548
- ">
549
- <a href="/niknetniko/nextcellent/wiki" id="repo-wiki-link" class="aui-nav-item">
550
- <span class="aui-icon icon-wiki"></span>
551
- <span class="aui-nav-item-label">Wiki</span>
552
- </a>
553
- </li>
554
-
555
- <li>
556
- <a href="/niknetniko/nextcellent/downloads" id="repo-downloads-link" class="aui-nav-item">
557
-
558
-
559
-
560
- <span class="aui-icon icon-downloads"></span>
561
- <span class="aui-nav-item-label">Downloads</span>
562
- </a>
563
- </li>
564
-
565
-
566
- </ul>
567
- </div>
568
-
569
-
570
-
571
- <div class="hidden kb-shortcut-actions">
572
- <a id="repo-create-issue" href="/niknetniko/nextcellent/issues/new"></a>
573
- </div>
574
-
575
-
576
- </div>
577
- </nav>
578
- </div>
579
- <div class="aui-sidebar-footer">
580
- <a class="aui-sidebar-toggle aui-sidebar-footer-tipsy aui-button aui-button-subtle"><span class="aui-icon"></span></a>
581
- </div>
582
- </div>
583
-
584
- <script id="share-repo-template" type="text/html">
585
-
586
-
587
- <div class="clearfix">
588
- <span class="repo-avatar-container size32" title="niknetniko/NextCellent">
589
- <img alt="niknetniko/NextCellent" src="https://d3oaxc4q5k2d6q.cloudfront.net/m/f8a094b2aa66/img/language-avatars/php_32.png">
590
- </span>
591
-
592
- <span class="repo-name-container">
593
- niknetniko / NextCellent
594
- </span>
595
- </div>
596
- <p class="helptext">
597
-
598
- Existing users are granted access to this repository immediately.
599
- New users will be sent an invitation.
600
-
601
- </p>
602
- <div class="manage-repo-link"
603
- data-manage-link="/niknetniko/nextcellent/admin/access"></div>
604
- <div class="share-form"></div>
605
-
606
- </script>
607
- <script id="share-dialog-template" type="text/html">
608
- <div class="aui-tabs horizontal-tabs">
609
- <ul class="tabs-menu">
610
- [[#panels]]
611
- <li class="menu-item">
612
- <a href="#[[tabId]]"><strong>[[display]]</strong></a>
613
- </li>
614
- [[/panels]]
615
- </ul>
616
- [[#panels]]
617
- <div class="tabs-pane" id="[[tabId]]"></div>
618
- [[/panels]]
619
- </div>
620
-
621
- </script>
622
-
623
-
624
-
625
- <div id="repo-clone-dialog" class="clone-dialog hidden">
626
-
627
- <div class="clone-url">
628
- <div class="aui-buttons">
629
- <a href="https://wpgetready@bitbucket.org/niknetniko/nextcellent.git"
630
- class="aui-button aui-style aui-dropdown2-trigger" aria-haspopup="true"
631
- aria-owns="clone-url-dropdown-header">
632
- <span class="dropdown-text">HTTPS</span>
633
- </a>
634
- <div id="clone-url-dropdown-header" class="aui-dropdown2 aui-style-default">
635
- <ul class="aui-list-truncate">
636
- <li>
637
- <a href="https://wpgetready@bitbucket.org/niknetniko/nextcellent.git"
638
-
639
- data-command="git clone https://wpgetready@bitbucket.org/niknetniko/nextcellent.git"
640
-
641
- class="item-link https">HTTPS
642
- </a>
643
- </li>
644
- <li>
645
- <a href="ssh://git@bitbucket.org/niknetniko/nextcellent.git"
646
-
647
- data-command="git clone git@bitbucket.org:niknetniko/nextcellent.git"
648
-
649
- class="item-link ssh">SSH
650
- </a>
651
- </li>
652
- </ul>
653
- </div>
654
- <input type="text" readonly="readonly" class="clone-url-input"
655
- value="git clone https://wpgetready@bitbucket.org/niknetniko/nextcellent.git">
656
- </div>
657
-
658
- <p>Need help cloning? Visit
659
- <a href="https://confluence.atlassian.com/x/cgozDQ" target="_blank">Bitbucket 101</a>.</p>
660
-
661
- </div>
662
-
663
-
664
-
665
- <div class="sourcetree-callout clone-in-sourcetree"
666
- data-https-url="https://wpgetready@bitbucket.org/niknetniko/nextcellent.git"
667
- data-ssh-url="ssh://git@bitbucket.org/niknetniko/nextcellent.git">
668
-
669
- <div>
670
- <button class="aui-button aui-style aui-button-primary">
671
-
672
- Clone in SourceTree
673
-
674
- </button>
675
- </div>
676
-
677
- <p class="windows-text">
678
-
679
- <a href="http://www.sourcetreeapp.com/?utm_source=internal&amp;utm_medium=link&amp;utm_campaign=clone_repo_win" target="_blank">Atlassian SourceTree</a>
680
- is a free Git and Mercurial client for Windows.
681
-
682
- </p>
683
- <p class="mac-text">
684
-
685
- <a href="http://www.sourcetreeapp.com/?utm_source=internal&amp;utm_medium=link&amp;utm_campaign=clone_repo_mac" target="_blank">Atlassian SourceTree</a>
686
- is a free Git and Mercurial client for Mac.
687
-
688
- </p>
689
- </div>
690
-
691
- </div>
692
-
693
- </div>
694
-
695
-
696
-
697
- <div class="aui-page-panel">
698
-
699
-
700
-
701
-
702
- <div class="aui-page-panel-inner">
703
- <div id="repo-content" class="aui-page-panel-content">
704
- <div class="aui-group">
705
- <div class="aui-item section-title">
706
- <h1>Source</h1>
707
- </div>
708
- <div class="aui-item page-actions">
709
-
710
- </div>
711
- </div>
712
-
713
- <div id="source-container" class="maskable" data-modules="repo/source/index">
714
-
715
-
716
-
717
-
718
- <header id="source-path">
719
- <div class="labels labels-csv">
720
-
721
- <div class="aui-buttons">
722
- <button data-branches-tags-url="/api/1.0/repositories/niknetniko/nextcellent/branches-tags"
723
- data-modules="components/branch-dialog"
724
- class="aui-button branch-dialog-trigger">
725
-
726
- <span class="commit icon">#</span>
727
- <span class="name">1c1562e</span>
728
-
729
- <span class="aui-icon-dropdown"></span>
730
- </button>
731
- <button class="aui-button" id="checkout-branch-button"
732
- title="Check out this branch">
733
- <span class="aui-icon aui-icon-small aui-iconfont-devtools-clone">Check out branch</span>
734
- <span class="aui-icon-dropdown"></span>
735
- </button>
736
- </div>
737
- <script id="branch-checkout-template" type="text/html">
738
-
739
-
740
- <div id="checkout-branch-contents">
741
- <div class="command-line">
742
- <p>
743
- Check out this branch on your local machine to begin working on it.
744
- </p>
745
- <input type="text" class="checkout-command" readonly="readonly"
746
-
747
- value="git fetch && git checkout [[branchName]]"
748
-
749
- >
750
- </div>
751
-
752
-
753
-
754
- <div class="sourcetree-callout clone-in-sourcetree"
755
- data-https-url="https://wpgetready@bitbucket.org/niknetniko/nextcellent.git"
756
- data-ssh-url="ssh://git@bitbucket.org/niknetniko/nextcellent.git">
757
-
758
- <div>
759
- <button class="aui-button aui-style aui-button-primary">
760
-
761
- Check out in SourceTree
762
-
763
- </button>
764
- </div>
765
-
766
- <p class="windows-text">
767
-
768
- <a href="http://www.sourcetreeapp.com/?utm_source=internal&amp;utm_medium=link&amp;utm_campaign=clone_repo_win" target="_blank">Atlassian SourceTree</a>
769
- is a free Git and Mercurial client for Windows.
770
-
771
- </p>
772
- <p class="mac-text">
773
-
774
- <a href="http://www.sourcetreeapp.com/?utm_source=internal&amp;utm_medium=link&amp;utm_campaign=clone_repo_mac" target="_blank">Atlassian SourceTree</a>
775
- is a free Git and Mercurial client for Mac.
776
-
777
- </p>
778
- </div>
779
-
780
-
781
- </div>
782
- </script>
783
-
784
- </div>
785
- <div class="secondary-actions">
786
- <div class="aui-buttons">
787
-
788
- <a href="/niknetniko/nextcellent/src/1c1562ecb0e9/lang/nggallery-fi.po"
789
- class="aui-button aui-style pjax-trigger" aria-pressed="true">
790
- Source
791
- </a>
792
- <a href="/niknetniko/nextcellent/diff/lang/nggallery-fi.po?diff2=1c1562ecb0e9"
793
- class="aui-button aui-style pjax-trigger"
794
- title="Diff to previous change">
795
- Diff
796
- </a>
797
- <a href="/niknetniko/nextcellent/history-node/1c1562ecb0e9/lang/nggallery-fi.po"
798
- class="aui-button aui-style pjax-trigger">
799
- History
800
- </a>
801
-
802
- </div>
803
- </div>
804
- <h1>
805
-
806
-
807
- <a href="/niknetniko/nextcellent/src/1c1562ecb0e9"
808
- class="pjax-trigger root" title="niknetniko/nextcellent at 1c1562ecb0e9">NextCellent</a> /
809
-
810
-
811
-
812
-
813
-
814
- <a href="/niknetniko/nextcellent/src/1c1562ecb0e9/lang/"
815
- class="pjax-trigger directory-name">lang</a> /
816
-
817
-
818
-
819
-
820
-
821
-
822
-
823
- <span class="file-name">nggallery-fi.po</span>
824
-
825
-
826
-
827
-
828
-
829
- </h1>
830
-
831
- <div class="clearfix"></div>
832
- </header>
833
-
834
-
835
-
836
-
837
-
838
-
839
- <div id="editor-container" class="maskable"
840
- data-modules="repo/source/editor"
841
- data-owner="niknetniko"
842
- data-slug="nextcellent"
843
- data-is-writer="false"
844
- data-has-push-access="false"
845
- data-hash="1c1562ecb0e994fde9fba00d66844dddcda9c403"
846
- data-branch=""
847
- data-path="lang/nggallery-fi.po"
848
- data-source-url="/api/1.0/repositories/niknetniko/nextcellent/src/1c1562ecb0e994fde9fba00d66844dddcda9c403/lang/nggallery-fi.po">
849
- <div id="source-view" class="file-source-container"
850
- data-modules="repo/source/view-file">
851
- <div class="toolbar">
852
- <div class="primary">
853
- <div class="aui-buttons">
854
-
855
- <button id="file-history-trigger" class="aui-button aui-style changeset-info"
856
- data-changeset="1c1562ecb0e994fde9fba00d66844dddcda9c403"
857
- data-path="lang/nggallery-fi.po"
858
- data-current="1c1562ecb0e994fde9fba00d66844dddcda9c403">
859
-
860
-
861
-
862
- <img class="avatar avatar16" src="https://secure.gravatar.com/avatar/beca9ff1f22c0f18f0db082c5f6f61f9?d=https%3A%2F%2Fd3oaxc4q5k2d6q.cloudfront.net%2Fm%2Ff8a094b2aa66%2Fimg%2Fdefault_avatar%2F16%2Fuser_blue.png&amp;s=16" alt="Niko Strijbol avatar" />
863
- <span class="changeset-hash">1c1562e</span>
864
- <time datetime="2014-09-17T15:13:56+00:00" class="timestamp"></time>
865
- <span class="aui-icon-dropdown"></span>
866
-
867
-
868
- </button>
869
-
870
- </div>
871
- <a href="/niknetniko/nextcellent/full-commit/1c1562ecb0e9/lang/nggallery-fi.po" id="full-commit-link"
872
- title="View full commit 1c1562e">Full commit</a>
873
- </div>
874
- <div class="secondary">
875
- <div class="aui-buttons">
876
-
877
- <a href="/niknetniko/nextcellent/annotate/1c1562ecb0e994fde9fba00d66844dddcda9c403/lang/nggallery-fi.po"
878
- class="aui-button aui-style pjax-trigger">Blame</a>
879
-
880
-
881
-
882
- <a id="embed-link" href="https://bitbucket.org/niknetniko/nextcellent/src/1c1562ecb0e994fde9fba00d66844dddcda9c403/lang/nggallery-fi.po?embed=t"
883
- class="aui-button aui-style" data-modules="repo/source/embed">Embed</a>
884
-
885
- <a href="/niknetniko/nextcellent/raw/1c1562ecb0e994fde9fba00d66844dddcda9c403/lang/nggallery-fi.po"
886
- class="aui-button aui-style">Raw</a>
887
- </div>
888
-
889
-
890
- <div class="aui-buttons">
891
- <button class="edit-button aui-button aui-button-split-main" disabled="disabled" aria-disabled="true">
892
- Edit
893
-
894
- <span class="edit-button-overlay" title="You can only edit the latest revision of a branch."></span>
895
-
896
- </button>
897
- <button class="aui-button aui-dropdown2-trigger aui-button-split-more" aria-owns="split-container-dropdown" aria-haspopup="true" data-container="#editor-container" disabled="disabled" aria-disabled="true">More file actions</button>
898
- </div>
899
- <div id="split-container-dropdown" class="aui-dropdown2 aui-style-default" data-container="split-button-demo">
900
- <ul class="aui-list-truncate">
901
- <li><a href="#" data-modules="repo/source/rename-file" class="rename-link">Rename</a></li>
902
- <li><a href="#" data-modules="repo/source/delete-file" class="delete-link">Delete</a></li>
903
- </ul>
904
- </div>
905
-
906
-
907
- </div>
908
- <div class="clearfix"></div>
909
- </div>
910
-
911
-
912
-
913
-
914
-
915
-
916
- <div class="file-source">
917
- <table class="highlighttable">
918
- <tr><td class="linenos"><div class="linenodiv"><pre>
919
- <a href="#cl-1">1</a>
920
- <a href="#cl-2">2</a>
921
- <a href="#cl-3">3</a>
922
- <a href="#cl-4">4</a>
923
- <a href="#cl-5">5</a>
924
- <a href="#cl-6">6</a>
925
- <a href="#cl-7">7</a>
926
- <a href="#cl-8">8</a>
927
- <a href="#cl-9">9</a>
928
- <a href="#cl-10">10</a>
929
- <a href="#cl-11">11</a>
930
- <a href="#cl-12">12</a>
931
- <a href="#cl-13">13</a>
932
- <a href="#cl-14">14</a>
933
- <a href="#cl-15">15</a>
934
- <a href="#cl-16">16</a>
935
- <a href="#cl-17">17</a>
936
- <a href="#cl-18">18</a>
937
- <a href="#cl-19">19</a>
938
- <a href="#cl-20">20</a>
939
- <a href="#cl-21">21</a>
940
- <a href="#cl-22">22</a>
941
- <a href="#cl-23">23</a>
942
- <a href="#cl-24">24</a>
943
- <a href="#cl-25">25</a>
944
- <a href="#cl-26">26</a>
945
- <a href="#cl-27">27</a>
946
- <a href="#cl-28">28</a>
947
- <a href="#cl-29">29</a>
948
- <a href="#cl-30">30</a>
949
- <a href="#cl-31">31</a>
950
- <a href="#cl-32">32</a>
951
- <a href="#cl-33">33</a>
952
- <a href="#cl-34">34</a>
953
- <a href="#cl-35">35</a>
954
- <a href="#cl-36">36</a>
955
- <a href="#cl-37">37</a>
956
- <a href="#cl-38">38</a>
957
- <a href="#cl-39">39</a>
958
- <a href="#cl-40">40</a>
959
- <a href="#cl-41">41</a>
960
- <a href="#cl-42">42</a>
961
- <a href="#cl-43">43</a>
962
- <a href="#cl-44">44</a>
963
- <a href="#cl-45">45</a>
964
- <a href="#cl-46">46</a>
965
- <a href="#cl-47">47</a>
966
- <a href="#cl-48">48</a>
967
- <a href="#cl-49">49</a>
968
- <a href="#cl-50">50</a>
969
- <a href="#cl-51">51</a>
970
- <a href="#cl-52">52</a>
971
- <a href="#cl-53">53</a>
972
- <a href="#cl-54">54</a>
973
- <a href="#cl-55">55</a>
974
- <a href="#cl-56">56</a>
975
- <a href="#cl-57">57</a>
976
- <a href="#cl-58">58</a>
977
- <a href="#cl-59">59</a>
978
- <a href="#cl-60">60</a>
979
- <a href="#cl-61">61</a>
980
- <a href="#cl-62">62</a>
981
- <a href="#cl-63">63</a>
982
- <a href="#cl-64">64</a>
983
- <a href="#cl-65">65</a>
984
- <a href="#cl-66">66</a>
985
- <a href="#cl-67">67</a>
986
- <a href="#cl-68">68</a>
987
- <a href="#cl-69">69</a>
988
- <a href="#cl-70">70</a>
989
- <a href="#cl-71">71</a>
990
- <a href="#cl-72">72</a>
991
- <a href="#cl-73">73</a>
992
- <a href="#cl-74">74</a>
993
- <a href="#cl-75">75</a>
994
- <a href="#cl-76">76</a>
995
- <a href="#cl-77">77</a>
996
- <a href="#cl-78">78</a>
997
- <a href="#cl-79">79</a>
998
- <a href="#cl-80">80</a>
999
- <a href="#cl-81">81</a>
1000
- <a href="#cl-82">82</a>
1001
- <a href="#cl-83">83</a>
1002
- <a href="#cl-84">84</a>
1003
- <a href="#cl-85">85</a>
1004
- <a href="#cl-86">86</a>
1005
- <a href="#cl-87">87</a>
1006
- <a href="#cl-88">88</a>
1007
- <a href="#cl-89">89</a>
1008
- <a href="#cl-90">90</a>
1009
- <a href="#cl-91">91</a>
1010
- <a href="#cl-92">92</a>
1011
- <a href="#cl-93">93</a>
1012
- <a href="#cl-94">94</a>
1013
- <a href="#cl-95">95</a>
1014
- <a href="#cl-96">96</a>
1015
- <a href="#cl-97">97</a>
1016
- <a href="#cl-98">98</a>
1017
- <a href="#cl-99">99</a>
1018
- <a href="#cl-100">100</a>
1019
- <a href="#cl-101">101</a>
1020
- <a href="#cl-102">102</a>
1021
- <a href="#cl-103">103</a>
1022
- <a href="#cl-104">104</a>
1023
- <a href="#cl-105">105</a>
1024
- <a href="#cl-106">106</a>
1025
- <a href="#cl-107">107</a>
1026
- <a href="#cl-108">108</a>
1027
- <a href="#cl-109">109</a>
1028
- <a href="#cl-110">110</a>
1029
- <a href="#cl-111">111</a>
1030
- <a href="#cl-112">112</a>
1031
- <a href="#cl-113">113</a>
1032
- <a href="#cl-114">114</a>
1033
- <a href="#cl-115">115</a>
1034
- <a href="#cl-116">116</a>
1035
- <a href="#cl-117">117</a>
1036
- <a href="#cl-118">118</a>
1037
- <a href="#cl-119">119</a>
1038
- <a href="#cl-120">120</a>
1039
- <a href="#cl-121">121</a>
1040
- <a href="#cl-122">122</a>
1041
- <a href="#cl-123">123</a>
1042
- <a href="#cl-124">124</a>
1043
- <a href="#cl-125">125</a>
1044
- <a href="#cl-126">126</a>
1045
- <a href="#cl-127">127</a>
1046
- <a href="#cl-128">128</a>
1047
- <a href="#cl-129">129</a>
1048
- <a href="#cl-130">130</a>
1049
- <a href="#cl-131">131</a>
1050
- <a href="#cl-132">132</a>
1051
- <a href="#cl-133">133</a>
1052
- <a href="#cl-134">134</a>
1053
- <a href="#cl-135">135</a>
1054
- <a href="#cl-136">136</a>
1055
- <a href="#cl-137">137</a>
1056
- <a href="#cl-138">138</a>
1057
- <a href="#cl-139">139</a>
1058
- <a href="#cl-140">140</a>
1059
- <a href="#cl-141">141</a>
1060
- <a href="#cl-142">142</a>
1061
- <a href="#cl-143">143</a>
1062
- <a href="#cl-144">144</a>
1063
- <a href="#cl-145">145</a>
1064
- <a href="#cl-146">146</a>
1065
- <a href="#cl-147">147</a>
1066
- <a href="#cl-148">148</a>
1067
- <a href="#cl-149">149</a>
1068
- <a href="#cl-150">150</a>
1069
- <a href="#cl-151">151</a>
1070
- <a href="#cl-152">152</a>
1071
- <a href="#cl-153">153</a>
1072
- <a href="#cl-154">154</a>
1073
- <a href="#cl-155">155</a>
1074
- <a href="#cl-156">156</a>
1075
- <a href="#cl-157">157</a>
1076
- <a href="#cl-158">158</a>
1077
- <a href="#cl-159">159</a>
1078
- <a href="#cl-160">160</a>
1079
- <a href="#cl-161">161</a>
1080
- <a href="#cl-162">162</a>
1081
- <a href="#cl-163">163</a>
1082
- <a href="#cl-164">164</a>
1083
- <a href="#cl-165">165</a>
1084
- <a href="#cl-166">166</a>
1085
- <a href="#cl-167">167</a>
1086
- <a href="#cl-168">168</a>
1087
- <a href="#cl-169">169</a>
1088
- <a href="#cl-170">170</a>
1089
- <a href="#cl-171">171</a>
1090
- <a href="#cl-172">172</a>
1091
- <a href="#cl-173">173</a>
1092
- <a href="#cl-174">174</a>
1093
- <a href="#cl-175">175</a>
1094
- <a href="#cl-176">176</a>
1095
- <a href="#cl-177">177</a>
1096
- <a href="#cl-178">178</a>
1097
- <a href="#cl-179">179</a>
1098
- <a href="#cl-180">180</a>
1099
- <a href="#cl-181">181</a>
1100
- <a href="#cl-182">182</a>
1101
- <a href="#cl-183">183</a>
1102
- <a href="#cl-184">184</a>
1103
- <a href="#cl-185">185</a>
1104
- <a href="#cl-186">186</a>
1105
- <a href="#cl-187">187</a>
1106
- <a href="#cl-188">188</a>
1107
- <a href="#cl-189">189</a>
1108
- <a href="#cl-190">190</a>
1109
- <a href="#cl-191">191</a>
1110
- <a href="#cl-192">192</a>
1111
- <a href="#cl-193">193</a>
1112
- <a href="#cl-194">194</a>
1113
- <a href="#cl-195">195</a>
1114
- <a href="#cl-196">196</a>
1115
- <a href="#cl-197">197</a>
1116
- <a href="#cl-198">198</a>
1117
- <a href="#cl-199">199</a>
1118
- <a href="#cl-200">200</a>
1119
- <a href="#cl-201">201</a>
1120
- <a href="#cl-202">202</a>
1121
- <a href="#cl-203">203</a>
1122
- <a href="#cl-204">204</a>
1123
- <a href="#cl-205">205</a>
1124
- <a href="#cl-206">206</a>
1125
- <a href="#cl-207">207</a>
1126
- <a href="#cl-208">208</a>
1127
- <a href="#cl-209">209</a>
1128
- <a href="#cl-210">210</a>
1129
- <a href="#cl-211">211</a>
1130
- <a href="#cl-212">212</a>
1131
- <a href="#cl-213">213</a>
1132
- <a href="#cl-214">214</a>
1133
- <a href="#cl-215">215</a>
1134
- <a href="#cl-216">216</a>
1135
- <a href="#cl-217">217</a>
1136
- <a href="#cl-218">218</a>
1137
- <a href="#cl-219">219</a>
1138
- <a href="#cl-220">220</a>
1139
- <a href="#cl-221">221</a>
1140
- <a href="#cl-222">222</a>
1141
- <a href="#cl-223">223</a>
1142
- <a href="#cl-224">224</a>
1143
- <a href="#cl-225">225</a>
1144
- <a href="#cl-226">226</a>
1145
- <a href="#cl-227">227</a>
1146
- <a href="#cl-228">228</a>
1147
- <a href="#cl-229">229</a>
1148
- <a href="#cl-230">230</a>
1149
- <a href="#cl-231">231</a>
1150
- <a href="#cl-232">232</a>
1151
- <a href="#cl-233">233</a>
1152
- <a href="#cl-234">234</a>
1153
- <a href="#cl-235">235</a>
1154
- <a href="#cl-236">236</a>
1155
- <a href="#cl-237">237</a>
1156
- <a href="#cl-238">238</a>
1157
- <a href="#cl-239">239</a>
1158
- <a href="#cl-240">240</a>
1159
- <a href="#cl-241">241</a>
1160
- <a href="#cl-242">242</a>
1161
- <a href="#cl-243">243</a>
1162
- <a href="#cl-244">244</a>
1163
- <a href="#cl-245">245</a>
1164
- <a href="#cl-246">246</a>
1165
- <a href="#cl-247">247</a>
1166
- <a href="#cl-248">248</a>
1167
- <a href="#cl-249">249</a>
1168
- <a href="#cl-250">250</a>
1169
- <a href="#cl-251">251</a>
1170
- <a href="#cl-252">252</a>
1171
- <a href="#cl-253">253</a>
1172
- <a href="#cl-254">254</a>
1173
- <a href="#cl-255">255</a>
1174
- <a href="#cl-256">256</a>
1175
- <a href="#cl-257">257</a>
1176
- <a href="#cl-258">258</a>
1177
- <a href="#cl-259">259</a>
1178
- <a href="#cl-260">260</a>
1179
- <a href="#cl-261">261</a>
1180
- <a href="#cl-262">262</a>
1181
- <a href="#cl-263">263</a>
1182
- <a href="#cl-264">264</a>
1183
- <a href="#cl-265">265</a>
1184
- <a href="#cl-266">266</a>
1185
- <a href="#cl-267">267</a>
1186
- <a href="#cl-268">268</a>
1187
- <a href="#cl-269">269</a>
1188
- <a href="#cl-270">270</a>
1189
- <a href="#cl-271">271</a>
1190
- <a href="#cl-272">272</a>
1191
- <a href="#cl-273">273</a>
1192
- <a href="#cl-274">274</a>
1193
- <a href="#cl-275">275</a>
1194
- <a href="#cl-276">276</a>
1195
- <a href="#cl-277">277</a>
1196
- <a href="#cl-278">278</a>
1197
- <a href="#cl-279">279</a>
1198
- <a href="#cl-280">280</a>
1199
- <a href="#cl-281">281</a>
1200
- <a href="#cl-282">282</a>
1201
- <a href="#cl-283">283</a>
1202
- <a href="#cl-284">284</a>
1203
- <a href="#cl-285">285</a>
1204
- <a href="#cl-286">286</a>
1205
- <a href="#cl-287">287</a>
1206
- <a href="#cl-288">288</a>
1207
- <a href="#cl-289">289</a>
1208
- <a href="#cl-290">290</a>
1209
- <a href="#cl-291">291</a>
1210
- <a href="#cl-292">292</a>
1211
- <a href="#cl-293">293</a>
1212
- <a href="#cl-294">294</a>
1213
- <a href="#cl-295">295</a>
1214
- <a href="#cl-296">296</a>
1215
- <a href="#cl-297">297</a>
1216
- <a href="#cl-298">298</a>
1217
- <a href="#cl-299">299</a>
1218
- <a href="#cl-300">300</a>
1219
- <a href="#cl-301">301</a>
1220
- <a href="#cl-302">302</a>
1221
- <a href="#cl-303">303</a>
1222
- <a href="#cl-304">304</a>
1223
- <a href="#cl-305">305</a>
1224
- <a href="#cl-306">306</a>
1225
- <a href="#cl-307">307</a>
1226
- <a href="#cl-308">308</a>
1227
- <a href="#cl-309">309</a>
1228
- <a href="#cl-310">310</a>
1229
- <a href="#cl-311">311</a>
1230
- <a href="#cl-312">312</a>
1231
- <a href="#cl-313">313</a>
1232
- <a href="#cl-314">314</a>
1233
- <a href="#cl-315">315</a>
1234
- <a href="#cl-316">316</a>
1235
- <a href="#cl-317">317</a>
1236
- <a href="#cl-318">318</a>
1237
- <a href="#cl-319">319</a>
1238
- <a href="#cl-320">320</a>
1239
- <a href="#cl-321">321</a>
1240
- <a href="#cl-322">322</a>
1241
- <a href="#cl-323">323</a>
1242
- <a href="#cl-324">324</a>
1243
- <a href="#cl-325">325</a>
1244
- <a href="#cl-326">326</a>
1245
- <a href="#cl-327">327</a>
1246
- <a href="#cl-328">328</a>
1247
- <a href="#cl-329">329</a>
1248
- <a href="#cl-330">330</a>
1249
- <a href="#cl-331">331</a>
1250
- <a href="#cl-332">332</a>
1251
- <a href="#cl-333">333</a>
1252
- <a href="#cl-334">334</a>
1253
- <a href="#cl-335">335</a>
1254
- <a href="#cl-336">336</a>
1255
- <a href="#cl-337">337</a>
1256
- <a href="#cl-338">338</a>
1257
- <a href="#cl-339">339</a>
1258
- <a href="#cl-340">340</a>
1259
- <a href="#cl-341">341</a>
1260
- <a href="#cl-342">342</a>
1261
- <a href="#cl-343">343</a>
1262
- <a href="#cl-344">344</a>
1263
- <a href="#cl-345">345</a>
1264
- <a href="#cl-346">346</a>
1265
- <a href="#cl-347">347</a>
1266
- <a href="#cl-348">348</a>
1267
- <a href="#cl-349">349</a>
1268
- <a href="#cl-350">350</a>
1269
- <a href="#cl-351">351</a>
1270
- <a href="#cl-352">352</a>
1271
- <a href="#cl-353">353</a>
1272
- <a href="#cl-354">354</a>
1273
- <a href="#cl-355">355</a>
1274
- <a href="#cl-356">356</a>
1275
- <a href="#cl-357">357</a>
1276
- <a href="#cl-358">358</a>
1277
- <a href="#cl-359">359</a>
1278
- <a href="#cl-360">360</a>
1279
- <a href="#cl-361">361</a>
1280
- <a href="#cl-362">362</a>
1281
- <a href="#cl-363">363</a>
1282
- <a href="#cl-364">364</a>
1283
- <a href="#cl-365">365</a>
1284
- <a href="#cl-366">366</a>
1285
- <a href="#cl-367">367</a>
1286
- <a href="#cl-368">368</a>
1287
- <a href="#cl-369">369</a>
1288
- <a href="#cl-370">370</a>
1289
- <a href="#cl-371">371</a>
1290
- <a href="#cl-372">372</a>
1291
- <a href="#cl-373">373</a>
1292
- <a href="#cl-374">374</a>
1293
- <a href="#cl-375">375</a>
1294
- <a href="#cl-376">376</a>
1295
- <a href="#cl-377">377</a>
1296
- <a href="#cl-378">378</a>
1297
- <a href="#cl-379">379</a>
1298
- <a href="#cl-380">380</a>
1299
- <a href="#cl-381">381</a>
1300
- <a href="#cl-382">382</a>
1301
- <a href="#cl-383">383</a>
1302
- <a href="#cl-384">384</a>
1303
- <a href="#cl-385">385</a>
1304
- <a href="#cl-386">386</a>
1305
- <a href="#cl-387">387</a>
1306
- <a href="#cl-388">388</a>
1307
- <a href="#cl-389">389</a>
1308
- <a href="#cl-390">390</a>
1309
- <a href="#cl-391">391</a>
1310
- <a href="#cl-392">392</a>
1311
- <a href="#cl-393">393</a>
1312
- <a href="#cl-394">394</a>
1313
- <a href="#cl-395">395</a>
1314
- <a href="#cl-396">396</a>
1315
- <a href="#cl-397">397</a>
1316
- <a href="#cl-398">398</a>
1317
- <a href="#cl-399">399</a>
1318
- <a href="#cl-400">400</a>
1319
- <a href="#cl-401">401</a>
1320
- <a href="#cl-402">402</a>
1321
- <a href="#cl-403">403</a>
1322
- <a href="#cl-404">404</a>
1323
- <a href="#cl-405">405</a>
1324
- <a href="#cl-406">406</a>
1325
- <a href="#cl-407">407</a>
1326
- <a href="#cl-408">408</a>
1327
- <a href="#cl-409">409</a>
1328
- <a href="#cl-410">410</a>
1329
- <a href="#cl-411">411</a>
1330
- <a href="#cl-412">412</a>
1331
- <a href="#cl-413">413</a>
1332
- <a href="#cl-414">414</a>
1333
- <a href="#cl-415">415</a>
1334
- <a href="#cl-416">416</a>
1335
- <a href="#cl-417">417</a>
1336
- <a href="#cl-418">418</a>
1337
- <a href="#cl-419">419</a>
1338
- <a href="#cl-420">420</a>
1339
- <a href="#cl-421">421</a>
1340
- <a href="#cl-422">422</a>
1341
- <a href="#cl-423">423</a>
1342
- <a href="#cl-424">424</a>
1343
- <a href="#cl-425">425</a>
1344
- <a href="#cl-426">426</a>
1345
- <a href="#cl-427">427</a>
1346
- <a href="#cl-428">428</a>
1347
- <a href="#cl-429">429</a>
1348
- <a href="#cl-430">430</a>
1349
- <a href="#cl-431">431</a>
1350
- <a href="#cl-432">432</a>
1351
- <a href="#cl-433">433</a>
1352
- <a href="#cl-434">434</a>
1353
- <a href="#cl-435">435</a>
1354
- <a href="#cl-436">436</a>
1355
- <a href="#cl-437">437</a>
1356
- <a href="#cl-438">438</a>
1357
- <a href="#cl-439">439</a>
1358
- <a href="#cl-440">440</a>
1359
- <a href="#cl-441">441</a>
1360
- <a href="#cl-442">442</a>
1361
- <a href="#cl-443">443</a>
1362
- <a href="#cl-444">444</a>
1363
- <a href="#cl-445">445</a>
1364
- <a href="#cl-446">446</a>
1365
- <a href="#cl-447">447</a>
1366
- <a href="#cl-448">448</a>
1367
- <a href="#cl-449">449</a>
1368
- <a href="#cl-450">450</a>
1369
- <a href="#cl-451">451</a>
1370
- <a href="#cl-452">452</a>
1371
- <a href="#cl-453">453</a>
1372
- <a href="#cl-454">454</a>
1373
- <a href="#cl-455">455</a>
1374
- <a href="#cl-456">456</a>
1375
- <a href="#cl-457">457</a>
1376
- <a href="#cl-458">458</a>
1377
- <a href="#cl-459">459</a>
1378
- <a href="#cl-460">460</a>
1379
- <a href="#cl-461">461</a>
1380
- <a href="#cl-462">462</a>
1381
- <a href="#cl-463">463</a>
1382
- <a href="#cl-464">464</a>
1383
- <a href="#cl-465">465</a>
1384
- <a href="#cl-466">466</a>
1385
- <a href="#cl-467">467</a>
1386
- <a href="#cl-468">468</a>
1387
- <a href="#cl-469">469</a>
1388
- <a href="#cl-470">470</a>
1389
- <a href="#cl-471">471</a>
1390
- <a href="#cl-472">472</a>
1391
- <a href="#cl-473">473</a>
1392
- <a href="#cl-474">474</a>
1393
- <a href="#cl-475">475</a>
1394
- <a href="#cl-476">476</a>
1395
- <a href="#cl-477">477</a>
1396
- <a href="#cl-478">478</a>
1397
- <a href="#cl-479">479</a>
1398
- <a href="#cl-480">480</a>
1399
- <a href="#cl-481">481</a>
1400
- <a href="#cl-482">482</a>
1401
- <a href="#cl-483">483</a>
1402
- <a href="#cl-484">484</a>
1403
- <a href="#cl-485">485</a>
1404
- <a href="#cl-486">486</a>
1405
- <a href="#cl-487">487</a>
1406
- <a href="#cl-488">488</a>
1407
- <a href="#cl-489">489</a>
1408
- <a href="#cl-490">490</a>
1409
- <a href="#cl-491">491</a>
1410
- <a href="#cl-492">492</a>
1411
- <a href="#cl-493">493</a>
1412
- <a href="#cl-494">494</a>
1413
- <a href="#cl-495">495</a>
1414
- <a href="#cl-496">496</a>
1415
- <a href="#cl-497">497</a>
1416
- <a href="#cl-498">498</a>
1417
- <a href="#cl-499">499</a>
1418
- <a href="#cl-500">500</a>
1419
- <a href="#cl-501">501</a>
1420
- <a href="#cl-502">502</a>
1421
- <a href="#cl-503">503</a>
1422
- <a href="#cl-504">504</a>
1423
- <a href="#cl-505">505</a>
1424
- <a href="#cl-506">506</a>
1425
- <a href="#cl-507">507</a>
1426
- <a href="#cl-508">508</a>
1427
- <a href="#cl-509">509</a>
1428
- <a href="#cl-510">510</a>
1429
- <a href="#cl-511">511</a>
1430
- <a href="#cl-512">512</a>
1431
- <a href="#cl-513">513</a>
1432
- <a href="#cl-514">514</a>
1433
- <a href="#cl-515">515</a>
1434
- <a href="#cl-516">516</a>
1435
- <a href="#cl-517">517</a>
1436
- <a href="#cl-518">518</a>
1437
- <a href="#cl-519">519</a>
1438
- <a href="#cl-520">520</a>
1439
- <a href="#cl-521">521</a>
1440
- <a href="#cl-522">522</a>
1441
- <a href="#cl-523">523</a>
1442
- <a href="#cl-524">524</a>
1443
- <a href="#cl-525">525</a>
1444
- <a href="#cl-526">526</a>
1445
- <a href="#cl-527">527</a>
1446
- <a href="#cl-528">528</a>
1447
- <a href="#cl-529">529</a>
1448
- <a href="#cl-530">530</a>
1449
- <a href="#cl-531">531</a>
1450
- <a href="#cl-532">532</a>
1451
- <a href="#cl-533">533</a>
1452
- <a href="#cl-534">534</a>
1453
- <a href="#cl-535">535</a>
1454
- <a href="#cl-536">536</a>
1455
- <a href="#cl-537">537</a>
1456
- <a href="#cl-538">538</a>
1457
- <a href="#cl-539">539</a>
1458
- <a href="#cl-540">540</a>
1459
- <a href="#cl-541">541</a>
1460
- <a href="#cl-542">542</a>
1461
- <a href="#cl-543">543</a>
1462
- <a href="#cl-544">544</a>
1463
- <a href="#cl-545">545</a>
1464
- <a href="#cl-546">546</a>
1465
- <a href="#cl-547">547</a>
1466
- <a href="#cl-548">548</a>
1467
- <a href="#cl-549">549</a>
1468
- <a href="#cl-550">550</a>
1469
- <a href="#cl-551">551</a>
1470
- <a href="#cl-552">552</a>
1471
- <a href="#cl-553">553</a>
1472
- <a href="#cl-554">554</a>
1473
- <a href="#cl-555">555</a>
1474
- <a href="#cl-556">556</a>
1475
- <a href="#cl-557">557</a>
1476
- <a href="#cl-558">558</a>
1477
- <a href="#cl-559">559</a>
1478
- <a href="#cl-560">560</a>
1479
- <a href="#cl-561">561</a>
1480
- <a href="#cl-562">562</a>
1481
- <a href="#cl-563">563</a>
1482
- <a href="#cl-564">564</a>
1483
- <a href="#cl-565">565</a>
1484
- <a href="#cl-566">566</a>
1485
- <a href="#cl-567">567</a>
1486
- <a href="#cl-568">568</a>
1487
- <a href="#cl-569">569</a>
1488
- <a href="#cl-570">570</a>
1489
- <a href="#cl-571">571</a>
1490
- <a href="#cl-572">572</a>
1491
- <a href="#cl-573">573</a>
1492
- <a href="#cl-574">574</a>
1493
- <a href="#cl-575">575</a>
1494
- <a href="#cl-576">576</a>
1495
- <a href="#cl-577">577</a>
1496
- <a href="#cl-578">578</a>
1497
- <a href="#cl-579">579</a>
1498
- <a href="#cl-580">580</a>
1499
- <a href="#cl-581">581</a>
1500
- <a href="#cl-582">582</a>
1501
- <a href="#cl-583">583</a>
1502
- <a href="#cl-584">584</a>
1503
- <a href="#cl-585">585</a>
1504
- <a href="#cl-586">586</a>
1505
- <a href="#cl-587">587</a>
1506
- <a href="#cl-588">588</a>
1507
- <a href="#cl-589">589</a>
1508
- <a href="#cl-590">590</a>
1509
- <a href="#cl-591">591</a>
1510
- <a href="#cl-592">592</a>
1511
- <a href="#cl-593">593</a>
1512
- <a href="#cl-594">594</a>
1513
- <a href="#cl-595">595</a>
1514
- <a href="#cl-596">596</a>
1515
- <a href="#cl-597">597</a>
1516
- <a href="#cl-598">598</a>
1517
- <a href="#cl-599">599</a>
1518
- <a href="#cl-600">600</a>
1519
- <a href="#cl-601">601</a>
1520
- <a href="#cl-602">602</a>
1521
- <a href="#cl-603">603</a>
1522
- <a href="#cl-604">604</a>
1523
- <a href="#cl-605">605</a>
1524
- <a href="#cl-606">606</a>
1525
- <a href="#cl-607">607</a>
1526
- <a href="#cl-608">608</a>
1527
- <a href="#cl-609">609</a>
1528
- <a href="#cl-610">610</a>
1529
- <a href="#cl-611">611</a>
1530
- <a href="#cl-612">612</a>
1531
- <a href="#cl-613">613</a>
1532
- <a href="#cl-614">614</a>
1533
- <a href="#cl-615">615</a>
1534
- <a href="#cl-616">616</a>
1535
- <a href="#cl-617">617</a>
1536
- <a href="#cl-618">618</a>
1537
- <a href="#cl-619">619</a>
1538
- <a href="#cl-620">620</a>
1539
- <a href="#cl-621">621</a>
1540
- <a href="#cl-622">622</a>
1541
- <a href="#cl-623">623</a>
1542
- <a href="#cl-624">624</a>
1543
- <a href="#cl-625">625</a>
1544
- <a href="#cl-626">626</a>
1545
- <a href="#cl-627">627</a>
1546
- <a href="#cl-628">628</a>
1547
- <a href="#cl-629">629</a>
1548
- <a href="#cl-630">630</a>
1549
- <a href="#cl-631">631</a>
1550
- <a href="#cl-632">632</a>
1551
- <a href="#cl-633">633</a>
1552
- <a href="#cl-634">634</a>
1553
- <a href="#cl-635">635</a>
1554
- <a href="#cl-636">636</a>
1555
- <a href="#cl-637">637</a>
1556
- <a href="#cl-638">638</a>
1557
- <a href="#cl-639">639</a>
1558
- <a href="#cl-640">640</a>
1559
- <a href="#cl-641">641</a>
1560
- <a href="#cl-642">642</a>
1561
- <a href="#cl-643">643</a>
1562
- <a href="#cl-644">644</a>
1563
- <a href="#cl-645">645</a>
1564
- <a href="#cl-646">646</a>
1565
- <a href="#cl-647">647</a>
1566
- <a href="#cl-648">648</a>
1567
- <a href="#cl-649">649</a>
1568
- <a href="#cl-650">650</a>
1569
- <a href="#cl-651">651</a>
1570
- <a href="#cl-652">652</a>
1571
- <a href="#cl-653">653</a>
1572
- <a href="#cl-654">654</a>
1573
- <a href="#cl-655">655</a>
1574
- <a href="#cl-656">656</a>
1575
- <a href="#cl-657">657</a>
1576
- <a href="#cl-658">658</a>
1577
- <a href="#cl-659">659</a>
1578
- <a href="#cl-660">660</a>
1579
- <a href="#cl-661">661</a>
1580
- <a href="#cl-662">662</a>
1581
- <a href="#cl-663">663</a>
1582
- <a href="#cl-664">664</a>
1583
- <a href="#cl-665">665</a>
1584
- <a href="#cl-666">666</a>
1585
- <a href="#cl-667">667</a>
1586
- <a href="#cl-668">668</a>
1587
- <a href="#cl-669">669</a>
1588
- <a href="#cl-670">670</a>
1589
- <a href="#cl-671">671</a>
1590
- <a href="#cl-672">672</a>
1591
- <a href="#cl-673">673</a>
1592
- <a href="#cl-674">674</a>
1593
- <a href="#cl-675">675</a>
1594
- <a href="#cl-676">676</a>
1595
- <a href="#cl-677">677</a>
1596
- <a href="#cl-678">678</a>
1597
- <a href="#cl-679">679</a>
1598
- <a href="#cl-680">680</a>
1599
- <a href="#cl-681">681</a>
1600
- <a href="#cl-682">682</a>
1601
- <a href="#cl-683">683</a>
1602
- <a href="#cl-684">684</a>
1603
- <a href="#cl-685">685</a>
1604
- <a href="#cl-686">686</a>
1605
- <a href="#cl-687">687</a>
1606
- <a href="#cl-688">688</a>
1607
- <a href="#cl-689">689</a>
1608
- <a href="#cl-690">690</a>
1609
- <a href="#cl-691">691</a>
1610
- <a href="#cl-692">692</a>
1611
- <a href="#cl-693">693</a>
1612
- <a href="#cl-694">694</a>
1613
- <a href="#cl-695">695</a>
1614
- <a href="#cl-696">696</a>
1615
- <a href="#cl-697">697</a>
1616
- <a href="#cl-698">698</a>
1617
- <a href="#cl-699">699</a>
1618
- <a href="#cl-700">700</a>
1619
- <a href="#cl-701">701</a>
1620
- <a href="#cl-702">702</a>
1621
- <a href="#cl-703">703</a>
1622
- <a href="#cl-704">704</a>
1623
- <a href="#cl-705">705</a>
1624
- <a href="#cl-706">706</a>
1625
- <a href="#cl-707">707</a>
1626
- <a href="#cl-708">708</a>
1627
- <a href="#cl-709">709</a>
1628
- <a href="#cl-710">710</a>
1629
- <a href="#cl-711">711</a>
1630
- <a href="#cl-712">712</a>
1631
- <a href="#cl-713">713</a>
1632
- <a href="#cl-714">714</a>
1633
- <a href="#cl-715">715</a>
1634
- <a href="#cl-716">716</a>
1635
- <a href="#cl-717">717</a>
1636
- <a href="#cl-718">718</a>
1637
- <a href="#cl-719">719</a>
1638
- <a href="#cl-720">720</a>
1639
- <a href="#cl-721">721</a>
1640
- <a href="#cl-722">722</a>
1641
- <a href="#cl-723">723</a>
1642
- <a href="#cl-724">724</a>
1643
- <a href="#cl-725">725</a>
1644
- <a href="#cl-726">726</a>
1645
- <a href="#cl-727">727</a>
1646
- <a href="#cl-728">728</a>
1647
- <a href="#cl-729">729</a>
1648
- <a href="#cl-730">730</a>
1649
- <a href="#cl-731">731</a>
1650
- <a href="#cl-732">732</a>
1651
- <a href="#cl-733">733</a>
1652
- <a href="#cl-734">734</a>
1653
- <a href="#cl-735">735</a>
1654
- <a href="#cl-736">736</a>
1655
- <a href="#cl-737">737</a>
1656
- <a href="#cl-738">738</a>
1657
- <a href="#cl-739">739</a>
1658
- <a href="#cl-740">740</a>
1659
- <a href="#cl-741">741</a>
1660
- <a href="#cl-742">742</a>
1661
- <a href="#cl-743">743</a>
1662
- <a href="#cl-744">744</a>
1663
- <a href="#cl-745">745</a>
1664
- <a href="#cl-746">746</a>
1665
- <a href="#cl-747">747</a>
1666
- <a href="#cl-748">748</a>
1667
- <a href="#cl-749">749</a>
1668
- <a href="#cl-750">750</a>
1669
- <a href="#cl-751">751</a>
1670
- <a href="#cl-752">752</a>
1671
- <a href="#cl-753">753</a>
1672
- <a href="#cl-754">754</a>
1673
- <a href="#cl-755">755</a>
1674
- <a href="#cl-756">756</a>
1675
- <a href="#cl-757">757</a>
1676
- <a href="#cl-758">758</a>
1677
- <a href="#cl-759">759</a>
1678
- <a href="#cl-760">760</a>
1679
- <a href="#cl-761">761</a>
1680
- <a href="#cl-762">762</a>
1681
- <a href="#cl-763">763</a>
1682
- <a href="#cl-764">764</a>
1683
- <a href="#cl-765">765</a>
1684
- <a href="#cl-766">766</a>
1685
- <a href="#cl-767">767</a>
1686
- <a href="#cl-768">768</a>
1687
- <a href="#cl-769">769</a>
1688
- <a href="#cl-770">770</a>
1689
- <a href="#cl-771">771</a>
1690
- <a href="#cl-772">772</a>
1691
- <a href="#cl-773">773</a>
1692
- <a href="#cl-774">774</a>
1693
- <a href="#cl-775">775</a>
1694
- <a href="#cl-776">776</a>
1695
- <a href="#cl-777">777</a>
1696
- <a href="#cl-778">778</a>
1697
- <a href="#cl-779">779</a>
1698
- <a href="#cl-780">780</a>
1699
- <a href="#cl-781">781</a>
1700
- <a href="#cl-782">782</a>
1701
- <a href="#cl-783">783</a>
1702
- <a href="#cl-784">784</a>
1703
- <a href="#cl-785">785</a>
1704
- <a href="#cl-786">786</a>
1705
- <a href="#cl-787">787</a>
1706
- <a href="#cl-788">788</a>
1707
- <a href="#cl-789">789</a>
1708
- <a href="#cl-790">790</a>
1709
- <a href="#cl-791">791</a>
1710
- <a href="#cl-792">792</a>
1711
- <a href="#cl-793">793</a>
1712
- <a href="#cl-794">794</a>
1713
- <a href="#cl-795">795</a>
1714
- <a href="#cl-796">796</a>
1715
- <a href="#cl-797">797</a>
1716
- <a href="#cl-798">798</a>
1717
- <a href="#cl-799">799</a>
1718
- <a href="#cl-800">800</a>
1719
- <a href="#cl-801">801</a>
1720
- <a href="#cl-802">802</a>
1721
- <a href="#cl-803">803</a>
1722
- <a href="#cl-804">804</a>
1723
- <a href="#cl-805">805</a>
1724
- <a href="#cl-806">806</a>
1725
- <a href="#cl-807">807</a>
1726
- <a href="#cl-808">808</a>
1727
- <a href="#cl-809">809</a>
1728
- <a href="#cl-810">810</a>
1729
- <a href="#cl-811">811</a>
1730
- <a href="#cl-812">812</a>
1731
- <a href="#cl-813">813</a>
1732
- <a href="#cl-814">814</a>
1733
- <a href="#cl-815">815</a>
1734
- <a href="#cl-816">816</a>
1735
- <a href="#cl-817">817</a>
1736
- <a href="#cl-818">818</a>
1737
- <a href="#cl-819">819</a>
1738
- <a href="#cl-820">820</a>
1739
- <a href="#cl-821">821</a>
1740
- <a href="#cl-822">822</a>
1741
- <a href="#cl-823">823</a>
1742
- <a href="#cl-824">824</a>
1743
- <a href="#cl-825">825</a>
1744
- <a href="#cl-826">826</a>
1745
- <a href="#cl-827">827</a>
1746
- <a href="#cl-828">828</a>
1747
- <a href="#cl-829">829</a>
1748
- <a href="#cl-830">830</a>
1749
- <a href="#cl-831">831</a>
1750
- <a href="#cl-832">832</a>
1751
- <a href="#cl-833">833</a>
1752
- <a href="#cl-834">834</a>
1753
- <a href="#cl-835">835</a>
1754
- <a href="#cl-836">836</a>
1755
- <a href="#cl-837">837</a>
1756
- <a href="#cl-838">838</a>
1757
- <a href="#cl-839">839</a>
1758
- <a href="#cl-840">840</a>
1759
- <a href="#cl-841">841</a>
1760
- <a href="#cl-842">842</a>
1761
- <a href="#cl-843">843</a>
1762
- <a href="#cl-844">844</a>
1763
- <a href="#cl-845">845</a>
1764
- <a href="#cl-846">846</a>
1765
- <a href="#cl-847">847</a>
1766
- <a href="#cl-848">848</a>
1767
- <a href="#cl-849">849</a>
1768
- <a href="#cl-850">850</a>
1769
- <a href="#cl-851">851</a>
1770
- <a href="#cl-852">852</a>
1771
- <a href="#cl-853">853</a>
1772
- <a href="#cl-854">854</a>
1773
- <a href="#cl-855">855</a>
1774
- <a href="#cl-856">856</a>
1775
- <a href="#cl-857">857</a>
1776
- <a href="#cl-858">858</a>
1777
- <a href="#cl-859">859</a>
1778
- <a href="#cl-860">860</a>
1779
- <a href="#cl-861">861</a>
1780
- <a href="#cl-862">862</a>
1781
- <a href="#cl-863">863</a>
1782
- <a href="#cl-864">864</a>
1783
- <a href="#cl-865">865</a>
1784
- <a href="#cl-866">866</a>
1785
- <a href="#cl-867">867</a>
1786
- <a href="#cl-868">868</a>
1787
- <a href="#cl-869">869</a>
1788
- <a href="#cl-870">870</a>
1789
- <a href="#cl-871">871</a>
1790
- <a href="#cl-872">872</a>
1791
- <a href="#cl-873">873</a>
1792
- <a href="#cl-874">874</a>
1793
- <a href="#cl-875">875</a>
1794
- <a href="#cl-876">876</a>
1795
- <a href="#cl-877">877</a>
1796
- <a href="#cl-878">878</a>
1797
- <a href="#cl-879">879</a>
1798
- <a href="#cl-880">880</a>
1799
- <a href="#cl-881">881</a>
1800
- <a href="#cl-882">882</a>
1801
- <a href="#cl-883">883</a>
1802
- <a href="#cl-884">884</a>
1803
- <a href="#cl-885">885</a>
1804
- <a href="#cl-886">886</a>
1805
- <a href="#cl-887">887</a>
1806
- <a href="#cl-888">888</a>
1807
- <a href="#cl-889">889</a>
1808
- <a href="#cl-890">890</a>
1809
- <a href="#cl-891">891</a>
1810
- <a href="#cl-892">892</a>
1811
- <a href="#cl-893">893</a>
1812
- <a href="#cl-894">894</a>
1813
- <a href="#cl-895">895</a>
1814
- <a href="#cl-896">896</a>
1815
- <a href="#cl-897">897</a>
1816
- <a href="#cl-898">898</a>
1817
- <a href="#cl-899">899</a>
1818
- <a href="#cl-900">900</a>
1819
- <a href="#cl-901">901</a>
1820
- <a href="#cl-902">902</a>
1821
- <a href="#cl-903">903</a>
1822
- <a href="#cl-904">904</a>
1823
- <a href="#cl-905">905</a>
1824
- <a href="#cl-906">906</a>
1825
- <a href="#cl-907">907</a>
1826
- <a href="#cl-908">908</a>
1827
- <a href="#cl-909">909</a>
1828
- <a href="#cl-910">910</a>
1829
- <a href="#cl-911">911</a>
1830
- <a href="#cl-912">912</a>
1831
- <a href="#cl-913">913</a>
1832
- <a href="#cl-914">914</a>
1833
- <a href="#cl-915">915</a>
1834
- <a href="#cl-916">916</a>
1835
- <a href="#cl-917">917</a>
1836
- <a href="#cl-918">918</a>
1837
- <a href="#cl-919">919</a>
1838
- <a href="#cl-920">920</a>
1839
- <a href="#cl-921">921</a>
1840
- <a href="#cl-922">922</a>
1841
- <a href="#cl-923">923</a>
1842
- <a href="#cl-924">924</a>
1843
- <a href="#cl-925">925</a>
1844
- <a href="#cl-926">926</a>
1845
- <a href="#cl-927">927</a>
1846
- <a href="#cl-928">928</a>
1847
- <a href="#cl-929">929</a>
1848
- <a href="#cl-930">930</a>
1849
- <a href="#cl-931">931</a>
1850
- <a href="#cl-932">932</a>
1851
- <a href="#cl-933">933</a>
1852
- <a href="#cl-934">934</a>
1853
- <a href="#cl-935">935</a>
1854
- <a href="#cl-936">936</a>
1855
- <a href="#cl-937">937</a>
1856
- <a href="#cl-938">938</a>
1857
- <a href="#cl-939">939</a>
1858
- <a href="#cl-940">940</a>
1859
- <a href="#cl-941">941</a>
1860
- <a href="#cl-942">942</a>
1861
- <a href="#cl-943">943</a>
1862
- <a href="#cl-944">944</a>
1863
- <a href="#cl-945">945</a>
1864
- <a href="#cl-946">946</a>
1865
- <a href="#cl-947">947</a>
1866
- <a href="#cl-948">948</a>
1867
- <a href="#cl-949">949</a>
1868
- <a href="#cl-950">950</a>
1869
- <a href="#cl-951">951</a>
1870
- <a href="#cl-952">952</a>
1871
- <a href="#cl-953">953</a>
1872
- <a href="#cl-954">954</a>
1873
- <a href="#cl-955">955</a>
1874
- <a href="#cl-956">956</a>
1875
- <a href="#cl-957">957</a>
1876
- <a href="#cl-958">958</a>
1877
- <a href="#cl-959">959</a>
1878
- <a href="#cl-960">960</a>
1879
- <a href="#cl-961">961</a>
1880
- <a href="#cl-962">962</a>
1881
- <a href="#cl-963">963</a>
1882
- <a href="#cl-964">964</a>
1883
- <a href="#cl-965">965</a>
1884
- <a href="#cl-966">966</a>
1885
- <a href="#cl-967">967</a>
1886
- <a href="#cl-968">968</a>
1887
- <a href="#cl-969">969</a>
1888
- <a href="#cl-970">970</a>
1889
- <a href="#cl-971">971</a>
1890
- <a href="#cl-972">972</a>
1891
- <a href="#cl-973">973</a>
1892
- <a href="#cl-974">974</a>
1893
- <a href="#cl-975">975</a>
1894
- <a href="#cl-976">976</a>
1895
- <a href="#cl-977">977</a>
1896
- <a href="#cl-978">978</a>
1897
- <a href="#cl-979">979</a>
1898
- <a href="#cl-980">980</a>
1899
- <a href="#cl-981">981</a>
1900
- <a href="#cl-982">982</a>
1901
- <a href="#cl-983">983</a>
1902
- <a href="#cl-984">984</a>
1903
- <a href="#cl-985">985</a>
1904
- <a href="#cl-986">986</a>
1905
- <a href="#cl-987">987</a>
1906
- <a href="#cl-988">988</a>
1907
- <a href="#cl-989">989</a>
1908
- <a href="#cl-990">990</a>
1909
- <a href="#cl-991">991</a>
1910
- <a href="#cl-992">992</a>
1911
- <a href="#cl-993">993</a>
1912
- <a href="#cl-994">994</a>
1913
- <a href="#cl-995">995</a>
1914
- <a href="#cl-996">996</a>
1915
- <a href="#cl-997">997</a>
1916
- <a href="#cl-998">998</a>
1917
- <a href="#cl-999">999</a>
1918
- <a href="#cl-1000">1000</a>
1919
- <a href="#cl-1001">1001</a>
1920
- <a href="#cl-1002">1002</a>
1921
- <a href="#cl-1003">1003</a>
1922
- <a href="#cl-1004">1004</a>
1923
- <a href="#cl-1005">1005</a>
1924
- <a href="#cl-1006">1006</a>
1925
- <a href="#cl-1007">1007</a>
1926
- <a href="#cl-1008">1008</a>
1927
- <a href="#cl-1009">1009</a>
1928
- <a href="#cl-1010">1010</a>
1929
- <a href="#cl-1011">1011</a>
1930
- <a href="#cl-1012">1012</a>
1931
- <a href="#cl-1013">1013</a>
1932
- <a href="#cl-1014">1014</a>
1933
- <a href="#cl-1015">1015</a>
1934
- <a href="#cl-1016">1016</a>
1935
- <a href="#cl-1017">1017</a>
1936
- <a href="#cl-1018">1018</a>
1937
- <a href="#cl-1019">1019</a>
1938
- <a href="#cl-1020">1020</a>
1939
- <a href="#cl-1021">1021</a>
1940
- <a href="#cl-1022">1022</a>
1941
- <a href="#cl-1023">1023</a>
1942
- <a href="#cl-1024">1024</a>
1943
- <a href="#cl-1025">1025</a>
1944
- <a href="#cl-1026">1026</a>
1945
- <a href="#cl-1027">1027</a>
1946
- <a href="#cl-1028">1028</a>
1947
- <a href="#cl-1029">1029</a>
1948
- <a href="#cl-1030">1030</a>
1949
- <a href="#cl-1031">1031</a>
1950
- <a href="#cl-1032">1032</a>
1951
- <a href="#cl-1033">1033</a>
1952
- <a href="#cl-1034">1034</a>
1953
- <a href="#cl-1035">1035</a>
1954
- <a href="#cl-1036">1036</a>
1955
- <a href="#cl-1037">1037</a>
1956
- <a href="#cl-1038">1038</a>
1957
- <a href="#cl-1039">1039</a>
1958
- <a href="#cl-1040">1040</a>
1959
- <a href="#cl-1041">1041</a>
1960
- <a href="#cl-1042">1042</a>
1961
- <a href="#cl-1043">1043</a>
1962
- <a href="#cl-1044">1044</a>
1963
- <a href="#cl-1045">1045</a>
1964
- <a href="#cl-1046">1046</a>
1965
- <a href="#cl-1047">1047</a>
1966
- <a href="#cl-1048">1048</a>
1967
- <a href="#cl-1049">1049</a>
1968
- <a href="#cl-1050">1050</a>
1969
- <a href="#cl-1051">1051</a>
1970
- <a href="#cl-1052">1052</a>
1971
- <a href="#cl-1053">1053</a>
1972
- <a href="#cl-1054">1054</a>
1973
- <a href="#cl-1055">1055</a>
1974
- <a href="#cl-1056">1056</a>
1975
- <a href="#cl-1057">1057</a>
1976
- <a href="#cl-1058">1058</a>
1977
- <a href="#cl-1059">1059</a>
1978
- <a href="#cl-1060">1060</a>
1979
- <a href="#cl-1061">1061</a>
1980
- <a href="#cl-1062">1062</a>
1981
- <a href="#cl-1063">1063</a>
1982
- <a href="#cl-1064">1064</a>
1983
- <a href="#cl-1065">1065</a>
1984
- <a href="#cl-1066">1066</a>
1985
- <a href="#cl-1067">1067</a>
1986
- <a href="#cl-1068">1068</a>
1987
- <a href="#cl-1069">1069</a>
1988
- <a href="#cl-1070">1070</a>
1989
- <a href="#cl-1071">1071</a>
1990
- <a href="#cl-1072">1072</a>
1991
- <a href="#cl-1073">1073</a>
1992
- <a href="#cl-1074">1074</a>
1993
- <a href="#cl-1075">1075</a>
1994
- <a href="#cl-1076">1076</a>
1995
- <a href="#cl-1077">1077</a>
1996
- <a href="#cl-1078">1078</a>
1997
- <a href="#cl-1079">1079</a>
1998
- <a href="#cl-1080">1080</a>
1999
- <a href="#cl-1081">1081</a>
2000
- <a href="#cl-1082">1082</a>
2001
- <a href="#cl-1083">1083</a>
2002
- <a href="#cl-1084">1084</a>
2003
- <a href="#cl-1085">1085</a>
2004
- <a href="#cl-1086">1086</a>
2005
- <a href="#cl-1087">1087</a>
2006
- <a href="#cl-1088">1088</a>
2007
- <a href="#cl-1089">1089</a>
2008
- <a href="#cl-1090">1090</a>
2009
- <a href="#cl-1091">1091</a>
2010
- <a href="#cl-1092">1092</a>
2011
- <a href="#cl-1093">1093</a>
2012
- <a href="#cl-1094">1094</a>
2013
- <a href="#cl-1095">1095</a>
2014
- <a href="#cl-1096">1096</a>
2015
- <a href="#cl-1097">1097</a>
2016
- <a href="#cl-1098">1098</a>
2017
- <a href="#cl-1099">1099</a>
2018
- <a href="#cl-1100">1100</a>
2019
- <a href="#cl-1101">1101</a>
2020
- <a href="#cl-1102">1102</a>
2021
- <a href="#cl-1103">1103</a>
2022
- <a href="#cl-1104">1104</a>
2023
- <a href="#cl-1105">1105</a>
2024
- <a href="#cl-1106">1106</a>
2025
- <a href="#cl-1107">1107</a>
2026
- <a href="#cl-1108">1108</a>
2027
- <a href="#cl-1109">1109</a>
2028
- <a href="#cl-1110">1110</a>
2029
- <a href="#cl-1111">1111</a>
2030
- <a href="#cl-1112">1112</a>
2031
- <a href="#cl-1113">1113</a>
2032
- <a href="#cl-1114">1114</a>
2033
- <a href="#cl-1115">1115</a>
2034
- <a href="#cl-1116">1116</a>
2035
- <a href="#cl-1117">1117</a>
2036
- <a href="#cl-1118">1118</a>
2037
- <a href="#cl-1119">1119</a>
2038
- <a href="#cl-1120">1120</a>
2039
- <a href="#cl-1121">1121</a>
2040
- <a href="#cl-1122">1122</a>
2041
- <a href="#cl-1123">1123</a>
2042
- <a href="#cl-1124">1124</a>
2043
- <a href="#cl-1125">1125</a>
2044
- <a href="#cl-1126">1126</a>
2045
- <a href="#cl-1127">1127</a>
2046
- <a href="#cl-1128">1128</a>
2047
- <a href="#cl-1129">1129</a>
2048
- <a href="#cl-1130">1130</a>
2049
- <a href="#cl-1131">1131</a>
2050
- <a href="#cl-1132">1132</a>
2051
- <a href="#cl-1133">1133</a>
2052
- <a href="#cl-1134">1134</a>
2053
- <a href="#cl-1135">1135</a>
2054
- <a href="#cl-1136">1136</a>
2055
- <a href="#cl-1137">1137</a>
2056
- <a href="#cl-1138">1138</a>
2057
- <a href="#cl-1139">1139</a>
2058
- <a href="#cl-1140">1140</a>
2059
- <a href="#cl-1141">1141</a>
2060
- <a href="#cl-1142">1142</a>
2061
- <a href="#cl-1143">1143</a>
2062
- <a href="#cl-1144">1144</a>
2063
- <a href="#cl-1145">1145</a>
2064
- <a href="#cl-1146">1146</a>
2065
- <a href="#cl-1147">1147</a>
2066
- <a href="#cl-1148">1148</a>
2067
- <a href="#cl-1149">1149</a>
2068
- <a href="#cl-1150">1150</a>
2069
- <a href="#cl-1151">1151</a>
2070
- <a href="#cl-1152">1152</a>
2071
- <a href="#cl-1153">1153</a>
2072
- <a href="#cl-1154">1154</a>
2073
- <a href="#cl-1155">1155</a>
2074
- <a href="#cl-1156">1156</a>
2075
- <a href="#cl-1157">1157</a>
2076
- <a href="#cl-1158">1158</a>
2077
- <a href="#cl-1159">1159</a>
2078
- <a href="#cl-1160">1160</a>
2079
- <a href="#cl-1161">1161</a>
2080
- <a href="#cl-1162">1162</a>
2081
- <a href="#cl-1163">1163</a>
2082
- <a href="#cl-1164">1164</a>
2083
- <a href="#cl-1165">1165</a>
2084
- <a href="#cl-1166">1166</a>
2085
- <a href="#cl-1167">1167</a>
2086
- <a href="#cl-1168">1168</a>
2087
- <a href="#cl-1169">1169</a>
2088
- <a href="#cl-1170">1170</a>
2089
- <a href="#cl-1171">1171</a>
2090
- <a href="#cl-1172">1172</a>
2091
- <a href="#cl-1173">1173</a>
2092
- <a href="#cl-1174">1174</a>
2093
- <a href="#cl-1175">1175</a>
2094
- <a href="#cl-1176">1176</a>
2095
- <a href="#cl-1177">1177</a>
2096
- <a href="#cl-1178">1178</a>
2097
- <a href="#cl-1179">1179</a>
2098
- <a href="#cl-1180">1180</a>
2099
- <a href="#cl-1181">1181</a>
2100
- <a href="#cl-1182">1182</a>
2101
- <a href="#cl-1183">1183</a>
2102
- <a href="#cl-1184">1184</a>
2103
- <a href="#cl-1185">1185</a>
2104
- <a href="#cl-1186">1186</a>
2105
- <a href="#cl-1187">1187</a>
2106
- <a href="#cl-1188">1188</a>
2107
- <a href="#cl-1189">1189</a>
2108
- <a href="#cl-1190">1190</a>
2109
- <a href="#cl-1191">1191</a>
2110
- <a href="#cl-1192">1192</a>
2111
- <a href="#cl-1193">1193</a>
2112
- <a href="#cl-1194">1194</a>
2113
- <a href="#cl-1195">1195</a>
2114
- <a href="#cl-1196">1196</a>
2115
- <a href="#cl-1197">1197</a>
2116
- <a href="#cl-1198">1198</a>
2117
- <a href="#cl-1199">1199</a>
2118
- <a href="#cl-1200">1200</a>
2119
- <a href="#cl-1201">1201</a>
2120
- <a href="#cl-1202">1202</a>
2121
- <a href="#cl-1203">1203</a>
2122
- <a href="#cl-1204">1204</a>
2123
- <a href="#cl-1205">1205</a>
2124
- <a href="#cl-1206">1206</a>
2125
- <a href="#cl-1207">1207</a>
2126
- <a href="#cl-1208">1208</a>
2127
- <a href="#cl-1209">1209</a>
2128
- <a href="#cl-1210">1210</a>
2129
- <a href="#cl-1211">1211</a>
2130
- <a href="#cl-1212">1212</a>
2131
- <a href="#cl-1213">1213</a>
2132
- <a href="#cl-1214">1214</a>
2133
- <a href="#cl-1215">1215</a>
2134
- <a href="#cl-1216">1216</a>
2135
- <a href="#cl-1217">1217</a>
2136
- <a href="#cl-1218">1218</a>
2137
- <a href="#cl-1219">1219</a>
2138
- <a href="#cl-1220">1220</a>
2139
- <a href="#cl-1221">1221</a>
2140
- <a href="#cl-1222">1222</a>
2141
- <a href="#cl-1223">1223</a>
2142
- <a href="#cl-1224">1224</a>
2143
- <a href="#cl-1225">1225</a>
2144
- <a href="#cl-1226">1226</a>
2145
- <a href="#cl-1227">1227</a>
2146
- <a href="#cl-1228">1228</a>
2147
- <a href="#cl-1229">1229</a>
2148
- <a href="#cl-1230">1230</a>
2149
- <a href="#cl-1231">1231</a>
2150
- <a href="#cl-1232">1232</a>
2151
- <a href="#cl-1233">1233</a>
2152
- <a href="#cl-1234">1234</a>
2153
- <a href="#cl-1235">1235</a>
2154
- <a href="#cl-1236">1236</a>
2155
- <a href="#cl-1237">1237</a>
2156
- <a href="#cl-1238">1238</a>
2157
- <a href="#cl-1239">1239</a>
2158
- <a href="#cl-1240">1240</a>
2159
- <a href="#cl-1241">1241</a>
2160
- <a href="#cl-1242">1242</a>
2161
- <a href="#cl-1243">1243</a>
2162
- <a href="#cl-1244">1244</a>
2163
- <a href="#cl-1245">1245</a>
2164
- <a href="#cl-1246">1246</a>
2165
- <a href="#cl-1247">1247</a>
2166
- <a href="#cl-1248">1248</a>
2167
- <a href="#cl-1249">1249</a>
2168
- <a href="#cl-1250">1250</a>
2169
- <a href="#cl-1251">1251</a>
2170
- <a href="#cl-1252">1252</a>
2171
- <a href="#cl-1253">1253</a>
2172
- <a href="#cl-1254">1254</a>
2173
- <a href="#cl-1255">1255</a>
2174
- <a href="#cl-1256">1256</a>
2175
- <a href="#cl-1257">1257</a>
2176
- <a href="#cl-1258">1258</a>
2177
- <a href="#cl-1259">1259</a>
2178
- <a href="#cl-1260">1260</a>
2179
- <a href="#cl-1261">1261</a>
2180
- <a href="#cl-1262">1262</a>
2181
- <a href="#cl-1263">1263</a>
2182
- <a href="#cl-1264">1264</a>
2183
- <a href="#cl-1265">1265</a>
2184
- <a href="#cl-1266">1266</a>
2185
- <a href="#cl-1267">1267</a>
2186
- <a href="#cl-1268">1268</a>
2187
- <a href="#cl-1269">1269</a>
2188
- <a href="#cl-1270">1270</a>
2189
- <a href="#cl-1271">1271</a>
2190
- <a href="#cl-1272">1272</a>
2191
- <a href="#cl-1273">1273</a>
2192
- <a href="#cl-1274">1274</a>
2193
- <a href="#cl-1275">1275</a>
2194
- <a href="#cl-1276">1276</a>
2195
- <a href="#cl-1277">1277</a>
2196
- <a href="#cl-1278">1278</a>
2197
- <a href="#cl-1279">1279</a>
2198
- <a href="#cl-1280">1280</a>
2199
- <a href="#cl-1281">1281</a>
2200
- <a href="#cl-1282">1282</a>
2201
- <a href="#cl-1283">1283</a>
2202
- <a href="#cl-1284">1284</a>
2203
- <a href="#cl-1285">1285</a>
2204
- <a href="#cl-1286">1286</a>
2205
- <a href="#cl-1287">1287</a>
2206
- <a href="#cl-1288">1288</a>
2207
- <a href="#cl-1289">1289</a>
2208
- <a href="#cl-1290">1290</a>
2209
- <a href="#cl-1291">1291</a>
2210
- <a href="#cl-1292">1292</a>
2211
- <a href="#cl-1293">1293</a>
2212
- <a href="#cl-1294">1294</a>
2213
- <a href="#cl-1295">1295</a>
2214
- <a href="#cl-1296">1296</a>
2215
- <a href="#cl-1297">1297</a>
2216
- <a href="#cl-1298">1298</a>
2217
- <a href="#cl-1299">1299</a>
2218
- <a href="#cl-1300">1300</a>
2219
- <a href="#cl-1301">1301</a>
2220
- <a href="#cl-1302">1302</a>
2221
- <a href="#cl-1303">1303</a>
2222
- <a href="#cl-1304">1304</a>
2223
- <a href="#cl-1305">1305</a>
2224
- <a href="#cl-1306">1306</a>
2225
- <a href="#cl-1307">1307</a>
2226
- <a href="#cl-1308">1308</a>
2227
- <a href="#cl-1309">1309</a>
2228
- <a href="#cl-1310">1310</a>
2229
- <a href="#cl-1311">1311</a>
2230
- <a href="#cl-1312">1312</a>
2231
- <a href="#cl-1313">1313</a>
2232
- <a href="#cl-1314">1314</a>
2233
- <a href="#cl-1315">1315</a>
2234
- <a href="#cl-1316">1316</a>
2235
- <a href="#cl-1317">1317</a>
2236
- <a href="#cl-1318">1318</a>
2237
- <a href="#cl-1319">1319</a>
2238
- <a href="#cl-1320">1320</a>
2239
- <a href="#cl-1321">1321</a>
2240
- <a href="#cl-1322">1322</a>
2241
- <a href="#cl-1323">1323</a>
2242
- <a href="#cl-1324">1324</a>
2243
- <a href="#cl-1325">1325</a>
2244
- <a href="#cl-1326">1326</a>
2245
- <a href="#cl-1327">1327</a>
2246
- <a href="#cl-1328">1328</a>
2247
- <a href="#cl-1329">1329</a>
2248
- <a href="#cl-1330">1330</a>
2249
- <a href="#cl-1331">1331</a>
2250
- <a href="#cl-1332">1332</a>
2251
- <a href="#cl-1333">1333</a>
2252
- <a href="#cl-1334">1334</a>
2253
- <a href="#cl-1335">1335</a>
2254
- <a href="#cl-1336">1336</a>
2255
- <a href="#cl-1337">1337</a>
2256
- <a href="#cl-1338">1338</a>
2257
- <a href="#cl-1339">1339</a>
2258
- <a href="#cl-1340">1340</a>
2259
- <a href="#cl-1341">1341</a>
2260
- <a href="#cl-1342">1342</a>
2261
- <a href="#cl-1343">1343</a>
2262
- <a href="#cl-1344">1344</a>
2263
- <a href="#cl-1345">1345</a>
2264
- <a href="#cl-1346">1346</a>
2265
- <a href="#cl-1347">1347</a>
2266
- <a href="#cl-1348">1348</a>
2267
- <a href="#cl-1349">1349</a>
2268
- <a href="#cl-1350">1350</a>
2269
- <a href="#cl-1351">1351</a>
2270
- <a href="#cl-1352">1352</a>
2271
- <a href="#cl-1353">1353</a>
2272
- <a href="#cl-1354">1354</a>
2273
- <a href="#cl-1355">1355</a>
2274
- <a href="#cl-1356">1356</a>
2275
- <a href="#cl-1357">1357</a>
2276
- <a href="#cl-1358">1358</a>
2277
- <a href="#cl-1359">1359</a>
2278
- <a href="#cl-1360">1360</a>
2279
- <a href="#cl-1361">1361</a>
2280
- <a href="#cl-1362">1362</a>
2281
- <a href="#cl-1363">1363</a>
2282
- <a href="#cl-1364">1364</a>
2283
- <a href="#cl-1365">1365</a>
2284
- <a href="#cl-1366">1366</a>
2285
- <a href="#cl-1367">1367</a>
2286
- <a href="#cl-1368">1368</a>
2287
- <a href="#cl-1369">1369</a>
2288
- <a href="#cl-1370">1370</a>
2289
- <a href="#cl-1371">1371</a>
2290
- <a href="#cl-1372">1372</a>
2291
- <a href="#cl-1373">1373</a>
2292
- <a href="#cl-1374">1374</a>
2293
- <a href="#cl-1375">1375</a>
2294
- <a href="#cl-1376">1376</a>
2295
- <a href="#cl-1377">1377</a>
2296
- <a href="#cl-1378">1378</a>
2297
- <a href="#cl-1379">1379</a>
2298
- <a href="#cl-1380">1380</a>
2299
- <a href="#cl-1381">1381</a>
2300
- <a href="#cl-1382">1382</a>
2301
- <a href="#cl-1383">1383</a>
2302
- <a href="#cl-1384">1384</a>
2303
- <a href="#cl-1385">1385</a>
2304
- <a href="#cl-1386">1386</a>
2305
- <a href="#cl-1387">1387</a>
2306
- <a href="#cl-1388">1388</a>
2307
- <a href="#cl-1389">1389</a>
2308
- <a href="#cl-1390">1390</a>
2309
- <a href="#cl-1391">1391</a>
2310
- <a href="#cl-1392">1392</a>
2311
- <a href="#cl-1393">1393</a>
2312
- <a href="#cl-1394">1394</a>
2313
- <a href="#cl-1395">1395</a>
2314
- <a href="#cl-1396">1396</a>
2315
- <a href="#cl-1397">1397</a>
2316
- <a href="#cl-1398">1398</a>
2317
- <a href="#cl-1399">1399</a>
2318
- <a href="#cl-1400">1400</a>
2319
- <a href="#cl-1401">1401</a>
2320
- <a href="#cl-1402">1402</a>
2321
- <a href="#cl-1403">1403</a>
2322
- <a href="#cl-1404">1404</a>
2323
- <a href="#cl-1405">1405</a>
2324
- <a href="#cl-1406">1406</a>
2325
- <a href="#cl-1407">1407</a>
2326
- <a href="#cl-1408">1408</a>
2327
- <a href="#cl-1409">1409</a>
2328
- <a href="#cl-1410">1410</a>
2329
- <a href="#cl-1411">1411</a>
2330
- <a href="#cl-1412">1412</a>
2331
- <a href="#cl-1413">1413</a>
2332
- <a href="#cl-1414">1414</a>
2333
- <a href="#cl-1415">1415</a>
2334
- <a href="#cl-1416">1416</a>
2335
- <a href="#cl-1417">1417</a>
2336
- <a href="#cl-1418">1418</a>
2337
- <a href="#cl-1419">1419</a>
2338
- <a href="#cl-1420">1420</a>
2339
- <a href="#cl-1421">1421</a>
2340
- <a href="#cl-1422">1422</a>
2341
- <a href="#cl-1423">1423</a>
2342
- <a href="#cl-1424">1424</a>
2343
- <a href="#cl-1425">1425</a>
2344
- <a href="#cl-1426">1426</a>
2345
- <a href="#cl-1427">1427</a>
2346
- <a href="#cl-1428">1428</a>
2347
- <a href="#cl-1429">1429</a>
2348
- <a href="#cl-1430">1430</a>
2349
- <a href="#cl-1431">1431</a>
2350
- <a href="#cl-1432">1432</a>
2351
- <a href="#cl-1433">1433</a>
2352
- <a href="#cl-1434">1434</a>
2353
- <a href="#cl-1435">1435</a>
2354
- <a href="#cl-1436">1436</a>
2355
- <a href="#cl-1437">1437</a>
2356
- <a href="#cl-1438">1438</a>
2357
- <a href="#cl-1439">1439</a>
2358
- <a href="#cl-1440">1440</a>
2359
- <a href="#cl-1441">1441</a>
2360
- <a href="#cl-1442">1442</a>
2361
- <a href="#cl-1443">1443</a>
2362
- <a href="#cl-1444">1444</a>
2363
- <a href="#cl-1445">1445</a>
2364
- <a href="#cl-1446">1446</a>
2365
- <a href="#cl-1447">1447</a>
2366
- <a href="#cl-1448">1448</a>
2367
- <a href="#cl-1449">1449</a>
2368
- <a href="#cl-1450">1450</a>
2369
- <a href="#cl-1451">1451</a>
2370
- <a href="#cl-1452">1452</a>
2371
- <a href="#cl-1453">1453</a>
2372
- <a href="#cl-1454">1454</a>
2373
- <a href="#cl-1455">1455</a>
2374
- <a href="#cl-1456">1456</a>
2375
- <a href="#cl-1457">1457</a>
2376
- <a href="#cl-1458">1458</a>
2377
- <a href="#cl-1459">1459</a>
2378
- <a href="#cl-1460">1460</a>
2379
- <a href="#cl-1461">1461</a>
2380
- <a href="#cl-1462">1462</a>
2381
- <a href="#cl-1463">1463</a>
2382
- <a href="#cl-1464">1464</a>
2383
- <a href="#cl-1465">1465</a>
2384
- <a href="#cl-1466">1466</a>
2385
- <a href="#cl-1467">1467</a>
2386
- <a href="#cl-1468">1468</a>
2387
- <a href="#cl-1469">1469</a>
2388
- <a href="#cl-1470">1470</a>
2389
- <a href="#cl-1471">1471</a>
2390
- <a href="#cl-1472">1472</a>
2391
- <a href="#cl-1473">1473</a>
2392
- <a href="#cl-1474">1474</a>
2393
- <a href="#cl-1475">1475</a>
2394
- <a href="#cl-1476">1476</a>
2395
- <a href="#cl-1477">1477</a>
2396
- <a href="#cl-1478">1478</a>
2397
- <a href="#cl-1479">1479</a>
2398
- <a href="#cl-1480">1480</a>
2399
- <a href="#cl-1481">1481</a>
2400
- <a href="#cl-1482">1482</a>
2401
- <a href="#cl-1483">1483</a>
2402
- <a href="#cl-1484">1484</a>
2403
- <a href="#cl-1485">1485</a>
2404
- <a href="#cl-1486">1486</a>
2405
- <a href="#cl-1487">1487</a>
2406
- <a href="#cl-1488">1488</a>
2407
- <a href="#cl-1489">1489</a>
2408
- <a href="#cl-1490">1490</a>
2409
- <a href="#cl-1491">1491</a>
2410
- <a href="#cl-1492">1492</a>
2411
- <a href="#cl-1493">1493</a>
2412
- <a href="#cl-1494">1494</a>
2413
- <a href="#cl-1495">1495</a>
2414
- <a href="#cl-1496">1496</a>
2415
- <a href="#cl-1497">1497</a>
2416
- <a href="#cl-1498">1498</a>
2417
- <a href="#cl-1499">1499</a>
2418
- <a href="#cl-1500">1500</a>
2419
- <a href="#cl-1501">1501</a>
2420
- <a href="#cl-1502">1502</a>
2421
- <a href="#cl-1503">1503</a>
2422
- <a href="#cl-1504">1504</a>
2423
- <a href="#cl-1505">1505</a>
2424
- <a href="#cl-1506">1506</a>
2425
- <a href="#cl-1507">1507</a>
2426
- <a href="#cl-1508">1508</a>
2427
- <a href="#cl-1509">1509</a>
2428
- <a href="#cl-1510">1510</a>
2429
- <a href="#cl-1511">1511</a>
2430
- <a href="#cl-1512">1512</a>
2431
- <a href="#cl-1513">1513</a>
2432
- <a href="#cl-1514">1514</a>
2433
- <a href="#cl-1515">1515</a>
2434
- <a href="#cl-1516">1516</a>
2435
- <a href="#cl-1517">1517</a>
2436
- <a href="#cl-1518">1518</a>
2437
- <a href="#cl-1519">1519</a>
2438
- <a href="#cl-1520">1520</a>
2439
- <a href="#cl-1521">1521</a>
2440
- <a href="#cl-1522">1522</a>
2441
- <a href="#cl-1523">1523</a>
2442
- <a href="#cl-1524">1524</a>
2443
- <a href="#cl-1525">1525</a>
2444
- <a href="#cl-1526">1526</a>
2445
- <a href="#cl-1527">1527</a>
2446
- <a href="#cl-1528">1528</a>
2447
- <a href="#cl-1529">1529</a>
2448
- <a href="#cl-1530">1530</a>
2449
- <a href="#cl-1531">1531</a>
2450
- <a href="#cl-1532">1532</a>
2451
- <a href="#cl-1533">1533</a>
2452
- <a href="#cl-1534">1534</a>
2453
- <a href="#cl-1535">1535</a>
2454
- <a href="#cl-1536">1536</a>
2455
- <a href="#cl-1537">1537</a>
2456
- <a href="#cl-1538">1538</a>
2457
- <a href="#cl-1539">1539</a>
2458
- <a href="#cl-1540">1540</a>
2459
- <a href="#cl-1541">1541</a>
2460
- <a href="#cl-1542">1542</a>
2461
- <a href="#cl-1543">1543</a>
2462
- <a href="#cl-1544">1544</a>
2463
- <a href="#cl-1545">1545</a>
2464
- <a href="#cl-1546">1546</a>
2465
- <a href="#cl-1547">1547</a>
2466
- <a href="#cl-1548">1548</a>
2467
- <a href="#cl-1549">1549</a>
2468
- <a href="#cl-1550">1550</a>
2469
- <a href="#cl-1551">1551</a>
2470
- <a href="#cl-1552">1552</a>
2471
- <a href="#cl-1553">1553</a>
2472
- <a href="#cl-1554">1554</a>
2473
- <a href="#cl-1555">1555</a>
2474
- <a href="#cl-1556">1556</a>
2475
- <a href="#cl-1557">1557</a>
2476
- <a href="#cl-1558">1558</a>
2477
- <a href="#cl-1559">1559</a>
2478
- <a href="#cl-1560">1560</a>
2479
- <a href="#cl-1561">1561</a>
2480
- <a href="#cl-1562">1562</a>
2481
- <a href="#cl-1563">1563</a>
2482
- <a href="#cl-1564">1564</a>
2483
- <a href="#cl-1565">1565</a>
2484
- <a href="#cl-1566">1566</a>
2485
- <a href="#cl-1567">1567</a>
2486
- <a href="#cl-1568">1568</a>
2487
- <a href="#cl-1569">1569</a>
2488
- <a href="#cl-1570">1570</a>
2489
- <a href="#cl-1571">1571</a>
2490
- <a href="#cl-1572">1572</a>
2491
- <a href="#cl-1573">1573</a>
2492
- <a href="#cl-1574">1574</a>
2493
- <a href="#cl-1575">1575</a>
2494
- <a href="#cl-1576">1576</a>
2495
- <a href="#cl-1577">1577</a>
2496
- <a href="#cl-1578">1578</a>
2497
- <a href="#cl-1579">1579</a>
2498
- <a href="#cl-1580">1580</a>
2499
- <a href="#cl-1581">1581</a>
2500
- <a href="#cl-1582">1582</a>
2501
- <a href="#cl-1583">1583</a>
2502
- <a href="#cl-1584">1584</a>
2503
- <a href="#cl-1585">1585</a>
2504
- <a href="#cl-1586">1586</a>
2505
- <a href="#cl-1587">1587</a>
2506
- <a href="#cl-1588">1588</a>
2507
- <a href="#cl-1589">1589</a>
2508
- <a href="#cl-1590">1590</a>
2509
- <a href="#cl-1591">1591</a>
2510
- <a href="#cl-1592">1592</a>
2511
- <a href="#cl-1593">1593</a>
2512
- <a href="#cl-1594">1594</a>
2513
- <a href="#cl-1595">1595</a>
2514
- <a href="#cl-1596">1596</a>
2515
- <a href="#cl-1597">1597</a>
2516
- <a href="#cl-1598">1598</a>
2517
- <a href="#cl-1599">1599</a>
2518
- <a href="#cl-1600">1600</a>
2519
- <a href="#cl-1601">1601</a>
2520
- <a href="#cl-1602">1602</a>
2521
- <a href="#cl-1603">1603</a>
2522
- <a href="#cl-1604">1604</a>
2523
- <a href="#cl-1605">1605</a>
2524
- <a href="#cl-1606">1606</a>
2525
- <a href="#cl-1607">1607</a>
2526
- <a href="#cl-1608">1608</a>
2527
- <a href="#cl-1609">1609</a>
2528
- <a href="#cl-1610">1610</a>
2529
- <a href="#cl-1611">1611</a>
2530
- <a href="#cl-1612">1612</a>
2531
- <a href="#cl-1613">1613</a>
2532
- <a href="#cl-1614">1614</a>
2533
- <a href="#cl-1615">1615</a>
2534
- <a href="#cl-1616">1616</a>
2535
- <a href="#cl-1617">1617</a>
2536
- <a href="#cl-1618">1618</a>
2537
- <a href="#cl-1619">1619</a>
2538
- <a href="#cl-1620">1620</a>
2539
- <a href="#cl-1621">1621</a>
2540
- <a href="#cl-1622">1622</a>
2541
- <a href="#cl-1623">1623</a>
2542
- <a href="#cl-1624">1624</a>
2543
- <a href="#cl-1625">1625</a>
2544
- <a href="#cl-1626">1626</a>
2545
- <a href="#cl-1627">1627</a>
2546
- <a href="#cl-1628">1628</a>
2547
- <a href="#cl-1629">1629</a>
2548
- <a href="#cl-1630">1630</a>
2549
- <a href="#cl-1631">1631</a>
2550
- <a href="#cl-1632">1632</a>
2551
- <a href="#cl-1633">1633</a>
2552
- <a href="#cl-1634">1634</a>
2553
- <a href="#cl-1635">1635</a>
2554
- <a href="#cl-1636">1636</a>
2555
- <a href="#cl-1637">1637</a>
2556
- <a href="#cl-1638">1638</a>
2557
- <a href="#cl-1639">1639</a>
2558
- <a href="#cl-1640">1640</a>
2559
- <a href="#cl-1641">1641</a>
2560
- <a href="#cl-1642">1642</a>
2561
- <a href="#cl-1643">1643</a>
2562
- <a href="#cl-1644">1644</a>
2563
- <a href="#cl-1645">1645</a>
2564
- <a href="#cl-1646">1646</a>
2565
- <a href="#cl-1647">1647</a>
2566
- <a href="#cl-1648">1648</a>
2567
- <a href="#cl-1649">1649</a>
2568
- <a href="#cl-1650">1650</a>
2569
- <a href="#cl-1651">1651</a>
2570
- <a href="#cl-1652">1652</a>
2571
- <a href="#cl-1653">1653</a>
2572
- <a href="#cl-1654">1654</a>
2573
- <a href="#cl-1655">1655</a>
2574
- <a href="#cl-1656">1656</a>
2575
- <a href="#cl-1657">1657</a>
2576
- <a href="#cl-1658">1658</a>
2577
- <a href="#cl-1659">1659</a>
2578
- <a href="#cl-1660">1660</a>
2579
- <a href="#cl-1661">1661</a>
2580
- <a href="#cl-1662">1662</a>
2581
- <a href="#cl-1663">1663</a>
2582
- <a href="#cl-1664">1664</a>
2583
- <a href="#cl-1665">1665</a>
2584
- <a href="#cl-1666">1666</a>
2585
- <a href="#cl-1667">1667</a>
2586
- <a href="#cl-1668">1668</a>
2587
- <a href="#cl-1669">1669</a>
2588
- <a href="#cl-1670">1670</a>
2589
- <a href="#cl-1671">1671</a>
2590
- <a href="#cl-1672">1672</a>
2591
- <a href="#cl-1673">1673</a>
2592
- <a href="#cl-1674">1674</a>
2593
- <a href="#cl-1675">1675</a>
2594
- <a href="#cl-1676">1676</a>
2595
- <a href="#cl-1677">1677</a>
2596
- <a href="#cl-1678">1678</a>
2597
- <a href="#cl-1679">1679</a>
2598
- <a href="#cl-1680">1680</a>
2599
- <a href="#cl-1681">1681</a>
2600
- <a href="#cl-1682">1682</a>
2601
- <a href="#cl-1683">1683</a>
2602
- <a href="#cl-1684">1684</a>
2603
- <a href="#cl-1685">1685</a>
2604
- <a href="#cl-1686">1686</a>
2605
- <a href="#cl-1687">1687</a>
2606
- <a href="#cl-1688">1688</a>
2607
- <a href="#cl-1689">1689</a>
2608
- <a href="#cl-1690">1690</a>
2609
- <a href="#cl-1691">1691</a>
2610
- <a href="#cl-1692">1692</a>
2611
- <a href="#cl-1693">1693</a>
2612
- <a href="#cl-1694">1694</a>
2613
- <a href="#cl-1695">1695</a>
2614
- <a href="#cl-1696">1696</a>
2615
- <a href="#cl-1697">1697</a>
2616
- <a href="#cl-1698">1698</a>
2617
- <a href="#cl-1699">1699</a>
2618
- <a href="#cl-1700">1700</a>
2619
- <a href="#cl-1701">1701</a>
2620
- <a href="#cl-1702">1702</a>
2621
- <a href="#cl-1703">1703</a>
2622
- <a href="#cl-1704">1704</a>
2623
- <a href="#cl-1705">1705</a>
2624
- <a href="#cl-1706">1706</a>
2625
- <a href="#cl-1707">1707</a>
2626
- <a href="#cl-1708">1708</a>
2627
- <a href="#cl-1709">1709</a>
2628
- <a href="#cl-1710">1710</a>
2629
- <a href="#cl-1711">1711</a>
2630
- <a href="#cl-1712">1712</a>
2631
- <a href="#cl-1713">1713</a>
2632
- <a href="#cl-1714">1714</a>
2633
- <a href="#cl-1715">1715</a>
2634
- <a href="#cl-1716">1716</a>
2635
- <a href="#cl-1717">1717</a>
2636
- <a href="#cl-1718">1718</a>
2637
- <a href="#cl-1719">1719</a>
2638
- <a href="#cl-1720">1720</a>
2639
- <a href="#cl-1721">1721</a>
2640
- <a href="#cl-1722">1722</a>
2641
- <a href="#cl-1723">1723</a>
2642
- <a href="#cl-1724">1724</a>
2643
- <a href="#cl-1725">1725</a>
2644
- <a href="#cl-1726">1726</a>
2645
- <a href="#cl-1727">1727</a>
2646
- <a href="#cl-1728">1728</a>
2647
- <a href="#cl-1729">1729</a>
2648
- <a href="#cl-1730">1730</a>
2649
- <a href="#cl-1731">1731</a>
2650
- <a href="#cl-1732">1732</a>
2651
- <a href="#cl-1733">1733</a>
2652
- <a href="#cl-1734">1734</a>
2653
- <a href="#cl-1735">1735</a>
2654
- <a href="#cl-1736">1736</a>
2655
- <a href="#cl-1737">1737</a>
2656
- <a href="#cl-1738">1738</a>
2657
- <a href="#cl-1739">1739</a>
2658
- <a href="#cl-1740">1740</a>
2659
- <a href="#cl-1741">1741</a>
2660
- <a href="#cl-1742">1742</a>
2661
- <a href="#cl-1743">1743</a>
2662
- <a href="#cl-1744">1744</a>
2663
- <a href="#cl-1745">1745</a>
2664
- <a href="#cl-1746">1746</a>
2665
- <a href="#cl-1747">1747</a>
2666
- <a href="#cl-1748">1748</a>
2667
- <a href="#cl-1749">1749</a>
2668
- <a href="#cl-1750">1750</a>
2669
- <a href="#cl-1751">1751</a>
2670
- <a href="#cl-1752">1752</a>
2671
- <a href="#cl-1753">1753</a>
2672
- <a href="#cl-1754">1754</a>
2673
- <a href="#cl-1755">1755</a>
2674
- <a href="#cl-1756">1756</a>
2675
- <a href="#cl-1757">1757</a>
2676
- <a href="#cl-1758">1758</a>
2677
- <a href="#cl-1759">1759</a>
2678
- <a href="#cl-1760">1760</a>
2679
- <a href="#cl-1761">1761</a>
2680
- <a href="#cl-1762">1762</a>
2681
- <a href="#cl-1763">1763</a>
2682
- <a href="#cl-1764">1764</a>
2683
- <a href="#cl-1765">1765</a>
2684
- <a href="#cl-1766">1766</a>
2685
- <a href="#cl-1767">1767</a>
2686
- <a href="#cl-1768">1768</a>
2687
- <a href="#cl-1769">1769</a>
2688
- <a href="#cl-1770">1770</a>
2689
- <a href="#cl-1771">1771</a>
2690
- <a href="#cl-1772">1772</a>
2691
- <a href="#cl-1773">1773</a>
2692
- <a href="#cl-1774">1774</a>
2693
- <a href="#cl-1775">1775</a>
2694
- <a href="#cl-1776">1776</a>
2695
- <a href="#cl-1777">1777</a>
2696
- <a href="#cl-1778">1778</a>
2697
- <a href="#cl-1779">1779</a>
2698
- <a href="#cl-1780">1780</a>
2699
- <a href="#cl-1781">1781</a>
2700
- <a href="#cl-1782">1782</a>
2701
- <a href="#cl-1783">1783</a>
2702
- <a href="#cl-1784">1784</a>
2703
- <a href="#cl-1785">1785</a>
2704
- <a href="#cl-1786">1786</a>
2705
- <a href="#cl-1787">1787</a>
2706
- <a href="#cl-1788">1788</a>
2707
- <a href="#cl-1789">1789</a>
2708
- <a href="#cl-1790">1790</a>
2709
- <a href="#cl-1791">1791</a>
2710
- <a href="#cl-1792">1792</a>
2711
- <a href="#cl-1793">1793</a>
2712
- <a href="#cl-1794">1794</a>
2713
- <a href="#cl-1795">1795</a>
2714
- <a href="#cl-1796">1796</a>
2715
- <a href="#cl-1797">1797</a>
2716
- <a href="#cl-1798">1798</a>
2717
- <a href="#cl-1799">1799</a>
2718
- <a href="#cl-1800">1800</a>
2719
- <a href="#cl-1801">1801</a>
2720
- <a href="#cl-1802">1802</a>
2721
- <a href="#cl-1803">1803</a>
2722
- <a href="#cl-1804">1804</a>
2723
- <a href="#cl-1805">1805</a>
2724
- <a href="#cl-1806">1806</a>
2725
- <a href="#cl-1807">1807</a>
2726
- <a href="#cl-1808">1808</a>
2727
- <a href="#cl-1809">1809</a>
2728
- <a href="#cl-1810">1810</a>
2729
- <a href="#cl-1811">1811</a>
2730
- <a href="#cl-1812">1812</a>
2731
- <a href="#cl-1813">1813</a>
2732
- <a href="#cl-1814">1814</a>
2733
- <a href="#cl-1815">1815</a>
2734
- <a href="#cl-1816">1816</a>
2735
- <a href="#cl-1817">1817</a>
2736
- <a href="#cl-1818">1818</a>
2737
- <a href="#cl-1819">1819</a>
2738
- <a href="#cl-1820">1820</a>
2739
- <a href="#cl-1821">1821</a>
2740
- <a href="#cl-1822">1822</a>
2741
- <a href="#cl-1823">1823</a>
2742
- <a href="#cl-1824">1824</a>
2743
- <a href="#cl-1825">1825</a>
2744
- <a href="#cl-1826">1826</a>
2745
- <a href="#cl-1827">1827</a>
2746
- <a href="#cl-1828">1828</a>
2747
- <a href="#cl-1829">1829</a>
2748
- <a href="#cl-1830">1830</a>
2749
- <a href="#cl-1831">1831</a>
2750
- <a href="#cl-1832">1832</a>
2751
- <a href="#cl-1833">1833</a>
2752
- <a href="#cl-1834">1834</a>
2753
- <a href="#cl-1835">1835</a>
2754
- <a href="#cl-1836">1836</a>
2755
- <a href="#cl-1837">1837</a>
2756
- <a href="#cl-1838">1838</a>
2757
- <a href="#cl-1839">1839</a>
2758
- <a href="#cl-1840">1840</a>
2759
- <a href="#cl-1841">1841</a>
2760
- <a href="#cl-1842">1842</a>
2761
- <a href="#cl-1843">1843</a>
2762
- <a href="#cl-1844">1844</a>
2763
- <a href="#cl-1845">1845</a>
2764
- <a href="#cl-1846">1846</a>
2765
- <a href="#cl-1847">1847</a>
2766
- <a href="#cl-1848">1848</a>
2767
- <a href="#cl-1849">1849</a>
2768
- <a href="#cl-1850">1850</a>
2769
- <a href="#cl-1851">1851</a>
2770
- <a href="#cl-1852">1852</a>
2771
- <a href="#cl-1853">1853</a>
2772
- <a href="#cl-1854">1854</a>
2773
- <a href="#cl-1855">1855</a>
2774
- <a href="#cl-1856">1856</a>
2775
- <a href="#cl-1857">1857</a>
2776
- <a href="#cl-1858">1858</a>
2777
- <a href="#cl-1859">1859</a>
2778
- <a href="#cl-1860">1860</a>
2779
- <a href="#cl-1861">1861</a>
2780
- <a href="#cl-1862">1862</a>
2781
- <a href="#cl-1863">1863</a>
2782
- <a href="#cl-1864">1864</a>
2783
- <a href="#cl-1865">1865</a>
2784
- <a href="#cl-1866">1866</a>
2785
- <a href="#cl-1867">1867</a>
2786
- <a href="#cl-1868">1868</a>
2787
- <a href="#cl-1869">1869</a>
2788
- <a href="#cl-1870">1870</a>
2789
- <a href="#cl-1871">1871</a>
2790
- <a href="#cl-1872">1872</a>
2791
- <a href="#cl-1873">1873</a>
2792
- <a href="#cl-1874">1874</a>
2793
- <a href="#cl-1875">1875</a>
2794
- <a href="#cl-1876">1876</a>
2795
- <a href="#cl-1877">1877</a>
2796
- <a href="#cl-1878">1878</a>
2797
- <a href="#cl-1879">1879</a>
2798
- <a href="#cl-1880">1880</a>
2799
- <a href="#cl-1881">1881</a>
2800
- <a href="#cl-1882">1882</a>
2801
- <a href="#cl-1883">1883</a>
2802
- <a href="#cl-1884">1884</a>
2803
- <a href="#cl-1885">1885</a>
2804
- <a href="#cl-1886">1886</a>
2805
- <a href="#cl-1887">1887</a>
2806
- <a href="#cl-1888">1888</a>
2807
- <a href="#cl-1889">1889</a>
2808
- <a href="#cl-1890">1890</a>
2809
- <a href="#cl-1891">1891</a>
2810
- <a href="#cl-1892">1892</a>
2811
- <a href="#cl-1893">1893</a>
2812
- <a href="#cl-1894">1894</a>
2813
- <a href="#cl-1895">1895</a>
2814
- <a href="#cl-1896">1896</a>
2815
- <a href="#cl-1897">1897</a>
2816
- <a href="#cl-1898">1898</a>
2817
- <a href="#cl-1899">1899</a>
2818
- <a href="#cl-1900">1900</a>
2819
- <a href="#cl-1901">1901</a>
2820
- <a href="#cl-1902">1902</a>
2821
- <a href="#cl-1903">1903</a>
2822
- <a href="#cl-1904">1904</a>
2823
- <a href="#cl-1905">1905</a>
2824
- <a href="#cl-1906">1906</a>
2825
- <a href="#cl-1907">1907</a>
2826
- <a href="#cl-1908">1908</a>
2827
- <a href="#cl-1909">1909</a>
2828
- <a href="#cl-1910">1910</a>
2829
- <a href="#cl-1911">1911</a>
2830
- <a href="#cl-1912">1912</a>
2831
- <a href="#cl-1913">1913</a>
2832
- <a href="#cl-1914">1914</a>
2833
- <a href="#cl-1915">1915</a>
2834
- <a href="#cl-1916">1916</a>
2835
- <a href="#cl-1917">1917</a>
2836
- <a href="#cl-1918">1918</a>
2837
- <a href="#cl-1919">1919</a>
2838
- <a href="#cl-1920">1920</a>
2839
- <a href="#cl-1921">1921</a>
2840
- <a href="#cl-1922">1922</a>
2841
- <a href="#cl-1923">1923</a>
2842
- <a href="#cl-1924">1924</a>
2843
- <a href="#cl-1925">1925</a>
2844
- <a href="#cl-1926">1926</a>
2845
- <a href="#cl-1927">1927</a>
2846
- <a href="#cl-1928">1928</a>
2847
- <a href="#cl-1929">1929</a>
2848
- <a href="#cl-1930">1930</a>
2849
- <a href="#cl-1931">1931</a>
2850
- <a href="#cl-1932">1932</a>
2851
- <a href="#cl-1933">1933</a>
2852
- <a href="#cl-1934">1934</a>
2853
- <a href="#cl-1935">1935</a>
2854
- <a href="#cl-1936">1936</a>
2855
- <a href="#cl-1937">1937</a>
2856
- <a href="#cl-1938">1938</a>
2857
- <a href="#cl-1939">1939</a>
2858
- <a href="#cl-1940">1940</a>
2859
- <a href="#cl-1941">1941</a>
2860
- <a href="#cl-1942">1942</a>
2861
- <a href="#cl-1943">1943</a>
2862
- <a href="#cl-1944">1944</a>
2863
- <a href="#cl-1945">1945</a>
2864
- <a href="#cl-1946">1946</a>
2865
- <a href="#cl-1947">1947</a>
2866
- <a href="#cl-1948">1948</a>
2867
- <a href="#cl-1949">1949</a>
2868
- <a href="#cl-1950">1950</a>
2869
- <a href="#cl-1951">1951</a>
2870
- <a href="#cl-1952">1952</a>
2871
- <a href="#cl-1953">1953</a>
2872
- <a href="#cl-1954">1954</a>
2873
- <a href="#cl-1955">1955</a>
2874
- <a href="#cl-1956">1956</a>
2875
- <a href="#cl-1957">1957</a>
2876
- <a href="#cl-1958">1958</a>
2877
- <a href="#cl-1959">1959</a>
2878
- <a href="#cl-1960">1960</a>
2879
- <a href="#cl-1961">1961</a>
2880
- <a href="#cl-1962">1962</a>
2881
- <a href="#cl-1963">1963</a>
2882
- <a href="#cl-1964">1964</a>
2883
- <a href="#cl-1965">1965</a>
2884
- <a href="#cl-1966">1966</a>
2885
- <a href="#cl-1967">1967</a>
2886
- <a href="#cl-1968">1968</a>
2887
- <a href="#cl-1969">1969</a>
2888
- <a href="#cl-1970">1970</a>
2889
- <a href="#cl-1971">1971</a>
2890
- <a href="#cl-1972">1972</a>
2891
- <a href="#cl-1973">1973</a>
2892
- <a href="#cl-1974">1974</a>
2893
- <a href="#cl-1975">1975</a>
2894
- <a href="#cl-1976">1976</a>
2895
- <a href="#cl-1977">1977</a>
2896
- <a href="#cl-1978">1978</a>
2897
- <a href="#cl-1979">1979</a>
2898
- <a href="#cl-1980">1980</a>
2899
- <a href="#cl-1981">1981</a>
2900
- <a href="#cl-1982">1982</a>
2901
- <a href="#cl-1983">1983</a>
2902
- <a href="#cl-1984">1984</a>
2903
- <a href="#cl-1985">1985</a>
2904
- <a href="#cl-1986">1986</a>
2905
- <a href="#cl-1987">1987</a>
2906
- <a href="#cl-1988">1988</a>
2907
- <a href="#cl-1989">1989</a>
2908
- <a href="#cl-1990">1990</a>
2909
- <a href="#cl-1991">1991</a>
2910
- <a href="#cl-1992">1992</a>
2911
- <a href="#cl-1993">1993</a>
2912
- <a href="#cl-1994">1994</a>
2913
- <a href="#cl-1995">1995</a>
2914
- <a href="#cl-1996">1996</a>
2915
- <a href="#cl-1997">1997</a>
2916
- <a href="#cl-1998">1998</a>
2917
- <a href="#cl-1999">1999</a>
2918
- <a href="#cl-2000">2000</a>
2919
- <a href="#cl-2001">2001</a>
2920
- <a href="#cl-2002">2002</a>
2921
- <a href="#cl-2003">2003</a>
2922
- <a href="#cl-2004">2004</a>
2923
- <a href="#cl-2005">2005</a>
2924
- <a href="#cl-2006">2006</a>
2925
- <a href="#cl-2007">2007</a>
2926
- <a href="#cl-2008">2008</a>
2927
- <a href="#cl-2009">2009</a>
2928
- <a href="#cl-2010">2010</a>
2929
- <a href="#cl-2011">2011</a>
2930
- <a href="#cl-2012">2012</a>
2931
- <a href="#cl-2013">2013</a>
2932
- <a href="#cl-2014">2014</a>
2933
- <a href="#cl-2015">2015</a>
2934
- <a href="#cl-2016">2016</a>
2935
- <a href="#cl-2017">2017</a>
2936
- <a href="#cl-2018">2018</a>
2937
- <a href="#cl-2019">2019</a>
2938
- <a href="#cl-2020">2020</a>
2939
- <a href="#cl-2021">2021</a>
2940
- <a href="#cl-2022">2022</a>
2941
- <a href="#cl-2023">2023</a>
2942
- <a href="#cl-2024">2024</a>
2943
- <a href="#cl-2025">2025</a>
2944
- <a href="#cl-2026">2026</a>
2945
- <a href="#cl-2027">2027</a>
2946
- <a href="#cl-2028">2028</a>
2947
- <a href="#cl-2029">2029</a>
2948
- <a href="#cl-2030">2030</a>
2949
- <a href="#cl-2031">2031</a>
2950
- <a href="#cl-2032">2032</a>
2951
- <a href="#cl-2033">2033</a>
2952
- <a href="#cl-2034">2034</a>
2953
- <a href="#cl-2035">2035</a>
2954
- <a href="#cl-2036">2036</a>
2955
- <a href="#cl-2037">2037</a>
2956
- <a href="#cl-2038">2038</a>
2957
- <a href="#cl-2039">2039</a>
2958
- <a href="#cl-2040">2040</a>
2959
- <a href="#cl-2041">2041</a>
2960
- <a href="#cl-2042">2042</a>
2961
- <a href="#cl-2043">2043</a>
2962
- <a href="#cl-2044">2044</a>
2963
- <a href="#cl-2045">2045</a>
2964
- <a href="#cl-2046">2046</a>
2965
- <a href="#cl-2047">2047</a>
2966
- <a href="#cl-2048">2048</a>
2967
- <a href="#cl-2049">2049</a>
2968
- <a href="#cl-2050">2050</a>
2969
- <a href="#cl-2051">2051</a>
2970
- <a href="#cl-2052">2052</a>
2971
- <a href="#cl-2053">2053</a>
2972
- <a href="#cl-2054">2054</a>
2973
- <a href="#cl-2055">2055</a>
2974
- <a href="#cl-2056">2056</a>
2975
- <a href="#cl-2057">2057</a>
2976
- <a href="#cl-2058">2058</a>
2977
- <a href="#cl-2059">2059</a>
2978
- <a href="#cl-2060">2060</a>
2979
- <a href="#cl-2061">2061</a>
2980
- <a href="#cl-2062">2062</a>
2981
- <a href="#cl-2063">2063</a>
2982
- <a href="#cl-2064">2064</a>
2983
- <a href="#cl-2065">2065</a>
2984
- <a href="#cl-2066">2066</a>
2985
- <a href="#cl-2067">2067</a>
2986
- <a href="#cl-2068">2068</a>
2987
- <a href="#cl-2069">2069</a>
2988
- <a href="#cl-2070">2070</a>
2989
- <a href="#cl-2071">2071</a>
2990
- <a href="#cl-2072">2072</a>
2991
- <a href="#cl-2073">2073</a>
2992
- <a href="#cl-2074">2074</a>
2993
- <a href="#cl-2075">2075</a>
2994
- <a href="#cl-2076">2076</a>
2995
- <a href="#cl-2077">2077</a>
2996
- <a href="#cl-2078">2078</a>
2997
- <a href="#cl-2079">2079</a>
2998
- <a href="#cl-2080">2080</a>
2999
- <a href="#cl-2081">2081</a>
3000
- <a href="#cl-2082">2082</a>
3001
- <a href="#cl-2083">2083</a>
3002
- <a href="#cl-2084">2084</a>
3003
- <a href="#cl-2085">2085</a>
3004
- <a href="#cl-2086">2086</a>
3005
- <a href="#cl-2087">2087</a>
3006
- <a href="#cl-2088">2088</a>
3007
- <a href="#cl-2089">2089</a>
3008
- <a href="#cl-2090">2090</a>
3009
- <a href="#cl-2091">2091</a>
3010
- <a href="#cl-2092">2092</a>
3011
- <a href="#cl-2093">2093</a>
3012
- <a href="#cl-2094">2094</a>
3013
- <a href="#cl-2095">2095</a>
3014
- <a href="#cl-2096">2096</a>
3015
- <a href="#cl-2097">2097</a>
3016
- <a href="#cl-2098">2098</a>
3017
- <a href="#cl-2099">2099</a>
3018
- <a href="#cl-2100">2100</a>
3019
- <a href="#cl-2101">2101</a>
3020
- <a href="#cl-2102">2102</a>
3021
- <a href="#cl-2103">2103</a>
3022
- <a href="#cl-2104">2104</a>
3023
- <a href="#cl-2105">2105</a>
3024
- <a href="#cl-2106">2106</a>
3025
- <a href="#cl-2107">2107</a>
3026
- <a href="#cl-2108">2108</a>
3027
- <a href="#cl-2109">2109</a>
3028
- <a href="#cl-2110">2110</a>
3029
- <a href="#cl-2111">2111</a>
3030
- <a href="#cl-2112">2112</a>
3031
- <a href="#cl-2113">2113</a>
3032
- <a href="#cl-2114">2114</a>
3033
- <a href="#cl-2115">2115</a>
3034
- <a href="#cl-2116">2116</a>
3035
- <a href="#cl-2117">2117</a>
3036
- <a href="#cl-2118">2118</a>
3037
- <a href="#cl-2119">2119</a>
3038
- <a href="#cl-2120">2120</a>
3039
- <a href="#cl-2121">2121</a>
3040
- <a href="#cl-2122">2122</a>
3041
- <a href="#cl-2123">2123</a>
3042
- <a href="#cl-2124">2124</a>
3043
- <a href="#cl-2125">2125</a>
3044
- <a href="#cl-2126">2126</a>
3045
- <a href="#cl-2127">2127</a>
3046
- <a href="#cl-2128">2128</a>
3047
- <a href="#cl-2129">2129</a>
3048
- <a href="#cl-2130">2130</a>
3049
- <a href="#cl-2131">2131</a>
3050
- <a href="#cl-2132">2132</a>
3051
- <a href="#cl-2133">2133</a>
3052
- <a href="#cl-2134">2134</a>
3053
- <a href="#cl-2135">2135</a>
3054
- <a href="#cl-2136">2136</a>
3055
- <a href="#cl-2137">2137</a>
3056
- <a href="#cl-2138">2138</a>
3057
- <a href="#cl-2139">2139</a>
3058
- <a href="#cl-2140">2140</a>
3059
- <a href="#cl-2141">2141</a>
3060
- <a href="#cl-2142">2142</a>
3061
- <a href="#cl-2143">2143</a>
3062
- <a href="#cl-2144">2144</a>
3063
- <a href="#cl-2145">2145</a>
3064
- <a href="#cl-2146">2146</a>
3065
- <a href="#cl-2147">2147</a>
3066
- <a href="#cl-2148">2148</a>
3067
- <a href="#cl-2149">2149</a>
3068
- <a href="#cl-2150">2150</a>
3069
- <a href="#cl-2151">2151</a>
3070
- <a href="#cl-2152">2152</a>
3071
- <a href="#cl-2153">2153</a>
3072
- <a href="#cl-2154">2154</a>
3073
- <a href="#cl-2155">2155</a>
3074
- <a href="#cl-2156">2156</a>
3075
- <a href="#cl-2157">2157</a>
3076
- <a href="#cl-2158">2158</a>
3077
- <a href="#cl-2159">2159</a>
3078
- <a href="#cl-2160">2160</a>
3079
- <a href="#cl-2161">2161</a>
3080
- <a href="#cl-2162">2162</a>
3081
- <a href="#cl-2163">2163</a>
3082
- <a href="#cl-2164">2164</a>
3083
- <a href="#cl-2165">2165</a>
3084
- <a href="#cl-2166">2166</a>
3085
- <a href="#cl-2167">2167</a>
3086
- <a href="#cl-2168">2168</a>
3087
- <a href="#cl-2169">2169</a>
3088
- <a href="#cl-2170">2170</a>
3089
- <a href="#cl-2171">2171</a>
3090
- <a href="#cl-2172">2172</a>
3091
- <a href="#cl-2173">2173</a>
3092
- <a href="#cl-2174">2174</a>
3093
- <a href="#cl-2175">2175</a>
3094
- <a href="#cl-2176">2176</a>
3095
- <a href="#cl-2177">2177</a>
3096
- <a href="#cl-2178">2178</a>
3097
- <a href="#cl-2179">2179</a>
3098
- <a href="#cl-2180">2180</a>
3099
- <a href="#cl-2181">2181</a>
3100
- <a href="#cl-2182">2182</a>
3101
- <a href="#cl-2183">2183</a>
3102
- <a href="#cl-2184">2184</a>
3103
- <a href="#cl-2185">2185</a>
3104
- <a href="#cl-2186">2186</a>
3105
- <a href="#cl-2187">2187</a>
3106
- <a href="#cl-2188">2188</a>
3107
- <a href="#cl-2189">2189</a>
3108
- <a href="#cl-2190">2190</a>
3109
- <a href="#cl-2191">2191</a>
3110
- <a href="#cl-2192">2192</a>
3111
- <a href="#cl-2193">2193</a>
3112
- <a href="#cl-2194">2194</a>
3113
- <a href="#cl-2195">2195</a>
3114
- <a href="#cl-2196">2196</a>
3115
- <a href="#cl-2197">2197</a>
3116
- <a href="#cl-2198">2198</a>
3117
- <a href="#cl-2199">2199</a>
3118
- <a href="#cl-2200">2200</a>
3119
- <a href="#cl-2201">2201</a>
3120
- <a href="#cl-2202">2202</a>
3121
- <a href="#cl-2203">2203</a>
3122
- <a href="#cl-2204">2204</a>
3123
- <a href="#cl-2205">2205</a>
3124
- <a href="#cl-2206">2206</a>
3125
- <a href="#cl-2207">2207</a>
3126
- <a href="#cl-2208">2208</a>
3127
- <a href="#cl-2209">2209</a>
3128
- <a href="#cl-2210">2210</a>
3129
- <a href="#cl-2211">2211</a>
3130
- <a href="#cl-2212">2212</a>
3131
- <a href="#cl-2213">2213</a>
3132
- <a href="#cl-2214">2214</a>
3133
- <a href="#cl-2215">2215</a>
3134
- <a href="#cl-2216">2216</a>
3135
- <a href="#cl-2217">2217</a>
3136
- <a href="#cl-2218">2218</a>
3137
- <a href="#cl-2219">2219</a>
3138
- <a href="#cl-2220">2220</a>
3139
- <a href="#cl-2221">2221</a>
3140
- <a href="#cl-2222">2222</a>
3141
- <a href="#cl-2223">2223</a>
3142
- <a href="#cl-2224">2224</a>
3143
- <a href="#cl-2225">2225</a>
3144
- <a href="#cl-2226">2226</a>
3145
- <a href="#cl-2227">2227</a>
3146
- <a href="#cl-2228">2228</a>
3147
- <a href="#cl-2229">2229</a>
3148
- <a href="#cl-2230">2230</a>
3149
- <a href="#cl-2231">2231</a>
3150
- <a href="#cl-2232">2232</a>
3151
- <a href="#cl-2233">2233</a>
3152
- <a href="#cl-2234">2234</a>
3153
- <a href="#cl-2235">2235</a>
3154
- <a href="#cl-2236">2236</a>
3155
- <a href="#cl-2237">2237</a>
3156
- <a href="#cl-2238">2238</a>
3157
- <a href="#cl-2239">2239</a>
3158
- <a href="#cl-2240">2240</a>
3159
- <a href="#cl-2241">2241</a>
3160
- <a href="#cl-2242">2242</a>
3161
- <a href="#cl-2243">2243</a>
3162
- <a href="#cl-2244">2244</a>
3163
- <a href="#cl-2245">2245</a>
3164
- <a href="#cl-2246">2246</a>
3165
- <a href="#cl-2247">2247</a>
3166
- <a href="#cl-2248">2248</a>
3167
- <a href="#cl-2249">2249</a>
3168
- <a href="#cl-2250">2250</a>
3169
- <a href="#cl-2251">2251</a>
3170
- <a href="#cl-2252">2252</a>
3171
- <a href="#cl-2253">2253</a>
3172
- <a href="#cl-2254">2254</a>
3173
- <a href="#cl-2255">2255</a>
3174
- <a href="#cl-2256">2256</a>
3175
- <a href="#cl-2257">2257</a>
3176
- <a href="#cl-2258">2258</a>
3177
- <a href="#cl-2259">2259</a>
3178
- <a href="#cl-2260">2260</a>
3179
- <a href="#cl-2261">2261</a>
3180
- <a href="#cl-2262">2262</a>
3181
- <a href="#cl-2263">2263</a>
3182
- <a href="#cl-2264">2264</a>
3183
- <a href="#cl-2265">2265</a>
3184
- <a href="#cl-2266">2266</a>
3185
- <a href="#cl-2267">2267</a>
3186
- <a href="#cl-2268">2268</a>
3187
- <a href="#cl-2269">2269</a>
3188
- <a href="#cl-2270">2270</a>
3189
- <a href="#cl-2271">2271</a>
3190
- <a href="#cl-2272">2272</a>
3191
- <a href="#cl-2273">2273</a>
3192
- <a href="#cl-2274">2274</a>
3193
- <a href="#cl-2275">2275</a>
3194
- <a href="#cl-2276">2276</a>
3195
- <a href="#cl-2277">2277</a>
3196
- <a href="#cl-2278">2278</a>
3197
- <a href="#cl-2279">2279</a>
3198
- <a href="#cl-2280">2280</a>
3199
- <a href="#cl-2281">2281</a>
3200
- <a href="#cl-2282">2282</a>
3201
- <a href="#cl-2283">2283</a>
3202
- <a href="#cl-2284">2284</a>
3203
- <a href="#cl-2285">2285</a>
3204
- <a href="#cl-2286">2286</a>
3205
- <a href="#cl-2287">2287</a>
3206
- <a href="#cl-2288">2288</a>
3207
- <a href="#cl-2289">2289</a>
3208
- <a href="#cl-2290">2290</a>
3209
- <a href="#cl-2291">2291</a>
3210
- <a href="#cl-2292">2292</a>
3211
- <a href="#cl-2293">2293</a>
3212
- <a href="#cl-2294">2294</a>
3213
- <a href="#cl-2295">2295</a>
3214
- <a href="#cl-2296">2296</a>
3215
- <a href="#cl-2297">2297</a>
3216
- <a href="#cl-2298">2298</a>
3217
- <a href="#cl-2299">2299</a>
3218
- <a href="#cl-2300">2300</a>
3219
- <a href="#cl-2301">2301</a>
3220
- <a href="#cl-2302">2302</a>
3221
- <a href="#cl-2303">2303</a>
3222
- <a href="#cl-2304">2304</a>
3223
- <a href="#cl-2305">2305</a>
3224
- <a href="#cl-2306">2306</a>
3225
- <a href="#cl-2307">2307</a>
3226
- <a href="#cl-2308">2308</a>
3227
- <a href="#cl-2309">2309</a>
3228
- <a href="#cl-2310">2310</a>
3229
- <a href="#cl-2311">2311</a>
3230
- <a href="#cl-2312">2312</a>
3231
- <a href="#cl-2313">2313</a>
3232
- <a href="#cl-2314">2314</a>
3233
- <a href="#cl-2315">2315</a>
3234
- <a href="#cl-2316">2316</a>
3235
- <a href="#cl-2317">2317</a>
3236
- <a href="#cl-2318">2318</a>
3237
- <a href="#cl-2319">2319</a>
3238
- <a href="#cl-2320">2320</a>
3239
- <a href="#cl-2321">2321</a>
3240
- <a href="#cl-2322">2322</a>
3241
- <a href="#cl-2323">2323</a>
3242
- <a href="#cl-2324">2324</a>
3243
- <a href="#cl-2325">2325</a>
3244
- <a href="#cl-2326">2326</a>
3245
- <a href="#cl-2327">2327</a>
3246
- <a href="#cl-2328">2328</a>
3247
- <a href="#cl-2329">2329</a>
3248
- <a href="#cl-2330">2330</a>
3249
- <a href="#cl-2331">2331</a>
3250
- <a href="#cl-2332">2332</a>
3251
- <a href="#cl-2333">2333</a>
3252
- <a href="#cl-2334">2334</a>
3253
- <a href="#cl-2335">2335</a>
3254
- <a href="#cl-2336">2336</a>
3255
- <a href="#cl-2337">2337</a>
3256
- <a href="#cl-2338">2338</a>
3257
- <a href="#cl-2339">2339</a>
3258
- <a href="#cl-2340">2340</a>
3259
- <a href="#cl-2341">2341</a>
3260
- <a href="#cl-2342">2342</a>
3261
- <a href="#cl-2343">2343</a>
3262
- <a href="#cl-2344">2344</a>
3263
- <a href="#cl-2345">2345</a>
3264
- <a href="#cl-2346">2346</a>
3265
- <a href="#cl-2347">2347</a>
3266
- <a href="#cl-2348">2348</a>
3267
- <a href="#cl-2349">2349</a>
3268
- <a href="#cl-2350">2350</a>
3269
- <a href="#cl-2351">2351</a>
3270
- <a href="#cl-2352">2352</a>
3271
- <a href="#cl-2353">2353</a>
3272
- <a href="#cl-2354">2354</a>
3273
- <a href="#cl-2355">2355</a>
3274
- <a href="#cl-2356">2356</a>
3275
- <a href="#cl-2357">2357</a>
3276
- <a href="#cl-2358">2358</a>
3277
- <a href="#cl-2359">2359</a>
3278
- <a href="#cl-2360">2360</a>
3279
- <a href="#cl-2361">2361</a>
3280
- <a href="#cl-2362">2362</a>
3281
- <a href="#cl-2363">2363</a>
3282
- <a href="#cl-2364">2364</a>
3283
- <a href="#cl-2365">2365</a>
3284
- <a href="#cl-2366">2366</a>
3285
- <a href="#cl-2367">2367</a>
3286
- <a href="#cl-2368">2368</a>
3287
- <a href="#cl-2369">2369</a>
3288
- <a href="#cl-2370">2370</a>
3289
- <a href="#cl-2371">2371</a>
3290
- <a href="#cl-2372">2372</a>
3291
- <a href="#cl-2373">2373</a>
3292
- <a href="#cl-2374">2374</a>
3293
- <a href="#cl-2375">2375</a>
3294
- <a href="#cl-2376">2376</a>
3295
- <a href="#cl-2377">2377</a>
3296
- <a href="#cl-2378">2378</a>
3297
- <a href="#cl-2379">2379</a>
3298
- <a href="#cl-2380">2380</a>
3299
- <a href="#cl-2381">2381</a>
3300
- <a href="#cl-2382">2382</a>
3301
- <a href="#cl-2383">2383</a>
3302
- <a href="#cl-2384">2384</a>
3303
- <a href="#cl-2385">2385</a>
3304
- <a href="#cl-2386">2386</a>
3305
- <a href="#cl-2387">2387</a>
3306
- <a href="#cl-2388">2388</a>
3307
- <a href="#cl-2389">2389</a>
3308
- <a href="#cl-2390">2390</a>
3309
- <a href="#cl-2391">2391</a>
3310
- <a href="#cl-2392">2392</a>
3311
- <a href="#cl-2393">2393</a>
3312
- <a href="#cl-2394">2394</a>
3313
- <a href="#cl-2395">2395</a>
3314
- <a href="#cl-2396">2396</a>
3315
- <a href="#cl-2397">2397</a>
3316
- <a href="#cl-2398">2398</a>
3317
- <a href="#cl-2399">2399</a>
3318
- <a href="#cl-2400">2400</a>
3319
- <a href="#cl-2401">2401</a>
3320
- <a href="#cl-2402">2402</a>
3321
- <a href="#cl-2403">2403</a>
3322
- <a href="#cl-2404">2404</a>
3323
- <a href="#cl-2405">2405</a>
3324
- <a href="#cl-2406">2406</a>
3325
- <a href="#cl-2407">2407</a>
3326
- <a href="#cl-2408">2408</a>
3327
- <a href="#cl-2409">2409</a>
3328
- <a href="#cl-2410">2410</a>
3329
- <a href="#cl-2411">2411</a>
3330
- <a href="#cl-2412">2412</a>
3331
- <a href="#cl-2413">2413</a>
3332
- <a href="#cl-2414">2414</a>
3333
- <a href="#cl-2415">2415</a>
3334
- <a href="#cl-2416">2416</a>
3335
- <a href="#cl-2417">2417</a>
3336
- <a href="#cl-2418">2418</a>
3337
- <a href="#cl-2419">2419</a>
3338
- <a href="#cl-2420">2420</a>
3339
- <a href="#cl-2421">2421</a>
3340
- <a href="#cl-2422">2422</a>
3341
- <a href="#cl-2423">2423</a>
3342
- <a href="#cl-2424">2424</a>
3343
- <a href="#cl-2425">2425</a>
3344
- <a href="#cl-2426">2426</a>
3345
- <a href="#cl-2427">2427</a>
3346
- <a href="#cl-2428">2428</a>
3347
- <a href="#cl-2429">2429</a>
3348
- <a href="#cl-2430">2430</a>
3349
- <a href="#cl-2431">2431</a>
3350
- <a href="#cl-2432">2432</a>
3351
- <a href="#cl-2433">2433</a>
3352
- <a href="#cl-2434">2434</a>
3353
- <a href="#cl-2435">2435</a>
3354
- <a href="#cl-2436">2436</a>
3355
- <a href="#cl-2437">2437</a>
3356
- <a href="#cl-2438">2438</a>
3357
- <a href="#cl-2439">2439</a>
3358
- <a href="#cl-2440">2440</a>
3359
- <a href="#cl-2441">2441</a>
3360
- <a href="#cl-2442">2442</a>
3361
- <a href="#cl-2443">2443</a>
3362
- <a href="#cl-2444">2444</a>
3363
- <a href="#cl-2445">2445</a>
3364
- <a href="#cl-2446">2446</a>
3365
- <a href="#cl-2447">2447</a>
3366
- <a href="#cl-2448">2448</a>
3367
- <a href="#cl-2449">2449</a>
3368
- <a href="#cl-2450">2450</a>
3369
- <a href="#cl-2451">2451</a>
3370
- <a href="#cl-2452">2452</a>
3371
- <a href="#cl-2453">2453</a>
3372
- <a href="#cl-2454">2454</a>
3373
- <a href="#cl-2455">2455</a>
3374
- <a href="#cl-2456">2456</a>
3375
- <a href="#cl-2457">2457</a>
3376
- <a href="#cl-2458">2458</a>
3377
- <a href="#cl-2459">2459</a>
3378
- <a href="#cl-2460">2460</a>
3379
- <a href="#cl-2461">2461</a>
3380
- <a href="#cl-2462">2462</a>
3381
- <a href="#cl-2463">2463</a>
3382
- <a href="#cl-2464">2464</a>
3383
- <a href="#cl-2465">2465</a>
3384
- <a href="#cl-2466">2466</a>
3385
- <a href="#cl-2467">2467</a>
3386
- <a href="#cl-2468">2468</a>
3387
- <a href="#cl-2469">2469</a>
3388
- <a href="#cl-2470">2470</a>
3389
- <a href="#cl-2471">2471</a>
3390
- <a href="#cl-2472">2472</a>
3391
- <a href="#cl-2473">2473</a>
3392
- <a href="#cl-2474">2474</a>
3393
- <a href="#cl-2475">2475</a>
3394
- <a href="#cl-2476">2476</a>
3395
- <a href="#cl-2477">2477</a>
3396
- <a href="#cl-2478">2478</a>
3397
- <a href="#cl-2479">2479</a>
3398
- <a href="#cl-2480">2480</a>
3399
- <a href="#cl-2481">2481</a>
3400
- <a href="#cl-2482">2482</a>
3401
- <a href="#cl-2483">2483</a>
3402
- <a href="#cl-2484">2484</a>
3403
- <a href="#cl-2485">2485</a>
3404
- <a href="#cl-2486">2486</a>
3405
- <a href="#cl-2487">2487</a>
3406
- <a href="#cl-2488">2488</a>
3407
- <a href="#cl-2489">2489</a>
3408
- <a href="#cl-2490">2490</a>
3409
- <a href="#cl-2491">2491</a>
3410
- <a href="#cl-2492">2492</a>
3411
- <a href="#cl-2493">2493</a>
3412
- <a href="#cl-2494">2494</a>
3413
- <a href="#cl-2495">2495</a>
3414
- <a href="#cl-2496">2496</a>
3415
- <a href="#cl-2497">2497</a>
3416
- <a href="#cl-2498">2498</a>
3417
- <a href="#cl-2499">2499</a>
3418
- <a href="#cl-2500">2500</a>
3419
- <a href="#cl-2501">2501</a>
3420
- <a href="#cl-2502">2502</a>
3421
- <a href="#cl-2503">2503</a>
3422
- <a href="#cl-2504">2504</a>
3423
- <a href="#cl-2505">2505</a>
3424
- <a href="#cl-2506">2506</a>
3425
- <a href="#cl-2507">2507</a>
3426
- <a href="#cl-2508">2508</a>
3427
- <a href="#cl-2509">2509</a>
3428
- <a href="#cl-2510">2510</a>
3429
- <a href="#cl-2511">2511</a>
3430
- <a href="#cl-2512">2512</a>
3431
- <a href="#cl-2513">2513</a>
3432
- <a href="#cl-2514">2514</a>
3433
- <a href="#cl-2515">2515</a>
3434
- <a href="#cl-2516">2516</a>
3435
- <a href="#cl-2517">2517</a>
3436
- <a href="#cl-2518">2518</a>
3437
- <a href="#cl-2519">2519</a>
3438
- <a href="#cl-2520">2520</a>
3439
- <a href="#cl-2521">2521</a>
3440
- <a href="#cl-2522">2522</a>
3441
- <a href="#cl-2523">2523</a>
3442
- <a href="#cl-2524">2524</a>
3443
- <a href="#cl-2525">2525</a>
3444
- <a href="#cl-2526">2526</a>
3445
- <a href="#cl-2527">2527</a>
3446
- <a href="#cl-2528">2528</a>
3447
- <a href="#cl-2529">2529</a>
3448
- <a href="#cl-2530">2530</a>
3449
- <a href="#cl-2531">2531</a>
3450
- <a href="#cl-2532">2532</a>
3451
- <a href="#cl-2533">2533</a>
3452
- <a href="#cl-2534">2534</a>
3453
- <a href="#cl-2535">2535</a>
3454
- <a href="#cl-2536">2536</a>
3455
- <a href="#cl-2537">2537</a>
3456
- <a href="#cl-2538">2538</a>
3457
- <a href="#cl-2539">2539</a>
3458
- <a href="#cl-2540">2540</a>
3459
- <a href="#cl-2541">2541</a>
3460
- <a href="#cl-2542">2542</a>
3461
- <a href="#cl-2543">2543</a>
3462
- <a href="#cl-2544">2544</a>
3463
- <a href="#cl-2545">2545</a>
3464
- <a href="#cl-2546">2546</a>
3465
- <a href="#cl-2547">2547</a>
3466
- <a href="#cl-2548">2548</a>
3467
- <a href="#cl-2549">2549</a>
3468
- <a href="#cl-2550">2550</a>
3469
- <a href="#cl-2551">2551</a>
3470
- <a href="#cl-2552">2552</a>
3471
- <a href="#cl-2553">2553</a>
3472
- <a href="#cl-2554">2554</a>
3473
- <a href="#cl-2555">2555</a>
3474
- <a href="#cl-2556">2556</a>
3475
- <a href="#cl-2557">2557</a>
3476
- <a href="#cl-2558">2558</a>
3477
- <a href="#cl-2559">2559</a>
3478
- <a href="#cl-2560">2560</a>
3479
- <a href="#cl-2561">2561</a>
3480
- <a href="#cl-2562">2562</a>
3481
- <a href="#cl-2563">2563</a>
3482
- <a href="#cl-2564">2564</a>
3483
- <a href="#cl-2565">2565</a>
3484
- <a href="#cl-2566">2566</a>
3485
- <a href="#cl-2567">2567</a>
3486
- <a href="#cl-2568">2568</a>
3487
- <a href="#cl-2569">2569</a>
3488
- <a href="#cl-2570">2570</a>
3489
- <a href="#cl-2571">2571</a>
3490
- <a href="#cl-2572">2572</a>
3491
- <a href="#cl-2573">2573</a>
3492
- <a href="#cl-2574">2574</a>
3493
- <a href="#cl-2575">2575</a>
3494
- <a href="#cl-2576">2576</a>
3495
- <a href="#cl-2577">2577</a>
3496
- <a href="#cl-2578">2578</a>
3497
- <a href="#cl-2579">2579</a>
3498
- <a href="#cl-2580">2580</a>
3499
- <a href="#cl-2581">2581</a>
3500
- <a href="#cl-2582">2582</a>
3501
- <a href="#cl-2583">2583</a>
3502
- <a href="#cl-2584">2584</a>
3503
- <a href="#cl-2585">2585</a>
3504
- <a href="#cl-2586">2586</a>
3505
- <a href="#cl-2587">2587</a>
3506
- <a href="#cl-2588">2588</a>
3507
- <a href="#cl-2589">2589</a>
3508
- <a href="#cl-2590">2590</a>
3509
- <a href="#cl-2591">2591</a>
3510
- <a href="#cl-2592">2592</a>
3511
- <a href="#cl-2593">2593</a>
3512
- <a href="#cl-2594">2594</a>
3513
- <a href="#cl-2595">2595</a>
3514
- <a href="#cl-2596">2596</a>
3515
- <a href="#cl-2597">2597</a>
3516
- <a href="#cl-2598">2598</a>
3517
- <a href="#cl-2599">2599</a>
3518
- <a href="#cl-2600">2600</a>
3519
- <a href="#cl-2601">2601</a>
3520
- <a href="#cl-2602">2602</a>
3521
- <a href="#cl-2603">2603</a>
3522
- <a href="#cl-2604">2604</a>
3523
- <a href="#cl-2605">2605</a>
3524
- <a href="#cl-2606">2606</a>
3525
- <a href="#cl-2607">2607</a>
3526
- <a href="#cl-2608">2608</a>
3527
- <a href="#cl-2609">2609</a>
3528
- <a href="#cl-2610">2610</a>
3529
- <a href="#cl-2611">2611</a>
3530
- <a href="#cl-2612">2612</a>
3531
- <a href="#cl-2613">2613</a>
3532
- <a href="#cl-2614">2614</a>
3533
- <a href="#cl-2615">2615</a>
3534
- <a href="#cl-2616">2616</a>
3535
- <a href="#cl-2617">2617</a>
3536
- <a href="#cl-2618">2618</a>
3537
- <a href="#cl-2619">2619</a>
3538
- <a href="#cl-2620">2620</a>
3539
- <a href="#cl-2621">2621</a>
3540
- <a href="#cl-2622">2622</a>
3541
- <a href="#cl-2623">2623</a>
3542
- <a href="#cl-2624">2624</a>
3543
- <a href="#cl-2625">2625</a>
3544
- <a href="#cl-2626">2626</a>
3545
- <a href="#cl-2627">2627</a>
3546
- <a href="#cl-2628">2628</a>
3547
- <a href="#cl-2629">2629</a>
3548
- <a href="#cl-2630">2630</a>
3549
- <a href="#cl-2631">2631</a>
3550
- <a href="#cl-2632">2632</a>
3551
- <a href="#cl-2633">2633</a>
3552
- <a href="#cl-2634">2634</a>
3553
- <a href="#cl-2635">2635</a>
3554
- <a href="#cl-2636">2636</a>
3555
- <a href="#cl-2637">2637</a>
3556
- <a href="#cl-2638">2638</a>
3557
- <a href="#cl-2639">2639</a>
3558
- <a href="#cl-2640">2640</a>
3559
- <a href="#cl-2641">2641</a>
3560
- <a href="#cl-2642">2642</a>
3561
- <a href="#cl-2643">2643</a>
3562
- <a href="#cl-2644">2644</a>
3563
- <a href="#cl-2645">2645</a>
3564
- <a href="#cl-2646">2646</a>
3565
- <a href="#cl-2647">2647</a>
3566
- <a href="#cl-2648">2648</a>
3567
- <a href="#cl-2649">2649</a>
3568
- <a href="#cl-2650">2650</a>
3569
- <a href="#cl-2651">2651</a>
3570
- <a href="#cl-2652">2652</a>
3571
- <a href="#cl-2653">2653</a>
3572
- <a href="#cl-2654">2654</a>
3573
- <a href="#cl-2655">2655</a>
3574
- <a href="#cl-2656">2656</a>
3575
- <a href="#cl-2657">2657</a>
3576
- <a href="#cl-2658">2658</a>
3577
- <a href="#cl-2659">2659</a>
3578
- <a href="#cl-2660">2660</a>
3579
- <a href="#cl-2661">2661</a>
3580
- <a href="#cl-2662">2662</a>
3581
- <a href="#cl-2663">2663</a>
3582
- <a href="#cl-2664">2664</a>
3583
- <a href="#cl-2665">2665</a>
3584
- <a href="#cl-2666">2666</a>
3585
- <a href="#cl-2667">2667</a>
3586
- <a href="#cl-2668">2668</a>
3587
- <a href="#cl-2669">2669</a>
3588
- <a href="#cl-2670">2670</a>
3589
- <a href="#cl-2671">2671</a>
3590
- <a href="#cl-2672">2672</a>
3591
- <a href="#cl-2673">2673</a>
3592
- <a href="#cl-2674">2674</a>
3593
- <a href="#cl-2675">2675</a>
3594
- <a href="#cl-2676">2676</a>
3595
- <a href="#cl-2677">2677</a>
3596
- <a href="#cl-2678">2678</a>
3597
- <a href="#cl-2679">2679</a>
3598
- <a href="#cl-2680">2680</a>
3599
- <a href="#cl-2681">2681</a>
3600
- <a href="#cl-2682">2682</a>
3601
- <a href="#cl-2683">2683</a>
3602
- <a href="#cl-2684">2684</a>
3603
- <a href="#cl-2685">2685</a>
3604
- <a href="#cl-2686">2686</a>
3605
- <a href="#cl-2687">2687</a>
3606
- <a href="#cl-2688">2688</a>
3607
- <a href="#cl-2689">2689</a>
3608
- <a href="#cl-2690">2690</a>
3609
- <a href="#cl-2691">2691</a>
3610
- <a href="#cl-2692">2692</a>
3611
- <a href="#cl-2693">2693</a>
3612
- <a href="#cl-2694">2694</a>
3613
- <a href="#cl-2695">2695</a>
3614
- <a href="#cl-2696">2696</a>
3615
- <a href="#cl-2697">2697</a>
3616
- <a href="#cl-2698">2698</a>
3617
- <a href="#cl-2699">2699</a>
3618
- <a href="#cl-2700">2700</a>
3619
- <a href="#cl-2701">2701</a>
3620
- <a href="#cl-2702">2702</a>
3621
- <a href="#cl-2703">2703</a>
3622
- <a href="#cl-2704">2704</a>
3623
- <a href="#cl-2705">2705</a>
3624
- <a href="#cl-2706">2706</a>
3625
- <a href="#cl-2707">2707</a>
3626
- <a href="#cl-2708">2708</a>
3627
- <a href="#cl-2709">2709</a>
3628
- <a href="#cl-2710">2710</a>
3629
- <a href="#cl-2711">2711</a>
3630
- <a href="#cl-2712">2712</a>
3631
- <a href="#cl-2713">2713</a>
3632
- <a href="#cl-2714">2714</a>
3633
- <a href="#cl-2715">2715</a>
3634
- <a href="#cl-2716">2716</a>
3635
- <a href="#cl-2717">2717</a>
3636
- <a href="#cl-2718">2718</a>
3637
- <a href="#cl-2719">2719</a>
3638
- <a href="#cl-2720">2720</a>
3639
- <a href="#cl-2721">2721</a>
3640
- <a href="#cl-2722">2722</a>
3641
- <a href="#cl-2723">2723</a>
3642
- <a href="#cl-2724">2724</a>
3643
- <a href="#cl-2725">2725</a>
3644
- <a href="#cl-2726">2726</a>
3645
- <a href="#cl-2727">2727</a>
3646
- <a href="#cl-2728">2728</a>
3647
- <a href="#cl-2729">2729</a>
3648
- <a href="#cl-2730">2730</a>
3649
- <a href="#cl-2731">2731</a>
3650
- <a href="#cl-2732">2732</a>
3651
- <a href="#cl-2733">2733</a>
3652
- <a href="#cl-2734">2734</a>
3653
- <a href="#cl-2735">2735</a>
3654
- <a href="#cl-2736">2736</a>
3655
- <a href="#cl-2737">2737</a>
3656
- <a href="#cl-2738">2738</a>
3657
- <a href="#cl-2739">2739</a>
3658
- <a href="#cl-2740">2740</a>
3659
- <a href="#cl-2741">2741</a>
3660
- <a href="#cl-2742">2742</a>
3661
- <a href="#cl-2743">2743</a>
3662
- <a href="#cl-2744">2744</a>
3663
- <a href="#cl-2745">2745</a>
3664
- <a href="#cl-2746">2746</a>
3665
- <a href="#cl-2747">2747</a>
3666
- <a href="#cl-2748">2748</a>
3667
- <a href="#cl-2749">2749</a>
3668
- <a href="#cl-2750">2750</a>
3669
- <a href="#cl-2751">2751</a>
3670
- <a href="#cl-2752">2752</a>
3671
- <a href="#cl-2753">2753</a>
3672
- <a href="#cl-2754">2754</a>
3673
- <a href="#cl-2755">2755</a>
3674
- <a href="#cl-2756">2756</a>
3675
- <a href="#cl-2757">2757</a>
3676
- <a href="#cl-2758">2758</a>
3677
- <a href="#cl-2759">2759</a>
3678
- <a href="#cl-2760">2760</a>
3679
- <a href="#cl-2761">2761</a>
3680
- <a href="#cl-2762">2762</a>
3681
- <a href="#cl-2763">2763</a>
3682
- <a href="#cl-2764">2764</a>
3683
- <a href="#cl-2765">2765</a>
3684
- <a href="#cl-2766">2766</a>
3685
- <a href="#cl-2767">2767</a>
3686
- <a href="#cl-2768">2768</a>
3687
- <a href="#cl-2769">2769</a>
3688
- <a href="#cl-2770">2770</a>
3689
- <a href="#cl-2771">2771</a>
3690
- <a href="#cl-2772">2772</a>
3691
- <a href="#cl-2773">2773</a>
3692
- <a href="#cl-2774">2774</a>
3693
- <a href="#cl-2775">2775</a>
3694
- <a href="#cl-2776">2776</a>
3695
- <a href="#cl-2777">2777</a>
3696
- <a href="#cl-2778">2778</a>
3697
- <a href="#cl-2779">2779</a>
3698
- <a href="#cl-2780">2780</a>
3699
- <a href="#cl-2781">2781</a>
3700
- <a href="#cl-2782">2782</a>
3701
- <a href="#cl-2783">2783</a>
3702
- <a href="#cl-2784">2784</a>
3703
- <a href="#cl-2785">2785</a>
3704
- <a href="#cl-2786">2786</a>
3705
- <a href="#cl-2787">2787</a>
3706
- <a href="#cl-2788">2788</a>
3707
- <a href="#cl-2789">2789</a>
3708
- <a href="#cl-2790">2790</a>
3709
- <a href="#cl-2791">2791</a>
3710
- <a href="#cl-2792">2792</a>
3711
- <a href="#cl-2793">2793</a>
3712
- <a href="#cl-2794">2794</a>
3713
- <a href="#cl-2795">2795</a>
3714
- <a href="#cl-2796">2796</a>
3715
- <a href="#cl-2797">2797</a>
3716
- <a href="#cl-2798">2798</a>
3717
- <a href="#cl-2799">2799</a>
3718
- <a href="#cl-2800">2800</a>
3719
- <a href="#cl-2801">2801</a>
3720
- <a href="#cl-2802">2802</a>
3721
- <a href="#cl-2803">2803</a>
3722
- <a href="#cl-2804">2804</a>
3723
- <a href="#cl-2805">2805</a>
3724
- <a href="#cl-2806">2806</a>
3725
- <a href="#cl-2807">2807</a>
3726
- <a href="#cl-2808">2808</a>
3727
- <a href="#cl-2809">2809</a>
3728
- <a href="#cl-2810">2810</a>
3729
- <a href="#cl-2811">2811</a>
3730
- <a href="#cl-2812">2812</a>
3731
- <a href="#cl-2813">2813</a>
3732
- <a href="#cl-2814">2814</a>
3733
- <a href="#cl-2815">2815</a>
3734
- <a href="#cl-2816">2816</a>
3735
- <a href="#cl-2817">2817</a>
3736
- <a href="#cl-2818">2818</a>
3737
- <a href="#cl-2819">2819</a>
3738
- <a href="#cl-2820">2820</a>
3739
- <a href="#cl-2821">2821</a>
3740
- <a href="#cl-2822">2822</a>
3741
- <a href="#cl-2823">2823</a>
3742
- <a href="#cl-2824">2824</a>
3743
- <a href="#cl-2825">2825</a>
3744
- <a href="#cl-2826">2826</a>
3745
- <a href="#cl-2827">2827</a>
3746
- <a href="#cl-2828">2828</a>
3747
- <a href="#cl-2829">2829</a>
3748
- <a href="#cl-2830">2830</a>
3749
- <a href="#cl-2831">2831</a>
3750
- <a href="#cl-2832">2832</a>
3751
- <a href="#cl-2833">2833</a>
3752
- <a href="#cl-2834">2834</a>
3753
- <a href="#cl-2835">2835</a>
3754
- <a href="#cl-2836">2836</a>
3755
- <a href="#cl-2837">2837</a>
3756
- <a href="#cl-2838">2838</a>
3757
- <a href="#cl-2839">2839</a>
3758
- <a href="#cl-2840">2840</a>
3759
- <a href="#cl-2841">2841</a>
3760
- <a href="#cl-2842">2842</a>
3761
- <a href="#cl-2843">2843</a>
3762
- <a href="#cl-2844">2844</a>
3763
- <a href="#cl-2845">2845</a>
3764
- <a href="#cl-2846">2846</a>
3765
- <a href="#cl-2847">2847</a>
3766
- <a href="#cl-2848">2848</a>
3767
- <a href="#cl-2849">2849</a>
3768
- <a href="#cl-2850">2850</a>
3769
- <a href="#cl-2851">2851</a>
3770
- <a href="#cl-2852">2852</a>
3771
- <a href="#cl-2853">2853</a>
3772
- <a href="#cl-2854">2854</a>
3773
- <a href="#cl-2855">2855</a>
3774
- <a href="#cl-2856">2856</a>
3775
- <a href="#cl-2857">2857</a>
3776
- <a href="#cl-2858">2858</a>
3777
- <a href="#cl-2859">2859</a>
3778
- <a href="#cl-2860">2860</a>
3779
- <a href="#cl-2861">2861</a>
3780
- <a href="#cl-2862">2862</a>
3781
- <a href="#cl-2863">2863</a>
3782
- <a href="#cl-2864">2864</a>
3783
- <a href="#cl-2865">2865</a>
3784
- <a href="#cl-2866">2866</a>
3785
- <a href="#cl-2867">2867</a>
3786
- <a href="#cl-2868">2868</a>
3787
- <a href="#cl-2869">2869</a>
3788
- <a href="#cl-2870">2870</a>
3789
- <a href="#cl-2871">2871</a>
3790
- <a href="#cl-2872">2872</a>
3791
- <a href="#cl-2873">2873</a>
3792
- <a href="#cl-2874">2874</a>
3793
- <a href="#cl-2875">2875</a>
3794
- <a href="#cl-2876">2876</a>
3795
- <a href="#cl-2877">2877</a>
3796
- <a href="#cl-2878">2878</a>
3797
- <a href="#cl-2879">2879</a>
3798
- <a href="#cl-2880">2880</a>
3799
- <a href="#cl-2881">2881</a>
3800
- <a href="#cl-2882">2882</a>
3801
- <a href="#cl-2883">2883</a>
3802
- <a href="#cl-2884">2884</a>
3803
- <a href="#cl-2885">2885</a>
3804
- <a href="#cl-2886">2886</a>
3805
- <a href="#cl-2887">2887</a>
3806
- <a href="#cl-2888">2888</a>
3807
- <a href="#cl-2889">2889</a>
3808
- <a href="#cl-2890">2890</a>
3809
- <a href="#cl-2891">2891</a>
3810
- <a href="#cl-2892">2892</a>
3811
- <a href="#cl-2893">2893</a>
3812
- <a href="#cl-2894">2894</a>
3813
- <a href="#cl-2895">2895</a>
3814
- <a href="#cl-2896">2896</a>
3815
- <a href="#cl-2897">2897</a>
3816
- <a href="#cl-2898">2898</a>
3817
- <a href="#cl-2899">2899</a>
3818
- <a href="#cl-2900">2900</a>
3819
- <a href="#cl-2901">2901</a>
3820
- <a href="#cl-2902">2902</a>
3821
- <a href="#cl-2903">2903</a>
3822
- <a href="#cl-2904">2904</a>
3823
- <a href="#cl-2905">2905</a>
3824
- <a href="#cl-2906">2906</a>
3825
- <a href="#cl-2907">2907</a>
3826
- <a href="#cl-2908">2908</a>
3827
- <a href="#cl-2909">2909</a>
3828
- <a href="#cl-2910">2910</a>
3829
- <a href="#cl-2911">2911</a>
3830
- <a href="#cl-2912">2912</a>
3831
- <a href="#cl-2913">2913</a>
3832
- <a href="#cl-2914">2914</a>
3833
- <a href="#cl-2915">2915</a>
3834
- <a href="#cl-2916">2916</a>
3835
- <a href="#cl-2917">2917</a>
3836
- <a href="#cl-2918">2918</a>
3837
- <a href="#cl-2919">2919</a>
3838
- <a href="#cl-2920">2920</a>
3839
- <a href="#cl-2921">2921</a>
3840
- <a href="#cl-2922">2922</a>
3841
- <a href="#cl-2923">2923</a>
3842
- <a href="#cl-2924">2924</a>
3843
- <a href="#cl-2925">2925</a>
3844
- <a href="#cl-2926">2926</a>
3845
- <a href="#cl-2927">2927</a>
3846
- <a href="#cl-2928">2928</a>
3847
- <a href="#cl-2929">2929</a>
3848
- <a href="#cl-2930">2930</a>
3849
- <a href="#cl-2931">2931</a>
3850
- <a href="#cl-2932">2932</a>
3851
- <a href="#cl-2933">2933</a>
3852
- <a href="#cl-2934">2934</a>
3853
- <a href="#cl-2935">2935</a>
3854
- <a href="#cl-2936">2936</a>
3855
- <a href="#cl-2937">2937</a>
3856
- <a href="#cl-2938">2938</a>
3857
- <a href="#cl-2939">2939</a>
3858
- <a href="#cl-2940">2940</a>
3859
- <a href="#cl-2941">2941</a>
3860
- <a href="#cl-2942">2942</a>
3861
- <a href="#cl-2943">2943</a>
3862
- <a href="#cl-2944">2944</a>
3863
- <a href="#cl-2945">2945</a>
3864
- <a href="#cl-2946">2946</a>
3865
- <a href="#cl-2947">2947</a>
3866
- <a href="#cl-2948">2948</a>
3867
- <a href="#cl-2949">2949</a>
3868
- <a href="#cl-2950">2950</a>
3869
- <a href="#cl-2951">2951</a>
3870
- <a href="#cl-2952">2952</a>
3871
- <a href="#cl-2953">2953</a>
3872
- <a href="#cl-2954">2954</a>
3873
- <a href="#cl-2955">2955</a>
3874
- <a href="#cl-2956">2956</a>
3875
- <a href="#cl-2957">2957</a>
3876
- <a href="#cl-2958">2958</a>
3877
- <a href="#cl-2959">2959</a>
3878
- <a href="#cl-2960">2960</a>
3879
- <a href="#cl-2961">2961</a>
3880
- <a href="#cl-2962">2962</a>
3881
- <a href="#cl-2963">2963</a>
3882
- <a href="#cl-2964">2964</a>
3883
- <a href="#cl-2965">2965</a>
3884
- <a href="#cl-2966">2966</a>
3885
- <a href="#cl-2967">2967</a>
3886
- <a href="#cl-2968">2968</a>
3887
- <a href="#cl-2969">2969</a>
3888
- <a href="#cl-2970">2970</a>
3889
- <a href="#cl-2971">2971</a>
3890
- <a href="#cl-2972">2972</a>
3891
- <a href="#cl-2973">2973</a>
3892
- <a href="#cl-2974">2974</a>
3893
- <a href="#cl-2975">2975</a>
3894
- <a href="#cl-2976">2976</a>
3895
- <a href="#cl-2977">2977</a>
3896
- <a href="#cl-2978">2978</a>
3897
- <a href="#cl-2979">2979</a>
3898
- <a href="#cl-2980">2980</a>
3899
- <a href="#cl-2981">2981</a>
3900
- <a href="#cl-2982">2982</a>
3901
- <a href="#cl-2983">2983</a>
3902
- <a href="#cl-2984">2984</a>
3903
- <a href="#cl-2985">2985</a>
3904
- <a href="#cl-2986">2986</a>
3905
- <a href="#cl-2987">2987</a>
3906
- <a href="#cl-2988">2988</a>
3907
- <a href="#cl-2989">2989</a>
3908
- <a href="#cl-2990">2990</a>
3909
- <a href="#cl-2991">2991</a>
3910
- <a href="#cl-2992">2992</a>
3911
- <a href="#cl-2993">2993</a>
3912
- <a href="#cl-2994">2994</a>
3913
- <a href="#cl-2995">2995</a>
3914
- <a href="#cl-2996">2996</a>
3915
- <a href="#cl-2997">2997</a>
3916
- <a href="#cl-2998">2998</a>
3917
- <a href="#cl-2999">2999</a>
3918
- <a href="#cl-3000">3000</a>
3919
- <a href="#cl-3001">3001</a>
3920
- <a href="#cl-3002">3002</a>
3921
- <a href="#cl-3003">3003</a>
3922
- <a href="#cl-3004">3004</a>
3923
- <a href="#cl-3005">3005</a>
3924
- <a href="#cl-3006">3006</a>
3925
- <a href="#cl-3007">3007</a>
3926
- <a href="#cl-3008">3008</a>
3927
- <a href="#cl-3009">3009</a>
3928
- <a href="#cl-3010">3010</a>
3929
- <a href="#cl-3011">3011</a>
3930
- <a href="#cl-3012">3012</a>
3931
- <a href="#cl-3013">3013</a>
3932
- <a href="#cl-3014">3014</a>
3933
- <a href="#cl-3015">3015</a>
3934
- <a href="#cl-3016">3016</a>
3935
- <a href="#cl-3017">3017</a>
3936
- <a href="#cl-3018">3018</a>
3937
- <a href="#cl-3019">3019</a>
3938
- <a href="#cl-3020">3020</a>
3939
- <a href="#cl-3021">3021</a>
3940
- <a href="#cl-3022">3022</a>
3941
- <a href="#cl-3023">3023</a>
3942
- <a href="#cl-3024">3024</a>
3943
- <a href="#cl-3025">3025</a>
3944
- <a href="#cl-3026">3026</a>
3945
- <a href="#cl-3027">3027</a>
3946
- <a href="#cl-3028">3028</a>
3947
- <a href="#cl-3029">3029</a>
3948
- <a href="#cl-3030">3030</a>
3949
- <a href="#cl-3031">3031</a>
3950
- <a href="#cl-3032">3032</a>
3951
- <a href="#cl-3033">3033</a>
3952
- <a href="#cl-3034">3034</a>
3953
- <a href="#cl-3035">3035</a>
3954
- <a href="#cl-3036">3036</a>
3955
- <a href="#cl-3037">3037</a>
3956
- <a href="#cl-3038">3038</a>
3957
- <a href="#cl-3039">3039</a>
3958
- <a href="#cl-3040">3040</a>
3959
- <a href="#cl-3041">3041</a>
3960
- <a href="#cl-3042">3042</a>
3961
- <a href="#cl-3043">3043</a>
3962
- <a href="#cl-3044">3044</a>
3963
- <a href="#cl-3045">3045</a>
3964
- <a href="#cl-3046">3046</a>
3965
- <a href="#cl-3047">3047</a>
3966
- <a href="#cl-3048">3048</a>
3967
- <a href="#cl-3049">3049</a>
3968
- <a href="#cl-3050">3050</a>
3969
- <a href="#cl-3051">3051</a>
3970
- <a href="#cl-3052">3052</a>
3971
- <a href="#cl-3053">3053</a>
3972
- <a href="#cl-3054">3054</a>
3973
- <a href="#cl-3055">3055</a>
3974
- <a href="#cl-3056">3056</a>
3975
- <a href="#cl-3057">3057</a>
3976
- <a href="#cl-3058">3058</a>
3977
- <a href="#cl-3059">3059</a>
3978
- <a href="#cl-3060">3060</a>
3979
- <a href="#cl-3061">3061</a>
3980
- <a href="#cl-3062">3062</a>
3981
- <a href="#cl-3063">3063</a>
3982
- <a href="#cl-3064">3064</a>
3983
- <a href="#cl-3065">3065</a>
3984
- <a href="#cl-3066">3066</a>
3985
- <a href="#cl-3067">3067</a>
3986
- <a href="#cl-3068">3068</a>
3987
- <a href="#cl-3069">3069</a>
3988
- <a href="#cl-3070">3070</a>
3989
- <a href="#cl-3071">3071</a>
3990
- <a href="#cl-3072">3072</a>
3991
- <a href="#cl-3073">3073</a>
3992
- <a href="#cl-3074">3074</a>
3993
- <a href="#cl-3075">3075</a>
3994
- <a href="#cl-3076">3076</a>
3995
- <a href="#cl-3077">3077</a>
3996
- <a href="#cl-3078">3078</a>
3997
- <a href="#cl-3079">3079</a>
3998
- <a href="#cl-3080">3080</a>
3999
- <a href="#cl-3081">3081</a>
4000
- <a href="#cl-3082">3082</a>
4001
- <a href="#cl-3083">3083</a>
4002
- <a href="#cl-3084">3084</a>
4003
- <a href="#cl-3085">3085</a>
4004
- <a href="#cl-3086">3086</a>
4005
- <a href="#cl-3087">3087</a>
4006
- <a href="#cl-3088">3088</a>
4007
- <a href="#cl-3089">3089</a>
4008
- <a href="#cl-3090">3090</a>
4009
- <a href="#cl-3091">3091</a>
4010
- <a href="#cl-3092">3092</a>
4011
- <a href="#cl-3093">3093</a>
4012
- <a href="#cl-3094">3094</a>
4013
- <a href="#cl-3095">3095</a>
4014
- <a href="#cl-3096">3096</a>
4015
- <a href="#cl-3097">3097</a>
4016
- <a href="#cl-3098">3098</a>
4017
- <a href="#cl-3099">3099</a>
4018
- <a href="#cl-3100">3100</a>
4019
- <a href="#cl-3101">3101</a>
4020
- <a href="#cl-3102">3102</a>
4021
- <a href="#cl-3103">3103</a>
4022
- <a href="#cl-3104">3104</a>
4023
- <a href="#cl-3105">3105</a>
4024
- <a href="#cl-3106">3106</a>
4025
- <a href="#cl-3107">3107</a>
4026
- <a href="#cl-3108">3108</a>
4027
- <a href="#cl-3109">3109</a>
4028
- <a href="#cl-3110">3110</a>
4029
- <a href="#cl-3111">3111</a>
4030
- <a href="#cl-3112">3112</a>
4031
- <a href="#cl-3113">3113</a>
4032
- <a href="#cl-3114">3114</a>
4033
- <a href="#cl-3115">3115</a>
4034
- <a href="#cl-3116">3116</a>
4035
- <a href="#cl-3117">3117</a>
4036
- <a href="#cl-3118">3118</a>
4037
- <a href="#cl-3119">3119</a>
4038
- <a href="#cl-3120">3120</a>
4039
- <a href="#cl-3121">3121</a>
4040
- <a href="#cl-3122">3122</a>
4041
- <a href="#cl-3123">3123</a>
4042
- <a href="#cl-3124">3124</a>
4043
- <a href="#cl-3125">3125</a>
4044
- <a href="#cl-3126">3126</a>
4045
- <a href="#cl-3127">3127</a>
4046
- <a href="#cl-3128">3128</a>
4047
- <a href="#cl-3129">3129</a>
4048
- <a href="#cl-3130">3130</a>
4049
- <a href="#cl-3131">3131</a>
4050
- <a href="#cl-3132">3132</a>
4051
- <a href="#cl-3133">3133</a>
4052
- <a href="#cl-3134">3134</a>
4053
- <a href="#cl-3135">3135</a>
4054
- <a href="#cl-3136">3136</a>
4055
- <a href="#cl-3137">3137</a>
4056
- <a href="#cl-3138">3138</a>
4057
- <a href="#cl-3139">3139</a>
4058
- <a href="#cl-3140">3140</a>
4059
- <a href="#cl-3141">3141</a>
4060
- <a href="#cl-3142">3142</a>
4061
- <a href="#cl-3143">3143</a>
4062
- <a href="#cl-3144">3144</a>
4063
- <a href="#cl-3145">3145</a>
4064
- <a href="#cl-3146">3146</a>
4065
- <a href="#cl-3147">3147</a>
4066
- <a href="#cl-3148">3148</a>
4067
- <a href="#cl-3149">3149</a>
4068
- <a href="#cl-3150">3150</a>
4069
- <a href="#cl-3151">3151</a>
4070
- <a href="#cl-3152">3152</a>
4071
- <a href="#cl-3153">3153</a>
4072
- <a href="#cl-3154">3154</a>
4073
- <a href="#cl-3155">3155</a>
4074
- <a href="#cl-3156">3156</a>
4075
- <a href="#cl-3157">3157</a>
4076
- <a href="#cl-3158">3158</a>
4077
- <a href="#cl-3159">3159</a>
4078
- <a href="#cl-3160">3160</a>
4079
- <a href="#cl-3161">3161</a>
4080
- <a href="#cl-3162">3162</a>
4081
- <a href="#cl-3163">3163</a>
4082
- <a href="#cl-3164">3164</a>
4083
- <a href="#cl-3165">3165</a>
4084
- <a href="#cl-3166">3166</a>
4085
- <a href="#cl-3167">3167</a>
4086
- <a href="#cl-3168">3168</a>
4087
- <a href="#cl-3169">3169</a>
4088
- <a href="#cl-3170">3170</a>
4089
- <a href="#cl-3171">3171</a>
4090
- <a href="#cl-3172">3172</a>
4091
- <a href="#cl-3173">3173</a>
4092
- <a href="#cl-3174">3174</a>
4093
- <a href="#cl-3175">3175</a>
4094
- <a href="#cl-3176">3176</a>
4095
- <a href="#cl-3177">3177</a>
4096
- <a href="#cl-3178">3178</a>
4097
- <a href="#cl-3179">3179</a>
4098
- <a href="#cl-3180">3180</a>
4099
- <a href="#cl-3181">3181</a>
4100
- <a href="#cl-3182">3182</a>
4101
- <a href="#cl-3183">3183</a>
4102
- <a href="#cl-3184">3184</a>
4103
- <a href="#cl-3185">3185</a>
4104
- <a href="#cl-3186">3186</a>
4105
- <a href="#cl-3187">3187</a>
4106
- <a href="#cl-3188">3188</a>
4107
- <a href="#cl-3189">3189</a>
4108
- <a href="#cl-3190">3190</a>
4109
- <a href="#cl-3191">3191</a>
4110
- <a href="#cl-3192">3192</a>
4111
- <a href="#cl-3193">3193</a>
4112
- <a href="#cl-3194">3194</a>
4113
- <a href="#cl-3195">3195</a>
4114
- <a href="#cl-3196">3196</a>
4115
- <a href="#cl-3197">3197</a>
4116
- <a href="#cl-3198">3198</a>
4117
- <a href="#cl-3199">3199</a>
4118
- <a href="#cl-3200">3200</a>
4119
- <a href="#cl-3201">3201</a>
4120
- <a href="#cl-3202">3202</a>
4121
- <a href="#cl-3203">3203</a>
4122
- <a href="#cl-3204">3204</a>
4123
- <a href="#cl-3205">3205</a>
4124
- <a href="#cl-3206">3206</a>
4125
- <a href="#cl-3207">3207</a>
4126
- <a href="#cl-3208">3208</a>
4127
- <a href="#cl-3209">3209</a>
4128
- <a href="#cl-3210">3210</a>
4129
- <a href="#cl-3211">3211</a>
4130
- <a href="#cl-3212">3212</a>
4131
- <a href="#cl-3213">3213</a>
4132
- <a href="#cl-3214">3214</a>
4133
- <a href="#cl-3215">3215</a>
4134
- <a href="#cl-3216">3216</a>
4135
- <a href="#cl-3217">3217</a>
4136
- <a href="#cl-3218">3218</a>
4137
- <a href="#cl-3219">3219</a>
4138
- <a href="#cl-3220">3220</a>
4139
- <a href="#cl-3221">3221</a>
4140
- <a href="#cl-3222">3222</a>
4141
- <a href="#cl-3223">3223</a>
4142
- <a href="#cl-3224">3224</a>
4143
- <a href="#cl-3225">3225</a>
4144
- <a href="#cl-3226">3226</a>
4145
- <a href="#cl-3227">3227</a>
4146
- <a href="#cl-3228">3228</a>
4147
- <a href="#cl-3229">3229</a>
4148
- <a href="#cl-3230">3230</a>
4149
- <a href="#cl-3231">3231</a>
4150
- <a href="#cl-3232">3232</a>
4151
- <a href="#cl-3233">3233</a>
4152
- <a href="#cl-3234">3234</a>
4153
- <a href="#cl-3235">3235</a>
4154
- <a href="#cl-3236">3236</a>
4155
- <a href="#cl-3237">3237</a>
4156
- <a href="#cl-3238">3238</a>
4157
- <a href="#cl-3239">3239</a>
4158
- <a href="#cl-3240">3240</a>
4159
- <a href="#cl-3241">3241</a>
4160
- <a href="#cl-3242">3242</a>
4161
- <a href="#cl-3243">3243</a>
4162
- <a href="#cl-3244">3244</a>
4163
- <a href="#cl-3245">3245</a>
4164
- <a href="#cl-3246">3246</a>
4165
- <a href="#cl-3247">3247</a>
4166
- <a href="#cl-3248">3248</a>
4167
- <a href="#cl-3249">3249</a>
4168
- <a href="#cl-3250">3250</a>
4169
- <a href="#cl-3251">3251</a>
4170
- <a href="#cl-3252">3252</a>
4171
- <a href="#cl-3253">3253</a>
4172
- <a href="#cl-3254">3254</a>
4173
- <a href="#cl-3255">3255</a>
4174
- <a href="#cl-3256">3256</a>
4175
- <a href="#cl-3257">3257</a>
4176
- <a href="#cl-3258">3258</a>
4177
- <a href="#cl-3259">3259</a>
4178
- <a href="#cl-3260">3260</a>
4179
- <a href="#cl-3261">3261</a>
4180
- <a href="#cl-3262">3262</a>
4181
- <a href="#cl-3263">3263</a>
4182
- <a href="#cl-3264">3264</a>
4183
- <a href="#cl-3265">3265</a>
4184
- <a href="#cl-3266">3266</a>
4185
- <a href="#cl-3267">3267</a>
4186
- <a href="#cl-3268">3268</a>
4187
- <a href="#cl-3269">3269</a>
4188
- <a href="#cl-3270">3270</a>
4189
- <a href="#cl-3271">3271</a>
4190
- <a href="#cl-3272">3272</a>
4191
- <a href="#cl-3273">3273</a>
4192
- <a href="#cl-3274">3274</a>
4193
- <a href="#cl-3275">3275</a>
4194
- <a href="#cl-3276">3276</a>
4195
- <a href="#cl-3277">3277</a>
4196
- <a href="#cl-3278">3278</a>
4197
- <a href="#cl-3279">3279</a>
4198
- <a href="#cl-3280">3280</a>
4199
- <a href="#cl-3281">3281</a>
4200
- <a href="#cl-3282">3282</a>
4201
- <a href="#cl-3283">3283</a>
4202
- <a href="#cl-3284">3284</a>
4203
- <a href="#cl-3285">3285</a>
4204
- <a href="#cl-3286">3286</a>
4205
- <a href="#cl-3287">3287</a>
4206
- <a href="#cl-3288">3288</a>
4207
- <a href="#cl-3289">3289</a>
4208
- <a href="#cl-3290">3290</a>
4209
- <a href="#cl-3291">3291</a>
4210
- <a href="#cl-3292">3292</a>
4211
- <a href="#cl-3293">3293</a>
4212
- <a href="#cl-3294">3294</a>
4213
- <a href="#cl-3295">3295</a>
4214
- <a href="#cl-3296">3296</a>
4215
- <a href="#cl-3297">3297</a>
4216
- <a href="#cl-3298">3298</a>
4217
- <a href="#cl-3299">3299</a>
4218
- <a href="#cl-3300">3300</a>
4219
- <a href="#cl-3301">3301</a>
4220
- <a href="#cl-3302">3302</a>
4221
- <a href="#cl-3303">3303</a>
4222
- <a href="#cl-3304">3304</a>
4223
- <a href="#cl-3305">3305</a>
4224
- <a href="#cl-3306">3306</a>
4225
- <a href="#cl-3307">3307</a>
4226
- <a href="#cl-3308">3308</a>
4227
- <a href="#cl-3309">3309</a>
4228
- <a href="#cl-3310">3310</a>
4229
- <a href="#cl-3311">3311</a>
4230
- <a href="#cl-3312">3312</a>
4231
- <a href="#cl-3313">3313</a>
4232
- <a href="#cl-3314">3314</a>
4233
- <a href="#cl-3315">3315</a>
4234
- <a href="#cl-3316">3316</a>
4235
- <a href="#cl-3317">3317</a>
4236
- <a href="#cl-3318">3318</a>
4237
- <a href="#cl-3319">3319</a>
4238
- <a href="#cl-3320">3320</a>
4239
- <a href="#cl-3321">3321</a>
4240
- <a href="#cl-3322">3322</a>
4241
- <a href="#cl-3323">3323</a>
4242
- <a href="#cl-3324">3324</a>
4243
- <a href="#cl-3325">3325</a>
4244
- <a href="#cl-3326">3326</a>
4245
- <a href="#cl-3327">3327</a>
4246
- <a href="#cl-3328">3328</a>
4247
- <a href="#cl-3329">3329</a>
4248
- <a href="#cl-3330">3330</a>
4249
- <a href="#cl-3331">3331</a>
4250
- <a href="#cl-3332">3332</a>
4251
- <a href="#cl-3333">3333</a>
4252
- <a href="#cl-3334">3334</a>
4253
- <a href="#cl-3335">3335</a>
4254
- <a href="#cl-3336">3336</a>
4255
- <a href="#cl-3337">3337</a>
4256
- <a href="#cl-3338">3338</a>
4257
- <a href="#cl-3339">3339</a>
4258
- <a href="#cl-3340">3340</a>
4259
- <a href="#cl-3341">3341</a>
4260
- <a href="#cl-3342">3342</a>
4261
- <a href="#cl-3343">3343</a>
4262
- <a href="#cl-3344">3344</a>
4263
- <a href="#cl-3345">3345</a>
4264
- <a href="#cl-3346">3346</a>
4265
- <a href="#cl-3347">3347</a>
4266
- <a href="#cl-3348">3348</a>
4267
- <a href="#cl-3349">3349</a>
4268
- <a href="#cl-3350">3350</a>
4269
- <a href="#cl-3351">3351</a>
4270
- <a href="#cl-3352">3352</a>
4271
- <a href="#cl-3353">3353</a>
4272
- <a href="#cl-3354">3354</a>
4273
- <a href="#cl-3355">3355</a>
4274
- <a href="#cl-3356">3356</a>
4275
- <a href="#cl-3357">3357</a>
4276
- <a href="#cl-3358">3358</a>
4277
- <a href="#cl-3359">3359</a>
4278
- <a href="#cl-3360">3360</a>
4279
- <a href="#cl-3361">3361</a>
4280
- <a href="#cl-3362">3362</a>
4281
- <a href="#cl-3363">3363</a>
4282
- <a href="#cl-3364">3364</a>
4283
- <a href="#cl-3365">3365</a>
4284
- <a href="#cl-3366">3366</a>
4285
- <a href="#cl-3367">3367</a>
4286
- <a href="#cl-3368">3368</a>
4287
- <a href="#cl-3369">3369</a>
4288
- <a href="#cl-3370">3370</a>
4289
- <a href="#cl-3371">3371</a>
4290
- <a href="#cl-3372">3372</a>
4291
- <a href="#cl-3373">3373</a>
4292
- <a href="#cl-3374">3374</a>
4293
- <a href="#cl-3375">3375</a>
4294
- <a href="#cl-3376">3376</a>
4295
- <a href="#cl-3377">3377</a>
4296
- <a href="#cl-3378">3378</a>
4297
- <a href="#cl-3379">3379</a>
4298
- <a href="#cl-3380">3380</a>
4299
- <a href="#cl-3381">3381</a>
4300
- <a href="#cl-3382">3382</a>
4301
- <a href="#cl-3383">3383</a>
4302
- <a href="#cl-3384">3384</a>
4303
- <a href="#cl-3385">3385</a>
4304
- <a href="#cl-3386">3386</a>
4305
- <a href="#cl-3387">3387</a>
4306
- <a href="#cl-3388">3388</a>
4307
- <a href="#cl-3389">3389</a>
4308
- <a href="#cl-3390">3390</a>
4309
- <a href="#cl-3391">3391</a>
4310
- <a href="#cl-3392">3392</a>
4311
- <a href="#cl-3393">3393</a>
4312
- <a href="#cl-3394">3394</a>
4313
- <a href="#cl-3395">3395</a>
4314
- <a href="#cl-3396">3396</a>
4315
- <a href="#cl-3397">3397</a>
4316
- <a href="#cl-3398">3398</a>
4317
- <a href="#cl-3399">3399</a>
4318
- <a href="#cl-3400">3400</a>
4319
- <a href="#cl-3401">3401</a>
4320
- <a href="#cl-3402">3402</a>
4321
- <a href="#cl-3403">3403</a>
4322
- <a href="#cl-3404">3404</a>
4323
- <a href="#cl-3405">3405</a>
4324
- <a href="#cl-3406">3406</a>
4325
- <a href="#cl-3407">3407</a>
4326
- <a href="#cl-3408">3408</a>
4327
- <a href="#cl-3409">3409</a>
4328
- <a href="#cl-3410">3410</a>
4329
- <a href="#cl-3411">3411</a>
4330
- <a href="#cl-3412">3412</a>
4331
- <a href="#cl-3413">3413</a>
4332
- <a href="#cl-3414">3414</a>
4333
- <a href="#cl-3415">3415</a>
4334
- <a href="#cl-3416">3416</a>
4335
- <a href="#cl-3417">3417</a>
4336
- <a href="#cl-3418">3418</a>
4337
- <a href="#cl-3419">3419</a>
4338
- <a href="#cl-3420">3420</a>
4339
- <a href="#cl-3421">3421</a>
4340
- <a href="#cl-3422">3422</a>
4341
- <a href="#cl-3423">3423</a>
4342
- <a href="#cl-3424">3424</a>
4343
- <a href="#cl-3425">3425</a>
4344
- <a href="#cl-3426">3426</a>
4345
- <a href="#cl-3427">3427</a>
4346
- <a href="#cl-3428">3428</a>
4347
- <a href="#cl-3429">3429</a>
4348
- <a href="#cl-3430">3430</a>
4349
- <a href="#cl-3431">3431</a>
4350
- <a href="#cl-3432">3432</a>
4351
- <a href="#cl-3433">3433</a>
4352
- <a href="#cl-3434">3434</a>
4353
- <a href="#cl-3435">3435</a>
4354
- <a href="#cl-3436">3436</a>
4355
- <a href="#cl-3437">3437</a>
4356
- <a href="#cl-3438">3438</a>
4357
- <a href="#cl-3439">3439</a>
4358
- <a href="#cl-3440">3440</a>
4359
- <a href="#cl-3441">3441</a>
4360
- <a href="#cl-3442">3442</a>
4361
- <a href="#cl-3443">3443</a>
4362
- <a href="#cl-3444">3444</a>
4363
- <a href="#cl-3445">3445</a>
4364
- <a href="#cl-3446">3446</a>
4365
- <a href="#cl-3447">3447</a>
4366
- <a href="#cl-3448">3448</a>
4367
- <a href="#cl-3449">3449</a>
4368
- <a href="#cl-3450">3450</a>
4369
- <a href="#cl-3451">3451</a>
4370
- <a href="#cl-3452">3452</a>
4371
- <a href="#cl-3453">3453</a>
4372
- <a href="#cl-3454">3454</a>
4373
- <a href="#cl-3455">3455</a>
4374
- <a href="#cl-3456">3456</a>
4375
- <a href="#cl-3457">3457</a>
4376
- <a href="#cl-3458">3458</a>
4377
- <a href="#cl-3459">3459</a>
4378
- <a href="#cl-3460">3460</a>
4379
- <a href="#cl-3461">3461</a>
4380
- <a href="#cl-3462">3462</a>
4381
- <a href="#cl-3463">3463</a>
4382
- <a href="#cl-3464">3464</a>
4383
- <a href="#cl-3465">3465</a>
4384
- <a href="#cl-3466">3466</a>
4385
- <a href="#cl-3467">3467</a>
4386
- <a href="#cl-3468">3468</a>
4387
- <a href="#cl-3469">3469</a>
4388
- <a href="#cl-3470">3470</a>
4389
- <a href="#cl-3471">3471</a>
4390
- <a href="#cl-3472">3472</a>
4391
- <a href="#cl-3473">3473</a>
4392
- <a href="#cl-3474">3474</a>
4393
- <a href="#cl-3475">3475</a>
4394
- <a href="#cl-3476">3476</a>
4395
- <a href="#cl-3477">3477</a>
4396
- <a href="#cl-3478">3478</a>
4397
- <a href="#cl-3479">3479</a>
4398
- <a href="#cl-3480">3480</a>
4399
- <a href="#cl-3481">3481</a>
4400
- <a href="#cl-3482">3482</a>
4401
- <a href="#cl-3483">3483</a>
4402
- <a href="#cl-3484">3484</a>
4403
- <a href="#cl-3485">3485</a>
4404
- <a href="#cl-3486">3486</a>
4405
- <a href="#cl-3487">3487</a>
4406
- <a href="#cl-3488">3488</a>
4407
- <a href="#cl-3489">3489</a>
4408
- <a href="#cl-3490">3490</a>
4409
- <a href="#cl-3491">3491</a>
4410
- <a href="#cl-3492">3492</a>
4411
- <a href="#cl-3493">3493</a>
4412
- <a href="#cl-3494">3494</a>
4413
- <a href="#cl-3495">3495</a>
4414
- <a href="#cl-3496">3496</a>
4415
- <a href="#cl-3497">3497</a>
4416
- <a href="#cl-3498">3498</a>
4417
- <a href="#cl-3499">3499</a>
4418
- <a href="#cl-3500">3500</a>
4419
- <a href="#cl-3501">3501</a>
4420
- <a href="#cl-3502">3502</a>
4421
- <a href="#cl-3503">3503</a>
4422
- <a href="#cl-3504">3504</a>
4423
- <a href="#cl-3505">3505</a>
4424
- <a href="#cl-3506">3506</a>
4425
- <a href="#cl-3507">3507</a>
4426
- <a href="#cl-3508">3508</a>
4427
- <a href="#cl-3509">3509</a>
4428
- <a href="#cl-3510">3510</a>
4429
- <a href="#cl-3511">3511</a>
4430
- <a href="#cl-3512">3512</a>
4431
- <a href="#cl-3513">3513</a>
4432
- <a href="#cl-3514">3514</a>
4433
- <a href="#cl-3515">3515</a>
4434
- <a href="#cl-3516">3516</a>
4435
- <a href="#cl-3517">3517</a>
4436
- <a href="#cl-3518">3518</a>
4437
- <a href="#cl-3519">3519</a>
4438
- <a href="#cl-3520">3520</a>
4439
- <a href="#cl-3521">3521</a>
4440
- <a href="#cl-3522">3522</a>
4441
- <a href="#cl-3523">3523</a>
4442
- <a href="#cl-3524">3524</a>
4443
- <a href="#cl-3525">3525</a>
4444
- <a href="#cl-3526">3526</a>
4445
- <a href="#cl-3527">3527</a>
4446
- <a href="#cl-3528">3528</a>
4447
- <a href="#cl-3529">3529</a>
4448
- <a href="#cl-3530">3530</a>
4449
- <a href="#cl-3531">3531</a>
4450
- <a href="#cl-3532">3532</a>
4451
- <a href="#cl-3533">3533</a>
4452
- <a href="#cl-3534">3534</a>
4453
- <a href="#cl-3535">3535</a>
4454
- <a href="#cl-3536">3536</a>
4455
- <a href="#cl-3537">3537</a>
4456
- <a href="#cl-3538">3538</a>
4457
- <a href="#cl-3539">3539</a>
4458
- <a href="#cl-3540">3540</a>
4459
- <a href="#cl-3541">3541</a>
4460
- <a href="#cl-3542">3542</a>
4461
- <a href="#cl-3543">3543</a>
4462
- <a href="#cl-3544">3544</a>
4463
- <a href="#cl-3545">3545</a>
4464
- <a href="#cl-3546">3546</a>
4465
- <a href="#cl-3547">3547</a>
4466
- <a href="#cl-3548">3548</a>
4467
- <a href="#cl-3549">3549</a>
4468
- <a href="#cl-3550">3550</a>
4469
- <a href="#cl-3551">3551</a>
4470
- <a href="#cl-3552">3552</a>
4471
- <a href="#cl-3553">3553</a>
4472
- <a href="#cl-3554">3554</a>
4473
- <a href="#cl-3555">3555</a>
4474
- <a href="#cl-3556">3556</a>
4475
- <a href="#cl-3557">3557</a>
4476
- <a href="#cl-3558">3558</a>
4477
- <a href="#cl-3559">3559</a>
4478
- <a href="#cl-3560">3560</a>
4479
- <a href="#cl-3561">3561</a>
4480
- <a href="#cl-3562">3562</a>
4481
- <a href="#cl-3563">3563</a>
4482
- <a href="#cl-3564">3564</a>
4483
- <a href="#cl-3565">3565</a>
4484
- <a href="#cl-3566">3566</a>
4485
- <a href="#cl-3567">3567</a>
4486
- <a href="#cl-3568">3568</a>
4487
- <a href="#cl-3569">3569</a>
4488
- <a href="#cl-3570">3570</a>
4489
- <a href="#cl-3571">3571</a>
4490
- <a href="#cl-3572">3572</a>
4491
- <a href="#cl-3573">3573</a>
4492
- <a href="#cl-3574">3574</a>
4493
- <a href="#cl-3575">3575</a>
4494
- <a href="#cl-3576">3576</a>
4495
- <a href="#cl-3577">3577</a>
4496
- <a href="#cl-3578">3578</a>
4497
- <a href="#cl-3579">3579</a>
4498
- <a href="#cl-3580">3580</a>
4499
- <a href="#cl-3581">3581</a>
4500
- <a href="#cl-3582">3582</a>
4501
- <a href="#cl-3583">3583</a>
4502
- <a href="#cl-3584">3584</a>
4503
- <a href="#cl-3585">3585</a>
4504
- <a href="#cl-3586">3586</a>
4505
- <a href="#cl-3587">3587</a>
4506
- <a href="#cl-3588">3588</a>
4507
- <a href="#cl-3589">3589</a>
4508
- <a href="#cl-3590">3590</a>
4509
- <a href="#cl-3591">3591</a>
4510
- <a href="#cl-3592">3592</a>
4511
- <a href="#cl-3593">3593</a>
4512
- <a href="#cl-3594">3594</a>
4513
- <a href="#cl-3595">3595</a>
4514
- <a href="#cl-3596">3596</a>
4515
- <a href="#cl-3597">3597</a>
4516
- <a href="#cl-3598">3598</a>
4517
- <a href="#cl-3599">3599</a>
4518
- <a href="#cl-3600">3600</a>
4519
- <a href="#cl-3601">3601</a>
4520
- <a href="#cl-3602">3602</a>
4521
- <a href="#cl-3603">3603</a>
4522
- <a href="#cl-3604">3604</a>
4523
- <a href="#cl-3605">3605</a>
4524
- <a href="#cl-3606">3606</a>
4525
- <a href="#cl-3607">3607</a>
4526
- <a href="#cl-3608">3608</a>
4527
- <a href="#cl-3609">3609</a>
4528
- <a href="#cl-3610">3610</a>
4529
- <a href="#cl-3611">3611</a>
4530
- <a href="#cl-3612">3612</a>
4531
- <a href="#cl-3613">3613</a>
4532
- <a href="#cl-3614">3614</a>
4533
- <a href="#cl-3615">3615</a>
4534
- <a href="#cl-3616">3616</a>
4535
- <a href="#cl-3617">3617</a>
4536
- <a href="#cl-3618">3618</a>
4537
- <a href="#cl-3619">3619</a>
4538
- <a href="#cl-3620">3620</a>
4539
- <a href="#cl-3621">3621</a>
4540
- <a href="#cl-3622">3622</a>
4541
- <a href="#cl-3623">3623</a>
4542
- <a href="#cl-3624">3624</a>
4543
- <a href="#cl-3625">3625</a>
4544
- <a href="#cl-3626">3626</a>
4545
- <a href="#cl-3627">3627</a>
4546
- <a href="#cl-3628">3628</a>
4547
- <a href="#cl-3629">3629</a>
4548
- <a href="#cl-3630">3630</a>
4549
- <a href="#cl-3631">3631</a>
4550
- <a href="#cl-3632">3632</a>
4551
- <a href="#cl-3633">3633</a>
4552
- <a href="#cl-3634">3634</a>
4553
- <a href="#cl-3635">3635</a>
4554
- <a href="#cl-3636">3636</a>
4555
- <a href="#cl-3637">3637</a>
4556
- <a href="#cl-3638">3638</a>
4557
- <a href="#cl-3639">3639</a>
4558
- <a href="#cl-3640">3640</a>
4559
- <a href="#cl-3641">3641</a>
4560
- <a href="#cl-3642">3642</a>
4561
- <a href="#cl-3643">3643</a>
4562
- <a href="#cl-3644">3644</a>
4563
- <a href="#cl-3645">3645</a>
4564
- <a href="#cl-3646">3646</a>
4565
- <a href="#cl-3647">3647</a>
4566
- <a href="#cl-3648">3648</a>
4567
- <a href="#cl-3649">3649</a>
4568
- <a href="#cl-3650">3650</a>
4569
- <a href="#cl-3651">3651</a>
4570
- <a href="#cl-3652">3652</a>
4571
- <a href="#cl-3653">3653</a>
4572
- <a href="#cl-3654">3654</a>
4573
- <a href="#cl-3655">3655</a>
4574
- <a href="#cl-3656">3656</a>
4575
- <a href="#cl-3657">3657</a>
4576
- <a href="#cl-3658">3658</a>
4577
- <a href="#cl-3659">3659</a>
4578
- <a href="#cl-3660">3660</a>
4579
- <a href="#cl-3661">3661</a>
4580
- <a href="#cl-3662">3662</a>
4581
- <a href="#cl-3663">3663</a>
4582
- <a href="#cl-3664">3664</a>
4583
- <a href="#cl-3665">3665</a>
4584
- <a href="#cl-3666">3666</a>
4585
- <a href="#cl-3667">3667</a>
4586
- <a href="#cl-3668">3668</a>
4587
- <a href="#cl-3669">3669</a>
4588
- <a href="#cl-3670">3670</a>
4589
- <a href="#cl-3671">3671</a>
4590
- <a href="#cl-3672">3672</a>
4591
- <a href="#cl-3673">3673</a>
4592
- <a href="#cl-3674">3674</a>
4593
- <a href="#cl-3675">3675</a>
4594
- <a href="#cl-3676">3676</a>
4595
- <a href="#cl-3677">3677</a>
4596
- <a href="#cl-3678">3678</a>
4597
- <a href="#cl-3679">3679</a>
4598
- <a href="#cl-3680">3680</a>
4599
- <a href="#cl-3681">3681</a>
4600
- <a href="#cl-3682">3682</a>
4601
- <a href="#cl-3683">3683</a>
4602
- <a href="#cl-3684">3684</a>
4603
- <a href="#cl-3685">3685</a>
4604
- <a href="#cl-3686">3686</a>
4605
- <a href="#cl-3687">3687</a>
4606
- <a href="#cl-3688">3688</a>
4607
- <a href="#cl-3689">3689</a>
4608
- <a href="#cl-3690">3690</a>
4609
- <a href="#cl-3691">3691</a>
4610
- <a href="#cl-3692">3692</a>
4611
- <a href="#cl-3693">3693</a>
4612
- <a href="#cl-3694">3694</a>
4613
- <a href="#cl-3695">3695</a>
4614
- <a href="#cl-3696">3696</a>
4615
- <a href="#cl-3697">3697</a>
4616
- <a href="#cl-3698">3698</a>
4617
- <a href="#cl-3699">3699</a>
4618
- <a href="#cl-3700">3700</a>
4619
- <a href="#cl-3701">3701</a>
4620
- <a href="#cl-3702">3702</a>
4621
- <a href="#cl-3703">3703</a>
4622
- <a href="#cl-3704">3704</a>
4623
- <a href="#cl-3705">3705</a>
4624
- <a href="#cl-3706">3706</a>
4625
- <a href="#cl-3707">3707</a>
4626
- <a href="#cl-3708">3708</a>
4627
- <a href="#cl-3709">3709</a>
4628
- <a href="#cl-3710">3710</a>
4629
- <a href="#cl-3711">3711</a>
4630
- <a href="#cl-3712">3712</a>
4631
- <a href="#cl-3713">3713</a>
4632
- <a href="#cl-3714">3714</a>
4633
- <a href="#cl-3715">3715</a>
4634
- <a href="#cl-3716">3716</a>
4635
- <a href="#cl-3717">3717</a>
4636
- <a href="#cl-3718">3718</a>
4637
- <a href="#cl-3719">3719</a>
4638
- <a href="#cl-3720">3720</a>
4639
- <a href="#cl-3721">3721</a>
4640
- <a href="#cl-3722">3722</a>
4641
- <a href="#cl-3723">3723</a>
4642
- <a href="#cl-3724">3724</a>
4643
- <a href="#cl-3725">3725</a>
4644
- <a href="#cl-3726">3726</a>
4645
- <a href="#cl-3727">3727</a>
4646
- <a href="#cl-3728">3728</a>
4647
- <a href="#cl-3729">3729</a>
4648
- <a href="#cl-3730">3730</a>
4649
- <a href="#cl-3731">3731</a>
4650
- <a href="#cl-3732">3732</a>
4651
- <a href="#cl-3733">3733</a>
4652
- <a href="#cl-3734">3734</a>
4653
- <a href="#cl-3735">3735</a>
4654
- <a href="#cl-3736">3736</a>
4655
- <a href="#cl-3737">3737</a>
4656
- <a href="#cl-3738">3738</a>
4657
- <a href="#cl-3739">3739</a>
4658
- <a href="#cl-3740">3740</a>
4659
- <a href="#cl-3741">3741</a>
4660
- <a href="#cl-3742">3742</a>
4661
- <a href="#cl-3743">3743</a>
4662
- <a href="#cl-3744">3744</a>
4663
- <a href="#cl-3745">3745</a>
4664
- <a href="#cl-3746">3746</a>
4665
- <a href="#cl-3747">3747</a>
4666
- <a href="#cl-3748">3748</a>
4667
- <a href="#cl-3749">3749</a>
4668
- <a href="#cl-3750">3750</a>
4669
- <a href="#cl-3751">3751</a>
4670
- <a href="#cl-3752">3752</a>
4671
- <a href="#cl-3753">3753</a>
4672
- <a href="#cl-3754">3754</a>
4673
- <a href="#cl-3755">3755</a>
4674
- <a href="#cl-3756">3756</a>
4675
- <a href="#cl-3757">3757</a>
4676
- <a href="#cl-3758">3758</a>
4677
- <a href="#cl-3759">3759</a>
4678
- <a href="#cl-3760">3760</a>
4679
- <a href="#cl-3761">3761</a>
4680
- <a href="#cl-3762">3762</a>
4681
- <a href="#cl-3763">3763</a>
4682
- <a href="#cl-3764">3764</a>
4683
- <a href="#cl-3765">3765</a>
4684
- <a href="#cl-3766">3766</a>
4685
- <a href="#cl-3767">3767</a>
4686
- <a href="#cl-3768">3768</a>
4687
- <a href="#cl-3769">3769</a>
4688
- <a href="#cl-3770">3770</a>
4689
- <a href="#cl-3771">3771</a>
4690
- <a href="#cl-3772">3772</a>
4691
- <a href="#cl-3773">3773</a>
4692
- <a href="#cl-3774">3774</a>
4693
- <a href="#cl-3775">3775</a>
4694
- <a href="#cl-3776">3776</a>
4695
- <a href="#cl-3777">3777</a>
4696
- <a href="#cl-3778">3778</a>
4697
- <a href="#cl-3779">3779</a>
4698
- <a href="#cl-3780">3780</a>
4699
- <a href="#cl-3781">3781</a>
4700
- <a href="#cl-3782">3782</a>
4701
- <a href="#cl-3783">3783</a>
4702
- <a href="#cl-3784">3784</a>
4703
- <a href="#cl-3785">3785</a>
4704
- <a href="#cl-3786">3786</a>
4705
- <a href="#cl-3787">3787</a>
4706
- <a href="#cl-3788">3788</a>
4707
- <a href="#cl-3789">3789</a>
4708
- <a href="#cl-3790">3790</a>
4709
- <a href="#cl-3791">3791</a>
4710
- <a href="#cl-3792">3792</a>
4711
- <a href="#cl-3793">3793</a>
4712
- <a href="#cl-3794">3794</a>
4713
- <a href="#cl-3795">3795</a>
4714
- <a href="#cl-3796">3796</a>
4715
- <a href="#cl-3797">3797</a>
4716
- <a href="#cl-3798">3798</a>
4717
- <a href="#cl-3799">3799</a>
4718
- <a href="#cl-3800">3800</a>
4719
- <a href="#cl-3801">3801</a>
4720
- <a href="#cl-3802">3802</a>
4721
- <a href="#cl-3803">3803</a>
4722
- <a href="#cl-3804">3804</a>
4723
- <a href="#cl-3805">3805</a>
4724
- <a href="#cl-3806">3806</a>
4725
- <a href="#cl-3807">3807</a>
4726
- <a href="#cl-3808">3808</a>
4727
- <a href="#cl-3809">3809</a>
4728
- <a href="#cl-3810">3810</a>
4729
- <a href="#cl-3811">3811</a>
4730
- <a href="#cl-3812">3812</a>
4731
- <a href="#cl-3813">3813</a>
4732
- <a href="#cl-3814">3814</a>
4733
- <a href="#cl-3815">3815</a>
4734
- <a href="#cl-3816">3816</a>
4735
- <a href="#cl-3817">3817</a>
4736
- <a href="#cl-3818">3818</a>
4737
- <a href="#cl-3819">3819</a>
4738
- <a href="#cl-3820">3820</a>
4739
- <a href="#cl-3821">3821</a>
4740
- <a href="#cl-3822">3822</a>
4741
- <a href="#cl-3823">3823</a>
4742
- <a href="#cl-3824">3824</a>
4743
- <a href="#cl-3825">3825</a>
4744
- <a href="#cl-3826">3826</a>
4745
- <a href="#cl-3827">3827</a>
4746
- <a href="#cl-3828">3828</a>
4747
- <a href="#cl-3829">3829</a>
4748
- <a href="#cl-3830">3830</a>
4749
- <a href="#cl-3831">3831</a>
4750
- <a href="#cl-3832">3832</a>
4751
- <a href="#cl-3833">3833</a>
4752
- <a href="#cl-3834">3834</a>
4753
- <a href="#cl-3835">3835</a>
4754
- <a href="#cl-3836">3836</a>
4755
- <a href="#cl-3837">3837</a>
4756
- <a href="#cl-3838">3838</a>
4757
- <a href="#cl-3839">3839</a>
4758
- <a href="#cl-3840">3840</a>
4759
- <a href="#cl-3841">3841</a>
4760
- <a href="#cl-3842">3842</a>
4761
- <a href="#cl-3843">3843</a>
4762
- <a href="#cl-3844">3844</a>
4763
- <a href="#cl-3845">3845</a>
4764
- <a href="#cl-3846">3846</a>
4765
- <a href="#cl-3847">3847</a>
4766
- <a href="#cl-3848">3848</a>
4767
- <a href="#cl-3849">3849</a>
4768
- <a href="#cl-3850">3850</a>
4769
- <a href="#cl-3851">3851</a>
4770
- <a href="#cl-3852">3852</a>
4771
- <a href="#cl-3853">3853</a>
4772
- <a href="#cl-3854">3854</a>
4773
- <a href="#cl-3855">3855</a>
4774
- <a href="#cl-3856">3856</a>
4775
- <a href="#cl-3857">3857</a>
4776
- <a href="#cl-3858">3858</a>
4777
- <a href="#cl-3859">3859</a>
4778
- <a href="#cl-3860">3860</a>
4779
- <a href="#cl-3861">3861</a>
4780
- <a href="#cl-3862">3862</a>
4781
- <a href="#cl-3863">3863</a>
4782
- <a href="#cl-3864">3864</a>
4783
- <a href="#cl-3865">3865</a>
4784
- <a href="#cl-3866">3866</a>
4785
- <a href="#cl-3867">3867</a>
4786
- <a href="#cl-3868">3868</a>
4787
- <a href="#cl-3869">3869</a>
4788
- <a href="#cl-3870">3870</a>
4789
- <a href="#cl-3871">3871</a>
4790
- <a href="#cl-3872">3872</a>
4791
- <a href="#cl-3873">3873</a>
4792
- <a href="#cl-3874">3874</a>
4793
- <a href="#cl-3875">3875</a>
4794
- <a href="#cl-3876">3876</a>
4795
- <a href="#cl-3877">3877</a>
4796
- <a href="#cl-3878">3878</a>
4797
- <a href="#cl-3879">3879</a>
4798
- <a href="#cl-3880">3880</a>
4799
- <a href="#cl-3881">3881</a>
4800
- <a href="#cl-3882">3882</a>
4801
- <a href="#cl-3883">3883</a>
4802
- <a href="#cl-3884">3884</a>
4803
- <a href="#cl-3885">3885</a>
4804
- <a href="#cl-3886">3886</a>
4805
- <a href="#cl-3887">3887</a>
4806
- <a href="#cl-3888">3888</a>
4807
- <a href="#cl-3889">3889</a>
4808
- <a href="#cl-3890">3890</a>
4809
- <a href="#cl-3891">3891</a>
4810
- <a href="#cl-3892">3892</a>
4811
- <a href="#cl-3893">3893</a>
4812
- <a href="#cl-3894">3894</a>
4813
- <a href="#cl-3895">3895</a>
4814
- <a href="#cl-3896">3896</a>
4815
- <a href="#cl-3897">3897</a>
4816
- <a href="#cl-3898">3898</a>
4817
- <a href="#cl-3899">3899</a>
4818
- <a href="#cl-3900">3900</a>
4819
- <a href="#cl-3901">3901</a>
4820
- <a href="#cl-3902">3902</a>
4821
- <a href="#cl-3903">3903</a>
4822
- <a href="#cl-3904">3904</a>
4823
- <a href="#cl-3905">3905</a>
4824
- <a href="#cl-3906">3906</a>
4825
- <a href="#cl-3907">3907</a>
4826
- <a href="#cl-3908">3908</a>
4827
- <a href="#cl-3909">3909</a>
4828
- <a href="#cl-3910">3910</a>
4829
- <a href="#cl-3911">3911</a>
4830
- <a href="#cl-3912">3912</a>
4831
- <a href="#cl-3913">3913</a>
4832
- <a href="#cl-3914">3914</a>
4833
- <a href="#cl-3915">3915</a>
4834
- </pre></div></td>
4835
- <td class="code"><div class="highlight"><pre>
4836
- <a name="cl-1"></a>msgid ""
4837
- <a name="cl-2"></a>msgstr ""
4838
- <a name="cl-3"></a>"Project-Id-Version: NextCellent Gallery suomeksi\n"
4839
- <a name="cl-4"></a>"POT-Creation-Date: 2014-09-17 16:36+0100\n"
4840
- <a name="cl-5"></a>"PO-Revision-Date: \n"
4841
- <a name="cl-6"></a>"Last-Translator: Niko Strijbol &lt;strijbol.niko@gmail.com&gt;\n"
4842
- <a name="cl-7"></a>"Language-Team: Vesa Tiirikainen &lt;vesa@tiirikainen.fi&gt;\n"
4843
- <a name="cl-8"></a>"Language: fi\n"
4844
- <a name="cl-9"></a>"MIME-Version: 1.0\n"
4845
- <a name="cl-10"></a>"Content-Type: text/plain; charset=UTF-8\n"
4846
- <a name="cl-11"></a>"Content-Transfer-Encoding: 8bit\n"
4847
- <a name="cl-12"></a>"X-Poedit-SourceCharset: UTF-8\n"
4848
- <a name="cl-13"></a>"X-Generator: Poedit 1.6.9\n"
4849
- <a name="cl-14"></a>
4850
- <a name="cl-15"></a>#: ../admin/about.php:9 ../admin/admin.php:140 ../admin/admin.php:186
4851
- <a name="cl-16"></a>msgid "About"
4852
- <a name="cl-17"></a>msgstr "Lisäosasta"
4853
- <a name="cl-18"></a>
4854
- <a name="cl-19"></a>#: ../admin/about.php:12
4855
- <a name="cl-20"></a>msgid "Contributors"
4856
- <a name="cl-21"></a>msgstr "Tukijat"
4857
- <a name="cl-22"></a>
4858
- <a name="cl-23"></a>#: ../admin/about.php:14
4859
- <a name="cl-24"></a>msgid ""
4860
- <a name="cl-25"></a>"This plugin is made possible by the great work of a lot of people. A special "
4861
- <a name="cl-26"></a>"thanks the following people:"
4862
- <a name="cl-27"></a>msgstr ""
4863
- <a name="cl-28"></a>"Monien ihmisten hieno työ on tehnyt tämän lisäosan mahdolliseksi. "
4864
- <a name="cl-29"></a>"Erityiskiitokset seuraaville ihmisille: "
4865
- <a name="cl-30"></a>
4866
- <a name="cl-31"></a>#: ../admin/about.php:16
4867
- <a name="cl-32"></a>msgid "for their great documented code"
4868
- <a name="cl-33"></a>msgstr "heidän hienosta dokumentoidusta koodistaan"
4869
- <a name="cl-34"></a>
4870
- <a name="cl-35"></a>#: ../admin/about.php:17
4871
- <a name="cl-36"></a>msgid "for jQuery, which is the best Web2.0 framework"
4872
- <a name="cl-37"></a>msgstr "jQuery:sta, parhaasta Web2.0 kehikosta"
4873
- <a name="cl-38"></a>
4874
- <a name="cl-39"></a>#: ../admin/about.php:18
4875
- <a name="cl-40"></a>msgid "for the fantastic PHP Thumbnail Class"
4876
- <a name="cl-41"></a>msgstr "fantastisesta PHP Thumbnail -luokasta"
4877
- <a name="cl-42"></a>
4878
- <a name="cl-43"></a>#: ../admin/about.php:19
4879
- <a name="cl-44"></a>msgid "for a lot of very useful plugins and ideas"
4880
- <a name="cl-45"></a>msgstr "useista hyvin kätevistä lisäosista ja ideoista"
4881
- <a name="cl-46"></a>
4882
- <a name="cl-47"></a>#: ../admin/about.php:20
4883
- <a name="cl-48"></a>msgid "for Shutter Reloaded, a real lightweight image effect"
4884
- <a name="cl-49"></a>msgstr "Shutter Reloadedista - tosi kevyesttä kuvaefektistä"
4885
- <a name="cl-50"></a>
4886
- <a name="cl-51"></a>#: ../admin/about.php:21
4887
- <a name="cl-52"></a>msgid "for the best Media Flash Scripts on earth"
4888
- <a name="cl-53"></a>msgstr "maailman parhaista Media Flash -skripteistä"
4889
- <a name="cl-54"></a>
4890
- <a name="cl-55"></a>#: ../admin/about.php:22
4891
- <a name="cl-56"></a>msgid "for the Gallery Icon"
4892
- <a name="cl-57"></a>msgstr "Gallerian kuvakkeesta"
4893
- <a name="cl-58"></a>
4894
- <a name="cl-59"></a>#: ../admin/about.php:23
4895
- <a name="cl-60"></a>msgid "for the Watermark plugin"
4896
- <a name="cl-61"></a>msgstr "Vesileima-lisäosasta"
4897
- <a name="cl-62"></a>
4898
- <a name="cl-63"></a>#: ../admin/about.php:24
4899
- <a name="cl-64"></a>msgid "for maintaining this fork of NextGen Gallery"
4900
- <a name="cl-65"></a>msgstr "tämän NextGen Galleryn seuraajan ylläpidosta"
4901
- <a name="cl-66"></a>
4902
- <a name="cl-67"></a>#: ../admin/about.php:25
4903
- <a name="cl-68"></a>msgid "The original translators for NextGen Gallery, who made the translations"
4904
- <a name="cl-69"></a>msgstr "NextGen Gallery alkuperäisistä kääntäjistä, jotka loivat käännökset"
4905
- <a name="cl-70"></a>
4906
- <a name="cl-71"></a>#: ../admin/about.php:31
4907
- <a name="cl-72"></a>msgid "NextCellent"
4908
- <a name="cl-73"></a>msgstr "NextCellent"
4909
- <a name="cl-74"></a>
4910
- <a name="cl-75"></a>#: ../admin/about.php:33
4911
- <a name="cl-76"></a>msgid ""
4912
- <a name="cl-77"></a>"NextCellent Gallery is based on the 1.9.13 version of the NextGen Gallery by "
4913
- <a name="cl-78"></a>"Photocrati Media, which is the succesor to the work by Alex Rabe."
4914
- <a name="cl-79"></a>msgstr ""
4915
- <a name="cl-80"></a>"NextCellent Gallery perustuu NextGen Gallery by Photocrati Median versioon "
4916
- <a name="cl-81"></a>"1.9.13, joka on Alex Raben työn suora jatke."
4917
- <a name="cl-82"></a>
4918
- <a name="cl-83"></a>#: ../admin/about.php:34
4919
- <a name="cl-84"></a>msgid "What do you get with NextCellent Gallery?"
4920
- <a name="cl-85"></a>msgstr "Mitä saat NextCellent Gallerylla?"
4921
- <a name="cl-86"></a>
4922
- <a name="cl-87"></a>#: ../admin/about.php:36
4923
- <a name="cl-88"></a>msgid "Backward compatibility with NextGEN plugin version (1.9.13)"
4924
- <a name="cl-89"></a>msgstr "Taaksepäin yhteensopiva NextGEN -llisäosan versioon (1.9.13)"
4925
- <a name="cl-90"></a>
4926
- <a name="cl-91"></a>#: ../admin/about.php:37
4927
- <a name="cl-92"></a>msgid ""
4928
- <a name="cl-93"></a>"Slow evolving code path, made only by NextGEN user's suggestions. Yep, you "
4929
- <a name="cl-94"></a>"read it right: slow in counterpart as fast. Older code is good enough to "
4930
- <a name="cl-95"></a>"keep a community and it worked (and works) for most people."
4931
- <a name="cl-96"></a>msgstr ""
4932
- <a name="cl-97"></a>"Hitaasti kehittyvä koodi, jonka muutokset perustuvat ainoastaan NextGENin "
4933
- <a name="cl-98"></a>"käyttäjien ehdotuksiin. Yep, olet oikeassa: hidas on nopean vastakohta. "
4934
- <a name="cl-99"></a>"Vanhempi koodi on tarpeeksi hyvää säilyttämään yhteisön ja se toimi (ja "
4935
- <a name="cl-100"></a>"toimii yhä) useimmilla käyttäjillä."
4936
- <a name="cl-101"></a>
4937
- <a name="cl-102"></a>#: ../admin/about.php:38
4938
- <a name="cl-103"></a>msgid "A reliable way to work with already installed NextGEN galleries."
4939
- <a name="cl-104"></a>msgstr ""
4940
- <a name="cl-105"></a>"Luotettava tie työskennellä jo asennettujen NextGEN -gallerioiden kanssa."
4941
- <a name="cl-106"></a>
4942
- <a name="cl-107"></a>#: ../admin/about.php:39
4943
- <a name="cl-108"></a>msgid ""
4944
- <a name="cl-109"></a>"A place for updating the plugin without using FTP manual updates, but "
4945
- <a name="cl-110"></a>"WordPress plugin repository."
4946
- <a name="cl-111"></a>msgstr ""
4947
- <a name="cl-112"></a>"Lisäosan päivitys suoraan WordPressin lisäosien hakemistosta, ei käsin "
4948
- <a name="cl-113"></a>"tehtyjä päivityksiä FTP:llä."
4949
- <a name="cl-114"></a>
4950
- <a name="cl-115"></a>#: ../admin/about.php:40
4951
- <a name="cl-116"></a>msgid "Alternative path preserving backward compatibility (while possible)."
4952
- <a name="cl-117"></a>msgstr ""
4953
- <a name="cl-118"></a>"Vaihtoehtoinen tie säilyttää yhteensopivuus taaksepäin (aina kun "
4954
- <a name="cl-119"></a>"mahdollista)."
4955
- <a name="cl-120"></a>
4956
- <a name="cl-121"></a>#: ../admin/about.php:46
4957
- <a name="cl-122"></a>msgid "How to support us?"
4958
- <a name="cl-123"></a>msgstr "Miten tukea meitä?"
4959
- <a name="cl-124"></a>
4960
- <a name="cl-125"></a>#: ../admin/about.php:48
4961
- <a name="cl-126"></a>msgid "There are several ways to contribute:"
4962
- <a name="cl-127"></a>msgstr "On useita tapoja tukea: "
4963
- <a name="cl-128"></a>
4964
- <a name="cl-129"></a>#: ../admin/about.php:50
4965
- <a name="cl-130"></a>msgid "Send us bugfixes / code changes"
4966
- <a name="cl-131"></a>msgstr "Lähetä meille bugikorjauksia / koodimuutoksia"
4967
- <a name="cl-132"></a>
4968
- <a name="cl-133"></a>#: ../admin/about.php:50
4969
- <a name="cl-134"></a>msgid ""
4970
- <a name="cl-135"></a>"The most motivated support for this plugin are your ideas and brain work."
4971
- <a name="cl-136"></a>msgstr "Ideasi ja ajatuksesti ovat kaikkein motivoivin tuki tälle lisäosalle."
4972
- <a name="cl-137"></a>
4973
- <a name="cl-138"></a>#: ../admin/about.php:51
4974
- <a name="cl-139"></a>msgid "Translate the plugin"
4975
- <a name="cl-140"></a>msgstr "Käännä lisäosa."
4976
- <a name="cl-141"></a>
4977
- <a name="cl-142"></a>#: ../admin/about.php:51
4978
- <a name="cl-143"></a>msgid ""
4979
- <a name="cl-144"></a>"To help people to work with this plugin, we would like to have it in all "
4980
- <a name="cl-145"></a>"available languages."
4981
- <a name="cl-146"></a>msgstr ""
4982
- <a name="cl-147"></a>"Jotta ihmiset voivat työskennellä tämän lisäosan kanssa, haluaisimme sen "
4983
- <a name="cl-148"></a>"olevan saatavilla kaikilla kielillä."
4984
- <a name="cl-149"></a>
4985
- <a name="cl-150"></a>#: ../admin/about.php:52
4986
- <a name="cl-151"></a>msgid "Place a link to the plugin in your blog/webpage"
4987
- <a name="cl-152"></a>msgstr "Pistä linkki lisäosaan blogiisi tai sivustollesi"
4988
- <a name="cl-153"></a>
4989
- <a name="cl-154"></a>#: ../admin/about.php:52
4990
- <a name="cl-155"></a>msgid "Yes, sharing and linking are also supportive and helpful."
4991
- <a name="cl-156"></a>msgstr "Kyllä, jakaminen ja linkitys auttavat ja tukevat myös."
4992
- <a name="cl-157"></a>
4993
- <a name="cl-158"></a>#: ../admin/addgallery.php:35 ../admin/addgallery.php:46
4994
- <a name="cl-159"></a>#: ../admin/addgallery.php:58 ../admin/addgallery.php:69 ../admin/album.php:88
4995
- <a name="cl-160"></a>#: ../admin/album.php:123 ../admin/album.php:145
4996
- <a name="cl-161"></a>#: ../admin/edit-thumbnail.php:19 ../admin/edit-thumbnail.php:22
4997
- <a name="cl-162"></a>#: ../admin/manage.php:188 ../admin/publish.php:7 ../admin/publish.php:10
4998
- <a name="cl-163"></a>#: ../admin/publish.php:13 ../admin/rotate.php:17 ../admin/rotate.php:20
4999
- <a name="cl-164"></a>#: ../admin/showmeta.php:10 ../admin/showmeta.php:13
5000
- <a name="cl-165"></a>msgid "Cheatin&amp;#8217; uh?"
5001
- <a name="cl-166"></a>msgstr "Huijaatko&amp;#8217; höh?"
5002
- <a name="cl-167"></a>
5003
- <a name="cl-168"></a>#: ../admin/addgallery.php:51 ../admin/addgallery.php:82
5004
- <a name="cl-169"></a>msgid "Upload failed!"
5005
- <a name="cl-170"></a>msgstr "Lataus epäonnistui!"
5006
- <a name="cl-171"></a>
5007
- <a name="cl-172"></a>#: ../admin/addgallery.php:74
5008
- <a name="cl-173"></a>msgid "Upload failed! "
5009
- <a name="cl-174"></a>msgstr "Lataus epäonnistui!"
5010
- <a name="cl-175"></a>
5011
- <a name="cl-176"></a>#: ../admin/addgallery.php:79 ../admin/addgallery.php:269
5012
- <a name="cl-177"></a>#: ../admin/admin.php:304
5013
- <a name="cl-178"></a>msgid "You didn't select a gallery!"
5014
- <a name="cl-179"></a>msgstr "Mikään galleria ei ole valittuna !"
5015
- <a name="cl-180"></a>
5016
- <a name="cl-181"></a>#: ../admin/addgallery.php:149 ../admin/admin.php:131 ../admin/admin.php:175
5017
- <a name="cl-182"></a>msgid "Add Gallery / Images"
5018
- <a name="cl-183"></a>msgstr "Lisää galleria / kuvia"
5019
- <a name="cl-184"></a>
5020
- <a name="cl-185"></a>#: ../admin/addgallery.php:169
5021
- <a name="cl-186"></a>msgid "Image Files"
5022
- <a name="cl-187"></a>msgstr "Kuvatiedostot"
5023
- <a name="cl-188"></a>
5024
- <a name="cl-189"></a>#: ../admin/addgallery.php:196
5025
- <a name="cl-190"></a>msgid "remove"
5026
- <a name="cl-191"></a>msgstr "poista"
5027
- <a name="cl-192"></a>
5028
- <a name="cl-193"></a>#: ../admin/addgallery.php:197 ../admin/addgallery.php:422
5029
- <a name="cl-194"></a>msgid "Browse..."
5030
- <a name="cl-195"></a>msgstr "Selaa..."
5031
- <a name="cl-196"></a>
5032
- <a name="cl-197"></a>#: ../admin/addgallery.php:198 ../admin/addgallery.php:236
5033
- <a name="cl-198"></a>#: ../admin/addgallery.php:440 ../admin/addgallery.php:488
5034
- <a name="cl-199"></a>msgid "Upload images"
5035
- <a name="cl-200"></a>msgstr "Lataa kuvia"
5036
- <a name="cl-201"></a>
5037
- <a name="cl-202"></a>#: ../admin/addgallery.php:332
5038
- <a name="cl-203"></a>msgid "New gallery"
5039
- <a name="cl-204"></a>msgstr "Uusi galleria"
5040
- <a name="cl-205"></a>
5041
- <a name="cl-206"></a>#: ../admin/addgallery.php:335 ../admin/manage-galleries.php:414
5042
- <a name="cl-207"></a>#: ../admin/settings.php:286
5043
- <a name="cl-208"></a>msgid "Images"
5044
- <a name="cl-209"></a>msgstr "Kuvia"
5045
- <a name="cl-210"></a>
5046
- <a name="cl-211"></a>#: ../admin/addgallery.php:338
5047
- <a name="cl-212"></a>msgid "ZIP file"
5048
- <a name="cl-213"></a>msgstr "ZIP-tiedosto"
5049
- <a name="cl-214"></a>
5050
- <a name="cl-215"></a>#: ../admin/addgallery.php:341 ../admin/addgallery.php:429
5051
- <a name="cl-216"></a>msgid "Import folder"
5052
- <a name="cl-217"></a>msgstr "Tuo kuvahakemisto"
5053
- <a name="cl-218"></a>
5054
- <a name="cl-219"></a>#: ../admin/addgallery.php:352
5055
- <a name="cl-220"></a>msgid "Add a new gallery"
5056
- <a name="cl-221"></a>msgstr "Lisää uusi galleria"
5057
- <a name="cl-222"></a>
5058
- <a name="cl-223"></a>#: ../admin/addgallery.php:357 ../admin/album.php:547 ../admin/showmeta.php:33
5059
- <a name="cl-224"></a>#: ../admin/showmeta.php:59 ../admin/showmeta.php:84 ../admin/showmeta.php:108
5060
- <a name="cl-225"></a>msgid "Name"
5061
- <a name="cl-226"></a>msgstr "Nimi"
5062
- <a name="cl-227"></a>
5063
- <a name="cl-228"></a>#: ../admin/addgallery.php:360
5064
- <a name="cl-229"></a>msgid "Create a new, empty gallery in the folder"
5065
- <a name="cl-230"></a>msgstr "Luo uusi tyhjä galleria hakemistoon"
5066
- <a name="cl-231"></a>
5067
- <a name="cl-232"></a>#: ../admin/addgallery.php:362 ../admin/manage-galleries.php:282
5068
- <a name="cl-233"></a>msgid "Allowed characters for file and folder names are"
5069
- <a name="cl-234"></a>msgstr "Sallitut merkit tiedosto- ja hakemistonimille ovat"
5070
- <a name="cl-235"></a>
5071
- <a name="cl-236"></a>#: ../admin/addgallery.php:366
5072
- <a name="cl-237"></a>msgid "Add gallery"
5073
- <a name="cl-238"></a>msgstr "Lisää galleria"
5074
- <a name="cl-239"></a>
5075
- <a name="cl-240"></a>#: ../admin/addgallery.php:374
5076
- <a name="cl-241"></a>msgid "Upload a ZIP File"
5077
- <a name="cl-242"></a>msgstr "Lataa ZIP-tiedosto"
5078
- <a name="cl-243"></a>
5079
- <a name="cl-244"></a>#: ../admin/addgallery.php:379
5080
- <a name="cl-245"></a>msgid "Select ZIP file"
5081
- <a name="cl-246"></a>msgstr "Valitse Zip-tiedosto"
5082
- <a name="cl-247"></a>
5083
- <a name="cl-248"></a>#: ../admin/addgallery.php:381
5084
- <a name="cl-249"></a>msgid "Upload a ZIP file with images"
5085
- <a name="cl-250"></a>msgstr "Lataa kuvia sisältävä zip-tiedosto"
5086
- <a name="cl-251"></a>
5087
- <a name="cl-252"></a>#: ../admin/addgallery.php:385
5088
- <a name="cl-253"></a>msgid "or enter URL"
5089
- <a name="cl-254"></a>msgstr "tai anna Zip-tiedoston URL"
5090
- <a name="cl-255"></a>
5091
- <a name="cl-256"></a>#: ../admin/addgallery.php:387
5092
- <a name="cl-257"></a>msgid "Import a ZIP file from a URL"
5093
- <a name="cl-258"></a>msgstr "Lataa kuvia sisältävä zip-tiedosto URLista"
5094
- <a name="cl-259"></a>
5095
- <a name="cl-260"></a>#: ../admin/addgallery.php:391 ../admin/addgallery.php:445
5096
- <a name="cl-261"></a>msgid "in to"
5097
- <a name="cl-262"></a>msgstr "paikkaan"
5098
- <a name="cl-263"></a>
5099
- <a name="cl-264"></a>#: ../admin/addgallery.php:393
5100
- <a name="cl-265"></a>msgid "a new gallery"
5101
- <a name="cl-266"></a>msgstr "uusi galleria"
5102
- <a name="cl-267"></a>
5103
- <a name="cl-268"></a>#: ../admin/addgallery.php:404
5104
- <a name="cl-269"></a>msgid "Note: the upload limit on your server is "
5105
- <a name="cl-270"></a>msgstr "Huom: latausraja palvelimellasi on "
5106
- <a name="cl-271"></a>
5107
- <a name="cl-272"></a>#: ../admin/addgallery.php:408
5108
- <a name="cl-273"></a>msgid "Start upload"
5109
- <a name="cl-274"></a>msgstr "Aloita lataus"
5110
- <a name="cl-275"></a>
5111
- <a name="cl-276"></a>#: ../admin/addgallery.php:416
5112
- <a name="cl-277"></a>msgid "Import an image folder"
5113
- <a name="cl-278"></a>msgstr "Tuo palvelin-polusta:"
5114
- <a name="cl-279"></a>
5115
- <a name="cl-280"></a>#: ../admin/addgallery.php:421
5116
- <a name="cl-281"></a>msgid "Import from server:"
5117
- <a name="cl-282"></a>msgstr "Tuo palvelimelta:"
5118
- <a name="cl-283"></a>
5119
- <a name="cl-284"></a>#: ../admin/addgallery.php:424
5120
- <a name="cl-285"></a>msgid "Note: you can change the default path in the gallery settings"
5121
- <a name="cl-286"></a>msgstr "Huom : muuta oletuspolku gallerian asetuksista"
5122
- <a name="cl-287"></a>
5123
- <a name="cl-288"></a>#: ../admin/addgallery.php:426
5124
- <a name="cl-289"></a>msgid ""
5125
- <a name="cl-290"></a>"Please note: If safe-mode is ON, you need to add the subfolder with thumbs "
5126
- <a name="cl-291"></a>"manually"
5127
- <a name="cl-292"></a>msgstr ""
5128
- <a name="cl-293"></a>"Varoitus : jos safe-mode = ON, alihakemiston esikatselukuvat on lisättävä "
5129
- <a name="cl-294"></a>"manuaalisesti"
5130
- <a name="cl-295"></a>
5131
- <a name="cl-296"></a>#: ../admin/addgallery.php:429 ../admin/manage-images.php:353
5132
- <a name="cl-297"></a>msgid ""
5133
- <a name="cl-298"></a>"This will change folder and file names (e.g. remove spaces, special "
5134
- <a name="cl-299"></a>"characters, ...)"
5135
- <a name="cl-300"></a>msgstr ""
5136
- <a name="cl-301"></a>
5137
- <a name="cl-302"></a>#: ../admin/addgallery.php:429 ../admin/manage-images.php:353
5138
- <a name="cl-303"></a>msgid "You will need to update your URLs if you link directly to the images."
5139
- <a name="cl-304"></a>msgstr ""
5140
- <a name="cl-305"></a>
5141
- <a name="cl-306"></a>#: ../admin/addgallery.php:429 ../admin/manage-images.php:353
5142
- <a name="cl-307"></a>msgid "Press OK to proceed, and Cancel to stop."
5143
- <a name="cl-308"></a>msgstr ""
5144
- <a name="cl-309"></a>
5145
- <a name="cl-310"></a>#: ../admin/addgallery.php:446
5146
- <a name="cl-311"></a>msgid "Choose gallery"
5147
- <a name="cl-312"></a>msgstr "Valitse galleria"
5148
- <a name="cl-313"></a>
5149
- <a name="cl-314"></a>#: ../admin/addgallery.php:468
5150
- <a name="cl-315"></a>#, fuzzy
5151
- <a name="cl-316"></a>msgid "Drop your files in this window"
5152
- <a name="cl-317"></a>msgstr "Tai voit tiputtaa tiedostot tähän ikkunaan. "
5153
- <a name="cl-318"></a>
5154
- <a name="cl-319"></a>#: ../admin/addgallery.php:468
5155
- <a name="cl-320"></a>msgid "Or"
5156
- <a name="cl-321"></a>msgstr ""
5157
- <a name="cl-322"></a>
5158
- <a name="cl-323"></a>#: ../admin/addgallery.php:469
5159
- <a name="cl-324"></a>msgid "Select Files"
5160
- <a name="cl-325"></a>msgstr "Valitse tiedostot"
5161
- <a name="cl-326"></a>
5162
- <a name="cl-327"></a>#: ../admin/addgallery.php:484
5163
- <a name="cl-328"></a>msgid "Click here to use the browser upload instead"
5164
- <a name="cl-329"></a>msgstr ""
5165
- <a name="cl-330"></a>
5166
- <a name="cl-331"></a>#: ../admin/addgallery.php:484
5167
- <a name="cl-332"></a>#, fuzzy
5168
- <a name="cl-333"></a>msgid "Use basic uploader"
5169
- <a name="cl-334"></a>msgstr "Yhtään tiedostoa ei ladattu"
5170
- <a name="cl-335"></a>
5171
- <a name="cl-336"></a>#: ../admin/addgallery.php:486
5172
- <a name="cl-337"></a>msgid "Advanced uploading"
5173
- <a name="cl-338"></a>msgstr ""
5174
- <a name="cl-339"></a>
5175
- <a name="cl-340"></a>#: ../admin/addgallery.php:486
5176
- <a name="cl-341"></a>msgid "Use advanced uploader"
5177
- <a name="cl-342"></a>msgstr ""
5178
- <a name="cl-343"></a>
5179
- <a name="cl-344"></a>#: ../admin/addgallery.php:490
5180
- <a name="cl-345"></a>#, fuzzy, php-format
5181
- <a name="cl-346"></a>msgid "Your images will be rescaled to max width %1$dpx or max height %2$dpx."
5182
- <a name="cl-347"></a>msgstr "Skaalaa kuvat maksimileveyteen %1$dpx tai maksimikorkeuteen %2$dpx"
5183
- <a name="cl-348"></a>
5184
- <a name="cl-349"></a>#: ../admin/admin.php:126 ../admin/admin.php:128 ../admin/admin.php:132
5185
- <a name="cl-350"></a>#: ../admin/admin.php:152 ../admin/manage-galleries.php:126
5186
- <a name="cl-351"></a>msgid "Galleries"
5187
- <a name="cl-352"></a>msgstr "Galleriat"
5188
- <a name="cl-353"></a>
5189
- <a name="cl-354"></a>#: ../admin/admin.php:130 ../admin/admin.php:173 ../nggallery.php:580
5190
- <a name="cl-355"></a>#: ../nggfunctions.php:953
5191
- <a name="cl-356"></a>msgid "Overview"
5192
- <a name="cl-357"></a>msgstr "Yleinen"
5193
- <a name="cl-358"></a>
5194
- <a name="cl-359"></a>#: ../admin/admin.php:133 ../admin/admin.php:179 ../admin/album.php:280
5195
- <a name="cl-360"></a>msgid "Albums"
5196
- <a name="cl-361"></a>msgstr "Albumit"
5197
- <a name="cl-362"></a>
5198
- <a name="cl-363"></a>#: ../admin/admin.php:134 ../admin/admin.php:181
5199
- <a name="cl-364"></a>#: ../admin/manage-images.php:732 ../admin/settings.php:369
5200
- <a name="cl-365"></a>#: ../admin/tags.php:98 ../lib/meta.php:459
5201
- <a name="cl-366"></a>msgid "Tags"
5202
- <a name="cl-367"></a>msgstr "Tägit"
5203
- <a name="cl-368"></a>
5204
- <a name="cl-369"></a>#: ../admin/admin.php:135 ../admin/admin.php:183 ../admin/settings.php:250
5205
- <a name="cl-370"></a>msgid "Settings"
5206
- <a name="cl-371"></a>msgstr "Asetukset"
5207
- <a name="cl-372"></a>
5208
- <a name="cl-373"></a>#: ../admin/admin.php:137 ../admin/admin.php:185
5209
- <a name="cl-374"></a>msgid "Style"
5210
- <a name="cl-375"></a>msgstr "Tyyli"
5211
- <a name="cl-376"></a>
5212
- <a name="cl-377"></a>#: ../admin/admin.php:139
5213
- <a name="cl-378"></a>msgid "Roles"
5214
- <a name="cl-379"></a>msgstr "Roolit"
5215
- <a name="cl-380"></a>
5216
- <a name="cl-381"></a>#: ../admin/admin.php:140
5217
- <a name="cl-382"></a>msgid "About this Gallery"
5218
- <a name="cl-383"></a>msgstr "Tästä galleriasta "
5219
- <a name="cl-384"></a>
5220
- <a name="cl-385"></a>#: ../admin/admin.php:143 ../admin/admin.php:154
5221
- <a name="cl-386"></a>msgid "Reset / Uninstall"
5222
- <a name="cl-387"></a>msgstr "Resetoi / poista"
5223
- <a name="cl-388"></a>
5224
- <a name="cl-389"></a>#: ../admin/admin.php:153
5225
- <a name="cl-390"></a>msgid "Network settings"
5226
- <a name="cl-391"></a>msgstr "Verkkoasetukset"
5227
- <a name="cl-392"></a>
5228
- <a name="cl-393"></a>#: ../admin/admin.php:172 ../admin/admin.php:177 ../admin/admin.php:408
5229
- <a name="cl-394"></a>#: ../admin/admin.php:461 ../admin/functions.php:206
5230
- <a name="cl-395"></a>#: ../admin/functions.php:368 ../admin/manage-images.php:263
5231
- <a name="cl-396"></a>#: ../admin/overview.php:418 ../admin/settings.php:287
5232
- <a name="cl-397"></a>#: ../admin/tinymce/window.php:120 ../admin/tinymce/window.php:153
5233
- <a name="cl-398"></a>#: ../admin/tinymce/window.php:277 ../admin/tinymce/window.php:398
5234
- <a name="cl-399"></a>#: ../admin/tinymce/window.php:449 ../lib/rewrite.php:218
5235
- <a name="cl-400"></a>#: ../lib/rewrite.php:227
5236
- <a name="cl-401"></a>msgid "Gallery"
5237
- <a name="cl-402"></a>msgstr "Galleria"
5238
- <a name="cl-403"></a>
5239
- <a name="cl-404"></a>#: ../admin/admin.php:278
5240
- <a name="cl-405"></a>msgid "You do not have the correct permission"
5241
- <a name="cl-406"></a>msgstr "Sinulla ei ole tarvittavia valtuuksia"
5242
- <a name="cl-407"></a>
5243
- <a name="cl-408"></a>#: ../admin/admin.php:279
5244
- <a name="cl-409"></a>msgid "Unexpected Error"
5245
- <a name="cl-410"></a>msgstr "Odottamaton virhe"
5246
- <a name="cl-411"></a>
5247
- <a name="cl-412"></a>#: ../admin/admin.php:280
5248
- <a name="cl-413"></a>msgid "A failure occurred"
5249
- <a name="cl-414"></a>msgstr "Tapahtui virhe"
5250
- <a name="cl-415"></a>
5251
- <a name="cl-416"></a>#: ../admin/admin.php:284
5252
- <a name="cl-417"></a>msgid "You have attempted to queue too many files."
5253
- <a name="cl-418"></a>msgstr "Olet laittanut jonoon liian monta tiedostoa."
5254
- <a name="cl-419"></a>
5255
- <a name="cl-420"></a>#: ../admin/admin.php:285
5256
- <a name="cl-421"></a>msgid "This file exceeds the maximum upload size for this site."
5257
- <a name="cl-422"></a>msgstr "Tiedosto on suurempi kuin tämän sivuston maksimi latauskoko."
5258
- <a name="cl-423"></a>
5259
- <a name="cl-424"></a>#: ../admin/admin.php:286
5260
- <a name="cl-425"></a>msgid "This file is empty. Please try another."
5261
- <a name="cl-426"></a>msgstr "Tiedosto on tyhjä. Yritä uudelleen. "
5262
- <a name="cl-427"></a>
5263
- <a name="cl-428"></a>#: ../admin/admin.php:287
5264
- <a name="cl-429"></a>msgid "This file type is not allowed. Please try another."
5265
- <a name="cl-430"></a>msgstr "Tiedostotyyppi ei ole sallittu. Yritä uudelleen. "
5266
- <a name="cl-431"></a>
5267
- <a name="cl-432"></a>#: ../admin/admin.php:288
5268
- <a name="cl-433"></a>msgid "This file is not an image. Please try another."
5269
- <a name="cl-434"></a>msgstr "Tämä ei ole kuvatiedosto. Yritä toista tiedostoa."
5270
- <a name="cl-435"></a>
5271
- <a name="cl-436"></a>#: ../admin/admin.php:289
5272
- <a name="cl-437"></a>msgid "Memory exceeded. Please try another smaller file."
5273
- <a name="cl-438"></a>msgstr "Muisti ylitetty. Yritä pienentää tiedostoa. "
5274
- <a name="cl-439"></a>
5275
- <a name="cl-440"></a>#: ../admin/admin.php:290
5276
- <a name="cl-441"></a>msgid "This is larger than the maximum size. Please try another."
5277
- <a name="cl-442"></a>msgstr "Tiedosto on maksimikokoa suurempi. Yritä toista. "
5278
- <a name="cl-443"></a>
5279
- <a name="cl-444"></a>#: ../admin/admin.php:291
5280
- <a name="cl-445"></a>msgid "An error occurred in the upload. Please try again later."
5281
- <a name="cl-446"></a>msgstr "Latauksessa tapahtui virhe.Yritä myöhemmin uudestaan."
5282
- <a name="cl-447"></a>
5283
- <a name="cl-448"></a>#: ../admin/admin.php:292
5284
- <a name="cl-449"></a>msgid ""
5285
- <a name="cl-450"></a>"There was a configuration error. Please contact the server administrator."
5286
- <a name="cl-451"></a>msgstr "Konfiguraatiovirhe. Ota yhteys palvelimen hoitajaan. "
5287
- <a name="cl-452"></a>
5288
- <a name="cl-453"></a>#: ../admin/admin.php:293
5289
- <a name="cl-454"></a>msgid "You may only upload 1 file."
5290
- <a name="cl-455"></a>msgstr "Voit ladata vain yhden tiedoston."
5291
- <a name="cl-456"></a>
5292
- <a name="cl-457"></a>#: ../admin/admin.php:294
5293
- <a name="cl-458"></a>msgid "HTTP error."
5294
- <a name="cl-459"></a>msgstr "HTTP-virhe."
5295
- <a name="cl-460"></a>
5296
- <a name="cl-461"></a>#: ../admin/admin.php:295
5297
- <a name="cl-462"></a>msgid "Upload failed."
5298
- <a name="cl-463"></a>msgstr "Lataus epäonnistui!"
5299
- <a name="cl-464"></a>
5300
- <a name="cl-465"></a>#: ../admin/admin.php:296
5301
- <a name="cl-466"></a>msgid "IO error."
5302
- <a name="cl-467"></a>msgstr "IO-virhe."
5303
- <a name="cl-468"></a>
5304
- <a name="cl-469"></a>#: ../admin/admin.php:297
5305
- <a name="cl-470"></a>msgid "Security error."
5306
- <a name="cl-471"></a>msgstr "Turvavirhe."
5307
- <a name="cl-472"></a>
5308
- <a name="cl-473"></a>#: ../admin/admin.php:298
5309
- <a name="cl-474"></a>msgid "File canceled."
5310
- <a name="cl-475"></a>msgstr "Tiedosto peruutettu."
5311
- <a name="cl-476"></a>
5312
- <a name="cl-477"></a>#: ../admin/admin.php:299
5313
- <a name="cl-478"></a>msgid "Upload stopped."
5314
- <a name="cl-479"></a>msgstr "Lataus lopetettu."
5315
- <a name="cl-480"></a>
5316
- <a name="cl-481"></a>#: ../admin/admin.php:300
5317
- <a name="cl-482"></a>msgid "Dismiss"
5318
- <a name="cl-483"></a>msgstr "Poista"
5319
- <a name="cl-484"></a>
5320
- <a name="cl-485"></a>#: ../admin/admin.php:301
5321
- <a name="cl-486"></a>msgid "Crunching&amp;hellip;"
5322
- <a name="cl-487"></a>msgstr "Työskentelen&amp;hellip;"
5323
- <a name="cl-488"></a>
5324
- <a name="cl-489"></a>#: ../admin/admin.php:302
5325
- <a name="cl-490"></a>msgid "moved to the trash."
5326
- <a name="cl-491"></a>msgstr "siirretty roskakoriin."
5327
- <a name="cl-492"></a>
5328
- <a name="cl-493"></a>#: ../admin/admin.php:303
5329
- <a name="cl-494"></a>#, php-format
5330
- <a name="cl-495"></a>msgid "&amp;#8220;%s&amp;#8221; has failed to upload due to an error"
5331
- <a name="cl-496"></a>msgstr "&amp;#8220;%s&amp;#8221; ei latautunut virheen takia"
5332
- <a name="cl-497"></a>
5333
- <a name="cl-498"></a>#: ../admin/admin.php:323 ../nggallery.php:375
5334
- <a name="cl-499"></a>msgid "L O A D I N G"
5335
- <a name="cl-500"></a>msgstr "L A T A A N"
5336
- <a name="cl-501"></a>
5337
- <a name="cl-502"></a>#: ../admin/admin.php:324 ../nggallery.php:376
5338
- <a name="cl-503"></a>msgid "Click to Close"
5339
- <a name="cl-504"></a>msgstr "Klikkaa sulkeaksesi"
5340
- <a name="cl-505"></a>
5341
- <a name="cl-506"></a>#: ../admin/admin.php:412
5342
- <a name="cl-507"></a>msgid ""
5343
- <a name="cl-508"></a>"&lt;a href=\"http://www.wpgetready.com\" target=\"_blank\"&gt;Introduction&lt;/a&gt;"
5344
- <a name="cl-509"></a>msgstr "&lt;a href=\"http://www.wpgetready.com\" target=\"_blank\"&gt;Johdanto&lt;/a&gt;"
5345
- <a name="cl-510"></a>
5346
- <a name="cl-511"></a>#: ../admin/admin.php:415
5347
- <a name="cl-512"></a>msgid ""
5348
- <a name="cl-513"></a>"&lt;a href=\"http://www.nextgen-gallery.com/languages\" target=\"_blank"
5349
- <a name="cl-514"></a>"\"&gt;Languages&lt;/a&gt;"
5350
- <a name="cl-515"></a>msgstr ""
5351
- <a name="cl-516"></a>"&lt;a href=\"http://www.nextgen-gallery.com/languages\" target=\"_blank"
5352
- <a name="cl-517"></a>"\"&gt;Kielet&lt;/a&gt;"
5353
- <a name="cl-518"></a>
5354
- <a name="cl-519"></a>#: ../admin/admin.php:420
5355
- <a name="cl-520"></a>msgid "Get help with NextCellent Gallery"
5356
- <a name="cl-521"></a>msgstr "Apua NextCellent Galleryyn"
5357
- <a name="cl-522"></a>
5358
- <a name="cl-523"></a>#: ../admin/admin.php:424
5359
- <a name="cl-524"></a>msgid "More Help &amp; Info"
5360
- <a name="cl-525"></a>msgstr "Lisää apua &amp; tietoa"
5361
- <a name="cl-526"></a>
5362
- <a name="cl-527"></a>#: ../admin/admin.php:426
5363
- <a name="cl-528"></a>msgid ""
5364
- <a name="cl-529"></a>"&lt;a href=\"http://wordpress.org/tags/nextcellent-gallery-nextgen-legacy\" "
5365
- <a name="cl-530"></a>"target=\"_blank\"&gt;Support Forums&lt;/a&gt;"
5366
- <a name="cl-531"></a>msgstr ""
5367
- <a name="cl-532"></a>"&lt;a href=\"http://wordpress.org/tags/nextcellent-gallery-nextgen-legacy\" "
5368
- <a name="cl-533"></a>"target=\"_blank\"&gt;Tukifoorumit (engl.)&lt;/a&gt;"
5369
- <a name="cl-534"></a>
5370
- <a name="cl-535"></a>#: ../admin/admin.php:427
5371
- <a name="cl-536"></a>msgid "Download latest version"
5372
- <a name="cl-537"></a>msgstr "Lataa viimeisin versio"
5373
- <a name="cl-538"></a>
5374
- <a name="cl-539"></a>#: ../admin/ajax.php:291
5375
- <a name="cl-540"></a>msgid "You are not allowed to be here"
5376
- <a name="cl-541"></a>msgstr "Sinulla ei ole lupa olla täällä"
5377
- <a name="cl-542"></a>
5378
- <a name="cl-543"></a>#: ../admin/ajax.php:389
5379
- <a name="cl-544"></a>#, php-format
5380
- <a name="cl-545"></a>msgid "Could create image with %s x %s pixel"
5381
- <a name="cl-546"></a>msgstr "Luotiin kuva kooltaan %s x %s pikseliä"
5382
- <a name="cl-547"></a>
5383
- <a name="cl-548"></a>#: ../admin/album.php:97 ../admin/album.php:116 ../admin/album.php:161
5384
- <a name="cl-549"></a>#: ../admin/style.php:31
5385
- <a name="cl-550"></a>#, fuzzy
5386
- <a name="cl-551"></a>msgid "Updated successfully"
5387
- <a name="cl-552"></a>msgstr "Päivitä onnistuneesti"
5388
- <a name="cl-553"></a>
5389
- <a name="cl-554"></a>#: ../admin/album.php:134
5390
- <a name="cl-555"></a>msgid "Album deleted"
5391
- <a name="cl-556"></a>msgstr "Albumi poistettu"
5392
- <a name="cl-557"></a>
5393
- <a name="cl-558"></a>#: ../admin/album.php:272 ../admin/roles.php:59
5394
- <a name="cl-559"></a>msgid "Edit Album"
5395
- <a name="cl-560"></a>msgstr "Muokkaa albumia"
5396
- <a name="cl-561"></a>
5397
- <a name="cl-562"></a>#: ../admin/album.php:286 ../admin/album.php:335
5398
- <a name="cl-563"></a>msgid "Select album"
5399
- <a name="cl-564"></a>msgstr "Valitse albumi"
5400
- <a name="cl-565"></a>
5401
- <a name="cl-566"></a>#: ../admin/album.php:288
5402
- <a name="cl-567"></a>msgid "No album selected"
5403
- <a name="cl-568"></a>msgstr "Ei valittua albumia"
5404
- <a name="cl-569"></a>
5405
- <a name="cl-570"></a>#: ../admin/album.php:299 ../admin/edit-thumbnail.php:150
5406
- <a name="cl-571"></a>#: ../admin/overview.php:539 ../admin/rotate.php:89 ../admin/wpmu.php:114
5407
- <a name="cl-572"></a>msgid "Update"
5408
- <a name="cl-573"></a>msgstr "Päivitä"
5409
- <a name="cl-574"></a>
5410
- <a name="cl-575"></a>#: ../admin/album.php:301
5411
- <a name="cl-576"></a>msgid "Edit album"
5412
- <a name="cl-577"></a>msgstr "Muokkaa albumia"
5413
- <a name="cl-578"></a>
5414
- <a name="cl-579"></a>#: ../admin/album.php:304 ../admin/manage-galleries.php:148
5415
- <a name="cl-580"></a>#: ../admin/manage-images.php:480 ../admin/tags.php:225
5416
- <a name="cl-581"></a>msgid "Delete"
5417
- <a name="cl-582"></a>msgstr "Poista"
5418
- <a name="cl-583"></a>
5419
- <a name="cl-584"></a>#: ../admin/album.php:308
5420
- <a name="cl-585"></a>msgid "Add new album"
5421
- <a name="cl-586"></a>msgstr "Lisää uusi albumi"
5422
- <a name="cl-587"></a>
5423
- <a name="cl-588"></a>#: ../admin/album.php:310
5424
- <a name="cl-589"></a>msgid "Add"
5425
- <a name="cl-590"></a>msgstr "Lisää"
5426
- <a name="cl-591"></a>
5427
- <a name="cl-592"></a>#: ../admin/album.php:321
5428
- <a name="cl-593"></a>msgid "Show / hide used galleries"
5429
- <a name="cl-594"></a>msgstr "Näytä / piilota käytetyt galleriat"
5430
- <a name="cl-595"></a>
5431
- <a name="cl-596"></a>#: ../admin/album.php:321
5432
- <a name="cl-597"></a>msgid "[Show all]"
5433
- <a name="cl-598"></a>msgstr "[Näytä kaikki]"
5434
- <a name="cl-599"></a>
5435
- <a name="cl-600"></a>#: ../admin/album.php:322
5436
- <a name="cl-601"></a>msgid "Maximize the widget content"
5437
- <a name="cl-602"></a>msgstr "Maksimoi vimpaimen sisältö"
5438
- <a name="cl-603"></a>
5439
- <a name="cl-604"></a>#: ../admin/album.php:322
5440
- <a name="cl-605"></a>msgid "[Maximize]"
5441
- <a name="cl-606"></a>msgstr "[Maksimoi]"
5442
- <a name="cl-607"></a>
5443
- <a name="cl-608"></a>#: ../admin/album.php:323
5444
- <a name="cl-609"></a>msgid "Minimize the widget content"
5445
- <a name="cl-610"></a>msgstr "Minimoi vimpaimen sisältö"
5446
- <a name="cl-611"></a>
5447
- <a name="cl-612"></a>#: ../admin/album.php:323
5448
- <a name="cl-613"></a>msgid "[Minimize]"
5449
- <a name="cl-614"></a>msgstr "[Minimoi]"
5450
- <a name="cl-615"></a>
5451
- <a name="cl-616"></a>#: ../admin/album.php:325
5452
- <a name="cl-617"></a>msgid ""
5453
- <a name="cl-618"></a>"After you create and select a album, you can drag and drop a gallery or "
5454
- <a name="cl-619"></a>"another album into your new album below"
5455
- <a name="cl-620"></a>msgstr ""
5456
- <a name="cl-621"></a>"Kun olet luonut ja valinnut albumin, voit lisätä pudottamalla gallerian tai "
5457
- <a name="cl-622"></a>"toisen albumin uuteen albumiisi alla"
5458
- <a name="cl-623"></a>
5459
- <a name="cl-624"></a>#: ../admin/album.php:351
5460
- <a name="cl-625"></a>msgid "Select gallery"
5461
- <a name="cl-626"></a>msgstr "Valitse galleria"
5462
- <a name="cl-627"></a>
5463
- <a name="cl-628"></a>#: ../admin/album.php:380
5464
- <a name="cl-629"></a>msgid "Album ID"
5465
- <a name="cl-630"></a>msgstr "Album ID"
5466
- <a name="cl-631"></a>
5467
- <a name="cl-632"></a>#: ../admin/album.php:393
5468
- <a name="cl-633"></a>msgid "No album selected!"
5469
- <a name="cl-634"></a>msgstr "Albumia ei valittuna"
5470
- <a name="cl-635"></a>
5471
- <a name="cl-636"></a>#: ../admin/album.php:414
5472
- <a name="cl-637"></a>msgid "Album name:"
5473
- <a name="cl-638"></a>msgstr "Albumin nimi :"
5474
- <a name="cl-639"></a>
5475
- <a name="cl-640"></a>#: ../admin/album.php:420
5476
- <a name="cl-641"></a>msgid "Album description:"
5477
- <a name="cl-642"></a>msgstr "Albumin kuvaus:"
5478
- <a name="cl-643"></a>
5479
- <a name="cl-644"></a>#: ../admin/album.php:426
5480
- <a name="cl-645"></a>msgid "Select a preview image:"
5481
- <a name="cl-646"></a>msgstr "Valitse esikatselukuva:"
5482
- <a name="cl-647"></a>
5483
- <a name="cl-648"></a>#: ../admin/album.php:429 ../admin/album.php:432
5484
- <a name="cl-649"></a>msgid "No picture"
5485
- <a name="cl-650"></a>msgstr "Ei kuvaa"
5486
- <a name="cl-651"></a>
5487
- <a name="cl-652"></a>#: ../admin/album.php:443 ../admin/manage-images.php:281
5488
- <a name="cl-653"></a>msgid "Page Link to"
5489
- <a name="cl-654"></a>msgstr "Sivu linkitetty"
5490
- <a name="cl-655"></a>
5491
- <a name="cl-656"></a>#: ../admin/album.php:445 ../admin/manage-images.php:284
5492
- <a name="cl-657"></a>msgid "Not linked"
5493
- <a name="cl-658"></a>msgstr "Ei linkitetty"
5494
- <a name="cl-659"></a>
5495
- <a name="cl-660"></a>#: ../admin/album.php:458 ../admin/manage-galleries.php:288
5496
- <a name="cl-661"></a>#: ../admin/manage-galleries.php:320 ../admin/manage-galleries.php:350
5497
- <a name="cl-662"></a>#: ../admin/manage-images.php:567 ../admin/manage-images.php:602
5498
- <a name="cl-663"></a>#: ../admin/manage-images.php:633 ../admin/manage-images.php:663
5499
- <a name="cl-664"></a>msgid "OK"
5500
- <a name="cl-665"></a>msgstr "OK"
5501
- <a name="cl-666"></a>
5502
- <a name="cl-667"></a>#: ../admin/album.php:460 ../admin/manage-galleries.php:290
5503
- <a name="cl-668"></a>#: ../admin/manage-galleries.php:322 ../admin/manage-galleries.php:352
5504
- <a name="cl-669"></a>#: ../admin/manage-images.php:568 ../admin/manage-images.php:603
5505
- <a name="cl-670"></a>#: ../admin/manage-images.php:634 ../admin/manage-images.php:664
5506
- <a name="cl-671"></a>#: ../admin/tinymce/window.php:472
5507
- <a name="cl-672"></a>msgid "Cancel"
5508
- <a name="cl-673"></a>msgstr "Peruuta"
5509
- <a name="cl-674"></a>
5510
- <a name="cl-675"></a>#: ../admin/album.php:548 ../admin/manage-galleries.php:410
5511
- <a name="cl-676"></a>#: ../admin/manage-images.php:279 ../lib/meta.php:457
5512
- <a name="cl-677"></a>msgid "Title"
5513
- <a name="cl-678"></a>msgstr "Otsikko"
5514
- <a name="cl-679"></a>
5515
- <a name="cl-680"></a>#: ../admin/album.php:549 ../lib/rewrite.php:230
5516
- <a name="cl-681"></a>msgid "Page"
5517
- <a name="cl-682"></a>msgstr "Sivu"
5518
- <a name="cl-683"></a>
5519
- <a name="cl-684"></a>#: ../admin/edit-thumbnail.php:105
5520
- <a name="cl-685"></a>msgid "Select with the mouse the area for the new thumbnail"
5521
- <a name="cl-686"></a>msgstr "Valitse hiirellä uusi alue esikatselukuvalle"
5522
- <a name="cl-687"></a>
5523
- <a name="cl-688"></a>#: ../admin/edit-thumbnail.php:119
5524
- <a name="cl-689"></a>msgid "Thumbnail updated"
5525
- <a name="cl-690"></a>msgstr "Esikatselukuva päivitetty"
5526
- <a name="cl-691"></a>
5527
- <a name="cl-692"></a>#: ../admin/edit-thumbnail.php:124
5528
- <a name="cl-693"></a>msgid "Error updating thumbnail"
5529
- <a name="cl-694"></a>msgstr "Esikatselukuvan päivityksessä virhe"
5530
- <a name="cl-695"></a>
5531
- <a name="cl-696"></a>#: ../admin/edit-thumbnail.php:133
5532
- <a name="cl-697"></a>msgid "Select the area for the thumbnail from the picture on the left."
5533
- <a name="cl-698"></a>msgstr "Valitse vasemmalla olevasta kuvasta esikatselukuvan alue."
5534
- <a name="cl-699"></a>
5535
- <a name="cl-700"></a>#: ../admin/functions.php:39
5536
- <a name="cl-701"></a>msgid "No valid gallery name!"
5537
- <a name="cl-702"></a>msgstr "Gallerian nimi ei kelpaa!"
5538
- <a name="cl-703"></a>
5539
- <a name="cl-704"></a>#: ../admin/functions.php:46 ../admin/functions.php:55
5540
- <a name="cl-705"></a>#: ../admin/functions.php:80 ../admin/functions.php:151
5541
- <a name="cl-706"></a>#: ../admin/functions.php:158 ../admin/functions.php:338
5542
- <a name="cl-707"></a>#: ../admin/functions.php:346
5543
- <a name="cl-708"></a>msgid "Directory"
5544
- <a name="cl-709"></a>msgstr "Hakemisto"
5545
- <a name="cl-710"></a>
5546
- <a name="cl-711"></a>#: ../admin/functions.php:46
5547
- <a name="cl-712"></a>msgid "didn't exist. Please create first the main gallery folder "
5548
- <a name="cl-713"></a>msgstr "ei löydy. Luo ensin päägallerian hakemisto."
5549
- <a name="cl-714"></a>
5550
- <a name="cl-715"></a>#: ../admin/functions.php:47 ../admin/functions.php:56
5551
- <a name="cl-716"></a>msgid "Check this link, if you didn't know how to set the permission :"
5552
- <a name="cl-717"></a>msgstr "Tarkista tästä linkistä, jos et tiedä miten valtuus asetetaan:"
5553
- <a name="cl-718"></a>
5554
- <a name="cl-719"></a>#: ../admin/functions.php:55 ../admin/functions.php:80
5555
- <a name="cl-720"></a>msgid "is not writeable !"
5556
- <a name="cl-721"></a>msgstr "ei voi kirjoittaa !"
5557
- <a name="cl-722"></a>
5558
- <a name="cl-723"></a>#: ../admin/functions.php:76 ../admin/functions.php:85
5559
- <a name="cl-724"></a>#: ../admin/functions.php:1096 ../lib/core.php:102
5560
- <a name="cl-725"></a>msgid "Unable to create directory "
5561
- <a name="cl-726"></a>msgstr "Hakemiston luonti ei onnistu"
5562
- <a name="cl-727"></a>
5563
- <a name="cl-728"></a>#: ../admin/functions.php:89
5564
- <a name="cl-729"></a>msgid "The server setting Safe-Mode is on !"
5565
- <a name="cl-730"></a>msgstr "Palvelimella on käytössä Safe-Mode (PHP.INI)"
5566
- <a name="cl-731"></a>
5567
- <a name="cl-732"></a>#: ../admin/functions.php:90
5568
- <a name="cl-733"></a>msgid "If you have problems, please create directory"
5569
- <a name="cl-734"></a>msgstr "Jos ongelmia, luo hakemisto"
5570
- <a name="cl-735"></a>
5571
- <a name="cl-736"></a>#: ../admin/functions.php:91
5572
- <a name="cl-737"></a>msgid "and the thumbnails directory"
5573
- <a name="cl-738"></a>msgstr "ja Thumbnails-hakemisto"
5574
- <a name="cl-739"></a>
5575
- <a name="cl-740"></a>#: ../admin/functions.php:91
5576
- <a name="cl-741"></a>msgid "with permission 777 manually !"
5577
- <a name="cl-742"></a>msgstr "valtuutus 777 manuaalisesti !"
5578
- <a name="cl-743"></a>
5579
- <a name="cl-744"></a>#: ../admin/functions.php:116
5580
- <a name="cl-745"></a>#, php-format
5581
- <a name="cl-746"></a>msgid ""
5582
- <a name="cl-747"></a>"Gallery ID %1$s successfully created. You can show this gallery in your post "
5583
- <a name="cl-748"></a>"or page with the shortcode %2$s.&lt;br/&gt;"
5584
- <a name="cl-749"></a>msgstr ""
5585
- <a name="cl-750"></a>"Galleria ID %1$s luonti onnistui. &lt;br&gt; Voit näyttää tämän gallerian "
5586
- <a name="cl-751"></a>"artikkelissasi tai sivullasi lyhytkoodilla %2$s .&lt;br/&gt;"
5587
- <a name="cl-752"></a>
5588
- <a name="cl-753"></a>#: ../admin/functions.php:119 ../admin/functions.php:303
5589
- <a name="cl-754"></a>#: ../admin/functions.php:406
5590
- <a name="cl-755"></a>msgid "Edit gallery"
5591
- <a name="cl-756"></a>msgstr "Muokkaa galleriaa"
5592
- <a name="cl-757"></a>
5593
- <a name="cl-758"></a>#: ../admin/functions.php:151 ../admin/functions.php:338
5594
- <a name="cl-759"></a>msgid "doesn&amp;#96;t exist!"
5595
- <a name="cl-760"></a>msgstr "ei ole olemassa !"
5596
- <a name="cl-761"></a>
5597
- <a name="cl-762"></a>#: ../admin/functions.php:158 ../admin/functions.php:346
5598
- <a name="cl-763"></a>msgid "contains no pictures"
5599
- <a name="cl-764"></a>msgstr "ei sisällä kuvia "
5600
- <a name="cl-765"></a>
5601
- <a name="cl-766"></a>#: ../admin/functions.php:185
5602
- <a name="cl-767"></a>msgid "Something went wrong when renaming"
5603
- <a name="cl-768"></a>msgstr ""
5604
- <a name="cl-769"></a>
5605
- <a name="cl-770"></a>#: ../admin/functions.php:185
5606
- <a name="cl-771"></a>msgid "Importing was aborted."
5607
- <a name="cl-772"></a>msgstr ""
5608
- <a name="cl-773"></a>
5609
- <a name="cl-774"></a>#: ../admin/functions.php:203 ../admin/functions.php:365
5610
- <a name="cl-775"></a>msgid "Database error. Could not add gallery!"
5611
- <a name="cl-776"></a>msgstr "Tietokantavirhe. Gallerian lisäys ei onnistunut!"
5612
- <a name="cl-777"></a>
5613
- <a name="cl-778"></a>#: ../admin/functions.php:206 ../admin/functions.php:368
5614
- <a name="cl-779"></a>msgid "successfully created!"
5615
- <a name="cl-780"></a>msgstr "luonti onnistui!"
5616
- <a name="cl-781"></a>
5617
- <a name="cl-782"></a>#: ../admin/functions.php:293 ../admin/functions.php:401
5618
- <a name="cl-783"></a>#: ../admin/functions.php:1213 ../admin/manage-galleries.php:80
5619
- <a name="cl-784"></a>#: ../admin/manage-galleries.php:150 ../admin/manage-images.php:227
5620
- <a name="cl-785"></a>#: ../admin/manage-images.php:371 ../admin/manage.php:227
5621
- <a name="cl-786"></a>#: ../admin/manage.php:304
5622
- <a name="cl-787"></a>msgid "Create new thumbnails"
5623
- <a name="cl-788"></a>msgstr "Luo uudet esikatselukuvat"
5624
- <a name="cl-789"></a>
5625
- <a name="cl-790"></a>#: ../admin/functions.php:298
5626
- <a name="cl-791"></a>#, fuzzy
5627
- <a name="cl-792"></a>msgid " picture(s) successfully renamed"
5628
- <a name="cl-793"></a>msgstr " kuva(t) lisätty onnistuneesti"
5629
- <a name="cl-794"></a>
5630
- <a name="cl-795"></a>#: ../admin/functions.php:300 ../admin/functions.php:404
5631
- <a name="cl-796"></a>msgid " picture(s) successfully added"
5632
- <a name="cl-797"></a>msgstr " kuva(t) lisätty onnistuneesti"
5633
- <a name="cl-798"></a>
5634
- <a name="cl-799"></a>#: ../admin/functions.php:307
5635
- <a name="cl-800"></a>#, fuzzy
5636
- <a name="cl-801"></a>msgid "No images were added."
5637
- <a name="cl-802"></a>msgstr "Yhtään kuvaa ei valittuna"
5638
- <a name="cl-803"></a>
5639
- <a name="cl-804"></a>#: ../admin/functions.php:459 ../admin/functions.php:539
5640
- <a name="cl-805"></a>#: ../admin/functions.php:594 ../admin/functions.php:691
5641
- <a name="cl-806"></a>#: ../admin/functions.php:745
5642
- <a name="cl-807"></a>msgid "Object didn't contain correct data"
5643
- <a name="cl-808"></a>msgstr "Objekti ei sisältänyt oikeita tietoja"
5644
- <a name="cl-809"></a>
5645
- <a name="cl-810"></a>#: ../admin/functions.php:467
5646
- <a name="cl-811"></a>msgid " is not writeable "
5647
- <a name="cl-812"></a>msgstr "ei voida kirjoittaa !"
5648
- <a name="cl-813"></a>
5649
- <a name="cl-814"></a>#: ../admin/functions.php:549 ../admin/functions.php:597
5650
- <a name="cl-815"></a>#: ../admin/functions.php:697 ../admin/functions.php:748
5651
- <a name="cl-816"></a>msgid " is not writeable"
5652
- <a name="cl-817"></a>msgstr "ei voida kirjoittaa !"
5653
- <a name="cl-818"></a>
5654
- <a name="cl-819"></a>#: ../admin/functions.php:751
5655
- <a name="cl-820"></a>msgid "File do not exists"
5656
- <a name="cl-821"></a>msgstr "Tiedosto ei ole olemassa"
5657
- <a name="cl-822"></a>
5658
- <a name="cl-823"></a>#: ../admin/functions.php:755
5659
- <a name="cl-824"></a>msgid "Couldn't restore original image"
5660
- <a name="cl-825"></a>msgstr "Alkuperäisen kuvan palautus ei onnistunut "
5661
- <a name="cl-826"></a>
5662
- <a name="cl-827"></a>#: ../admin/functions.php:871
5663
- <a name="cl-828"></a>msgid "(Error : Couldn't not update data base)"
5664
- <a name="cl-829"></a>msgstr "(Virhe : tietokannan päivitys ei onnistunut)"
5665
- <a name="cl-830"></a>
5666
- <a name="cl-831"></a>#: ../admin/functions.php:878
5667
- <a name="cl-832"></a>msgid "(Error : Couldn't not update meta data)"
5668
- <a name="cl-833"></a>msgstr "(Virhe : metatietojen päivitys ei onnistunut)"
5669
- <a name="cl-834"></a>
5670
- <a name="cl-835"></a>#: ../admin/functions.php:887
5671
- <a name="cl-836"></a>msgid "(Error : Couldn't not find image)"
5672
- <a name="cl-837"></a>msgstr "(Virhe : kuvaa ei löytynyt)"
5673
- <a name="cl-838"></a>
5674
- <a name="cl-839"></a>#: ../admin/functions.php:1030
5675
- <a name="cl-840"></a>msgid "No valid URL path "
5676
- <a name="cl-841"></a>msgstr "URL-polku ei kelpaa"
5677
- <a name="cl-842"></a>
5678
- <a name="cl-843"></a>#: ../admin/functions.php:1046
5679
- <a name="cl-844"></a>msgid "Import via cURL failed."
5680
- <a name="cl-845"></a>msgstr "cURL-tuonti epäonnistui. "
5681
- <a name="cl-846"></a>
5682
- <a name="cl-847"></a>#: ../admin/functions.php:1063
5683
- <a name="cl-848"></a>msgid "Uploaded file was no or a faulty zip file ! The server recognized : "
5684
- <a name="cl-849"></a>msgstr ""
5685
- <a name="cl-850"></a>"Ladattu tiedosto ei ollut tai oli väärä zip-tiedosto. Palvelimen ilmoitus :"
5686
- <a name="cl-851"></a>
5687
- <a name="cl-852"></a>#: ../admin/functions.php:1080
5688
- <a name="cl-853"></a>msgid "Could not get a valid foldername"
5689
- <a name="cl-854"></a>msgstr "Ei kelvollista hakemistonimeä"
5690
- <a name="cl-855"></a>
5691
- <a name="cl-856"></a>#: ../admin/functions.php:1091
5692
- <a name="cl-857"></a>#, php-format
5693
- <a name="cl-858"></a>msgid ""
5694
- <a name="cl-859"></a>"Unable to create directory %s. Is its parent directory writable by the "
5695
- <a name="cl-860"></a>"server?"
5696
- <a name="cl-861"></a>msgstr ""
5697
- <a name="cl-862"></a>"Hakemiston %s luonti ei onnistunut. Voiko päähakemistoon palvelimella "
5698
- <a name="cl-863"></a>"kirjoittaa?"
5699
- <a name="cl-864"></a>
5700
- <a name="cl-865"></a>#: ../admin/functions.php:1106
5701
- <a name="cl-866"></a>msgid "Zip-File successfully unpacked"
5702
- <a name="cl-867"></a>msgstr "Zip-tiedosto purettu onnistuneesti"
5703
- <a name="cl-868"></a>
5704
- <a name="cl-869"></a>#: ../admin/functions.php:1137 ../admin/functions.php:1237
5705
- <a name="cl-870"></a>msgid "No gallery selected !"
5706
- <a name="cl-871"></a>msgstr "Ei galleriaa valittuna !"
5707
- <a name="cl-872"></a>
5708
- <a name="cl-873"></a>#: ../admin/functions.php:1145 ../admin/functions.php:1262
5709
- <a name="cl-874"></a>msgid "Failure in database, no gallery path set !"
5710
- <a name="cl-875"></a>msgstr "Tietokantavirhe, gallerialle ei ole asetettu polkua!"
5711
- <a name="cl-876"></a>
5712
- <a name="cl-877"></a>#: ../admin/functions.php:1169 ../admin/functions.php:1256
5713
- <a name="cl-878"></a>msgid "is no valid image file!"
5714
- <a name="cl-879"></a>msgstr "ei ole kelvollinen kuvatiedosto !"
5715
- <a name="cl-880"></a>
5716
- <a name="cl-881"></a>#: ../admin/functions.php:1183 ../admin/functions.php:1381
5717
- <a name="cl-882"></a>#: ../admin/functions.php:1458
5718
- <a name="cl-883"></a>#, php-format
5719
- <a name="cl-884"></a>msgid ""
5720
- <a name="cl-885"></a>"Unable to write to directory %s. Is this directory writable by the server?"
5721
- <a name="cl-886"></a>msgstr ""
5722
- <a name="cl-887"></a>"Hakemistoon %s ei voi kirjoittaa. Onko hakemisto palvelimella "
5723
- <a name="cl-888"></a>"kirjoitussuojattu?"
5724
- <a name="cl-889"></a>
5725
- <a name="cl-890"></a>#: ../admin/functions.php:1190 ../admin/functions.php:1279
5726
- <a name="cl-891"></a>msgid "Error, the file could not be moved to : "
5727
- <a name="cl-892"></a>msgstr "Virhe: tiedostoa ei voitu siirtää kohtaan :"
5728
- <a name="cl-893"></a>
5729
- <a name="cl-894"></a>#: ../admin/functions.php:1195 ../admin/functions.php:1283
5730
- <a name="cl-895"></a>msgid "Error, the file permissions could not be set"
5731
- <a name="cl-896"></a>msgstr "Virhe: oikeuksia tiedostolle ei voitu asettaa"
5732
- <a name="cl-897"></a>
5733
- <a name="cl-898"></a>#: ../admin/functions.php:1218
5734
- <a name="cl-899"></a>msgid " Image(s) successfully added"
5735
- <a name="cl-900"></a>msgstr "Kuva(t) lisätty onnistuneesti"
5736
- <a name="cl-901"></a>
5737
- <a name="cl-902"></a>#: ../admin/functions.php:1245
5738
- <a name="cl-903"></a>msgid "Invalid upload. Error Code : "
5739
- <a name="cl-904"></a>msgstr "Väärä lataus. Virhekoodi :"
5740
- <a name="cl-905"></a>
5741
- <a name="cl-906"></a>#: ../admin/functions.php:1321
5742
- <a name="cl-907"></a>#, php-format
5743
- <a name="cl-908"></a>msgid ""
5744
- <a name="cl-909"></a>"SAFE MODE Restriction in effect! You need to create the folder &lt;strong&gt;%s&lt;/"
5745
- <a name="cl-910"></a>"strong&gt; manually"
5746
- <a name="cl-911"></a>msgstr ""
5747
- <a name="cl-912"></a>"SAFE MODE -rajoitus käytössä! Sinun on luotava hakemisto &lt;strong&gt;%s&lt;/strong&gt; "
5748
- <a name="cl-913"></a>"manuaalisesti."
5749
- <a name="cl-914"></a>
5750
- <a name="cl-915"></a>#: ../admin/functions.php:1322
5751
- <a name="cl-916"></a>#, php-format
5752
- <a name="cl-917"></a>msgid ""
5753
- <a name="cl-918"></a>"When safe_mode is on, PHP checks to see if the owner (%s) of the current "
5754
- <a name="cl-919"></a>"script matches the owner (%s) of the file to be operated on by a file "
5755
- <a name="cl-920"></a>"function or its directory"
5756
- <a name="cl-921"></a>msgstr ""
5757
- <a name="cl-922"></a>"Kun Safe-Mode on käytössä, tarkistaa PHP, vastaako tämän skriptin (%s) "
5758
- <a name="cl-923"></a>"omistaja (%s) tiedosto- tai hakemistotoiminnon omistajaa."
5759
- <a name="cl-924"></a>
5760
- <a name="cl-925"></a>#: ../admin/functions.php:1375 ../admin/functions.php:1452
5761
- <a name="cl-926"></a>msgid "The destination gallery does not exist"
5762
- <a name="cl-927"></a>msgstr "Kohdegalleriaa ei ole olemassa"
5763
- <a name="cl-928"></a>
5764
- <a name="cl-929"></a>#: ../admin/functions.php:1406 ../lib/xmlrpc.php:222
5765
- <a name="cl-930"></a>#, php-format
5766
- <a name="cl-931"></a>msgid "Failed to move image %1$s to %2$s"
5767
- <a name="cl-932"></a>msgstr "Kuvan siirto paikasta %1$s paikkaan %2$s ei onnistunut"
5768
- <a name="cl-933"></a>
5769
- <a name="cl-934"></a>#: ../admin/functions.php:1426
5770
- <a name="cl-935"></a>#, php-format
5771
- <a name="cl-936"></a>msgid "Moved %1$s picture(s) to gallery : %2$s ."
5772
- <a name="cl-937"></a>msgstr " Siirretty %1$s kuva(t) galleriaan : %2$s ."
5773
- <a name="cl-938"></a>
5774
- <a name="cl-939"></a>#: ../admin/functions.php:1485
5775
- <a name="cl-940"></a>#, php-format
5776
- <a name="cl-941"></a>msgid "Failed to copy image %1$s to %2$s"
5777
- <a name="cl-942"></a>msgstr "Kuvan %1$s kopiointi %2$s kuvaksi ei onnistunut"
5778
- <a name="cl-943"></a>
5779
- <a name="cl-944"></a>#: ../admin/functions.php:1499
5780
- <a name="cl-945"></a>#, php-format
5781
- <a name="cl-946"></a>msgid "Failed to copy database row for picture %s"
5782
- <a name="cl-947"></a>msgstr "Kuvan %s tietokantarivin kopiointi epäonnistui"
5783
- <a name="cl-948"></a>
5784
- <a name="cl-949"></a>#: ../admin/functions.php:1511
5785
- <a name="cl-950"></a>#, php-format
5786
- <a name="cl-951"></a>msgid ""
5787
- <a name="cl-952"></a>"Image %1$s (%2$s) copied as image %3$s (%4$s) &amp;raquo; The file already "
5788
- <a name="cl-953"></a>"existed in the destination gallery."
5789
- <a name="cl-954"></a>msgstr ""
5790
- <a name="cl-955"></a>"Kuva %1$s (%2$s) kopioitu kuvaksi %3$s (%4$s) &amp;raquo; tiedosto oli jo "
5791
- <a name="cl-956"></a>"kohdegalleriassa."
5792
- <a name="cl-957"></a>
5793
- <a name="cl-958"></a>#: ../admin/functions.php:1514
5794
- <a name="cl-959"></a>#, php-format
5795
- <a name="cl-960"></a>msgid "Image %1$s (%2$s) copied as image %3$s (%4$s)"
5796
- <a name="cl-961"></a>msgstr "Kuva %1$s (%2$s) kopioitu kuvaksi %3$s (%4$s)"
5797
- <a name="cl-962"></a>
5798
- <a name="cl-963"></a>#: ../admin/functions.php:1523
5799
- <a name="cl-964"></a>#, php-format
5800
- <a name="cl-965"></a>msgid "Copied %1$s picture(s) to gallery: %2$s ."
5801
- <a name="cl-966"></a>msgstr "Kopioitu %1$s kuva(a) galleriaan: %2$s ."
5802
- <a name="cl-967"></a>
5803
- <a name="cl-968"></a>#: ../admin/functions.php:1631
5804
- <a name="cl-969"></a>msgid "The uploaded file exceeds the upload_max_filesize directive in php.ini"
5805
- <a name="cl-970"></a>msgstr ""
5806
- <a name="cl-971"></a>"Tiedoston koko suurempi kuin sallittu (upload_max_filesize) "
5807
- <a name="cl-972"></a>"ohjaustiedostossa php.ini"
5808
- <a name="cl-973"></a>
5809
- <a name="cl-974"></a>#: ../admin/functions.php:1634
5810
- <a name="cl-975"></a>msgid ""
5811
- <a name="cl-976"></a>"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in "
5812
- <a name="cl-977"></a>"the HTML form"
5813
- <a name="cl-978"></a>msgstr "Tiedosto on suurempi kuin HTML-lomakkeen määritys MAX_FILE_SIZE "
5814
- <a name="cl-979"></a>
5815
- <a name="cl-980"></a>#: ../admin/functions.php:1637
5816
- <a name="cl-981"></a>msgid "The uploaded file was only partially uploaded"
5817
- <a name="cl-982"></a>msgstr "Tiedosto ladattu vain osittain"
5818
- <a name="cl-983"></a>
5819
- <a name="cl-984"></a>#: ../admin/functions.php:1640
5820
- <a name="cl-985"></a>msgid "No file was uploaded"
5821
- <a name="cl-986"></a>msgstr "Yhtään tiedostoa ei ladattu"
5822
- <a name="cl-987"></a>
5823
- <a name="cl-988"></a>#: ../admin/functions.php:1643
5824
- <a name="cl-989"></a>msgid "Missing a temporary folder"
5825
- <a name="cl-990"></a>msgstr "Tilapäiskansiota ei löydy"
5826
- <a name="cl-991"></a>
5827
- <a name="cl-992"></a>#: ../admin/functions.php:1646
5828
- <a name="cl-993"></a>msgid "Failed to write file to disk"
5829
- <a name="cl-994"></a>msgstr "Levylle kirjoitus epäonnistui"
5830
- <a name="cl-995"></a>
5831
- <a name="cl-996"></a>#: ../admin/functions.php:1649
5832
- <a name="cl-997"></a>msgid "File upload stopped by extension"
5833
- <a name="cl-998"></a>msgstr "Tiedoston lataus lopetettu"
5834
- <a name="cl-999"></a>
5835
- <a name="cl-1000"></a>#: ../admin/functions.php:1652
5836
- <a name="cl-1001"></a>msgid "Unknown upload error"
5837
- <a name="cl-1002"></a>msgstr "Tuntematon latausvirhe"
5838
- <a name="cl-1003"></a>
5839
- <a name="cl-1004"></a>#: ../admin/install.php:23
5840
- <a name="cl-1005"></a>msgid "Sorry, NextCellent Gallery works only with a role called administrator"
5841
- <a name="cl-1006"></a>msgstr "NextCellent Gallery toimii vain roolissa \"Administrator\""
5842
- <a name="cl-1007"></a>
5843
- <a name="cl-1008"></a>#: ../admin/install.php:102
5844
- <a name="cl-1009"></a>msgid ""
5845
- <a name="cl-1010"></a>"NextCellent Gallery : Tables could not created, please check your database "
5846
- <a name="cl-1011"></a>"settings"
5847
- <a name="cl-1012"></a>msgstr ""
5848
- <a name="cl-1013"></a>"NextCellent Gallery : Tauluja ei voitu luoda, tarkista tietokanta-asetukset "
5849
- <a name="cl-1014"></a>
5850
- <a name="cl-1015"></a>#: ../admin/install.php:160
5851
- <a name="cl-1016"></a>msgid "[Show as slideshow]"
5852
- <a name="cl-1017"></a>msgstr "[Näytä diasarjana]"
5853
- <a name="cl-1018"></a>
5854
- <a name="cl-1019"></a>#: ../admin/install.php:161
5855
- <a name="cl-1020"></a>msgid "[Show picture list]"
5856
- <a name="cl-1021"></a>msgstr "[Näytä kuvalista]"
5857
- <a name="cl-1022"></a>
5858
- <a name="cl-1023"></a>#: ../admin/manage-galleries.php:68 ../admin/manage-images.php:195
5859
- <a name="cl-1024"></a>msgid "No images selected"
5860
- <a name="cl-1025"></a>msgstr "Yhtään kuvaa ei valittuna"
5861
- <a name="cl-1026"></a>
5862
- <a name="cl-1027"></a>#: ../admin/manage-galleries.php:76 ../admin/manage-galleries.php:151
5863
- <a name="cl-1028"></a>#: ../admin/manage-images.php:223 ../admin/manage-images.php:372
5864
- <a name="cl-1029"></a>#: ../admin/manage.php:211 ../admin/manage.php:290 ../admin/settings.php:394
5865
- <a name="cl-1030"></a>msgid "Resize images"
5866
- <a name="cl-1031"></a>msgstr "Muuta kuvakokoa"
5867
- <a name="cl-1032"></a>
5868
- <a name="cl-1033"></a>#: ../admin/manage-galleries.php:85
5869
- <a name="cl-1034"></a>#, php-format
5870
- <a name="cl-1035"></a>msgid ""
5871
- <a name="cl-1036"></a>"You are about to start the bulk edit for %s galleries \n"
5872
- <a name="cl-1037"></a>" \n"
5873
- <a name="cl-1038"></a>" 'Cancel' to stop, 'OK' to proceed."
5874
- <a name="cl-1039"></a>msgstr ""
5875
- <a name="cl-1040"></a>"Olet aloittamassa massapäivityksen %s galleriaan \n"
5876
- <a name="cl-1041"></a>" \n"
5877
- <a name="cl-1042"></a>" 'Peruuta' lopettaaksesi, 'OK' jatkaaksesi."
5878
- <a name="cl-1043"></a>
5879
- <a name="cl-1044"></a>#: ../admin/manage-galleries.php:118 ../admin/manage-galleries.php:128
5880
- <a name="cl-1045"></a>msgid "Add new gallery"
5881
- <a name="cl-1046"></a>msgstr "Lisää uusi galleria"
5882
- <a name="cl-1047"></a>
5883
- <a name="cl-1048"></a>#: ../admin/manage-galleries.php:132 ../admin/manage-galleries.php:135
5884
- <a name="cl-1049"></a>#: ../admin/manage-images.php:249 ../admin/manage-images.php:252
5885
- <a name="cl-1050"></a>msgid "Search Images"
5886
- <a name="cl-1051"></a>msgstr "Etsi kuvia"
5887
- <a name="cl-1052"></a>
5888
- <a name="cl-1053"></a>#: ../admin/manage-galleries.php:147 ../admin/manage-images.php:369
5889
- <a name="cl-1054"></a>#, fuzzy
5890
- <a name="cl-1055"></a>msgid "Actions"
5891
- <a name="cl-1056"></a>msgstr "Sijainti"
5892
- <a name="cl-1057"></a>
5893
- <a name="cl-1058"></a>#: ../admin/manage-galleries.php:149 ../admin/manage-images.php:370
5894
- <a name="cl-1059"></a>#: ../admin/manage.php:141 ../admin/manage.php:253
5895
- <a name="cl-1060"></a>msgid "Set watermark"
5896
- <a name="cl-1061"></a>msgstr "Aseta vesileima"
5897
- <a name="cl-1062"></a>
5898
- <a name="cl-1063"></a>#: ../admin/manage-galleries.php:152 ../admin/manage-images.php:375
5899
- <a name="cl-1064"></a>#: ../admin/manage.php:146 ../admin/manage.php:274
5900
- <a name="cl-1065"></a>msgid "Import metadata"
5901
- <a name="cl-1066"></a>msgstr "Tuo metadata"
5902
- <a name="cl-1067"></a>
5903
- <a name="cl-1068"></a>#: ../admin/manage-galleries.php:153 ../admin/manage-images.php:373
5904
- <a name="cl-1069"></a>#: ../admin/manage.php:136 ../admin/manage.php:250
5905
- <a name="cl-1070"></a>msgid "Recover from backup"
5906
- <a name="cl-1071"></a>msgstr "Palauta varmistuksesta"
5907
- <a name="cl-1072"></a>
5908
- <a name="cl-1073"></a>#: ../admin/manage-galleries.php:155 ../admin/manage-images.php:384
5909
- <a name="cl-1074"></a>msgid "Apply"
5910
- <a name="cl-1075"></a>msgstr "Hyväksy"
5911
- <a name="cl-1076"></a>
5912
- <a name="cl-1077"></a>#: ../admin/manage-galleries.php:219 ../admin/tags.php:251
5913
- <a name="cl-1078"></a>msgid "Edit"
5914
- <a name="cl-1079"></a>msgstr "Muokkaa"
5915
- <a name="cl-1080"></a>
5916
- <a name="cl-1081"></a>#: ../admin/manage-galleries.php:260 ../admin/manage-images.php:540
5917
- <a name="cl-1082"></a>msgid "No entries found"
5918
- <a name="cl-1083"></a>msgstr "Mitään kohteita ei löydy"
5919
- <a name="cl-1084"></a>
5920
- <a name="cl-1085"></a>#: ../admin/manage-galleries.php:278
5921
- <a name="cl-1086"></a>msgid "New Gallery"
5922
- <a name="cl-1087"></a>msgstr "Uusi galleria"
5923
- <a name="cl-1088"></a>
5924
- <a name="cl-1089"></a>#: ../admin/manage-galleries.php:280
5925
- <a name="cl-1090"></a>msgid "Create a new , empty gallery below the folder"
5926
- <a name="cl-1091"></a>msgstr "Luo uusi, tyhjä galleria hakemiston alle"
5927
- <a name="cl-1092"></a>
5928
- <a name="cl-1093"></a>#: ../admin/manage-galleries.php:308 ../admin/manage-images.php:621
5929
- <a name="cl-1094"></a>msgid "Resize Images to"
5930
- <a name="cl-1095"></a>msgstr "Muuta kuvien kooksi "
5931
- <a name="cl-1096"></a>
5932
- <a name="cl-1097"></a>#: ../admin/manage-galleries.php:311 ../admin/manage-galleries.php:340
5933
- <a name="cl-1098"></a>#: ../admin/manage-images.php:624 ../admin/manage-images.php:652
5934
- <a name="cl-1099"></a>#: ../admin/settings.php:395 ../admin/settings.php:424
5935
- <a name="cl-1100"></a>#: ../admin/settings.php:698 ../admin/tinymce/window.php:210
5936
- <a name="cl-1101"></a>#: ../admin/tinymce/window.php:318
5937
- <a name="cl-1102"></a>msgid "Width"
5938
- <a name="cl-1103"></a>msgstr "Leveys"
5939
- <a name="cl-1104"></a>
5940
- <a name="cl-1105"></a>#: ../admin/manage-galleries.php:313 ../admin/manage-galleries.php:340
5941
- <a name="cl-1106"></a>#: ../admin/manage-images.php:626 ../admin/manage-images.php:653
5942
- <a name="cl-1107"></a>#: ../admin/settings.php:397 ../admin/settings.php:426
5943
- <a name="cl-1108"></a>#: ../admin/settings.php:700 ../admin/tinymce/window.php:211
5944
- <a name="cl-1109"></a>#: ../admin/tinymce/window.php:320
5945
- <a name="cl-1110"></a>msgid "Height"
5946
- <a name="cl-1111"></a>msgstr "Korkeus"
5947
- <a name="cl-1112"></a>
5948
- <a name="cl-1113"></a>#: ../admin/manage-galleries.php:315 ../admin/manage-images.php:628
5949
- <a name="cl-1114"></a>#: ../admin/settings.php:399
5950
- <a name="cl-1115"></a>msgid ""
5951
- <a name="cl-1116"></a>"Width and height (in pixels). NextCellent Gallery will keep the ratio size."
5952
- <a name="cl-1117"></a>msgstr ""
5953
- <a name="cl-1118"></a>"Leveys ja korkeus (pikseleinä). NextCellent Gallery säilyttää sivusuhteen."
5954
- <a name="cl-1119"></a>
5955
- <a name="cl-1120"></a>#: ../admin/manage-galleries.php:339 ../admin/manage-images.php:651
5956
- <a name="cl-1121"></a>#: ../admin/media-upload.php:242 ../admin/settings.php:663
5957
- <a name="cl-1122"></a>msgid "Size"
5958
- <a name="cl-1123"></a>msgstr "Koko"
5959
- <a name="cl-1124"></a>
5960
- <a name="cl-1125"></a>#: ../admin/manage-galleries.php:341 ../admin/manage-images.php:654
5961
- <a name="cl-1126"></a>#: ../admin/settings.php:428
5962
- <a name="cl-1127"></a>msgid "These values are maximum values "
5963
- <a name="cl-1128"></a>msgstr "Nämä ovat maksimiarvot."
5964
- <a name="cl-1129"></a>
5965
- <a name="cl-1130"></a>#: ../admin/manage-galleries.php:344 ../admin/manage-images.php:657
5966
- <a name="cl-1131"></a>#: ../admin/settings.php:431
5967
- <a name="cl-1132"></a>msgid "Fixed size"
5968
- <a name="cl-1133"></a>msgstr "Kiinteä koko"
5969
- <a name="cl-1134"></a>
5970
- <a name="cl-1135"></a>#: ../admin/manage-galleries.php:346 ../admin/manage-images.php:659
5971
- <a name="cl-1136"></a>#: ../admin/settings.php:433
5972
- <a name="cl-1137"></a>msgid "This will ignore the aspect ratio, so no portrait thumbnails"
5973
- <a name="cl-1138"></a>msgstr "Tämä ohittaa sivusuhteen, eli ei esikatselukuvia pystyssä."
5974
- <a name="cl-1139"></a>
5975
- <a name="cl-1140"></a>#: ../admin/manage-galleries.php:409 ../admin/manage-images.php:728
5976
- <a name="cl-1141"></a>msgid "ID"
5977
- <a name="cl-1142"></a>msgstr "ID"
5978
- <a name="cl-1143"></a>
5979
- <a name="cl-1144"></a>#: ../admin/manage-galleries.php:411 ../admin/manage-images.php:292
5980
- <a name="cl-1145"></a>#: ../admin/manage-images.php:509 ../admin/manage-images.php:731
5981
- <a name="cl-1146"></a>#: ../admin/media-upload.php:225 ../admin/style.php:145
5982
- <a name="cl-1147"></a>msgid "Description"
5983
- <a name="cl-1148"></a>msgstr "Kuvaus"
5984
- <a name="cl-1149"></a>
5985
- <a name="cl-1150"></a>#: ../admin/manage-galleries.php:412 ../admin/manage-images.php:321
5986
- <a name="cl-1151"></a>#: ../admin/overview.php:771 ../admin/style.php:143 ../lib/meta.php:458
5987
- <a name="cl-1152"></a>msgid "Author"
5988
- <a name="cl-1153"></a>msgstr "Kirjoittaja"
5989
- <a name="cl-1154"></a>
5990
- <a name="cl-1155"></a>#: ../admin/manage-galleries.php:413
5991
- <a name="cl-1156"></a>msgid "Page ID"
5992
- <a name="cl-1157"></a>msgstr "Sivu-ID"
5993
- <a name="cl-1158"></a>
5994
- <a name="cl-1159"></a>#: ../admin/manage-images.php:34
5995
- <a name="cl-1160"></a>msgid "Gallery not found."
5996
- <a name="cl-1161"></a>msgstr "Galleriaa ei löydy. "
5997
- <a name="cl-1162"></a>
5998
- <a name="cl-1163"></a>#: ../admin/manage-images.php:40
5999
- <a name="cl-1164"></a>msgid "Sorry, you have no access here"
6000
- <a name="cl-1165"></a>msgstr "Sori, oikeutesi eivät riitä"
6001
- <a name="cl-1166"></a>
6002
- <a name="cl-1167"></a>#: ../admin/manage-images.php:203
6003
- <a name="cl-1168"></a>msgid "Copy image to..."
6004
- <a name="cl-1169"></a>msgstr "Sori, oikeutesi eivät riitä"
6005
- <a name="cl-1170"></a>
6006
- <a name="cl-1171"></a>#: ../admin/manage-images.php:207
6007
- <a name="cl-1172"></a>msgid "Move image to..."
6008
- <a name="cl-1173"></a>msgstr "Siirrä kuva..."
6009
- <a name="cl-1174"></a>
6010
- <a name="cl-1175"></a>#: ../admin/manage-images.php:211
6011
- <a name="cl-1176"></a>msgid "Add new tags"
6012
- <a name="cl-1177"></a>msgstr "Lisää tägejä"
6013
- <a name="cl-1178"></a>
6014
- <a name="cl-1179"></a>#: ../admin/manage-images.php:215 ../admin/manage-images.php:381
6015
- <a name="cl-1180"></a>msgid "Delete tags"
6016
- <a name="cl-1181"></a>msgstr "Poista tägejä"
6017
- <a name="cl-1182"></a>
6018
- <a name="cl-1183"></a>#: ../admin/manage-images.php:219
6019
- <a name="cl-1184"></a>msgid "Overwrite"
6020
- <a name="cl-1185"></a>msgstr "Kirjoita yli"
6021
- <a name="cl-1186"></a>
6022
- <a name="cl-1187"></a>#: ../admin/manage-images.php:232
6023
- <a name="cl-1188"></a>#, php-format
6024
- <a name="cl-1189"></a>msgid ""
6025
- <a name="cl-1190"></a>"You are about to start the bulk edit for %s images \n"
6026
- <a name="cl-1191"></a>" \n"
6027
- <a name="cl-1192"></a>" 'Cancel' to stop, 'OK' to proceed."
6028
- <a name="cl-1193"></a>msgstr ""
6029
- <a name="cl-1194"></a>"Olet aloittamassa massamuokkauksen %s kuville\n"
6030
- <a name="cl-1195"></a>" \n"
6031
- <a name="cl-1196"></a>" 'Peruuta' lopettaaksesi, 'OK' jatkaaksesi."
6032
- <a name="cl-1197"></a>
6033
- <a name="cl-1198"></a>#: ../admin/manage-images.php:246
6034
- <a name="cl-1199"></a>#, php-format
6035
- <a name="cl-1200"></a>msgid "Search results for &amp;#8220;%s&amp;#8221;"
6036
- <a name="cl-1201"></a>msgstr "Hakutulokset &amp;#8220;%s&amp;#8221;"
6037
- <a name="cl-1202"></a>
6038
- <a name="cl-1203"></a>#: ../admin/manage-images.php:275 ../admin/settings.php:457
6039
- <a name="cl-1204"></a>msgid "Gallery settings"
6040
- <a name="cl-1205"></a>msgstr "Gallerian asetukset"
6041
- <a name="cl-1206"></a>
6042
- <a name="cl-1207"></a>#: ../admin/manage-images.php:275
6043
- <a name="cl-1208"></a>msgid "Click here for more settings"
6044
- <a name="cl-1209"></a>msgstr "Klikkaa tästä lisäasetuksille"
6045
- <a name="cl-1210"></a>
6046
- <a name="cl-1211"></a>#: ../admin/manage-images.php:294
6047
- <a name="cl-1212"></a>msgid "Preview image"
6048
- <a name="cl-1213"></a>msgstr "Katso kuvaa"
6049
- <a name="cl-1214"></a>
6050
- <a name="cl-1215"></a>#: ../admin/manage-images.php:297
6051
- <a name="cl-1216"></a>msgid "No Picture"
6052
- <a name="cl-1217"></a>msgstr "Ei kuvaa"
6053
- <a name="cl-1218"></a>
6054
- <a name="cl-1219"></a>#: ../admin/manage-images.php:319
6055
- <a name="cl-1220"></a>msgid "Path"
6056
- <a name="cl-1221"></a>msgstr "Polku "
6057
- <a name="cl-1222"></a>
6058
- <a name="cl-1223"></a>#: ../admin/manage-images.php:335
6059
- <a name="cl-1224"></a>msgid "Create new page"
6060
- <a name="cl-1225"></a>msgstr "Luo uusi sivu"
6061
- <a name="cl-1226"></a>
6062
- <a name="cl-1227"></a>#: ../admin/manage-images.php:338
6063
- <a name="cl-1228"></a>msgid "Main page (No parent)"
6064
- <a name="cl-1229"></a>msgstr "Pääsivu (ei pääsivua)"
6065
- <a name="cl-1230"></a>
6066
- <a name="cl-1231"></a>#: ../admin/manage-images.php:343
6067
- <a name="cl-1232"></a>msgid "Add page"
6068
- <a name="cl-1233"></a>msgstr "Lisää sivu"
6069
- <a name="cl-1234"></a>
6070
- <a name="cl-1235"></a>#: ../admin/manage-images.php:353
6071
- <a name="cl-1236"></a>#, fuzzy
6072
- <a name="cl-1237"></a>msgid "Scan folder for new images"
6073
- <a name="cl-1238"></a>msgstr "Tarkista kuvat kansiossa"
6074
- <a name="cl-1239"></a>
6075
- <a name="cl-1240"></a>#: ../admin/manage-images.php:354
6076
- <a name="cl-1241"></a>msgid "Old scanning"
6077
- <a name="cl-1242"></a>msgstr ""
6078
- <a name="cl-1243"></a>
6079
- <a name="cl-1244"></a>#: ../admin/manage-images.php:355 ../admin/manage-images.php:390
6080
- <a name="cl-1245"></a>#: ../admin/manage-images.php:547 ../admin/settings.php:379
6081
- <a name="cl-1246"></a>#: ../admin/settings.php:447 ../admin/settings.php:537
6082
- <a name="cl-1247"></a>#: ../admin/settings.php:571 ../admin/settings.php:681
6083
- <a name="cl-1248"></a>#: ../admin/settings.php:833
6084
- <a name="cl-1249"></a>msgid "Save Changes"
6085
- <a name="cl-1250"></a>msgstr "Tallenna muutokset"
6086
- <a name="cl-1251"></a>
6087
- <a name="cl-1252"></a>#: ../admin/manage-images.php:374
6088
- <a name="cl-1253"></a>msgid "Delete images"
6089
- <a name="cl-1254"></a>msgstr "Poista kuvia"
6090
- <a name="cl-1255"></a>
6091
- <a name="cl-1256"></a>#: ../admin/manage-images.php:376
6092
- <a name="cl-1257"></a>msgid "Rotate images clockwise"
6093
- <a name="cl-1258"></a>msgstr "Pyöritä kuvia myötäpäivään"
6094
- <a name="cl-1259"></a>
6095
- <a name="cl-1260"></a>#: ../admin/manage-images.php:377
6096
- <a name="cl-1261"></a>msgid "Rotate images counter-clockwise"
6097
- <a name="cl-1262"></a>msgstr "Pyöritä kuvia vastapäivään"
6098
- <a name="cl-1263"></a>
6099
- <a name="cl-1264"></a>#: ../admin/manage-images.php:378
6100
- <a name="cl-1265"></a>msgid "Copy to..."
6101
- <a name="cl-1266"></a>msgstr "Kopioi ..."
6102
- <a name="cl-1267"></a>
6103
- <a name="cl-1268"></a>#: ../admin/manage-images.php:379
6104
- <a name="cl-1269"></a>msgid "Move to..."
6105
- <a name="cl-1270"></a>msgstr "Siirrä..."
6106
- <a name="cl-1271"></a>
6107
- <a name="cl-1272"></a>#: ../admin/manage-images.php:380
6108
- <a name="cl-1273"></a>msgid "Add tags"
6109
- <a name="cl-1274"></a>msgstr "Lisää tägejä"
6110
- <a name="cl-1275"></a>
6111
- <a name="cl-1276"></a>#: ../admin/manage-images.php:382
6112
- <a name="cl-1277"></a>msgid "Overwrite tags"
6113
- <a name="cl-1278"></a>msgstr "Kirjoita tägit yli"
6114
- <a name="cl-1279"></a>
6115
- <a name="cl-1280"></a>#: ../admin/manage-images.php:387
6116
- <a name="cl-1281"></a>msgid "Sort gallery"
6117
- <a name="cl-1282"></a>msgstr "Lajittele galleria"
6118
- <a name="cl-1283"></a>
6119
- <a name="cl-1284"></a>#: ../admin/manage-images.php:462
6120
- <a name="cl-1285"></a>#, fuzzy
6121
- <a name="cl-1286"></a>msgid "Change Date"
6122
- <a name="cl-1287"></a>msgstr "Muuta tyyliä "
6123
- <a name="cl-1288"></a>
6124
- <a name="cl-1289"></a>#: ../admin/manage-images.php:466
6125
- <a name="cl-1290"></a>msgid "pixel"
6126
- <a name="cl-1291"></a>msgstr "pikseli"
6127
- <a name="cl-1292"></a>
6128
- <a name="cl-1293"></a>#: ../admin/manage-images.php:472
6129
- <a name="cl-1294"></a>#, php-format
6130
- <a name="cl-1295"></a>msgid "View \"%s\""
6131
- <a name="cl-1296"></a>msgstr "Katso \"%s\""
6132
- <a name="cl-1297"></a>
6133
- <a name="cl-1298"></a>#: ../admin/manage-images.php:472
6134
- <a name="cl-1299"></a>msgid "View"
6135
- <a name="cl-1300"></a>msgstr "Katso "
6136
- <a name="cl-1301"></a>
6137
- <a name="cl-1302"></a>#: ../admin/manage-images.php:473
6138
- <a name="cl-1303"></a>msgid "Show Meta data"
6139
- <a name="cl-1304"></a>msgstr "Näytä metadata"
6140
- <a name="cl-1305"></a>
6141
- <a name="cl-1306"></a>#: ../admin/manage-images.php:473
6142
- <a name="cl-1307"></a>msgid "Meta"
6143
- <a name="cl-1308"></a>msgstr "Meta"
6144
- <a name="cl-1309"></a>
6145
- <a name="cl-1310"></a>#: ../admin/manage-images.php:474
6146
- <a name="cl-1311"></a>msgid "Customize thumbnail"
6147
- <a name="cl-1312"></a>msgstr "Muokkaa esikatselukuvaa"
6148
- <a name="cl-1313"></a>
6149
- <a name="cl-1314"></a>#: ../admin/manage-images.php:474
6150
- <a name="cl-1315"></a>msgid "Edit thumb"
6151
- <a name="cl-1316"></a>msgstr "Muokkaa esikatselukuvaa"
6152
- <a name="cl-1317"></a>
6153
- <a name="cl-1318"></a>#: ../admin/manage-images.php:475
6154
- <a name="cl-1319"></a>msgid "Rotate"
6155
- <a name="cl-1320"></a>msgstr "Pyöritä"
6156
- <a name="cl-1321"></a>
6157
- <a name="cl-1322"></a>#: ../admin/manage-images.php:477
6158
- <a name="cl-1323"></a>msgid "Publish this image"
6159
- <a name="cl-1324"></a>msgstr "Julkaise kuva"
6160
- <a name="cl-1325"></a>
6161
- <a name="cl-1326"></a>#: ../admin/manage-images.php:477 ../admin/publish.php:58
6162
- <a name="cl-1327"></a>msgid "Publish"
6163
- <a name="cl-1328"></a>msgstr "Julkaise"
6164
- <a name="cl-1329"></a>
6165
- <a name="cl-1330"></a>#: ../admin/manage-images.php:479
6166
- <a name="cl-1331"></a>msgid "Recover"
6167
- <a name="cl-1332"></a>msgstr "Palauta"
6168
- <a name="cl-1333"></a>
6169
- <a name="cl-1334"></a>#: ../admin/manage-images.php:479
6170
- <a name="cl-1335"></a>#, php-format
6171
- <a name="cl-1336"></a>msgid "Recover \"%s\" ?"
6172
- <a name="cl-1337"></a>msgstr "Palauta \"%s\" ?"
6173
- <a name="cl-1338"></a>
6174
- <a name="cl-1339"></a>#: ../admin/manage-images.php:480
6175
- <a name="cl-1340"></a>#, php-format
6176
- <a name="cl-1341"></a>msgid "Delete \"%s\" ?"
6177
- <a name="cl-1342"></a>msgstr "Poista \"%s\" ?"
6178
- <a name="cl-1343"></a>
6179
- <a name="cl-1344"></a>#: ../admin/manage-images.php:508
6180
- <a name="cl-1345"></a>#, fuzzy
6181
- <a name="cl-1346"></a>msgid "Alt &amp; title text"
6182
- <a name="cl-1347"></a>msgstr "Alt / otsikkoteksti"
6183
- <a name="cl-1348"></a>
6184
- <a name="cl-1349"></a>#: ../admin/manage-images.php:522
6185
- <a name="cl-1350"></a>#, fuzzy
6186
- <a name="cl-1351"></a>msgid "Separated by commas"
6187
- <a name="cl-1352"></a>msgstr "Galleria IDt, erotettuna pilkuilla."
6188
- <a name="cl-1353"></a>
6189
- <a name="cl-1354"></a>#: ../admin/manage-images.php:563
6190
- <a name="cl-1355"></a>msgid "Enter the tags"
6191
- <a name="cl-1356"></a>msgstr "Anna tägejä"
6192
- <a name="cl-1357"></a>
6193
- <a name="cl-1358"></a>#: ../admin/manage-images.php:586
6194
- <a name="cl-1359"></a>msgid "Select the destination gallery:"
6195
- <a name="cl-1360"></a>msgstr "Valitse kohdegalleria:"
6196
- <a name="cl-1361"></a>
6197
- <a name="cl-1362"></a>#: ../admin/manage-images.php:729 ../admin/media-upload.php:246
6198
- <a name="cl-1363"></a>msgid "Thumbnail"
6199
- <a name="cl-1364"></a>msgstr "Esikatselukuva"
6200
- <a name="cl-1365"></a>
6201
- <a name="cl-1366"></a>#: ../admin/manage-images.php:730 ../admin/manage-sort.php:96
6202
- <a name="cl-1367"></a>msgid "Filename"
6203
- <a name="cl-1368"></a>msgstr "Tiedostonimi"
6204
- <a name="cl-1369"></a>
6205
- <a name="cl-1370"></a>#: ../admin/manage-images.php:731
6206
- <a name="cl-1371"></a>msgid "Alt &amp;amp; Title Text"
6207
- <a name="cl-1372"></a>msgstr "Alt &amp;amp; otsikkoteksti"
6208
- <a name="cl-1373"></a>
6209
- <a name="cl-1374"></a>#: ../admin/manage-images.php:733
6210
- <a name="cl-1375"></a>#, fuzzy
6211
- <a name="cl-1376"></a>msgid "Exclude"
6212
- <a name="cl-1377"></a>msgstr "piilota "
6213
- <a name="cl-1378"></a>
6214
- <a name="cl-1379"></a>#: ../admin/manage-sort.php:33
6215
- <a name="cl-1380"></a>msgid "Sort order changed"
6216
- <a name="cl-1381"></a>msgstr "Lajittelujärjestys muutettu"
6217
- <a name="cl-1382"></a>
6218
- <a name="cl-1383"></a>#: ../admin/manage-sort.php:81
6219
- <a name="cl-1384"></a>msgid "Sort Gallery"
6220
- <a name="cl-1385"></a>msgstr "Lajittele galleria"
6221
- <a name="cl-1386"></a>
6222
- <a name="cl-1387"></a>#: ../admin/manage-sort.php:85
6223
- <a name="cl-1388"></a>msgid "Update Sort Order"
6224
- <a name="cl-1389"></a>msgstr "Päivitä lajittelujärjestys"
6225
- <a name="cl-1390"></a>
6226
- <a name="cl-1391"></a>#: ../admin/manage-sort.php:88
6227
- <a name="cl-1392"></a>msgid "Back to gallery"
6228
- <a name="cl-1393"></a>msgstr "Takaisin galleriaan"
6229
- <a name="cl-1394"></a>
6230
- <a name="cl-1395"></a>#: ../admin/manage-sort.php:93
6231
- <a name="cl-1396"></a>msgid "Presort"
6232
- <a name="cl-1397"></a>msgstr "Esilajittele"
6233
- <a name="cl-1398"></a>
6234
- <a name="cl-1399"></a>#: ../admin/manage-sort.php:94
6235
- <a name="cl-1400"></a>msgid "Unsorted"
6236
- <a name="cl-1401"></a>msgstr "Lajittelematon"
6237
- <a name="cl-1402"></a>
6238
- <a name="cl-1403"></a>#: ../admin/manage-sort.php:95 ../admin/settings.php:524
6239
- <a name="cl-1404"></a>msgid "Image ID"
6240
- <a name="cl-1405"></a>msgstr "Kuva ID"
6241
- <a name="cl-1406"></a>
6242
- <a name="cl-1407"></a>#: ../admin/manage-sort.php:97 ../admin/media-upload.php:221
6243
- <a name="cl-1408"></a>msgid "Alt/Title text"
6244
- <a name="cl-1409"></a>msgstr "Alt / otsikkoteksit"
6245
- <a name="cl-1410"></a>
6246
- <a name="cl-1411"></a>#: ../admin/manage-sort.php:98 ../lib/meta.php:452
6247
- <a name="cl-1412"></a>msgid "Date/Time"
6248
- <a name="cl-1413"></a>msgstr "Pvm/aika"
6249
- <a name="cl-1414"></a>
6250
- <a name="cl-1415"></a>#: ../admin/manage-sort.php:99 ../admin/settings.php:532
6251
- <a name="cl-1416"></a>msgid "Ascending"
6252
- <a name="cl-1417"></a>msgstr "Laskeva"
6253
- <a name="cl-1418"></a>
6254
- <a name="cl-1419"></a>#: ../admin/manage-sort.php:100 ../admin/settings.php:533
6255
- <a name="cl-1420"></a>msgid "Descending"
6256
- <a name="cl-1421"></a>msgstr "Nouseva"
6257
- <a name="cl-1422"></a>
6258
- <a name="cl-1423"></a>#: ../admin/manage.php:85 ../lib/rewrite.php:221
6259
- <a name="cl-1424"></a>#: ../view/imagebrowser-caption.php:31 ../view/imagebrowser-exif.php:35
6260
- <a name="cl-1425"></a>#: ../view/imagebrowser.php:31
6261
- <a name="cl-1426"></a>msgid "Picture"
6262
- <a name="cl-1427"></a>msgstr "Kuva"
6263
- <a name="cl-1428"></a>
6264
- <a name="cl-1429"></a>#: ../admin/manage.php:85
6265
- <a name="cl-1430"></a>msgid "deleted successfully"
6266
- <a name="cl-1431"></a>msgstr "poistettu onnistuneesti"
6267
- <a name="cl-1432"></a>
6268
- <a name="cl-1433"></a>#: ../admin/manage.php:100 ../admin/manage.php:109
6269
- <a name="cl-1434"></a>msgid "Operation successful. Please clear your browser cache."
6270
- <a name="cl-1435"></a>msgstr "Toiminto onnistui. Tyhjennä selaimen välimuisti."
6271
- <a name="cl-1436"></a>
6272
- <a name="cl-1437"></a>#: ../admin/manage.php:176
6273
- <a name="cl-1438"></a>msgid "Gallery deleted successfully "
6274
- <a name="cl-1439"></a>msgstr "Gallerian poisto onnistui "
6275
- <a name="cl-1440"></a>
6276
- <a name="cl-1441"></a>#: ../admin/manage.php:244 ../admin/manage.php:247
6277
- <a name="cl-1442"></a>msgid "Rotate images"
6278
- <a name="cl-1443"></a>msgstr "Pyöritä kuvia"
6279
- <a name="cl-1444"></a>
6280
- <a name="cl-1445"></a>#: ../admin/manage.php:270
6281
- <a name="cl-1446"></a>msgid "Pictures deleted successfully "
6282
- <a name="cl-1447"></a>msgstr "Kuvien poisto onnistui"
6283
- <a name="cl-1448"></a>
6284
- <a name="cl-1449"></a>#: ../admin/manage.php:366
6285
- <a name="cl-1450"></a>msgid "Tags changed"
6286
- <a name="cl-1451"></a>msgstr "Tägit muutettu"
6287
- <a name="cl-1452"></a>
6288
- <a name="cl-1453"></a>#: ../admin/manage.php:402
6289
- <a name="cl-1454"></a>msgid "Update successful"
6290
- <a name="cl-1455"></a>msgstr "Päivitys onnistui"
6291
- <a name="cl-1456"></a>
6292
- <a name="cl-1457"></a>#: ../admin/manage.php:445
6293
- <a name="cl-1458"></a>msgid "New gallery page ID"
6294
- <a name="cl-1459"></a>msgstr "Uusi galleriasivu ID"
6295
- <a name="cl-1460"></a>
6296
- <a name="cl-1461"></a>#: ../admin/manage.php:445
6297
- <a name="cl-1462"></a>msgid "created"
6298
- <a name="cl-1463"></a>msgstr "luotu "
6299
- <a name="cl-1464"></a>
6300
- <a name="cl-1465"></a>#: ../admin/manage.php:483
6301
- <a name="cl-1466"></a>msgid "Published a new post"
6302
- <a name="cl-1467"></a>msgstr "Julkaistu uusi artikkeli "
6303
- <a name="cl-1468"></a>
6304
- <a name="cl-1469"></a>#: ../admin/manage.php:598
6305
- <a name="cl-1470"></a>msgid "1 item"
6306
- <a name="cl-1471"></a>msgstr "1 elementti"
6307
- <a name="cl-1472"></a>
6308
- <a name="cl-1473"></a>#: ../admin/media-upload.php:11
6309
- <a name="cl-1474"></a>msgid "NextCellent Gallery"
6310
- <a name="cl-1475"></a>msgstr "NextCellent Gallery"
6311
- <a name="cl-1476"></a>
6312
- <a name="cl-1477"></a>#: ../admin/media-upload.php:166
6313
- <a name="cl-1478"></a>msgid "No gallery"
6314
- <a name="cl-1479"></a>msgstr "Ei galleriaa"
6315
- <a name="cl-1480"></a>
6316
- <a name="cl-1481"></a>#: ../admin/media-upload.php:178
6317
- <a name="cl-1482"></a>msgid "Select &amp;#187;"
6318
- <a name="cl-1483"></a>msgstr "Valitse &amp;#187;"
6319
- <a name="cl-1484"></a>
6320
- <a name="cl-1485"></a>#: ../admin/media-upload.php:209
6321
- <a name="cl-1486"></a>msgid "Show"
6322
- <a name="cl-1487"></a>msgstr "Näytä"
6323
- <a name="cl-1488"></a>
6324
- <a name="cl-1489"></a>#: ../admin/media-upload.php:210
6325
- <a name="cl-1490"></a>msgid "Hide"
6326
- <a name="cl-1491"></a>msgstr "Piilota"
6327
- <a name="cl-1492"></a>
6328
- <a name="cl-1493"></a>#: ../admin/media-upload.php:215
6329
- <a name="cl-1494"></a>msgid "Image ID:"
6330
- <a name="cl-1495"></a>msgstr "Kuva ID:"
6331
- <a name="cl-1496"></a>
6332
- <a name="cl-1497"></a>#: ../admin/media-upload.php:229 ../admin/publish.php:45
6333
- <a name="cl-1498"></a>#: ../admin/tinymce/window.php:335
6334
- <a name="cl-1499"></a>msgid "Alignment"
6335
- <a name="cl-1500"></a>msgstr "Tasaus "
6336
- <a name="cl-1501"></a>
6337
- <a name="cl-1502"></a>#: ../admin/media-upload.php:232 ../admin/publish.php:47
6338
- <a name="cl-1503"></a>#: ../admin/settings.php:557
6339
- <a name="cl-1504"></a>msgid "None"
6340
- <a name="cl-1505"></a>msgstr "ei mitään"
6341
- <a name="cl-1506"></a>
6342
- <a name="cl-1507"></a>#: ../admin/media-upload.php:234 ../admin/publish.php:49
6343
- <a name="cl-1508"></a>#: ../admin/tinymce/window.php:339
6344
- <a name="cl-1509"></a>msgid "Left"
6345
- <a name="cl-1510"></a>msgstr "Vasen"
6346
- <a name="cl-1511"></a>
6347
- <a name="cl-1512"></a>#: ../admin/media-upload.php:236 ../admin/publish.php:51
6348
- <a name="cl-1513"></a>#: ../admin/tinymce/window.php:340
6349
- <a name="cl-1514"></a>msgid "Center"
6350
- <a name="cl-1515"></a>msgstr "Keskitä"
6351
- <a name="cl-1516"></a>
6352
- <a name="cl-1517"></a>#: ../admin/media-upload.php:238 ../admin/publish.php:53
6353
- <a name="cl-1518"></a>#: ../admin/tinymce/window.php:341
6354
- <a name="cl-1519"></a>msgid "Right"
6355
- <a name="cl-1520"></a>msgstr "Oikea"
6356
- <a name="cl-1521"></a>
6357
- <a name="cl-1522"></a>#: ../admin/media-upload.php:248
6358
- <a name="cl-1523"></a>msgid "Full size"
6359
- <a name="cl-1524"></a>msgstr "Täyskoko"
6360
- <a name="cl-1525"></a>
6361
- <a name="cl-1526"></a>#: ../admin/media-upload.php:250
6362
- <a name="cl-1527"></a>msgid "Singlepic"
6363
- <a name="cl-1528"></a>msgstr "Yksittäiskuva"
6364
- <a name="cl-1529"></a>
6365
- <a name="cl-1530"></a>#: ../admin/media-upload.php:263
6366
- <a name="cl-1531"></a>msgid "Insert into Post"
6367
- <a name="cl-1532"></a>msgstr "Lisää artikkeliin"
6368
- <a name="cl-1533"></a>
6369
- <a name="cl-1534"></a>#: ../admin/media-upload.php:274
6370
- <a name="cl-1535"></a>msgid "Save all changes"
6371
- <a name="cl-1536"></a>msgstr "Tallenna kaikki muutokset"
6372
- <a name="cl-1537"></a>
6373
- <a name="cl-1538"></a>#: ../admin/overview.php:15
6374
- <a name="cl-1539"></a>msgid "NextCellent Gallery Overview"
6375
- <a name="cl-1540"></a>msgstr "NextCellent Gallery ohjausnäkymä"
6376
- <a name="cl-1541"></a>
6377
- <a name="cl-1542"></a>#: ../admin/overview.php:86
6378
- <a name="cl-1543"></a>msgid "Welcome to NextCellent Gallery !"
6379
- <a name="cl-1544"></a>msgstr "Tervetuloa NextCellent Galleryyn!"
6380
- <a name="cl-1545"></a>
6381
- <a name="cl-1546"></a>#: ../admin/overview.php:87
6382
- <a name="cl-1547"></a>msgid "Help me help YOU!"
6383
- <a name="cl-1548"></a>msgstr "Auta minua auttamaan SINUA!"
6384
- <a name="cl-1549"></a>
6385
- <a name="cl-1550"></a>#: ../admin/overview.php:89
6386
- <a name="cl-1551"></a>msgid "Translation"
6387
- <a name="cl-1552"></a>msgstr "Käännös"
6388
- <a name="cl-1553"></a>
6389
- <a name="cl-1554"></a>#: ../admin/overview.php:90
6390
- <a name="cl-1555"></a>msgid "Latest News"
6391
- <a name="cl-1556"></a>msgstr "Tuoreimmat uutiset"
6392
- <a name="cl-1557"></a>
6393
- <a name="cl-1558"></a>#: ../admin/overview.php:92
6394
- <a name="cl-1559"></a>msgid "Plugin Check"
6395
- <a name="cl-1560"></a>msgstr "Lisäosan tarkistus"
6396
- <a name="cl-1561"></a>
6397
- <a name="cl-1562"></a>#: ../admin/overview.php:93
6398
- <a name="cl-1563"></a>msgid "Server Settings"
6399
- <a name="cl-1564"></a>msgstr "Palvelinasetukset"
6400
- <a name="cl-1565"></a>
6401
- <a name="cl-1566"></a>#: ../admin/overview.php:94
6402
- <a name="cl-1567"></a>msgid "Related plugins"
6403
- <a name="cl-1568"></a>msgstr "Liittyvät lisäosat"
6404
- <a name="cl-1569"></a>
6405
- <a name="cl-1570"></a>#: ../admin/overview.php:229
6406
- <a name="cl-1571"></a>msgid "Running..."
6407
- <a name="cl-1572"></a>msgstr "Toimii..."
6408
- <a name="cl-1573"></a>
6409
- <a name="cl-1574"></a>#: ../admin/overview.php:276
6410
- <a name="cl-1575"></a>msgid "Check plugin/theme conflict"
6411
- <a name="cl-1576"></a>msgstr "Tarkista lisäosa/teema -konfliktit"
6412
- <a name="cl-1577"></a>
6413
- <a name="cl-1578"></a>#: ../admin/overview.php:277 ../admin/overview.php:283
6414
- <a name="cl-1579"></a>#: ../admin/overview.php:289
6415
- <a name="cl-1580"></a>msgid "Not tested"
6416
- <a name="cl-1581"></a>msgstr "Ei testattu"
6417
- <a name="cl-1582"></a>
6418
- <a name="cl-1583"></a>#: ../admin/overview.php:278
6419
- <a name="cl-1584"></a>msgid "No conflict could be detected"
6420
- <a name="cl-1585"></a>msgstr "Mitään konfliktia ei löytynyt"
6421
- <a name="cl-1586"></a>
6422
- <a name="cl-1587"></a>#: ../admin/overview.php:279
6423
- <a name="cl-1588"></a>msgid "Test failed, disable other plugins &amp; switch to default theme"
6424
- <a name="cl-1589"></a>msgstr ""
6425
- <a name="cl-1590"></a>"Testi epäonnistui, ota muut lisäosat pois käytöstä ja käytä oletusteemaa "
6426
- <a name="cl-1591"></a>"(Default Theme)"
6427
- <a name="cl-1592"></a>
6428
- <a name="cl-1593"></a>#: ../admin/overview.php:282
6429
- <a name="cl-1594"></a>msgid "Test image function"
6430
- <a name="cl-1595"></a>msgstr "Testaa kuvatoiminto"
6431
- <a name="cl-1596"></a>
6432
- <a name="cl-1597"></a>#: ../admin/overview.php:284
6433
- <a name="cl-1598"></a>msgid "The plugin could create images"
6434
- <a name="cl-1599"></a>msgstr "Lisäosa onnistui luomaan kuvia"
6435
- <a name="cl-1600"></a>
6436
- <a name="cl-1601"></a>#: ../admin/overview.php:285
6437
- <a name="cl-1602"></a>msgid "Couldn't create image, check your memory limit"
6438
- <a name="cl-1603"></a>msgstr "Kuvien luonti ei onnnsitu, tarkista muistirajasi (palvelimella)"
6439
- <a name="cl-1604"></a>
6440
- <a name="cl-1605"></a>#: ../admin/overview.php:288
6441
- <a name="cl-1606"></a>msgid "Check theme compatibility"
6442
- <a name="cl-1607"></a>msgstr "Tarkista teeman yhteensopivuus"
6443
- <a name="cl-1608"></a>
6444
- <a name="cl-1609"></a>#: ../admin/overview.php:290
6445
- <a name="cl-1610"></a>msgid "Your theme should work fine with NextCellent Gallery"
6446
- <a name="cl-1611"></a>msgstr "Teemasi pitäisi toimia kunnolla NextCellent Galleryn kanssa"
6447
- <a name="cl-1612"></a>
6448
- <a name="cl-1613"></a>#: ../admin/overview.php:291
6449
- <a name="cl-1614"></a>msgid "wp_head()/wp_footer() is missing, contact the theme author"
6450
- <a name="cl-1615"></a>msgstr "wp_head()/wp_footer() ei löytynyt, ota yhteys teeman tekijään"
6451
- <a name="cl-1616"></a>
6452
- <a name="cl-1617"></a>#: ../admin/overview.php:295
6453
- <a name="cl-1618"></a>msgid "Check plugin"
6454
- <a name="cl-1619"></a>msgstr "Tarkista lisäosa"
6455
- <a name="cl-1620"></a>
6456
- <a name="cl-1621"></a>#: ../admin/overview.php:316
6457
- <a name="cl-1622"></a>msgid "Graphic Library"
6458
- <a name="cl-1623"></a>msgstr "Grafiikkakirjasto"
6459
- <a name="cl-1624"></a>
6460
- <a name="cl-1625"></a>#: ../admin/overview.php:333 ../admin/overview.php:520
6461
- <a name="cl-1626"></a>#: ../admin/overview.php:710
6462
- <a name="cl-1627"></a>msgid "Loading&amp;#8230;"
6463
- <a name="cl-1628"></a>msgstr "Ladataan&amp;#8230;"
6464
- <a name="cl-1629"></a>
6465
- <a name="cl-1630"></a>#: ../admin/overview.php:333 ../admin/overview.php:520
6466
- <a name="cl-1631"></a>#: ../admin/overview.php:710
6467
- <a name="cl-1632"></a>msgid "This widget requires JavaScript."
6468
- <a name="cl-1633"></a>msgstr "Tämä vimpain vaatii JavaScriptin."
6469
- <a name="cl-1634"></a>
6470
- <a name="cl-1635"></a>#: ../admin/overview.php:345
6471
- <a name="cl-1636"></a>#, php-format
6472
- <a name="cl-1637"></a>msgid ""
6473
- <a name="cl-1638"></a>"Newsfeed could not be loaded. Check the &lt;a href=\"%s\"&gt;front page&lt;/a&gt; to "
6474
- <a name="cl-1639"></a>"check for updates."
6475
- <a name="cl-1640"></a>msgstr ""
6476
- <a name="cl-1641"></a>"Uutissyötettä ei voitu ladata. Tarkista &lt;a href=\"%s\"&gt;Etusivu&lt;/a&gt;lta "
6477
- <a name="cl-1642"></a>"päivitykset."
6478
- <a name="cl-1643"></a>
6479
- <a name="cl-1644"></a>#: ../admin/overview.php:357
6480
- <a name="cl-1645"></a>msgid "Untitled"
6481
- <a name="cl-1646"></a>msgstr "Nimetön"
6482
- <a name="cl-1647"></a>
6483
- <a name="cl-1648"></a>#: ../admin/overview.php:407
6484
- <a name="cl-1649"></a>msgid "At a Glance"
6485
- <a name="cl-1650"></a>msgstr "Yleisnäkymä"
6486
- <a name="cl-1651"></a>
6487
- <a name="cl-1652"></a>#: ../admin/overview.php:412
6488
- <a name="cl-1653"></a>msgid "Image"
6489
- <a name="cl-1654"></a>msgstr "Kuva"
6490
- <a name="cl-1655"></a>
6491
- <a name="cl-1656"></a>#: ../admin/overview.php:424 ../admin/tinymce/window.php:121
6492
- <a name="cl-1657"></a>#: ../admin/tinymce/window.php:236 ../lib/rewrite.php:224
6493
- <a name="cl-1658"></a>msgid "Album"
6494
- <a name="cl-1659"></a>msgstr "Albumi"
6495
- <a name="cl-1660"></a>
6496
- <a name="cl-1661"></a>#: ../admin/overview.php:433
6497
- <a name="cl-1662"></a>msgid "Upload pictures"
6498
- <a name="cl-1663"></a>msgstr "Lataa kuvia"
6499
- <a name="cl-1664"></a>
6500
- <a name="cl-1665"></a>#: ../admin/overview.php:434
6501
- <a name="cl-1666"></a>msgid "Here you can control your images, galleries and albums."
6502
- <a name="cl-1667"></a>msgstr "Täällä voi hallita kuviasi, gallerioitasi ja albumeitasi."
6503
- <a name="cl-1668"></a>
6504
- <a name="cl-1669"></a>#: ../admin/overview.php:464
6505
- <a name="cl-1670"></a>msgid "Storage Space"
6506
- <a name="cl-1671"></a>msgstr "Tallennustila"
6507
- <a name="cl-1672"></a>
6508
- <a name="cl-1673"></a>#: ../admin/overview.php:468
6509
- <a name="cl-1674"></a>#, php-format
6510
- <a name="cl-1675"></a>msgid ""
6511
- <a name="cl-1676"></a>"&lt;a href=\"%1$s\" title=\"Manage Uploads\" class=\"musublink\"&gt;%2$sMB&lt;/a&gt;"
6512
- <a name="cl-1677"></a>msgstr ""
6513
- <a name="cl-1678"></a>"&lt;a href=\"%1$s\" title=\"Hallitse latauksia\" class=\"musublink\"&gt;%2$sMt&lt;/a&gt;"
6514
- <a name="cl-1679"></a>
6515
- <a name="cl-1680"></a>#: ../admin/overview.php:469
6516
- <a name="cl-1681"></a>msgid "Space Allowed"
6517
- <a name="cl-1682"></a>msgstr "Sallittu tila"
6518
- <a name="cl-1683"></a>
6519
- <a name="cl-1684"></a>#: ../admin/overview.php:476
6520
- <a name="cl-1685"></a>#, php-format
6521
- <a name="cl-1686"></a>msgid ""
6522
- <a name="cl-1687"></a>"&lt;a href=\"%1$s\" title=\"Manage Uploads\" class=\"musublink\"&gt;%2$sMB (%3$s"
6523
- <a name="cl-1688"></a>"%%)&lt;/a&gt;"
6524
- <a name="cl-1689"></a>msgstr ""
6525
- <a name="cl-1690"></a>"&lt;a href=\"%1$s\" title=\"Hallitse latauksia\" class=\"musublink\"&gt;%2$sMt "
6526
- <a name="cl-1691"></a>"(%3$s%%)&lt;/a&gt;"
6527
- <a name="cl-1692"></a>
6528
- <a name="cl-1693"></a>#: ../admin/overview.php:477
6529
- <a name="cl-1694"></a>msgid "Space Used"
6530
- <a name="cl-1695"></a>msgstr "Käytetty tila"
6531
- <a name="cl-1696"></a>
6532
- <a name="cl-1697"></a>#: ../admin/overview.php:506
6533
- <a name="cl-1698"></a>msgid "Translation file successful updated. Please reload page."
6534
- <a name="cl-1699"></a>msgstr "Käännöstiedosto päivitetty onnistuneesti. Lataa sivu uudelleen."
6535
- <a name="cl-1700"></a>
6536
- <a name="cl-1701"></a>#: ../admin/overview.php:508
6537
- <a name="cl-1702"></a>msgid "Reload page"
6538
- <a name="cl-1703"></a>msgstr "Lataa sivu uudelleen"
6539
- <a name="cl-1704"></a>
6540
- <a name="cl-1705"></a>#: ../admin/overview.php:513
6541
- <a name="cl-1706"></a>msgid "Translation file couldn't be updated"
6542
- <a name="cl-1707"></a>msgstr "Käännöstiedoston päivitys ei onnistunut"
6543
- <a name="cl-1708"></a>
6544
- <a name="cl-1709"></a>#: ../admin/overview.php:550
6545
- <a name="cl-1710"></a>msgid "Download"
6546
- <a name="cl-1711"></a>msgstr "Lataa"
6547
- <a name="cl-1712"></a>
6548
- <a name="cl-1713"></a>#: ../admin/overview.php:579
6549
- <a name="cl-1714"></a>msgid "No GD support"
6550
- <a name="cl-1715"></a>msgstr "Ei GD-tukea"
6551
- <a name="cl-1716"></a>
6552
- <a name="cl-1717"></a>#: ../admin/overview.php:591 ../admin/overview.php:637
6553
- <a name="cl-1718"></a>#: ../admin/overview.php:640 ../admin/overview.php:643
6554
- <a name="cl-1719"></a>msgid "Yes"
6555
- <a name="cl-1720"></a>msgstr "Kyllä"
6556
- <a name="cl-1721"></a>
6557
- <a name="cl-1722"></a>#: ../admin/overview.php:593 ../admin/overview.php:638
6558
- <a name="cl-1723"></a>#: ../admin/overview.php:641 ../admin/overview.php:644
6559
- <a name="cl-1724"></a>msgid "No"
6560
- <a name="cl-1725"></a>msgstr "Ei"
6561
- <a name="cl-1726"></a>
6562
- <a name="cl-1727"></a>#: ../admin/overview.php:611
6563
- <a name="cl-1728"></a>msgid "Not set"
6564
- <a name="cl-1729"></a>msgstr "Ei asetettu"
6565
- <a name="cl-1730"></a>
6566
- <a name="cl-1731"></a>#: ../admin/overview.php:613 ../admin/overview.php:616
6567
- <a name="cl-1732"></a>msgid "On"
6568
- <a name="cl-1733"></a>msgstr "Päällä "
6569
- <a name="cl-1734"></a>
6570
- <a name="cl-1735"></a>#: ../admin/overview.php:614 ../admin/overview.php:617
6571
- <a name="cl-1736"></a>msgid "Off"
6572
- <a name="cl-1737"></a>msgstr "Pois päältä"
6573
- <a name="cl-1738"></a>
6574
- <a name="cl-1739"></a>#: ../admin/overview.php:620 ../admin/overview.php:623
6575
- <a name="cl-1740"></a>#: ../admin/overview.php:626 ../admin/overview.php:629
6576
- <a name="cl-1741"></a>#: ../admin/overview.php:632 ../admin/overview.php:635
6577
- <a name="cl-1742"></a>msgid "N/A"
6578
- <a name="cl-1743"></a>msgstr "N/A"
6579
- <a name="cl-1744"></a>
6580
- <a name="cl-1745"></a>#: ../admin/overview.php:634
6581
- <a name="cl-1746"></a>msgid " MByte"
6582
- <a name="cl-1747"></a>msgstr " Mtavu"
6583
- <a name="cl-1748"></a>
6584
- <a name="cl-1749"></a>#: ../admin/overview.php:647
6585
- <a name="cl-1750"></a>msgid "Operating System"
6586
- <a name="cl-1751"></a>msgstr "Käyttöjärjestelmä"
6587
- <a name="cl-1752"></a>
6588
- <a name="cl-1753"></a>#: ../admin/overview.php:648
6589
- <a name="cl-1754"></a>msgid "Server"
6590
- <a name="cl-1755"></a>msgstr "Palvelin"
6591
- <a name="cl-1756"></a>
6592
- <a name="cl-1757"></a>#: ../admin/overview.php:649
6593
- <a name="cl-1758"></a>msgid "Memory usage"
6594
- <a name="cl-1759"></a>msgstr "Muistinkäyttö"
6595
- <a name="cl-1760"></a>
6596
- <a name="cl-1761"></a>#: ../admin/overview.php:650
6597
- <a name="cl-1762"></a>msgid "MYSQL Version"
6598
- <a name="cl-1763"></a>msgstr "MySQL-versio"
6599
- <a name="cl-1764"></a>
6600
- <a name="cl-1765"></a>#: ../admin/overview.php:651
6601
- <a name="cl-1766"></a>msgid "SQL Mode"
6602
- <a name="cl-1767"></a>msgstr "SQL-tila"
6603
- <a name="cl-1768"></a>
6604
- <a name="cl-1769"></a>#: ../admin/overview.php:652
6605
- <a name="cl-1770"></a>msgid "PHP Version"
6606
- <a name="cl-1771"></a>msgstr "PHP-versio"
6607
- <a name="cl-1772"></a>
6608
- <a name="cl-1773"></a>#: ../admin/overview.php:653
6609
- <a name="cl-1774"></a>msgid "PHP Safe Mode"
6610
- <a name="cl-1775"></a>msgstr "PHP Safe Mode"
6611
- <a name="cl-1776"></a>
6612
- <a name="cl-1777"></a>#: ../admin/overview.php:654
6613
- <a name="cl-1778"></a>msgid "PHP Allow URL fopen"
6614
- <a name="cl-1779"></a>msgstr "PHP sallit URL fopen"
6615
- <a name="cl-1780"></a>
6616
- <a name="cl-1781"></a>#: ../admin/overview.php:655
6617
- <a name="cl-1782"></a>msgid "PHP Memory Limit"
6618
- <a name="cl-1783"></a>msgstr "PHP muistiraja"
6619
- <a name="cl-1784"></a>
6620
- <a name="cl-1785"></a>#: ../admin/overview.php:656
6621
- <a name="cl-1786"></a>msgid "PHP Max Upload Size"
6622
- <a name="cl-1787"></a>msgstr "PHP Max latauskoko"
6623
- <a name="cl-1788"></a>
6624
- <a name="cl-1789"></a>#: ../admin/overview.php:657
6625
- <a name="cl-1790"></a>msgid "PHP Max Post Size"
6626
- <a name="cl-1791"></a>msgstr "PHP Max artikkelikoko"
6627
- <a name="cl-1792"></a>
6628
- <a name="cl-1793"></a>#: ../admin/overview.php:658
6629
- <a name="cl-1794"></a>msgid "PCRE Backtracking Limit"
6630
- <a name="cl-1795"></a>msgstr "PCRE Backtracking -raja"
6631
- <a name="cl-1796"></a>
6632
- <a name="cl-1797"></a>#: ../admin/overview.php:659
6633
- <a name="cl-1798"></a>msgid "PHP Max Script Execute Time"
6634
- <a name="cl-1799"></a>msgstr "PHP Max skritpin suoritusaika"
6635
- <a name="cl-1800"></a>
6636
- <a name="cl-1801"></a>#: ../admin/overview.php:660
6637
- <a name="cl-1802"></a>msgid "PHP Exif support"
6638
- <a name="cl-1803"></a>msgstr "PHP Exif -tuki"
6639
- <a name="cl-1804"></a>
6640
- <a name="cl-1805"></a>#: ../admin/overview.php:661
6641
- <a name="cl-1806"></a>msgid "PHP IPTC support"
6642
- <a name="cl-1807"></a>msgstr "PHP IPTC -tuki"
6643
- <a name="cl-1808"></a>
6644
- <a name="cl-1809"></a>#: ../admin/overview.php:662
6645
- <a name="cl-1810"></a>msgid "PHP XML support"
6646
- <a name="cl-1811"></a>msgstr "PHP XML -tuki"
6647
- <a name="cl-1812"></a>
6648
- <a name="cl-1813"></a>#: ../admin/overview.php:674
6649
- <a name="cl-1814"></a>msgid ""
6650
- <a name="cl-1815"></a>"NextCellent Gallery contains some functions which are only available under "
6651
- <a name="cl-1816"></a>"PHP 5.2. You are using the old PHP 4 version, upgrade now! It's no longer "
6652
- <a name="cl-1817"></a>"supported by the PHP group. Many shared hosting providers offer both PHP 4 "
6653
- <a name="cl-1818"></a>"and PHP 5, running simultaneously. Ask your provider if they can do this."
6654
- <a name="cl-1819"></a>msgstr ""
6655
- <a name="cl-1820"></a>"NextCellent Gallery sisältää versiosta PHP 5.2 alkaen saatavia toimintoja. "
6656
- <a name="cl-1821"></a>"Käytät vanhaa PHP 4 -versiota. PHP group ei enää tue sitä. Monet "
6657
- <a name="cl-1822"></a>"palvelutoimittajat tarjoavat sekä PHP 4 että PHP 5 samanaikaisesti. Kysy "
6658
- <a name="cl-1823"></a>"apua palvelutoimittajaltasi."
6659
- <a name="cl-1824"></a>
6660
- <a name="cl-1825"></a>#: ../admin/overview.php:742
6661
- <a name="cl-1826"></a>msgid "Pay attention"
6662
- <a name="cl-1827"></a>msgstr "Ole tarkkana"
6663
- <a name="cl-1828"></a>
6664
- <a name="cl-1829"></a>#: ../admin/overview.php:742
6665
- <a name="cl-1830"></a>#, php-format
6666
- <a name="cl-1831"></a>msgid ""
6667
- <a name="cl-1832"></a>"third parties plugins that are compatible with NGG may not be "
6668
- <a name="cl-1833"></a>"100% compatible with NextCellent Gallery!"
6669
- <a name="cl-1834"></a>msgstr ""
6670
- <a name="cl-1835"></a>
6671
- <a name="cl-1836"></a>#: ../admin/overview.php:770
6672
- <a name="cl-1837"></a>msgid "Install"
6673
- <a name="cl-1838"></a>msgstr "Asenna"
6674
- <a name="cl-1839"></a>
6675
- <a name="cl-1840"></a>#: ../admin/overview.php:784
6676
- <a name="cl-1841"></a>#, php-format
6677
- <a name="cl-1842"></a>msgid ""
6678
- <a name="cl-1843"></a>"This plugin is a branch from NGG stable version 1.9.13.&lt;br&gt; Developed &amp; "
6679
- <a name="cl-1844"></a>"maintained by &lt;a href=\"%s\" target=\"_blank\"&gt;WPGetReady.com&lt;/a&gt;"
6680
- <a name="cl-1845"></a>msgstr ""
6681
- <a name="cl-1846"></a>"Tämä lisäosa on haara NGG stabiilista NGG 1.9.13-versiosta.&lt;br&gt; Kehitys &amp; "
6682
- <a name="cl-1847"></a>"ylläpito: &lt;a href=\"%s\" target=\"_blank\"&gt;WPGetReady.com&lt;/a&gt;"
6683
- <a name="cl-1848"></a>
6684
- <a name="cl-1849"></a>#: ../admin/overview.php:790
6685
- <a name="cl-1850"></a>#, fuzzy
6686
- <a name="cl-1851"></a>msgid "You can contribute by giving this plugin a good rating! Thanks a lot!"
6687
- <a name="cl-1852"></a>msgstr "Tue antamalla tälle lisäosalle hyvä arvio! Kiitoksia!!!"
6688
- <a name="cl-1853"></a>
6689
- <a name="cl-1854"></a>#: ../admin/overview.php:795
6690
- <a name="cl-1855"></a>msgid "Visit the plugin homepage"
6691
- <a name="cl-1856"></a>msgstr "Käy lisäosan kotisivulla"
6692
- <a name="cl-1857"></a>
6693
- <a name="cl-1858"></a>#: ../admin/publish.php:35
6694
- <a name="cl-1859"></a>msgid "Post title"
6695
- <a name="cl-1860"></a>msgstr "Artikkelin otsikko"
6696
- <a name="cl-1861"></a>
6697
- <a name="cl-1862"></a>#: ../admin/publish.php:37
6698
- <a name="cl-1863"></a>msgid "Enter the post title "
6699
- <a name="cl-1864"></a>msgstr "Anna artikkelin otsikko"
6700
- <a name="cl-1865"></a>
6701
- <a name="cl-1866"></a>#: ../admin/publish.php:40
6702
- <a name="cl-1867"></a>msgid "Width x height (in pixel)"
6703
- <a name="cl-1868"></a>msgstr "Leveys x korkeus (pikseleinä)"
6704
- <a name="cl-1869"></a>
6705
- <a name="cl-1870"></a>#: ../admin/publish.php:42
6706
- <a name="cl-1871"></a>msgid "Size of the image"
6707
- <a name="cl-1872"></a>msgstr "Kuvan koko"
6708
- <a name="cl-1873"></a>
6709
- <a name="cl-1874"></a>#: ../admin/publish.php:60
6710
- <a name="cl-1875"></a>msgid "Draft"
6711
- <a name="cl-1876"></a>msgstr "Luonnos"
6712
- <a name="cl-1877"></a>
6713
- <a name="cl-1878"></a>#: ../admin/roles.php:22
6714
- <a name="cl-1879"></a>msgid "Updated capabilities"
6715
- <a name="cl-1880"></a>msgstr "Päivitetyt toiminnot"
6716
- <a name="cl-1881"></a>
6717
- <a name="cl-1882"></a>#: ../admin/roles.php:28
6718
- <a name="cl-1883"></a>msgid "Roles / capabilities"
6719
- <a name="cl-1884"></a>msgstr "Roolit / toiminnot"
6720
- <a name="cl-1885"></a>
6721
- <a name="cl-1886"></a>#: ../admin/roles.php:29
6722
- <a name="cl-1887"></a>msgid ""
6723
- <a name="cl-1888"></a>"Select the lowest role which should be able to access the following "
6724
- <a name="cl-1889"></a>"capabilities. NextCellent Gallery supports the standard roles from WordPress."
6725
- <a name="cl-1890"></a>msgstr ""
6726
- <a name="cl-1891"></a>"Valitse alin rooli, joka pääsee seuraaviin toimintoihin. NextCellent Gallery "
6727
- <a name="cl-1892"></a>"tukee vain WordPressin standardirooleja."
6728
- <a name="cl-1893"></a>
6729
- <a name="cl-1894"></a>#: ../admin/roles.php:30
6730
- <a name="cl-1895"></a>msgid "For a more flexible user management you can use the"
6731
- <a name="cl-1896"></a>msgstr "Joustavampaan käyttäjähallintaan voit käyttää "
6732
- <a name="cl-1897"></a>
6733
- <a name="cl-1898"></a>#: ../admin/roles.php:35
6734
- <a name="cl-1899"></a>#, fuzzy
6735
- <a name="cl-1900"></a>msgid "NextCellent Gallery overview"
6736
- <a name="cl-1901"></a>msgstr "NextCellent Gallery ohjausnäkymä"
6737
- <a name="cl-1902"></a>
6738
- <a name="cl-1903"></a>#: ../admin/roles.php:39
6739
- <a name="cl-1904"></a>#, fuzzy
6740
- <a name="cl-1905"></a>msgid "Use TinyMCE Button / Add Media"
6741
- <a name="cl-1906"></a>msgstr "TinyMCE Button / Upload Tab"
6742
- <a name="cl-1907"></a>
6743
- <a name="cl-1908"></a>#: ../admin/roles.php:43
6744
- <a name="cl-1909"></a>msgid "Add gallery / Upload images"
6745
- <a name="cl-1910"></a>msgstr "Lisää galleria / lataa kuvia"
6746
- <a name="cl-1911"></a>
6747
- <a name="cl-1912"></a>#: ../admin/roles.php:47
6748
- <a name="cl-1913"></a>msgid "Manage gallery"
6749
- <a name="cl-1914"></a>msgstr "Gallerian hallinta "
6750
- <a name="cl-1915"></a>
6751
- <a name="cl-1916"></a>#: ../admin/roles.php:51
6752
- <a name="cl-1917"></a>msgid "Manage others gallery"
6753
- <a name="cl-1918"></a>msgstr "Hallitse toisten galleriaa "
6754
- <a name="cl-1919"></a>
6755
- <a name="cl-1920"></a>#: ../admin/roles.php:55
6756
- <a name="cl-1921"></a>msgid "Manage tags"
6757
- <a name="cl-1922"></a>msgstr "Hallitse tägejä "
6758
- <a name="cl-1923"></a>
6759
- <a name="cl-1924"></a>#: ../admin/roles.php:63
6760
- <a name="cl-1925"></a>msgid "Change style"
6761
- <a name="cl-1926"></a>msgstr "Muuta tyyliä "
6762
- <a name="cl-1927"></a>
6763
- <a name="cl-1928"></a>#: ../admin/roles.php:67
6764
- <a name="cl-1929"></a>msgid "Change options"
6765
- <a name="cl-1930"></a>msgstr "Muuta asetuksia "
6766
- <a name="cl-1931"></a>
6767
- <a name="cl-1932"></a>#: ../admin/roles.php:71
6768
- <a name="cl-1933"></a>msgid "Update capabilities"
6769
- <a name="cl-1934"></a>msgstr "Päivitä toimintoja "
6770
- <a name="cl-1935"></a>
6771
- <a name="cl-1936"></a>#: ../admin/rotate.php:55
6772
- <a name="cl-1937"></a>msgid "Image rotated"
6773
- <a name="cl-1938"></a>msgstr "Kuva pyöritetty "
6774
- <a name="cl-1939"></a>
6775
- <a name="cl-1940"></a>#: ../admin/rotate.php:56
6776
- <a name="cl-1941"></a>msgid "Error rotating thumbnail"
6777
- <a name="cl-1942"></a>msgstr "Esikatselukuvan pyöritys epäonnistui "
6778
- <a name="cl-1943"></a>
6779
- <a name="cl-1944"></a>#: ../admin/rotate.php:74
6780
- <a name="cl-1945"></a>#, fuzzy
6781
- <a name="cl-1946"></a>msgid "Select how you would like to rotate the image on the left."
6782
- <a name="cl-1947"></a>msgstr "Valitse vasemmalla olevasta kuvasta esikatselukuvan alue."
6783
- <a name="cl-1948"></a>
6784
- <a name="cl-1949"></a>#: ../admin/rotate.php:81
6785
- <a name="cl-1950"></a>msgid "90&amp;deg; clockwise"
6786
- <a name="cl-1951"></a>msgstr "90&amp;deg; myötäpäivään "
6787
- <a name="cl-1952"></a>
6788
- <a name="cl-1953"></a>#: ../admin/rotate.php:82
6789
- <a name="cl-1954"></a>msgid "90&amp;deg; anticlockwise"
6790
- <a name="cl-1955"></a>msgstr "90&amp;deg; vastapäivään "
6791
- <a name="cl-1956"></a>
6792
- <a name="cl-1957"></a>#: ../admin/rotate.php:83
6793
- <a name="cl-1958"></a>msgid "Flip vertically"
6794
- <a name="cl-1959"></a>msgstr "Peilikuva pystysuunnassa"
6795
- <a name="cl-1960"></a>
6796
- <a name="cl-1961"></a>#: ../admin/rotate.php:84
6797
- <a name="cl-1962"></a>msgid "Flip horizontally"
6798
- <a name="cl-1963"></a>msgstr "Peilikuva vaakasuunnassa "
6799
- <a name="cl-1964"></a>
6800
- <a name="cl-1965"></a>#: ../admin/settings.php:22
6801
- <a name="cl-1966"></a>#, php-format
6802
- <a name="cl-1967"></a>msgid "Rebuild image structure : %s / %s images"
6803
- <a name="cl-1968"></a>msgstr "Rakenna kuvarakenne uudestaan : %s / %s kuvaa"
6804
- <a name="cl-1969"></a>
6805
- <a name="cl-1970"></a>#: ../admin/settings.php:23
6806
- <a name="cl-1971"></a>#, php-format
6807
- <a name="cl-1972"></a>msgid "Rebuild gallery structure : %s / %s galleries"
6808
- <a name="cl-1973"></a>msgstr "Rakenna galleriarakenne uudestaan : %s / %s galleriaa"
6809
- <a name="cl-1974"></a>
6810
- <a name="cl-1975"></a>#: ../admin/settings.php:24
6811
- <a name="cl-1976"></a>#, php-format
6812
- <a name="cl-1977"></a>msgid "Rebuild album structure : %s / %s albums"
6813
- <a name="cl-1978"></a>msgstr "Rakenna albumirakenne uudestaan : %s / %s albumia"
6814
- <a name="cl-1979"></a>
6815
- <a name="cl-1980"></a>#: ../admin/settings.php:78
6816
- <a name="cl-1981"></a>msgid "Done."
6817
- <a name="cl-1982"></a>msgstr "Tehty."
6818
- <a name="cl-1983"></a>
6819
- <a name="cl-1984"></a>#: ../admin/settings.php:167
6820
- <a name="cl-1985"></a>#, fuzzy
6821
- <a name="cl-1986"></a>msgid "Settings updated successfully"
6822
- <a name="cl-1987"></a>msgstr "Päivitä onnistuneesti"
6823
- <a name="cl-1988"></a>
6824
- <a name="cl-1989"></a>#: ../admin/settings.php:185
6825
- <a name="cl-1990"></a>msgid "Cache cleared"
6826
- <a name="cl-1991"></a>msgstr "Välimuisti tyhjennetty"
6827
- <a name="cl-1992"></a>
6828
- <a name="cl-1993"></a>#: ../admin/settings.php:285
6829
- <a name="cl-1994"></a>msgid "General"
6830
- <a name="cl-1995"></a>msgstr "Yleistä"
6831
- <a name="cl-1996"></a>
6832
- <a name="cl-1997"></a>#: ../admin/settings.php:288 ../admin/settings.php:546
6833
- <a name="cl-1998"></a>msgid "Effects"
6834
- <a name="cl-1999"></a>msgstr "Efektit "
6835
- <a name="cl-2000"></a>
6836
- <a name="cl-2001"></a>#: ../admin/settings.php:289 ../admin/settings.php:587
6837
- <a name="cl-2002"></a>#: ../admin/tinymce/window.php:329
6838
- <a name="cl-2003"></a>msgid "Watermark"
6839
- <a name="cl-2004"></a>msgstr "Vesileima "
6840
- <a name="cl-2005"></a>
6841
- <a name="cl-2006"></a>#: ../admin/settings.php:290 ../admin/settings.php:483
6842
- <a name="cl-2007"></a>#: ../admin/settings.php:493 ../admin/settings.php:694
6843
- <a name="cl-2008"></a>#: ../admin/tinymce/window.php:159 ../lib/rewrite.php:216
6844
- <a name="cl-2009"></a>#: ../widgets/widgets.php:29
6845
- <a name="cl-2010"></a>msgid "Slideshow"
6846
- <a name="cl-2011"></a>msgstr "Diasarja "
6847
- <a name="cl-2012"></a>
6848
- <a name="cl-2013"></a>#: ../admin/settings.php:303
6849
- <a name="cl-2014"></a>msgid "General settings"
6850
- <a name="cl-2015"></a>msgstr "Yleiset asetukset "
6851
- <a name="cl-2016"></a>
6852
- <a name="cl-2017"></a>#: ../admin/settings.php:309 ../admin/wpmu.php:56
6853
- <a name="cl-2018"></a>msgid "Gallery path"
6854
- <a name="cl-2019"></a>msgstr "Galleriapolku "
6855
- <a name="cl-2020"></a>
6856
- <a name="cl-2021"></a>#: ../admin/settings.php:311
6857
- <a name="cl-2022"></a>msgid "This is the default path for all galleries"
6858
- <a name="cl-2023"></a>msgstr "Tämä on kaikkien gallerioiden oletuspolku "
6859
- <a name="cl-2024"></a>
6860
- <a name="cl-2025"></a>#: ../admin/settings.php:314
6861
- <a name="cl-2026"></a>msgid "Image files"
6862
- <a name="cl-2027"></a>msgstr "Kuvatiedostot"
6863
- <a name="cl-2028"></a>
6864
- <a name="cl-2029"></a>#: ../admin/settings.php:316
6865
- <a name="cl-2030"></a>msgid "Delete files when removing a gallery from the database"
6866
- <a name="cl-2031"></a>msgstr "Poista tiedostot, kun poistat gallerian tietokannasta"
6867
- <a name="cl-2032"></a>
6868
- <a name="cl-2033"></a>#: ../admin/settings.php:319
6869
- <a name="cl-2034"></a>msgid "Select graphic library"
6870
- <a name="cl-2035"></a>msgstr "Valitse grafiikkakirjasto"
6871
- <a name="cl-2036"></a>
6872
- <a name="cl-2037"></a>#: ../admin/settings.php:320
6873
- <a name="cl-2038"></a>msgid "GD Library"
6874
- <a name="cl-2039"></a>msgstr "GD-kirjasto"
6875
- <a name="cl-2040"></a>
6876
- <a name="cl-2041"></a>#: ../admin/settings.php:321
6877
- <a name="cl-2042"></a>msgid "ImageMagick (Experimental)"
6878
- <a name="cl-2043"></a>msgstr "ImageMagick (kokeellinen)"
6879
- <a name="cl-2044"></a>
6880
- <a name="cl-2045"></a>#: ../admin/settings.php:322
6881
- <a name="cl-2046"></a>msgid "Path to the library:"
6882
- <a name="cl-2047"></a>msgstr "Polku kirjastoon:"
6883
- <a name="cl-2048"></a>
6884
- <a name="cl-2049"></a>#: ../admin/settings.php:327
6885
- <a name="cl-2050"></a>msgid "Media RSS feed"
6886
- <a name="cl-2051"></a>msgstr "Media RSS -syöte"
6887
- <a name="cl-2052"></a>
6888
- <a name="cl-2053"></a>#: ../admin/settings.php:329
6889
- <a name="cl-2054"></a>msgid "Add a RSS feed to you blog header. Useful for CoolIris/PicLens"
6890
- <a name="cl-2055"></a>msgstr "Lisää RSS-syöte blogisi headeriin. Kätevä CoolIris/PicLensin kanssa"
6891
- <a name="cl-2056"></a>
6892
- <a name="cl-2057"></a>#: ../admin/settings.php:332
6893
- <a name="cl-2058"></a>msgid "PicLens/CoolIris"
6894
- <a name="cl-2059"></a>msgstr "PicLens/CoolIris"
6895
- <a name="cl-2060"></a>
6896
- <a name="cl-2061"></a>#: ../admin/settings.php:334
6897
- <a name="cl-2062"></a>msgid "Include support for PicLens and CoolIris"
6898
- <a name="cl-2063"></a>msgstr "Lisää tuki PicLensille ja CoolIrisille"
6899
- <a name="cl-2064"></a>
6900
- <a name="cl-2065"></a>#: ../admin/settings.php:335
6901
- <a name="cl-2066"></a>msgid ""
6902
- <a name="cl-2067"></a>"When activated, JavaScript is added to your site footer. Make sure that "
6903
- <a name="cl-2068"></a>"wp_footer is called in your theme."
6904
- <a name="cl-2069"></a>msgstr ""
6905
- <a name="cl-2070"></a>"Jos aktivoitu, JavaScript lisätään sivustosi alaotsikkoon. Varmista, että "
6906
- <a name="cl-2071"></a>"teemasi kutsuu wp_footer:ia."
6907
- <a name="cl-2072"></a>
6908
- <a name="cl-2073"></a>#: ../admin/settings.php:339
6909
- <a name="cl-2074"></a>msgid "Permalinks"
6910
- <a name="cl-2075"></a>msgstr "Kiinteät polkuosoitteet"
6911
- <a name="cl-2076"></a>
6912
- <a name="cl-2077"></a>#: ../admin/settings.php:342
6913
- <a name="cl-2078"></a>msgid "Use permalinks"
6914
- <a name="cl-2079"></a>msgstr "Käytä kiinteitä polkuosoitteita"
6915
- <a name="cl-2080"></a>
6916
- <a name="cl-2081"></a>#: ../admin/settings.php:344
6917
- <a name="cl-2082"></a>msgid "Adds a static link to all images"
6918
- <a name="cl-2083"></a>msgstr "Lisää staattisen linkin kaikkiin kuviin"
6919
- <a name="cl-2084"></a>
6920
- <a name="cl-2085"></a>#: ../admin/settings.php:345
6921
- <a name="cl-2086"></a>msgid ""
6922
- <a name="cl-2087"></a>"When activating this option, you need to update your permalink structure once"
6923
- <a name="cl-2088"></a>msgstr ""
6924
- <a name="cl-2089"></a>"Kun aktivoit tämän vaihtoehdon, sinun on päivitettävä pysyvien linkkien "
6925
- <a name="cl-2090"></a>"rakenne kerran."
6926
- <a name="cl-2091"></a>
6927
- <a name="cl-2092"></a>#: ../admin/settings.php:349
6928
- <a name="cl-2093"></a>msgid "Gallery slug:"
6929
- <a name="cl-2094"></a>msgstr "Gallerian lyhytnimi :"
6930
- <a name="cl-2095"></a>
6931
- <a name="cl-2096"></a>#: ../admin/settings.php:353
6932
- <a name="cl-2097"></a>msgid "Recreate URLs"
6933
- <a name="cl-2098"></a>msgstr "Luo URL:t uudelleen"
6934
- <a name="cl-2099"></a>
6935
- <a name="cl-2100"></a>#: ../admin/settings.php:354
6936
- <a name="cl-2101"></a>msgid "Start now"
6937
- <a name="cl-2102"></a>msgstr "Aloita nyt"
6938
- <a name="cl-2103"></a>
6939
- <a name="cl-2104"></a>#: ../admin/settings.php:355
6940
- <a name="cl-2105"></a>msgid "If you've changed these settings, you'll have to recreate the URLs."
6941
- <a name="cl-2106"></a>msgstr "Jos olet muuttanut näitä asetuksia, sinun on luotava URL:t uudelleen."
6942
- <a name="cl-2107"></a>
6943
- <a name="cl-2108"></a>#: ../admin/settings.php:358
6944
- <a name="cl-2109"></a>msgid "Related images"
6945
- <a name="cl-2110"></a>msgstr "Liittyvät kuvat"
6946
- <a name="cl-2111"></a>
6947
- <a name="cl-2112"></a>#: ../admin/settings.php:361
6948
- <a name="cl-2113"></a>msgid "Add related images"
6949
- <a name="cl-2114"></a>msgstr "Lisää liittyvät kuvat"
6950
- <a name="cl-2115"></a>
6951
- <a name="cl-2116"></a>#: ../admin/settings.php:363
6952
- <a name="cl-2117"></a>msgid "This will add related images to every post"
6953
- <a name="cl-2118"></a>msgstr "Tämä lisää liittyvät kuvat kaikkiin artikkeleihin"
6954
- <a name="cl-2119"></a>
6955
- <a name="cl-2120"></a>#: ../admin/settings.php:367
6956
- <a name="cl-2121"></a>msgid "Match with"
6957
- <a name="cl-2122"></a>msgstr "Vertaa "
6958
- <a name="cl-2123"></a>
6959
- <a name="cl-2124"></a>#: ../admin/settings.php:368
6960
- <a name="cl-2125"></a>msgid "Categories"
6961
- <a name="cl-2126"></a>msgstr "Aihealueet "
6962
- <a name="cl-2127"></a>
6963
- <a name="cl-2128"></a>#: ../admin/settings.php:373
6964
- <a name="cl-2129"></a>msgid "Max. number of images"
6965
- <a name="cl-2130"></a>msgstr "Kuvien maksimimäärä"
6966
- <a name="cl-2131"></a>
6967
- <a name="cl-2132"></a>#: ../admin/settings.php:375
6968
- <a name="cl-2133"></a>msgid "0 will show all images"
6969
- <a name="cl-2134"></a>msgstr "0 näyttää kaikki kuvat"
6970
- <a name="cl-2135"></a>
6971
- <a name="cl-2136"></a>#: ../admin/settings.php:388
6972
- <a name="cl-2137"></a>msgid "Image settings"
6973
- <a name="cl-2138"></a>msgstr "Kuva-asetukset"
6974
- <a name="cl-2139"></a>
6975
- <a name="cl-2140"></a>#: ../admin/settings.php:402
6976
- <a name="cl-2141"></a>msgid "Image quality"
6977
- <a name="cl-2142"></a>msgstr "Kuvan laatu"
6978
- <a name="cl-2143"></a>
6979
- <a name="cl-2144"></a>#: ../admin/settings.php:407
6980
- <a name="cl-2145"></a>msgid "Backup original"
6981
- <a name="cl-2146"></a>msgstr "Varmista alkuperäinen"
6982
- <a name="cl-2147"></a>
6983
- <a name="cl-2148"></a>#: ../admin/settings.php:409
6984
- <a name="cl-2149"></a>msgid "Create a backup for the resized images"
6985
- <a name="cl-2150"></a>msgstr "Luo varmistus kooltaan muuteuista kuvista"
6986
- <a name="cl-2151"></a>
6987
- <a name="cl-2152"></a>#: ../admin/settings.php:412
6988
- <a name="cl-2153"></a>msgid "Automatically resize"
6989
- <a name="cl-2154"></a>msgstr "Muuta koko automaattisesti"
6990
- <a name="cl-2155"></a>
6991
- <a name="cl-2156"></a>#: ../admin/settings.php:414
6992
- <a name="cl-2157"></a>msgid "Automatically resize images on upload."
6993
- <a name="cl-2158"></a>msgstr "Muuta kuvien koko automaattisesti latauksessa."
6994
- <a name="cl-2159"></a>
6995
- <a name="cl-2160"></a>#: ../admin/settings.php:418
6996
- <a name="cl-2161"></a>msgid "Thumbnail settings"
6997
- <a name="cl-2162"></a>msgstr "Esikatselukuvien asetukset"
6998
- <a name="cl-2163"></a>
6999
- <a name="cl-2164"></a>#: ../admin/settings.php:419
7000
- <a name="cl-2165"></a>msgid ""
7001
- <a name="cl-2166"></a>"Please note: if you change these settings, you need to recreate the "
7002
- <a name="cl-2167"></a>"thumbnails under -&gt; Manage Gallery ."
7003
- <a name="cl-2168"></a>msgstr ""
7004
- <a name="cl-2169"></a>"Huom : Jos muutat näitä asetuksia, sinun on luotava esikatselukuvat "
7005
- <a name="cl-2170"></a>"uudelleen -&gt; Gallerian hallinta."
7006
- <a name="cl-2171"></a>
7007
- <a name="cl-2172"></a>#: ../admin/settings.php:422
7008
- <a name="cl-2173"></a>msgid "Thumbnail size"
7009
- <a name="cl-2174"></a>msgstr "Esikatselukuvan koko"
7010
- <a name="cl-2175"></a>
7011
- <a name="cl-2176"></a>#: ../admin/settings.php:436
7012
- <a name="cl-2177"></a>msgid "Thumbnail quality"
7013
- <a name="cl-2178"></a>msgstr "Esikatselukuvan laatu"
7014
- <a name="cl-2179"></a>
7015
- <a name="cl-2180"></a>#: ../admin/settings.php:440
7016
- <a name="cl-2181"></a>msgid "Single picture"
7017
- <a name="cl-2182"></a>msgstr "Yksittäiskuva"
7018
- <a name="cl-2183"></a>
7019
- <a name="cl-2184"></a>#: ../admin/settings.php:443
7020
- <a name="cl-2185"></a>msgid "Clear cache folder"
7021
- <a name="cl-2186"></a>msgstr "Tyhjennä välimuistikansio"
7022
- <a name="cl-2187"></a>
7023
- <a name="cl-2188"></a>#: ../admin/settings.php:444
7024
- <a name="cl-2189"></a>msgid "Proceed now"
7025
- <a name="cl-2190"></a>msgstr "Jatka nyt"
7026
- <a name="cl-2191"></a>
7027
- <a name="cl-2192"></a>#: ../admin/settings.php:463
7028
- <a name="cl-2193"></a>msgid "Inline gallery"
7029
- <a name="cl-2194"></a>msgstr "Inline-galleria"
7030
- <a name="cl-2195"></a>
7031
- <a name="cl-2196"></a>#: ../admin/settings.php:465
7032
- <a name="cl-2197"></a>msgid "Galleries will not be shown on a subpage, but on the same page."
7033
- <a name="cl-2198"></a>msgstr "Gallerioita ei näytetä alasivulla, vaan samalla sivulla."
7034
- <a name="cl-2199"></a>
7035
- <a name="cl-2200"></a>#: ../admin/settings.php:469
7036
- <a name="cl-2201"></a>msgid "Images per page"
7037
- <a name="cl-2202"></a>msgstr "Kuvien lukumäärä sivulla"
7038
- <a name="cl-2203"></a>
7039
- <a name="cl-2204"></a>#: ../admin/settings.php:472
7040
- <a name="cl-2205"></a>msgid "0 will disable pagination, all images on one page"
7041
- <a name="cl-2206"></a>msgstr "0 estää sivutuksen, kaikki kuvat samalla sivulla"
7042
- <a name="cl-2207"></a>
7043
- <a name="cl-2208"></a>#: ../admin/settings.php:476
7044
- <a name="cl-2209"></a>msgid "Columns"
7045
- <a name="cl-2210"></a>msgstr "Sarakkeita"
7046
- <a name="cl-2211"></a>
7047
- <a name="cl-2212"></a>#: ../admin/settings.php:479
7048
- <a name="cl-2213"></a>msgid ""
7049
- <a name="cl-2214"></a>"0 will display as much columns as possible. This is normally only required "
7050
- <a name="cl-2215"></a>"for captions below the images."
7051
- <a name="cl-2216"></a>msgstr ""
7052
- <a name="cl-2217"></a>"0 näyttää niin monta kuin mahtuu teemasi sisältöleveydelle. Asetus tarvitaan "
7053
- <a name="cl-2218"></a>"yleensä vain kuviatekstejä varten."
7054
- <a name="cl-2219"></a>
7055
- <a name="cl-2220"></a>#: ../admin/settings.php:484
7056
- <a name="cl-2221"></a>msgid "Enable slideshow"
7057
- <a name="cl-2222"></a>msgstr "Käytä diaesitystä"
7058
- <a name="cl-2223"></a>
7059
- <a name="cl-2224"></a>#: ../admin/settings.php:484
7060
- <a name="cl-2225"></a>msgid "Text to show:"
7061
- <a name="cl-2226"></a>msgstr "Näytettävä teksti:"
7062
- <a name="cl-2227"></a>
7063
- <a name="cl-2228"></a>#: ../admin/settings.php:487
7064
- <a name="cl-2229"></a>msgid ""
7065
- <a name="cl-2230"></a>"This is the text the visitors will have to click to switch between display "
7066
- <a name="cl-2231"></a>"modes."
7067
- <a name="cl-2232"></a>msgstr ""
7068
- <a name="cl-2233"></a>"Kävijöiden on klikattava tätä tekstiä vaihtaakseen esitysmuotojen välillä."
7069
- <a name="cl-2234"></a>
7070
- <a name="cl-2235"></a>#: ../admin/settings.php:491
7071
- <a name="cl-2236"></a>msgid "Show first"
7072
- <a name="cl-2237"></a>msgstr "Näytä ensin."
7073
- <a name="cl-2238"></a>
7074
- <a name="cl-2239"></a>#: ../admin/settings.php:492 ../widgets/widgets.php:218
7075
- <a name="cl-2240"></a>msgid "Thumbnails"
7076
- <a name="cl-2241"></a>msgstr "Esikatselukuvat"
7077
- <a name="cl-2242"></a>
7078
- <a name="cl-2243"></a>#: ../admin/settings.php:498
7079
- <a name="cl-2244"></a>msgid "ImageBrowser"
7080
- <a name="cl-2245"></a>msgstr "Kuvaselain"
7081
- <a name="cl-2246"></a>
7082
- <a name="cl-2247"></a>#: ../admin/settings.php:500
7083
- <a name="cl-2248"></a>msgid "Use ImageBrowser instead of another effect."
7084
- <a name="cl-2249"></a>msgstr "Käytä kuvaselainta jonkin muun efektin asemesta. "
7085
- <a name="cl-2250"></a>
7086
- <a name="cl-2251"></a>#: ../admin/settings.php:504
7087
- <a name="cl-2252"></a>msgid "Hidden images"
7088
- <a name="cl-2253"></a>msgstr "Piilotetut kuvat"
7089
- <a name="cl-2254"></a>
7090
- <a name="cl-2255"></a>#: ../admin/settings.php:506
7091
- <a name="cl-2256"></a>msgid ""
7092
- <a name="cl-2257"></a>"Loads all images for the modal window, when pagination is used (like "
7093
- <a name="cl-2258"></a>"Thickbox, Lightbox etc.)."
7094
- <a name="cl-2259"></a>msgstr ""
7095
- <a name="cl-2260"></a>"Lataa kaikki kuvat modaali-ikkunaan kun sivutus on käytössä (esim. Thickbox, "
7096
- <a name="cl-2261"></a>"Lightbox jne.)."
7097
- <a name="cl-2262"></a>
7098
- <a name="cl-2263"></a>#: ../admin/settings.php:507
7099
- <a name="cl-2264"></a>msgid "Note: this increases the page load (possibly a lot)"
7100
- <a name="cl-2265"></a>msgstr "huom: tämä lisää sivukuormitusta (mahdollisesti paljonkin)"
7101
- <a name="cl-2266"></a>
7102
- <a name="cl-2267"></a>#: ../admin/settings.php:511
7103
- <a name="cl-2268"></a>msgid "AJAX pagination"
7104
- <a name="cl-2269"></a>msgstr "Aktivoi AJAX-sivutus"
7105
- <a name="cl-2270"></a>
7106
- <a name="cl-2271"></a>#: ../admin/settings.php:513
7107
- <a name="cl-2272"></a>msgid "Use AJAX pagination to browse images without reloading the page."
7108
- <a name="cl-2273"></a>msgstr "Selaa kuvia AJAX-sivutulsella ilman sivun latausta. "
7109
- <a name="cl-2274"></a>
7110
- <a name="cl-2275"></a>#: ../admin/settings.php:514
7111
- <a name="cl-2276"></a>msgid "Note: works only in combination with the Shutter effect."
7112
- <a name="cl-2277"></a>msgstr "Huom: toimii vain Shutter-efektin kanssa "
7113
- <a name="cl-2278"></a>
7114
- <a name="cl-2279"></a>#: ../admin/settings.php:518
7115
- <a name="cl-2280"></a>msgid "Sort options"
7116
- <a name="cl-2281"></a>msgstr "Lajitteluvaihtoehdot"
7117
- <a name="cl-2282"></a>
7118
- <a name="cl-2283"></a>#: ../admin/settings.php:521
7119
- <a name="cl-2284"></a>msgid "Sort thumbnails"
7120
- <a name="cl-2285"></a>msgstr "Lajittele esikatselukuvat"
7121
- <a name="cl-2286"></a>
7122
- <a name="cl-2287"></a>#: ../admin/settings.php:523
7123
- <a name="cl-2288"></a>msgid "Custom order"
7124
- <a name="cl-2289"></a>msgstr "Räätälöity järjestys"
7125
- <a name="cl-2290"></a>
7126
- <a name="cl-2291"></a>#: ../admin/settings.php:525
7127
- <a name="cl-2292"></a>msgid "File name"
7128
- <a name="cl-2293"></a>msgstr "Tiedostonimi"
7129
- <a name="cl-2294"></a>
7130
- <a name="cl-2295"></a>#: ../admin/settings.php:526
7131
- <a name="cl-2296"></a>msgid "Alt / Title text"
7132
- <a name="cl-2297"></a>msgstr "Alt / otsikkoteksti"
7133
- <a name="cl-2298"></a>
7134
- <a name="cl-2299"></a>#: ../admin/settings.php:527 ../view/imagebrowser-exif.php:58
7135
- <a name="cl-2300"></a>msgid "Date / Time"
7136
- <a name="cl-2301"></a>msgstr "Pvm/Aika"
7137
- <a name="cl-2302"></a>
7138
- <a name="cl-2303"></a>#: ../admin/settings.php:531
7139
- <a name="cl-2304"></a>msgid "Sort direction"
7140
- <a name="cl-2305"></a>msgstr "Lajittelusuunta"
7141
- <a name="cl-2306"></a>
7142
- <a name="cl-2307"></a>#: ../admin/settings.php:550
7143
- <a name="cl-2308"></a>msgid ""
7144
- <a name="cl-2309"></a>"Here you can select the thumbnail effect, NextCellent Gallery will integrate "
7145
- <a name="cl-2310"></a>"the required HTML code in the images. Please note that only the Shutter and "
7146
- <a name="cl-2311"></a>"Thickbox effect will automatic added to your theme."
7147
- <a name="cl-2312"></a>msgstr ""
7148
- <a name="cl-2313"></a>"Tässä voit valita esikatselukuvien efektin, NextGEN Gallery lisää "
7149
- <a name="cl-2314"></a>"tarvittavan HTML-koodin kuviin. Huomaa, että vain Shutter- ja Thickbox -"
7150
- <a name="cl-2315"></a>"efektit lisätään automaattisesti teemaasi."
7151
- <a name="cl-2316"></a>
7152
- <a name="cl-2317"></a>#: ../admin/settings.php:551
7153
- <a name="cl-2318"></a>msgid "With the placeholder"
7154
- <a name="cl-2319"></a>msgstr "Sijoituspaikalla"
7155
- <a name="cl-2320"></a>
7156
- <a name="cl-2321"></a>#: ../admin/settings.php:551
7157
- <a name="cl-2322"></a>msgid ""
7158
- <a name="cl-2323"></a>"you can activate a navigation through the images (depend on the effect). "
7159
- <a name="cl-2324"></a>"Change the code line only , when you use a different thumbnail effect or you "
7160
- <a name="cl-2325"></a>"know what you do."
7161
- <a name="cl-2326"></a>msgstr ""
7162
- <a name="cl-2327"></a>"voit aktivoida navigoinnin kuvista (efektistä riippuen). Muuta koodiriviä "
7163
- <a name="cl-2328"></a>"vain, kun käytät toista esikatselukuvien efektiä tai tiedät, mitä olet "
7164
- <a name="cl-2329"></a>"tekemässä."
7165
- <a name="cl-2330"></a>
7166
- <a name="cl-2331"></a>#: ../admin/settings.php:554
7167
- <a name="cl-2332"></a>msgid "JavaScript Thumbnail effect"
7168
- <a name="cl-2333"></a>msgstr "JavaScript-esikatselukuva-efekti"
7169
- <a name="cl-2334"></a>
7170
- <a name="cl-2335"></a>#: ../admin/settings.php:558
7171
- <a name="cl-2336"></a>msgid "Thickbox"
7172
- <a name="cl-2337"></a>msgstr "Thickbox"
7173
- <a name="cl-2338"></a>
7174
- <a name="cl-2339"></a>#: ../admin/settings.php:559
7175
- <a name="cl-2340"></a>msgid "Lightbox"
7176
- <a name="cl-2341"></a>msgstr "Lightbox"
7177
- <a name="cl-2342"></a>
7178
- <a name="cl-2343"></a>#: ../admin/settings.php:560
7179
- <a name="cl-2344"></a>msgid "Highslide"
7180
- <a name="cl-2345"></a>msgstr "Highslide"
7181
- <a name="cl-2346"></a>
7182
- <a name="cl-2347"></a>#: ../admin/settings.php:561
7183
- <a name="cl-2348"></a>msgid "Shutter"
7184
- <a name="cl-2349"></a>msgstr "Suljin"
7185
- <a name="cl-2350"></a>
7186
- <a name="cl-2351"></a>#: ../admin/settings.php:562 ../admin/tinymce/window.php:184
7187
- <a name="cl-2352"></a>msgid "Custom"
7188
- <a name="cl-2353"></a>msgstr "Räätälöity"
7189
- <a name="cl-2354"></a>
7190
- <a name="cl-2355"></a>#: ../admin/settings.php:567
7191
- <a name="cl-2356"></a>msgid "Link Code line"
7192
- <a name="cl-2357"></a>msgstr "Linkki-koodirivi"
7193
- <a name="cl-2358"></a>
7194
- <a name="cl-2359"></a>#: ../admin/settings.php:588
7195
- <a name="cl-2360"></a>msgid ""
7196
- <a name="cl-2361"></a>"Please note : you can only activate the watermark under -&gt; Manage "
7197
- <a name="cl-2362"></a>"Galleries . This action cannot be undone."
7198
- <a name="cl-2363"></a>msgstr ""
7199
- <a name="cl-2364"></a>"Huom: voit aktivoida vesileiman vain --&gt; Gallerian hallinta. Toimenpidettä "
7200
- <a name="cl-2365"></a>"ei voi peruuttaa. "
7201
- <a name="cl-2366"></a>
7202
- <a name="cl-2367"></a>#: ../admin/settings.php:593
7203
- <a name="cl-2368"></a>msgid "Preview"
7204
- <a name="cl-2369"></a>msgstr "Esikatselu"
7205
- <a name="cl-2370"></a>
7206
- <a name="cl-2371"></a>#: ../admin/settings.php:595 ../admin/settings.php:600
7207
- <a name="cl-2372"></a>msgid "Position"
7208
- <a name="cl-2373"></a>msgstr "Sijainti"
7209
- <a name="cl-2374"></a>
7210
- <a name="cl-2375"></a>#: ../admin/settings.php:620
7211
- <a name="cl-2376"></a>msgid "Offset"
7212
- <a name="cl-2377"></a>msgstr "Siirtymä"
7213
- <a name="cl-2378"></a>
7214
- <a name="cl-2379"></a>#: ../admin/settings.php:636
7215
- <a name="cl-2380"></a>msgid "Use image as watermark"
7216
- <a name="cl-2381"></a>msgstr "Käytä kuvaa vesileimana"
7217
- <a name="cl-2382"></a>
7218
- <a name="cl-2383"></a>#: ../admin/settings.php:639
7219
- <a name="cl-2384"></a>msgid "URL to file"
7220
- <a name="cl-2385"></a>msgstr "URL tiedostoon"
7221
- <a name="cl-2386"></a>
7222
- <a name="cl-2387"></a>#: ../admin/settings.php:641
7223
- <a name="cl-2388"></a>msgid "The accessing of URL files is disabled at your server (allow_url_fopen)"
7224
- <a name="cl-2389"></a>msgstr "Pääsy URL-tiedostoihin on estetty tällä palvelimella (allow_url_fopen)"
7225
- <a name="cl-2390"></a>
7226
- <a name="cl-2391"></a>#: ../admin/settings.php:644
7227
- <a name="cl-2392"></a>msgid "Use text as watermark"
7228
- <a name="cl-2393"></a>msgstr "Käytä tekstiä vesileimana"
7229
- <a name="cl-2394"></a>
7230
- <a name="cl-2395"></a>#: ../admin/settings.php:647
7231
- <a name="cl-2396"></a>msgid "Font"
7232
- <a name="cl-2397"></a>msgstr "Fontti"
7233
- <a name="cl-2398"></a>
7234
- <a name="cl-2399"></a>#: ../admin/settings.php:656
7235
- <a name="cl-2400"></a>msgid "This function will not work, cause you need the FreeType library"
7236
- <a name="cl-2401"></a>msgstr "Tämä toiminto vaatii FreeType-kirjaston"
7237
- <a name="cl-2402"></a>
7238
- <a name="cl-2403"></a>#: ../admin/settings.php:658
7239
- <a name="cl-2404"></a>msgid ""
7240
- <a name="cl-2405"></a>"You can upload more fonts in the folder &lt;strong&gt;nggallery/fonts&lt;/strong&gt;"
7241
- <a name="cl-2406"></a>msgstr "Voit ladata lisää fontteja kansioon &lt;strong&gt;nggallery/fonts&lt;/strong&gt;."
7242
- <a name="cl-2407"></a>
7243
- <a name="cl-2408"></a>#: ../admin/settings.php:667
7244
- <a name="cl-2409"></a>msgid "Color"
7245
- <a name="cl-2410"></a>msgstr "Väri"
7246
- <a name="cl-2411"></a>
7247
- <a name="cl-2412"></a>#: ../admin/settings.php:669
7248
- <a name="cl-2413"></a>msgid "(hex w/o #)"
7249
- <a name="cl-2414"></a>msgstr "(hex w/o #)"
7250
- <a name="cl-2415"></a>
7251
- <a name="cl-2416"></a>#: ../admin/settings.php:672
7252
- <a name="cl-2417"></a>msgid "Text"
7253
- <a name="cl-2418"></a>msgstr "Teksti"
7254
- <a name="cl-2419"></a>
7255
- <a name="cl-2420"></a>#: ../admin/settings.php:676
7256
- <a name="cl-2421"></a>msgid "Opaque"
7257
- <a name="cl-2422"></a>msgstr "Läpinäkyvyys"
7258
- <a name="cl-2423"></a>
7259
- <a name="cl-2424"></a>#: ../admin/settings.php:697
7260
- <a name="cl-2425"></a>msgid "Default size"
7261
- <a name="cl-2426"></a>msgstr "Oletuskoko (L x K)"
7262
- <a name="cl-2427"></a>
7263
- <a name="cl-2428"></a>#: ../admin/settings.php:705
7264
- <a name="cl-2429"></a>msgid "Duration"
7265
- <a name="cl-2430"></a>msgstr "Kestoaika"
7266
- <a name="cl-2431"></a>
7267
- <a name="cl-2432"></a>#: ../admin/settings.php:706
7268
- <a name="cl-2433"></a>msgid "sec."
7269
- <a name="cl-2434"></a>msgstr "s."
7270
- <a name="cl-2435"></a>
7271
- <a name="cl-2436"></a>#: ../admin/settings.php:709 ../admin/settings.php:783
7272
- <a name="cl-2437"></a>msgid "Transition / Fade effect"
7273
- <a name="cl-2438"></a>msgstr "Siirtymäefekti"
7274
- <a name="cl-2439"></a>
7275
- <a name="cl-2440"></a>#: ../admin/settings.php:712 ../admin/settings.php:786
7276
- <a name="cl-2441"></a>msgid "fade"
7277
- <a name="cl-2442"></a>msgstr "häivytys"
7278
- <a name="cl-2443"></a>
7279
- <a name="cl-2444"></a>#: ../admin/settings.php:713
7280
- <a name="cl-2445"></a>msgid "blindX"
7281
- <a name="cl-2446"></a>msgstr "blindX"
7282
- <a name="cl-2447"></a>
7283
- <a name="cl-2448"></a>#: ../admin/settings.php:714
7284
- <a name="cl-2449"></a>msgid "cover"
7285
- <a name="cl-2450"></a>msgstr "peitto"
7286
- <a name="cl-2451"></a>
7287
- <a name="cl-2452"></a>#: ../admin/settings.php:715
7288
- <a name="cl-2453"></a>msgid "scrollUp"
7289
- <a name="cl-2454"></a>msgstr "scrollUp"
7290
- <a name="cl-2455"></a>
7291
- <a name="cl-2456"></a>#: ../admin/settings.php:716
7292
- <a name="cl-2457"></a>msgid "scrollDown"
7293
- <a name="cl-2458"></a>msgstr "scrollDown"
7294
- <a name="cl-2459"></a>
7295
- <a name="cl-2460"></a>#: ../admin/settings.php:717
7296
- <a name="cl-2461"></a>msgid "shuffle"
7297
- <a name="cl-2462"></a>msgstr "sekoitus"
7298
- <a name="cl-2463"></a>
7299
- <a name="cl-2464"></a>#: ../admin/settings.php:718
7300
- <a name="cl-2465"></a>msgid "toss"
7301
- <a name="cl-2466"></a>msgstr "heitä"
7302
- <a name="cl-2467"></a>
7303
- <a name="cl-2468"></a>#: ../admin/settings.php:719
7304
- <a name="cl-2469"></a>msgid "wipe"
7305
- <a name="cl-2470"></a>msgstr "pyyhi"
7306
- <a name="cl-2471"></a>
7307
- <a name="cl-2472"></a>#: ../admin/settings.php:721
7308
- <a name="cl-2473"></a>msgid "See here for more information about the effects :"
7309
- <a name="cl-2474"></a>msgstr "Täältä löytyy lisätietoa efekteistä:"
7310
- <a name="cl-2475"></a>
7311
- <a name="cl-2476"></a>#: ../admin/settings.php:725
7312
- <a name="cl-2477"></a>msgid "Settings for the JW Image Rotator"
7313
- <a name="cl-2478"></a>msgstr "JW Image Rotatorin asetukset"
7314
- <a name="cl-2479"></a>
7315
- <a name="cl-2480"></a>#: ../admin/settings.php:726
7316
- <a name="cl-2481"></a>msgid ""
7317
- <a name="cl-2482"></a>"NextCellent Gallery flash slideshows use the JW Image Rotator Version 3.17 by"
7318
- <a name="cl-2483"></a>msgstr ""
7319
- <a name="cl-2484"></a>"NextCellent Gallery flash-diashowt käyttävtä JW Image Rotator versiota 3.17, "
7320
- <a name="cl-2485"></a>"tekijä "
7321
- <a name="cl-2486"></a>
7322
- <a name="cl-2487"></a>#: ../admin/settings.php:727
7323
- <a name="cl-2488"></a>msgid ""
7324
- <a name="cl-2489"></a>"Press the button below to search for it automatically. For earlier versions "
7325
- <a name="cl-2490"></a>"of NextCellent Gallery, you'll need to\n"
7326
- <a name="cl-2491"></a>"\t\t\t\t\tupload the file manually to the"
7327
- <a name="cl-2492"></a>msgstr ""
7328
- <a name="cl-2493"></a>"Paina alla olevaa nappulaa etsiäksesi automaattisesti. Aikaisemmissa "
7329
- <a name="cl-2494"></a>"NextCellent Gallery versiossa on \n"
7330
- <a name="cl-2495"></a>"\t\t\t\t\tladattava tiedosto käsisin paikkaan "
7331
- <a name="cl-2496"></a>
7332
- <a name="cl-2497"></a>#: ../admin/settings.php:732
7333
- <a name="cl-2498"></a>msgid ""
7334
- <a name="cl-2499"></a>"The path to JW Image Rotator is not defined, the slideshow will not work."
7335
- <a name="cl-2500"></a>msgstr ""
7336
- <a name="cl-2501"></a>"Polkua imagerotator.swf -tiedostoon ei ole määritelty, flash-diasarja ei "
7337
- <a name="cl-2502"></a>"toimi."
7338
- <a name="cl-2503"></a>
7339
- <a name="cl-2504"></a>#: ../admin/settings.php:733
7340
- <a name="cl-2505"></a>msgid "Press the button below to search for the file."
7341
- <a name="cl-2506"></a>msgstr "Paina alla olevaa nappulaa etsiäksesi tiedostoa."
7342
- <a name="cl-2507"></a>
7343
- <a name="cl-2508"></a>#: ../admin/settings.php:738
7344
- <a name="cl-2509"></a>msgid "Enable flash slideshow"
7345
- <a name="cl-2510"></a>msgstr "Aktivoi Flash diashow"
7346
- <a name="cl-2511"></a>
7347
- <a name="cl-2512"></a>#: ../admin/settings.php:740
7348
- <a name="cl-2513"></a>msgid "Integrate the flash based slideshow for all flash supported devices"
7349
- <a name="cl-2514"></a>msgstr "Käytä flash-diasarjaa kaikissa flashia tukevissa laitteissa"
7350
- <a name="cl-2515"></a>
7351
- <a name="cl-2516"></a>#: ../admin/settings.php:743
7352
- <a name="cl-2517"></a>msgid "Path to the JW Image Rotator (URL)"
7353
- <a name="cl-2518"></a>msgstr "Poku JW Image Rotatoriin (URL)"
7354
- <a name="cl-2519"></a>
7355
- <a name="cl-2520"></a>#: ../admin/settings.php:746
7356
- <a name="cl-2521"></a>msgid "Search now"
7357
- <a name="cl-2522"></a>msgstr "Etsi nyt"
7358
- <a name="cl-2523"></a>
7359
- <a name="cl-2524"></a>#: ../admin/settings.php:747
7360
- <a name="cl-2525"></a>msgid "Press the button below to search for the JW Image Rotator"
7361
- <a name="cl-2526"></a>msgstr ""
7362
- <a name="cl-2527"></a>"Klikkaa 'Etsi nyt' hakeaksesi automaattisesti imagerotatorin, jos latasit "
7363
- <a name="cl-2528"></a>"sen kansioon wp-content/uploads tai sen alikansioon."
7364
- <a name="cl-2529"></a>
7365
- <a name="cl-2530"></a>#: ../admin/settings.php:751
7366
- <a name="cl-2531"></a>msgid "Shuffle mode"
7367
- <a name="cl-2532"></a>msgstr "Sekoitustila"
7368
- <a name="cl-2533"></a>
7369
- <a name="cl-2534"></a>#: ../admin/settings.php:755
7370
- <a name="cl-2535"></a>msgid "Show next image on click"
7371
- <a name="cl-2536"></a>msgstr "Näytä seuraava kuva klikkauksella"
7372
- <a name="cl-2537"></a>
7373
- <a name="cl-2538"></a>#: ../admin/settings.php:759
7374
- <a name="cl-2539"></a>msgid "Show navigation bar"
7375
- <a name="cl-2540"></a>msgstr "Näytä navigointipalkki"
7376
- <a name="cl-2541"></a>
7377
- <a name="cl-2542"></a>#: ../admin/settings.php:763
7378
- <a name="cl-2543"></a>msgid "Show loading icon"
7379
- <a name="cl-2544"></a>msgstr "Näytä latauskuvake"
7380
- <a name="cl-2545"></a>
7381
- <a name="cl-2546"></a>#: ../admin/settings.php:767
7382
- <a name="cl-2547"></a>msgid "Use watermark logo"
7383
- <a name="cl-2548"></a>msgstr "Käytä vesileimalogoa"
7384
- <a name="cl-2549"></a>
7385
- <a name="cl-2550"></a>#: ../admin/settings.php:769
7386
- <a name="cl-2551"></a>msgid "You can change the logo at the watermark settings"
7387
- <a name="cl-2552"></a>msgstr "Voit muttaa logoa vesileima-asetuksista"
7388
- <a name="cl-2553"></a>
7389
- <a name="cl-2554"></a>#: ../admin/settings.php:772
7390
- <a name="cl-2555"></a>msgid "Stretch image"
7391
- <a name="cl-2556"></a>msgstr "Venytä kuvaa"
7392
- <a name="cl-2557"></a>
7393
- <a name="cl-2558"></a>#: ../admin/settings.php:775
7394
- <a name="cl-2559"></a>msgid "true"
7395
- <a name="cl-2560"></a>msgstr "tosi"
7396
- <a name="cl-2561"></a>
7397
- <a name="cl-2562"></a>#: ../admin/settings.php:776
7398
- <a name="cl-2563"></a>msgid "false"
7399
- <a name="cl-2564"></a>msgstr "epätosi"
7400
- <a name="cl-2565"></a>
7401
- <a name="cl-2566"></a>#: ../admin/settings.php:777
7402
- <a name="cl-2567"></a>msgid "fit"
7403
- <a name="cl-2568"></a>msgstr "sovita"
7404
- <a name="cl-2569"></a>
7405
- <a name="cl-2570"></a>#: ../admin/settings.php:778
7406
- <a name="cl-2571"></a>msgid "none"
7407
- <a name="cl-2572"></a>msgstr "ei mitään"
7408
- <a name="cl-2573"></a>
7409
- <a name="cl-2574"></a>#: ../admin/settings.php:787
7410
- <a name="cl-2575"></a>msgid "bgfade"
7411
- <a name="cl-2576"></a>msgstr "BGFade"
7412
- <a name="cl-2577"></a>
7413
- <a name="cl-2578"></a>#: ../admin/settings.php:788
7414
- <a name="cl-2579"></a>msgid "slowfade"
7415
- <a name="cl-2580"></a>msgstr "Slowfade"
7416
- <a name="cl-2581"></a>
7417
- <a name="cl-2582"></a>#: ../admin/settings.php:789
7418
- <a name="cl-2583"></a>msgid "circles"
7419
- <a name="cl-2584"></a>msgstr "ympyrät"
7420
- <a name="cl-2585"></a>
7421
- <a name="cl-2586"></a>#: ../admin/settings.php:790
7422
- <a name="cl-2587"></a>msgid "bubbles"
7423
- <a name="cl-2588"></a>msgstr "kuplat"
7424
- <a name="cl-2589"></a>
7425
- <a name="cl-2590"></a>#: ../admin/settings.php:791
7426
- <a name="cl-2591"></a>msgid "blocks"
7427
- <a name="cl-2592"></a>msgstr "lohkot"
7428
- <a name="cl-2593"></a>
7429
- <a name="cl-2594"></a>#: ../admin/settings.php:792
7430
- <a name="cl-2595"></a>msgid "fluids"
7431
- <a name="cl-2596"></a>msgstr "nesteet"
7432
- <a name="cl-2597"></a>
7433
- <a name="cl-2598"></a>#: ../admin/settings.php:793
7434
- <a name="cl-2599"></a>msgid "flash"
7435
- <a name="cl-2600"></a>msgstr "salama"
7436
- <a name="cl-2601"></a>
7437
- <a name="cl-2602"></a>#: ../admin/settings.php:794
7438
- <a name="cl-2603"></a>msgid "lines"
7439
- <a name="cl-2604"></a>msgstr "viivat"
7440
- <a name="cl-2605"></a>
7441
- <a name="cl-2606"></a>#: ../admin/settings.php:795 ../widgets/widgets.php:224
7442
- <a name="cl-2607"></a>msgid "random"
7443
- <a name="cl-2608"></a>msgstr "satunnaisesti"
7444
- <a name="cl-2609"></a>
7445
- <a name="cl-2610"></a>#: ../admin/settings.php:800
7446
- <a name="cl-2611"></a>msgid "Use slow zooming effect"
7447
- <a name="cl-2612"></a>msgstr "käytä hidasta Zoom-efektiä"
7448
- <a name="cl-2613"></a>
7449
- <a name="cl-2614"></a>#: ../admin/settings.php:804
7450
- <a name="cl-2615"></a>msgid "Background Color"
7451
- <a name="cl-2616"></a>msgstr "Taustaväri (BG)"
7452
- <a name="cl-2617"></a>
7453
- <a name="cl-2618"></a>#: ../admin/settings.php:809
7454
- <a name="cl-2619"></a>msgid "Texts / Buttons Color"
7455
- <a name="cl-2620"></a>msgstr "Texti- / nappiväri"
7456
- <a name="cl-2621"></a>
7457
- <a name="cl-2622"></a>#: ../admin/settings.php:814
7458
- <a name="cl-2623"></a>msgid "Rollover / Active Color"
7459
- <a name="cl-2624"></a>msgstr "Rollover / aktiivi (linkki) -väri"
7460
- <a name="cl-2625"></a>
7461
- <a name="cl-2626"></a>#: ../admin/settings.php:819
7462
- <a name="cl-2627"></a>msgid "Screen Color"
7463
- <a name="cl-2628"></a>msgstr "Ruudun väri"
7464
- <a name="cl-2629"></a>
7465
- <a name="cl-2630"></a>#: ../admin/settings.php:824
7466
- <a name="cl-2631"></a>msgid "Background music (URL)"
7467
- <a name="cl-2632"></a>msgstr "Taustamusiikki (URL)"
7468
- <a name="cl-2633"></a>
7469
- <a name="cl-2634"></a>#: ../admin/settings.php:828
7470
- <a name="cl-2635"></a>msgid "Try XHTML validation (with CDATA)"
7471
- <a name="cl-2636"></a>msgstr "Kokeile XHTML-validointia (hyödyntää CDATA)"
7472
- <a name="cl-2637"></a>
7473
- <a name="cl-2638"></a>#: ../admin/settings.php:830
7474
- <a name="cl-2639"></a>msgid ""
7475
- <a name="cl-2640"></a>"Important : Could causes problem with some browser. Please recheck your page."
7476
- <a name="cl-2641"></a>msgstr ""
7477
- <a name="cl-2642"></a>"Tärkeää: Voi aiheuttaa ongelmia joisskin selaimissa. Tarkista sivusi "
7478
- <a name="cl-2643"></a>"uudelleen."
7479
- <a name="cl-2644"></a>
7480
- <a name="cl-2645"></a>#: ../admin/setup.php:15
7481
- <a name="cl-2646"></a>msgid "Reset all settings to default parameter"
7482
- <a name="cl-2647"></a>msgstr "Palauta kaikki asetukset oletusarvoihin."
7483
- <a name="cl-2648"></a>
7484
- <a name="cl-2649"></a>#: ../admin/setup.php:26
7485
- <a name="cl-2650"></a>msgid ""
7486
- <a name="cl-2651"></a>"Uninstall sucessful ! Now delete the plugin and enjoy your life ! Good luck !"
7487
- <a name="cl-2652"></a>msgstr ""
7488
- <a name="cl-2653"></a>"Poisto onnistuih! Voit nyt poistaa lisäosan ja nauttia elämästäsi! Onnea!"
7489
- <a name="cl-2654"></a>
7490
- <a name="cl-2655"></a>#: ../admin/setup.php:30
7491
- <a name="cl-2656"></a>msgid "Reset options"
7492
- <a name="cl-2657"></a>msgstr "Resetointivaihtoehdot"
7493
- <a name="cl-2658"></a>
7494
- <a name="cl-2659"></a>#: ../admin/setup.php:33
7495
- <a name="cl-2660"></a>msgid "Reset all options/settings to the default installation."
7496
- <a name="cl-2661"></a>msgstr "Resetoi kaikki vaihtoehdot/asetukset oletusarvoihin."
7497
- <a name="cl-2662"></a>
7498
- <a name="cl-2663"></a>#: ../admin/setup.php:34
7499
- <a name="cl-2664"></a>msgid "Reset settings"
7500
- <a name="cl-2665"></a>msgstr "Resetoi asetukset"
7501
- <a name="cl-2666"></a>
7502
- <a name="cl-2667"></a>#: ../admin/setup.php:34
7503
- <a name="cl-2668"></a>msgid ""
7504
- <a name="cl-2669"></a>"Reset all options to default settings ?\\n\\nChoose [Cancel] to Stop, [OK] "
7505
- <a name="cl-2670"></a>"to proceed.\\n"
7506
- <a name="cl-2671"></a>msgstr ""
7507
- <a name="cl-2672"></a>"Resetoi kaikki oletusarvoihin?\\n\\nValitse [peruuta] keskeyttääksesi, [OK] "
7508
- <a name="cl-2673"></a>"jatkaaksesi.\\n"
7509
- <a name="cl-2674"></a>
7510
- <a name="cl-2675"></a>#: ../admin/setup.php:39
7511
- <a name="cl-2676"></a>msgid "Uninstall plugin tables"
7512
- <a name="cl-2677"></a>msgstr "Poista lisäosan taulut tietokannasta"
7513
- <a name="cl-2678"></a>
7514
- <a name="cl-2679"></a>#: ../admin/setup.php:44
7515
- <a name="cl-2680"></a>msgid "You don't like NextCellent Gallery ?"
7516
- <a name="cl-2681"></a>msgstr "Etkö pidä NextCellent Gallerystä?"
7517
- <a name="cl-2682"></a>
7518
- <a name="cl-2683"></a>#: ../admin/setup.php:45
7519
- <a name="cl-2684"></a>msgid ""
7520
- <a name="cl-2685"></a>"No problem, before you deactivate this plugin press the Uninstall Button, "
7521
- <a name="cl-2686"></a>"because deactivating NextCellent Gallery does not remove any data that may "
7522
- <a name="cl-2687"></a>"have been created. "
7523
- <a name="cl-2688"></a>msgstr ""
7524
- <a name="cl-2689"></a>"Ei huolta, ennen kuin deaktivoit tämän lisäosan, klikkaa Uninstall -"
7525
- <a name="cl-2690"></a>"nappulaa, jotta kaikki NextGEN Galleryn taulut poistuvat tietokannasta."
7526
- <a name="cl-2691"></a>
7527
- <a name="cl-2692"></a>#: ../admin/setup.php:47
7528
- <a name="cl-2693"></a>msgid "WARNING:"
7529
- <a name="cl-2694"></a>msgstr "VAROITUS:"
7530
- <a name="cl-2695"></a>
7531
- <a name="cl-2696"></a>#: ../admin/setup.php:48
7532
- <a name="cl-2697"></a>msgid ""
7533
- <a name="cl-2698"></a>"Once uninstalled, this cannot be undone. You should use a Database Backup "
7534
- <a name="cl-2699"></a>"plugin of WordPress to backup all the tables first. NextCellent gallery is "
7535
- <a name="cl-2700"></a>"stored in the tables"
7536
- <a name="cl-2701"></a>msgstr ""
7537
- <a name="cl-2702"></a>"Poistoa ei voi jälkeenpäin peruuttaa. Ota koko tietokannasta varmistus "
7538
- <a name="cl-2703"></a>"(Database Backup) WordPressissä ennen poistoa. NextGEN Galleryn tiedot on "
7539
- <a name="cl-2704"></a>"tallennettu tietokantatauluihin."
7540
- <a name="cl-2705"></a>
7541
- <a name="cl-2706"></a>#: ../admin/setup.php:48
7542
- <a name="cl-2707"></a>msgid "and"
7543
- <a name="cl-2708"></a>msgstr "ja"
7544
- <a name="cl-2709"></a>
7545
- <a name="cl-2710"></a>#: ../admin/setup.php:50
7546
- <a name="cl-2711"></a>msgid "Uninstall plugin"
7547
- <a name="cl-2712"></a>msgstr "Poista lisäosa"
7548
- <a name="cl-2713"></a>
7549
- <a name="cl-2714"></a>#: ../admin/setup.php:50
7550
- <a name="cl-2715"></a>msgid ""
7551
- <a name="cl-2716"></a>"You are about to Uninstall this plugin from WordPress.\\nThis action is not "
7552
- <a name="cl-2717"></a>"reversible.\\n\\nChoose [Cancel] to Stop, [OK] to Uninstall.\\n"
7553
- <a name="cl-2718"></a>msgstr ""
7554
- <a name="cl-2719"></a>"Olet poistamassa tätä lisäosaa WordPressistä.\\nTätä toimenpidettä EI voi "
7555
- <a name="cl-2720"></a>"palauttaa.\\n\\nValitse [Peruuta] keskeyttääksesi, [OK] poistaaksesi.\\n"
7556
- <a name="cl-2721"></a>
7557
- <a name="cl-2722"></a>#: ../admin/showmeta.php:34 ../admin/showmeta.php:60 ../admin/showmeta.php:85
7558
- <a name="cl-2723"></a>#: ../admin/showmeta.php:109
7559
- <a name="cl-2724"></a>msgid "Value"
7560
- <a name="cl-2725"></a>msgstr "Arvo"
7561
- <a name="cl-2726"></a>
7562
- <a name="cl-2727"></a>#: ../admin/showmeta.php:48
7563
- <a name="cl-2728"></a>msgid "No meta data saved"
7564
- <a name="cl-2729"></a>msgstr "Mitään metadataa ei ole tallennettuna"
7565
- <a name="cl-2730"></a>
7566
- <a name="cl-2731"></a>#: ../admin/showmeta.php:54
7567
- <a name="cl-2732"></a>msgid "EXIF Data"
7568
- <a name="cl-2733"></a>msgstr "EXIF-data"
7569
- <a name="cl-2734"></a>
7570
- <a name="cl-2735"></a>#: ../admin/showmeta.php:73
7571
- <a name="cl-2736"></a>msgid "No exif data"
7572
- <a name="cl-2737"></a>msgstr "Ei EXIF-dataa"
7573
- <a name="cl-2738"></a>
7574
- <a name="cl-2739"></a>#: ../admin/showmeta.php:80
7575
- <a name="cl-2740"></a>msgid "IPTC Data"
7576
- <a name="cl-2741"></a>msgstr "IPTC-data"
7577
- <a name="cl-2742"></a>
7578
- <a name="cl-2743"></a>#: ../admin/showmeta.php:104
7579
- <a name="cl-2744"></a>msgid "XMP Data"
7580
- <a name="cl-2745"></a>msgstr "XMP-data"
7581
- <a name="cl-2746"></a>
7582
- <a name="cl-2747"></a>#: ../admin/style.php:11
7583
- <a name="cl-2748"></a>#, fuzzy
7584
- <a name="cl-2749"></a>msgid "(from the ngg_styles folder)"
7585
- <a name="cl-2750"></a>msgstr "(teeman hakemistosta)"
7586
- <a name="cl-2751"></a>
7587
- <a name="cl-2752"></a>#: ../admin/style.php:17
7588
- <a name="cl-2753"></a>#, fuzzy
7589
- <a name="cl-2754"></a>msgid "(from the theme folder)"
7590
- <a name="cl-2755"></a>msgstr "(teeman hakemistosta)"
7591
- <a name="cl-2756"></a>
7592
- <a name="cl-2757"></a>#: ../admin/style.php:51
7593
- <a name="cl-2758"></a>msgid "You do not have sufficient permissions to edit templates for this blog."
7594
- <a name="cl-2759"></a>msgstr ""
7595
- <a name="cl-2760"></a>"Sinulla ei ole riittäviä oikeuksia tämän blogin mallipohjan muokkaamiseen."
7596
- <a name="cl-2761"></a>
7597
- <a name="cl-2762"></a>#: ../admin/style.php:60
7598
- <a name="cl-2763"></a>msgid "CSS file successfully updated"
7599
- <a name="cl-2764"></a>msgstr "CSS-tiedosto päivitetty onnistuneesti."
7600
- <a name="cl-2765"></a>
7601
- <a name="cl-2766"></a>#: ../admin/style.php:96
7602
- <a name="cl-2767"></a>msgid "Style Editor"
7603
- <a name="cl-2768"></a>msgstr "CSS-editori"
7604
- <a name="cl-2769"></a>
7605
- <a name="cl-2770"></a>#: ../admin/style.php:102
7606
- <a name="cl-2771"></a>msgid "Activate and use style sheet:"
7607
- <a name="cl-2772"></a>msgstr "Aktivoi ja käytä tyylitiedostoa:"
7608
- <a name="cl-2773"></a>
7609
- <a name="cl-2774"></a>#: ../admin/style.php:122
7610
- <a name="cl-2775"></a>msgid "Activate"
7611
- <a name="cl-2776"></a>msgstr "Aktivoi"
7612
- <a name="cl-2777"></a>
7613
- <a name="cl-2778"></a>#: ../admin/style.php:131
7614
- <a name="cl-2779"></a>#, fuzzy, php-format
7615
- <a name="cl-2780"></a>msgid "Editing %s"
7616
- <a name="cl-2781"></a>msgstr "Olemassaolevat tägit"
7617
- <a name="cl-2782"></a>
7618
- <a name="cl-2783"></a>#: ../admin/style.php:133
7619
- <a name="cl-2784"></a>#, php-format
7620
- <a name="cl-2785"></a>msgid "Browsing %s"
7621
- <a name="cl-2786"></a>msgstr ""
7622
- <a name="cl-2787"></a>
7623
- <a name="cl-2788"></a>#: ../admin/style.php:144
7624
- <a name="cl-2789"></a>msgid "Version"
7625
- <a name="cl-2790"></a>msgstr "Versio"
7626
- <a name="cl-2791"></a>
7627
- <a name="cl-2792"></a>#: ../admin/style.php:149
7628
- <a name="cl-2793"></a>msgid ""
7629
- <a name="cl-2794"></a>"If you do not want to lose your edits during an update, copy your css file "
7630
- <a name="cl-2795"></a>"(nggalery.css) to the \"/wp-content/ngg_styles\" folder."
7631
- <a name="cl-2796"></a>msgstr ""
7632
- <a name="cl-2797"></a>
7633
- <a name="cl-2798"></a>#: ../admin/style.php:150
7634
- <a name="cl-2799"></a>msgid "Your current file is located here:"
7635
- <a name="cl-2800"></a>msgstr ""
7636
- <a name="cl-2801"></a>
7637
- <a name="cl-2802"></a>#: ../admin/style.php:153
7638
- <a name="cl-2803"></a>#, fuzzy
7639
- <a name="cl-2804"></a>msgid ""
7640
- <a name="cl-2805"></a>"There is a NextCellent theme file, this file will be used. It's located in:"
7641
- <a name="cl-2806"></a>msgstr ""
7642
- <a name="cl-2807"></a>"Teemasi sisältää NextCellent Gallery -tyylitiedoston (nggallery.css), jota "
7643
- <a name="cl-2808"></a>"käytetään automaattisesti"
7644
- <a name="cl-2809"></a>
7645
- <a name="cl-2810"></a>#: ../admin/style.php:156
7646
- <a name="cl-2811"></a>#, fuzzy
7647
- <a name="cl-2812"></a>msgid ""
7648
- <a name="cl-2813"></a>"Tip 2: use the color picker below to help you find the right color scheme "
7649
- <a name="cl-2814"></a>"for your gallery!"
7650
- <a name="cl-2815"></a>msgstr ""
7651
- <a name="cl-2816"></a>"2. vinkki : käytä alla olevaa värivalitsinta löytääksesi oikean värikaavion "
7652
- <a name="cl-2817"></a>"galleriaasi!"
7653
- <a name="cl-2818"></a>
7654
- <a name="cl-2819"></a>#: ../admin/style.php:172
7655
- <a name="cl-2820"></a>msgid "Update File"
7656
- <a name="cl-2821"></a>msgstr "Päivitä tiedosto"
7657
- <a name="cl-2822"></a>
7658
- <a name="cl-2823"></a>#: ../admin/style.php:175
7659
- <a name="cl-2824"></a>msgid "If this file were writable you could edit it."
7660
- <a name="cl-2825"></a>msgstr "Jos tähän tiedoston voisi kirjoittaa, voisit muokata sitä."
7661
- <a name="cl-2826"></a>
7662
- <a name="cl-2827"></a>#: ../admin/style.php:180
7663
- <a name="cl-2828"></a>msgid "Oops, no such file exists! Double check the name and try again."
7664
- <a name="cl-2829"></a>msgstr ""
7665
- <a name="cl-2830"></a>"Ups, sellaista tiedostoa ei löydy! Tarkista nimi ja yritä uudelleen. Merci :)"
7666
- <a name="cl-2831"></a>
7667
- <a name="cl-2832"></a>#: ../admin/tags.php:40
7668
- <a name="cl-2833"></a>msgid "Most popular"
7669
- <a name="cl-2834"></a>msgstr "Suosituin"
7670
- <a name="cl-2835"></a>
7671
- <a name="cl-2836"></a>#: ../admin/tags.php:41
7672
- <a name="cl-2837"></a>msgid "Least used"
7673
- <a name="cl-2838"></a>msgstr "Vähiten käytetty"
7674
- <a name="cl-2839"></a>
7675
- <a name="cl-2840"></a>#: ../admin/tags.php:42
7676
- <a name="cl-2841"></a>msgid "Alphabetical"
7677
- <a name="cl-2842"></a>msgstr "Aakkosellinen"
7678
- <a name="cl-2843"></a>
7679
- <a name="cl-2844"></a>#: ../admin/tags.php:110
7680
- <a name="cl-2845"></a>msgid "Existing Tags"
7681
- <a name="cl-2846"></a>msgstr "Olemassaolevat tägit"
7682
- <a name="cl-2847"></a>
7683
- <a name="cl-2848"></a>#: ../admin/tags.php:114
7684
- <a name="cl-2849"></a>msgid "Search tags"
7685
- <a name="cl-2850"></a>msgstr "Hakutägit"
7686
- <a name="cl-2851"></a>
7687
- <a name="cl-2852"></a>#: ../admin/tags.php:118
7688
- <a name="cl-2853"></a>msgid "Go"
7689
- <a name="cl-2854"></a>msgstr "Aloita"
7690
- <a name="cl-2855"></a>
7691
- <a name="cl-2856"></a>#: ../admin/tags.php:123
7692
- <a name="cl-2857"></a>msgid "Sort Order:"
7693
- <a name="cl-2858"></a>msgstr "Järjestys :"
7694
- <a name="cl-2859"></a>
7695
- <a name="cl-2860"></a>#: ../admin/tags.php:158 ../admin/tags.php:162 ../admin/tags.php:175
7696
- <a name="cl-2861"></a>msgid "Previous tags"
7697
- <a name="cl-2862"></a>msgstr "Edelliset tägit"
7698
- <a name="cl-2863"></a>
7699
- <a name="cl-2864"></a>#: ../admin/tags.php:171
7700
- <a name="cl-2865"></a>msgid "Next tags"
7701
- <a name="cl-2866"></a>msgstr "Seuraavat tägit"
7702
- <a name="cl-2867"></a>
7703
- <a name="cl-2868"></a>#: ../admin/tags.php:183
7704
- <a name="cl-2869"></a>msgid "Rename Tag"
7705
- <a name="cl-2870"></a>msgstr "Anna tägille uusi nimi"
7706
- <a name="cl-2871"></a>
7707
- <a name="cl-2872"></a>#: ../admin/tags.php:191
7708
- <a name="cl-2873"></a>msgid ""
7709
- <a name="cl-2874"></a>"Enter the tag to rename and its new value. You can use this feature to "
7710
- <a name="cl-2875"></a>"merge tags too. Click \"Rename\" and all posts which use this tag will be "
7711
- <a name="cl-2876"></a>"updated."
7712
- <a name="cl-2877"></a>msgstr ""
7713
- <a name="cl-2878"></a>"Anna tägi uutta nimeä ja arvoa varten. Voit käyttää tätä ominaisuutta myös "
7714
- <a name="cl-2879"></a>"tägien yhdistämiseen. Klikkaa \"Uudelleennimeä\" ja kaikki tätä tägiä "
7715
- <a name="cl-2880"></a>"käyttävät artikkelit päivitetään."
7716
- <a name="cl-2881"></a>
7717
- <a name="cl-2882"></a>#: ../admin/tags.php:192 ../admin/tags.php:240
7718
- <a name="cl-2883"></a>msgid "You can specify multiple tags to rename by separating them with commas."
7719
- <a name="cl-2884"></a>msgstr ""
7720
- <a name="cl-2885"></a>"Voit määritellä useita tägejä uudelleennimettäväksi erottamalla ne pilkuilla."
7721
- <a name="cl-2886"></a>
7722
- <a name="cl-2887"></a>#: ../admin/tags.php:196
7723
- <a name="cl-2888"></a>msgid "Tag(s) to rename:"
7724
- <a name="cl-2889"></a>msgstr "Täg(it) uudelleennimettäväksi:"
7725
- <a name="cl-2890"></a>
7726
- <a name="cl-2891"></a>#: ../admin/tags.php:200
7727
- <a name="cl-2892"></a>msgid "New tag name(s):"
7728
- <a name="cl-2893"></a>msgstr "Tägien uudet nimet:"
7729
- <a name="cl-2894"></a>
7730
- <a name="cl-2895"></a>#: ../admin/tags.php:203
7731
- <a name="cl-2896"></a>msgid "Rename"
7732
- <a name="cl-2897"></a>msgstr "Uudelleennimeä"
7733
- <a name="cl-2898"></a>
7734
- <a name="cl-2899"></a>#: ../admin/tags.php:209
7735
- <a name="cl-2900"></a>msgid "Delete Tag"
7736
- <a name="cl-2901"></a>msgstr "Poista tägi"
7737
- <a name="cl-2902"></a>
7738
- <a name="cl-2903"></a>#: ../admin/tags.php:217
7739
- <a name="cl-2904"></a>msgid ""
7740
- <a name="cl-2905"></a>"Enter the name of the tag to delete. This tag will be removed from all "
7741
- <a name="cl-2906"></a>"posts."
7742
- <a name="cl-2907"></a>msgstr "Anna poistettavan tägin nimi. Tägi poistetaan kaikista kuvista."
7743
- <a name="cl-2908"></a>
7744
- <a name="cl-2909"></a>#: ../admin/tags.php:218
7745
- <a name="cl-2910"></a>msgid "You can specify multiple tags to delete by separating them with commas"
7746
- <a name="cl-2911"></a>msgstr "Voit poistaa useita tägejä erottamalla ne toisistaan pilkuilla."
7747
- <a name="cl-2912"></a>
7748
- <a name="cl-2913"></a>#: ../admin/tags.php:222
7749
- <a name="cl-2914"></a>msgid "Tag(s) to delete:"
7750
- <a name="cl-2915"></a>msgstr "Täg(it) poistettavaksi:"
7751
- <a name="cl-2916"></a>
7752
- <a name="cl-2917"></a>#: ../admin/tags.php:231
7753
- <a name="cl-2918"></a>msgid "Edit Tag Slug"
7754
- <a name="cl-2919"></a>msgstr "Muokkaa tägin lyhytnimeä"
7755
- <a name="cl-2920"></a>
7756
- <a name="cl-2921"></a>#: ../admin/tags.php:239
7757
- <a name="cl-2922"></a>msgid ""
7758
- <a name="cl-2923"></a>"Enter the tag name to edit and its new slug. &lt;a href=\"http://codex."
7759
- <a name="cl-2924"></a>"wordpress.org/Glossary#Slug\"&gt;Slug definition&lt;/a&gt;"
7760
- <a name="cl-2925"></a>msgstr ""
7761
- <a name="cl-2926"></a>"Anna tägin nimi muokkausta ja uutta lyhytnimeä varten. &lt;a href=\"http://"
7762
- <a name="cl-2927"></a>"codex.wordpress.org/Glossary#Slug\"&gt;mikä on lyhytnimi (Slug - engl.)?&lt;/a&gt;"
7763
- <a name="cl-2928"></a>
7764
- <a name="cl-2929"></a>#: ../admin/tags.php:244
7765
- <a name="cl-2930"></a>msgid "Tag(s) to match:"
7766
- <a name="cl-2931"></a>msgstr "Vertailtava(t) tägi(t) :"
7767
- <a name="cl-2932"></a>
7768
- <a name="cl-2933"></a>#: ../admin/tags.php:248
7769
- <a name="cl-2934"></a>msgid "Slug(s) to set:"
7770
- <a name="cl-2935"></a>msgstr "Asetettava(t) lyhytnimi(et):"
7771
- <a name="cl-2936"></a>
7772
- <a name="cl-2937"></a>#: ../admin/tinymce/window.php:118
7773
- <a name="cl-2938"></a>msgid "To add something, select what you would want to display"
7774
- <a name="cl-2939"></a>msgstr ""
7775
- <a name="cl-2940"></a>
7776
- <a name="cl-2941"></a>#: ../admin/tinymce/window.php:122
7777
- <a name="cl-2942"></a>#, fuzzy
7778
- <a name="cl-2943"></a>msgid "One picture"
7779
- <a name="cl-2944"></a>msgstr "Yksittäiskuva"
7780
- <a name="cl-2945"></a>
7781
- <a name="cl-2946"></a>#: ../admin/tinymce/window.php:123
7782
- <a name="cl-2947"></a>#, fuzzy
7783
- <a name="cl-2948"></a>msgid "Recent pictures"
7784
- <a name="cl-2949"></a>msgstr "ei sisällä kuvia "
7785
- <a name="cl-2950"></a>
7786
- <a name="cl-2951"></a>#: ../admin/tinymce/window.php:124
7787
- <a name="cl-2952"></a>#, fuzzy
7788
- <a name="cl-2953"></a>msgid "Random pictures"
7789
- <a name="cl-2954"></a>msgstr "Lataa kuvia"
7790
- <a name="cl-2955"></a>
7791
- <a name="cl-2956"></a>#: ../admin/tinymce/window.php:132 ../admin/tinymce/window.php:233
7792
- <a name="cl-2957"></a>#: ../admin/tinymce/window.php:300 ../admin/tinymce/window.php:358
7793
- <a name="cl-2958"></a>#: ../admin/tinymce/window.php:420
7794
- <a name="cl-2959"></a>msgid "Basics"
7795
- <a name="cl-2960"></a>msgstr ""
7796
- <a name="cl-2961"></a>
7797
- <a name="cl-2962"></a>#: ../admin/tinymce/window.php:135 ../admin/tinymce/window.php:379
7798
- <a name="cl-2963"></a>#: ../admin/tinymce/window.php:430
7799
- <a name="cl-2964"></a>#, fuzzy
7800
- <a name="cl-2965"></a>msgid "Select a gallery:"
7801
- <a name="cl-2966"></a>msgstr "Valitse galleria"
7802
- <a name="cl-2967"></a>
7803
- <a name="cl-2968"></a>#: ../admin/tinymce/window.php:138 ../admin/tinymce/window.php:382
7804
- <a name="cl-2969"></a>#: ../admin/tinymce/window.php:433
7805
- <a name="cl-2970"></a>#, fuzzy
7806
- <a name="cl-2971"></a>msgid "Select or search for a gallery"
7807
- <a name="cl-2972"></a>msgstr "Valitse tai anna galleria"
7808
- <a name="cl-2973"></a>
7809
- <a name="cl-2974"></a>#: ../admin/tinymce/window.php:143
7810
- <a name="cl-2975"></a>msgid "Display types"
7811
- <a name="cl-2976"></a>msgstr ""
7812
- <a name="cl-2977"></a>
7813
- <a name="cl-2978"></a>#: ../admin/tinymce/window.php:146
7814
- <a name="cl-2979"></a>#, fuzzy
7815
- <a name="cl-2980"></a>msgid "Select how you want to display your gallery"
7816
- <a name="cl-2981"></a>msgstr "Valitse tai anna galleria"
7817
- <a name="cl-2982"></a>
7818
- <a name="cl-2983"></a>#: ../admin/tinymce/window.php:165
7819
- <a name="cl-2984"></a>msgid "Imagebrowser"
7820
- <a name="cl-2985"></a>msgstr "Kuvaselain"
7821
- <a name="cl-2986"></a>
7822
- <a name="cl-2987"></a>#: ../admin/tinymce/window.php:171 ../admin/tinymce/window.php:283
7823
- <a name="cl-2988"></a>#: ../admin/tinymce/window.php:404 ../admin/tinymce/window.php:455
7824
- <a name="cl-2989"></a>msgid "Carousel"
7825
- <a name="cl-2990"></a>msgstr ""
7826
- <a name="cl-2991"></a>
7827
- <a name="cl-2992"></a>#: ../admin/tinymce/window.php:177 ../admin/tinymce/window.php:289
7828
- <a name="cl-2993"></a>#: ../admin/tinymce/window.php:350 ../admin/tinymce/window.php:410
7829
- <a name="cl-2994"></a>#: ../admin/tinymce/window.php:461 ../lib/meta.php:451
7830
- <a name="cl-2995"></a>msgid "Caption"
7831
- <a name="cl-2996"></a>msgstr "Kuvateksti"
7832
- <a name="cl-2997"></a>
7833
- <a name="cl-2998"></a>#: ../admin/tinymce/window.php:190
7834
- <a name="cl-2999"></a>#, fuzzy
7835
- <a name="cl-3000"></a>msgid "Type options"
7836
- <a name="cl-3001"></a>msgstr "Resetointivaihtoehdot"
7837
- <a name="cl-3002"></a>
7838
- <a name="cl-3003"></a>#: ../admin/tinymce/window.php:197 ../admin/tinymce/window.php:361
7839
- <a name="cl-3004"></a>#: ../admin/tinymce/window.php:423
7840
- <a name="cl-3005"></a>#, fuzzy
7841
- <a name="cl-3006"></a>msgid "Number of images"
7842
- <a name="cl-3007"></a>msgstr "Kuvien maksimimäärä"
7843
- <a name="cl-3008"></a>
7844
- <a name="cl-3009"></a>#: ../admin/tinymce/window.php:200
7845
- <a name="cl-3010"></a>msgid ""
7846
- <a name="cl-3011"></a>"The number of images before pagination is applied. Leave empty for the "
7847
- <a name="cl-3012"></a>"default from the settings."
7848
- <a name="cl-3013"></a>msgstr ""
7849
- <a name="cl-3014"></a>
7850
- <a name="cl-3015"></a>#: ../admin/tinymce/window.php:208
7851
- <a name="cl-3016"></a>#, fuzzy
7852
- <a name="cl-3017"></a>msgid "Slideshow dimensions"
7853
- <a name="cl-3018"></a>msgstr "Aseta dimension arvo"
7854
- <a name="cl-3019"></a>
7855
- <a name="cl-3020"></a>#: ../admin/tinymce/window.php:219
7856
- <a name="cl-3021"></a>#, fuzzy
7857
- <a name="cl-3022"></a>msgid "Template name"
7858
- <a name="cl-3023"></a>msgstr "Tiedostonimi"
7859
- <a name="cl-3024"></a>
7860
- <a name="cl-3025"></a>#: ../admin/tinymce/window.php:239
7861
- <a name="cl-3026"></a>msgid "Select or enter album"
7862
- <a name="cl-3027"></a>msgstr "Valitse tai anna albumi"
7863
- <a name="cl-3028"></a>
7864
- <a name="cl-3029"></a>#: ../admin/tinymce/window.php:241
7865
- <a name="cl-3030"></a>msgid "Leave this empty to display all galleries."
7866
- <a name="cl-3031"></a>msgstr ""
7867
- <a name="cl-3032"></a>
7868
- <a name="cl-3033"></a>#: ../admin/tinymce/window.php:245
7869
- <a name="cl-3034"></a>#, fuzzy
7870
- <a name="cl-3035"></a>msgid "Album display types"
7871
- <a name="cl-3036"></a>msgstr "Albumi poistettu"
7872
- <a name="cl-3037"></a>
7873
- <a name="cl-3038"></a>#: ../admin/tinymce/window.php:248
7874
- <a name="cl-3039"></a>msgid "Select how you want to display the albums"
7875
- <a name="cl-3040"></a>msgstr ""
7876
- <a name="cl-3041"></a>
7877
- <a name="cl-3042"></a>#: ../admin/tinymce/window.php:255
7878
- <a name="cl-3043"></a>msgid "Compact version"
7879
- <a name="cl-3044"></a>msgstr "Supistettu versio"
7880
- <a name="cl-3045"></a>
7881
- <a name="cl-3046"></a>#: ../admin/tinymce/window.php:261
7882
- <a name="cl-3047"></a>msgid "Extended version"
7883
- <a name="cl-3048"></a>msgstr "Laajennettu versio"
7884
- <a name="cl-3049"></a>
7885
- <a name="cl-3050"></a>#: ../admin/tinymce/window.php:267
7886
- <a name="cl-3051"></a>#, fuzzy
7887
- <a name="cl-3052"></a>msgid "Gallery display types"
7888
- <a name="cl-3053"></a>msgstr "Galleriapolku "
7889
- <a name="cl-3054"></a>
7890
- <a name="cl-3055"></a>#: ../admin/tinymce/window.php:270
7891
- <a name="cl-3056"></a>msgid ""
7892
- <a name="cl-3057"></a>"Select a template for the galleries (displayed after you click on an album)"
7893
- <a name="cl-3058"></a>msgstr ""
7894
- <a name="cl-3059"></a>
7895
- <a name="cl-3060"></a>#: ../admin/tinymce/window.php:304
7896
- <a name="cl-3061"></a>#, fuzzy
7897
- <a name="cl-3062"></a>msgid "Select a picture"
7898
- <a name="cl-3063"></a>msgstr "Valitse tai anna kuva"
7899
- <a name="cl-3064"></a>
7900
- <a name="cl-3065"></a>#: ../admin/tinymce/window.php:308
7901
- <a name="cl-3066"></a>msgid "Select or enter picture"
7902
- <a name="cl-3067"></a>msgstr "Valitse tai anna kuva"
7903
- <a name="cl-3068"></a>
7904
- <a name="cl-3069"></a>#: ../admin/tinymce/window.php:313 ../admin/tinymce/window.php:388
7905
- <a name="cl-3070"></a>#: ../admin/tinymce/window.php:439
7906
- <a name="cl-3071"></a>#, fuzzy
7907
- <a name="cl-3072"></a>msgid "Options"
7908
- <a name="cl-3073"></a>msgstr "Kuvateksti"
7909
- <a name="cl-3074"></a>
7910
- <a name="cl-3075"></a>#: ../admin/tinymce/window.php:316
7911
- <a name="cl-3076"></a>msgid "Dimensions"
7912
- <a name="cl-3077"></a>msgstr ""
7913
- <a name="cl-3078"></a>
7914
- <a name="cl-3079"></a>#: ../admin/tinymce/window.php:325
7915
- <a name="cl-3080"></a>msgid "Effect"
7916
- <a name="cl-3081"></a>msgstr "Efekti"
7917
- <a name="cl-3082"></a>
7918
- <a name="cl-3083"></a>#: ../admin/tinymce/window.php:328
7919
- <a name="cl-3084"></a>msgid "No effect"
7920
- <a name="cl-3085"></a>msgstr "Ei efektiä"
7921
- <a name="cl-3086"></a>
7922
- <a name="cl-3087"></a>#: ../admin/tinymce/window.php:330
7923
- <a name="cl-3088"></a>msgid "Web 2.0"
7924
- <a name="cl-3089"></a>msgstr "Web 2.0"
7925
- <a name="cl-3090"></a>
7926
- <a name="cl-3091"></a>#: ../admin/tinymce/window.php:338
7927
- <a name="cl-3092"></a>msgid "No float"
7928
- <a name="cl-3093"></a>msgstr "Ei kellutusta"
7929
- <a name="cl-3094"></a>
7930
- <a name="cl-3095"></a>#: ../admin/tinymce/window.php:346
7931
- <a name="cl-3096"></a>msgid "Link"
7932
- <a name="cl-3097"></a>msgstr ""
7933
- <a name="cl-3098"></a>
7934
- <a name="cl-3099"></a>#: ../admin/tinymce/window.php:347
7935
- <a name="cl-3100"></a>msgid "Add an optional link to the image. Leave blank for no link."
7936
- <a name="cl-3101"></a>msgstr ""
7937
- <a name="cl-3102"></a>
7938
- <a name="cl-3103"></a>#: ../admin/tinymce/window.php:351
7939
- <a name="cl-3104"></a>msgid "Add an optional caption to the image. Leave blank for no caption."
7940
- <a name="cl-3105"></a>msgstr ""
7941
- <a name="cl-3106"></a>
7942
- <a name="cl-3107"></a>#: ../admin/tinymce/window.php:364 ../admin/tinymce/window.php:426
7943
- <a name="cl-3108"></a>msgid "The number of images that should be displayed."
7944
- <a name="cl-3109"></a>msgstr ""
7945
- <a name="cl-3110"></a>
7946
- <a name="cl-3111"></a>#: ../admin/tinymce/window.php:368
7947
- <a name="cl-3112"></a>#, fuzzy
7948
- <a name="cl-3113"></a>msgid "Sort the images"
7949
- <a name="cl-3114"></a>msgstr "Pyöritä kuvia"
7950
- <a name="cl-3115"></a>
7951
- <a name="cl-3116"></a>#: ../admin/tinymce/window.php:371
7952
- <a name="cl-3117"></a>#, fuzzy
7953
- <a name="cl-3118"></a>msgid "Upload order"
7954
- <a name="cl-3119"></a>msgstr "Lataa kuva"
7955
- <a name="cl-3120"></a>
7956
- <a name="cl-3121"></a>#: ../admin/tinymce/window.php:372
7957
- <a name="cl-3122"></a>#, fuzzy
7958
- <a name="cl-3123"></a>msgid "Date taken"
7959
- <a name="cl-3124"></a>msgstr "luotu (Pvm)"
7960
- <a name="cl-3125"></a>
7961
- <a name="cl-3126"></a>#: ../admin/tinymce/window.php:373
7962
- <a name="cl-3127"></a>msgid "User defined"
7963
- <a name="cl-3128"></a>msgstr ""
7964
- <a name="cl-3129"></a>
7965
- <a name="cl-3130"></a>#: ../admin/tinymce/window.php:375
7966
- <a name="cl-3131"></a>msgid ""
7967
- <a name="cl-3132"></a>"In what order the images are shown. Upload order uses the ID's, date taken "
7968
- <a name="cl-3133"></a>"uses the EXIF data and user defined is the sort mode from the settings."
7969
- <a name="cl-3134"></a>msgstr ""
7970
- <a name="cl-3135"></a>
7971
- <a name="cl-3136"></a>#: ../admin/tinymce/window.php:384 ../admin/tinymce/window.php:435
7972
- <a name="cl-3137"></a>msgid "If a gallery is selected, only images from that gallery will be shown."
7973
- <a name="cl-3138"></a>msgstr ""
7974
- <a name="cl-3139"></a>
7975
- <a name="cl-3140"></a>#: ../admin/tinymce/window.php:391 ../admin/tinymce/window.php:442
7976
- <a name="cl-3141"></a>#, fuzzy
7977
- <a name="cl-3142"></a>msgid "Select a template to display the images"
7978
- <a name="cl-3143"></a>msgstr "Valitse esikatselukuva:"
7979
- <a name="cl-3144"></a>
7980
- <a name="cl-3145"></a>#: ../admin/tinymce/window.php:475
7981
- <a name="cl-3146"></a>msgid "Insert"
7982
- <a name="cl-3147"></a>msgstr "Lisää"
7983
- <a name="cl-3148"></a>
7984
- <a name="cl-3149"></a>#: ../admin/tinymce/window.php:511
7985
- <a name="cl-3150"></a>#, fuzzy
7986
- <a name="cl-3151"></a>msgid "You need to select a gallery."
7987
- <a name="cl-3152"></a>msgstr "Mikään galleria ei ole valittuna !"
7988
- <a name="cl-3153"></a>
7989
- <a name="cl-3154"></a>#: ../admin/tinymce/window.php:515
7990
- <a name="cl-3155"></a>msgid "You need to select a picture."
7991
- <a name="cl-3156"></a>msgstr ""
7992
- <a name="cl-3157"></a>
7993
- <a name="cl-3158"></a>#: ../admin/tinymce/window.php:519 ../admin/tinymce/window.php:523
7994
- <a name="cl-3159"></a>#, fuzzy
7995
- <a name="cl-3160"></a>msgid "You need to select a number of images."
7996
- <a name="cl-3161"></a>msgstr "Kuvien maksimimäärä"
7997
- <a name="cl-3162"></a>
7998
- <a name="cl-3163"></a>#: ../admin/wpmu.php:33
7999
- <a name="cl-3164"></a>msgid "Update successfully"
8000
- <a name="cl-3165"></a>msgstr "Päivitä onnistuneesti"
8001
- <a name="cl-3166"></a>
8002
- <a name="cl-3167"></a>#: ../admin/wpmu.php:50
8003
- <a name="cl-3168"></a>msgid "Network Options"
8004
- <a name="cl-3169"></a>msgstr "Verkkovaihtoehdot"
8005
- <a name="cl-3170"></a>
8006
- <a name="cl-3171"></a>#: ../admin/wpmu.php:58
8007
- <a name="cl-3172"></a>msgid ""
8008
- <a name="cl-3173"></a>"This is the default path for all blogs. With the placeholder %BLOG_ID% you "
8009
- <a name="cl-3174"></a>"can organize the folder structure better."
8010
- <a name="cl-3175"></a>msgstr ""
8011
- <a name="cl-3176"></a>"Tämän on oletuspolku kaikille blogeille. Blogin tunnuksella %BLOG_ID% voit "
8012
- <a name="cl-3177"></a>"järjestää hakemistot paremmin. Polun täytyy päättyä / -erikoismerkkiin."
8013
- <a name="cl-3178"></a>
8014
- <a name="cl-3179"></a>#: ../admin/wpmu.php:59
8015
- <a name="cl-3180"></a>#, php-format
8016
- <a name="cl-3181"></a>msgid "The default setting should be %s"
8017
- <a name="cl-3182"></a>msgstr "Oletusasetus on %s"
8018
- <a name="cl-3183"></a>
8019
- <a name="cl-3184"></a>#: ../admin/wpmu.php:63
8020
- <a name="cl-3185"></a>msgid "Enable upload quota check"
8021
- <a name="cl-3186"></a>msgstr "Salli latauksen kokotarkistus"
8022
- <a name="cl-3187"></a>
8023
- <a name="cl-3188"></a>#: ../admin/wpmu.php:65
8024
- <a name="cl-3189"></a>msgid "Should work if the gallery is bellow the blog.dir"
8025
- <a name="cl-3190"></a>msgstr "Pitäisi toimia, jos galleria on blog.dir alla"
8026
- <a name="cl-3191"></a>
8027
- <a name="cl-3192"></a>#: ../admin/wpmu.php:69
8028
- <a name="cl-3193"></a>msgid "Enable zip upload option"
8029
- <a name="cl-3194"></a>msgstr "Salli ZIP-lataus"
8030
- <a name="cl-3195"></a>
8031
- <a name="cl-3196"></a>#: ../admin/wpmu.php:71
8032
- <a name="cl-3197"></a>msgid "Allow users to upload zip folders."
8033
- <a name="cl-3198"></a>msgstr "Salli käyttäjien ladata ZIP-hakemistoja."
8034
- <a name="cl-3199"></a>
8035
- <a name="cl-3200"></a>#: ../admin/wpmu.php:75
8036
- <a name="cl-3201"></a>msgid "Enable import function"
8037
- <a name="cl-3202"></a>msgstr "Salli Tuo (Import) -toiminto"
8038
- <a name="cl-3203"></a>
8039
- <a name="cl-3204"></a>#: ../admin/wpmu.php:77
8040
- <a name="cl-3205"></a>msgid "Allow users to import images folders from the server."
8041
- <a name="cl-3206"></a>msgstr "Salli käyttäjien tuoda kuvia palvelimelta."
8042
- <a name="cl-3207"></a>
8043
- <a name="cl-3208"></a>#: ../admin/wpmu.php:81
8044
- <a name="cl-3209"></a>msgid "Enable style selection"
8045
- <a name="cl-3210"></a>msgstr "Salli tyylin valinta (CSS)"
8046
- <a name="cl-3211"></a>
8047
- <a name="cl-3212"></a>#: ../admin/wpmu.php:83
8048
- <a name="cl-3213"></a>msgid "Allow users to choose a style for the gallery."
8049
- <a name="cl-3214"></a>msgstr "Salli käyttäjän valita gallerian tyyli (CSS)."
8050
- <a name="cl-3215"></a>
8051
- <a name="cl-3216"></a>#: ../admin/wpmu.php:87
8052
- <a name="cl-3217"></a>msgid "Enable roles/capabilities"
8053
- <a name="cl-3218"></a>msgstr "Salli roolit/toiminnot"
8054
- <a name="cl-3219"></a>
8055
- <a name="cl-3220"></a>#: ../admin/wpmu.php:89
8056
- <a name="cl-3221"></a>msgid "Allow users to change the roles for other blog authors."
8057
- <a name="cl-3222"></a>msgstr "Salli käyttäjien muuttavan muiden blogikirjoittajien rooleja."
8058
- <a name="cl-3223"></a>
8059
- <a name="cl-3224"></a>#: ../admin/wpmu.php:93
8060
- <a name="cl-3225"></a>msgid "Default style"
8061
- <a name="cl-3226"></a>msgstr "Oletustyyli"
8062
- <a name="cl-3227"></a>
8063
- <a name="cl-3228"></a>#: ../admin/wpmu.php:110
8064
- <a name="cl-3229"></a>msgid "Choose the default style for the galleries."
8065
- <a name="cl-3230"></a>msgstr "Valitse gallerioiden oletustyyli."
8066
- <a name="cl-3231"></a>
8067
- <a name="cl-3232"></a>#: ../lib/core.php:416
8068
- <a name="cl-3233"></a>#, php-format
8069
- <a name="cl-3234"></a>msgid ""
8070
- <a name="cl-3235"></a>"Note : Based on your server memory limit you should not upload larger images "
8071
- <a name="cl-3236"></a>"then &lt;strong&gt;%d x %d&lt;/strong&gt; pixel"
8072
- <a name="cl-3237"></a>msgstr ""
8073
- <a name="cl-3238"></a>"Huom: Palvelimesi muistirajoituksen vuoksi sinun ei pitäisi ladata suurempia "
8074
- <a name="cl-3239"></a>"kuvia kuin &lt;strong&gt;%d x %d&lt;/strong&gt; pikseliä"
8075
- <a name="cl-3240"></a>
8076
- <a name="cl-3241"></a>#: ../lib/locale.php:112
8077
- <a name="cl-3242"></a>msgid "Invalid URL Provided."
8078
- <a name="cl-3243"></a>msgstr "Väärä URL"
8079
- <a name="cl-3244"></a>
8080
- <a name="cl-3245"></a>#: ../lib/locale.php:116 ../lib/locale.php:120
8081
- <a name="cl-3246"></a>msgid "Could not create Temporary file."
8082
- <a name="cl-3247"></a>msgstr "Tilapäistiedostoa ei voitu luoda."
8083
- <a name="cl-3248"></a>
8084
- <a name="cl-3249"></a>#: ../lib/meta.php:131
8085
- <a name="cl-3250"></a>msgid " mm"
8086
- <a name="cl-3251"></a>msgstr " mm"
8087
- <a name="cl-3252"></a>
8088
- <a name="cl-3253"></a>#: ../lib/meta.php:137
8089
- <a name="cl-3254"></a>msgid " sec"
8090
- <a name="cl-3255"></a>msgstr "s."
8091
- <a name="cl-3256"></a>
8092
- <a name="cl-3257"></a>#: ../lib/meta.php:141
8093
- <a name="cl-3258"></a>msgid "Fired"
8094
- <a name="cl-3259"></a>msgstr "Laukaistu"
8095
- <a name="cl-3260"></a>
8096
- <a name="cl-3261"></a>#: ../lib/meta.php:141
8097
- <a name="cl-3262"></a>msgid "Not fired"
8098
- <a name="cl-3263"></a>msgstr "Ei laukaistu"
8099
- <a name="cl-3264"></a>
8100
- <a name="cl-3265"></a>#: ../lib/meta.php:448 ../view/imagebrowser-exif.php:46
8101
- <a name="cl-3266"></a>msgid "Aperture"
8102
- <a name="cl-3267"></a>msgstr "Aukko"
8103
- <a name="cl-3268"></a>
8104
- <a name="cl-3269"></a>#: ../lib/meta.php:449 ../lib/meta.php:474
8105
- <a name="cl-3270"></a>msgid "Credit"
8106
- <a name="cl-3271"></a>msgstr "Tekijä"
8107
- <a name="cl-3272"></a>
8108
- <a name="cl-3273"></a>#: ../lib/meta.php:450
8109
- <a name="cl-3274"></a>msgid "Camera"
8110
- <a name="cl-3275"></a>msgstr "Kamera "
8111
- <a name="cl-3276"></a>
8112
- <a name="cl-3277"></a>#: ../lib/meta.php:453
8113
- <a name="cl-3278"></a>msgid "Copyright"
8114
- <a name="cl-3279"></a>msgstr "Copyright"
8115
- <a name="cl-3280"></a>
8116
- <a name="cl-3281"></a>#: ../lib/meta.php:454
8117
- <a name="cl-3282"></a>msgid "Focal length"
8118
- <a name="cl-3283"></a>msgstr "Polttoväli"
8119
- <a name="cl-3284"></a>
8120
- <a name="cl-3285"></a>#: ../lib/meta.php:455
8121
- <a name="cl-3286"></a>msgid "ISO"
8122
- <a name="cl-3287"></a>msgstr "ISO"
8123
- <a name="cl-3288"></a>
8124
- <a name="cl-3289"></a>#: ../lib/meta.php:456 ../view/imagebrowser-exif.php:54
8125
- <a name="cl-3290"></a>msgid "Shutter speed"
8126
- <a name="cl-3291"></a>msgstr "Suljinnopeus"
8127
- <a name="cl-3292"></a>
8128
- <a name="cl-3293"></a>#: ../lib/meta.php:460
8129
- <a name="cl-3294"></a>msgid "Subject"
8130
- <a name="cl-3295"></a>msgstr "Kohde"
8131
- <a name="cl-3296"></a>
8132
- <a name="cl-3297"></a>#: ../lib/meta.php:461
8133
- <a name="cl-3298"></a>msgid "Make"
8134
- <a name="cl-3299"></a>msgstr "Malli"
8135
- <a name="cl-3300"></a>
8136
- <a name="cl-3301"></a>#: ../lib/meta.php:462
8137
- <a name="cl-3302"></a>msgid "Edit Status"
8138
- <a name="cl-3303"></a>msgstr "Muokkaustila"
8139
- <a name="cl-3304"></a>
8140
- <a name="cl-3305"></a>#: ../lib/meta.php:463
8141
- <a name="cl-3306"></a>msgid "Category"
8142
- <a name="cl-3307"></a>msgstr "Aihealue"
8143
- <a name="cl-3308"></a>
8144
- <a name="cl-3309"></a>#: ../lib/meta.php:464
8145
- <a name="cl-3310"></a>msgid "Keywords"
8146
- <a name="cl-3311"></a>msgstr "Avainsanat"
8147
- <a name="cl-3312"></a>
8148
- <a name="cl-3313"></a>#: ../lib/meta.php:465
8149
- <a name="cl-3314"></a>msgid "Date Created"
8150
- <a name="cl-3315"></a>msgstr "luotu (Pvm)"
8151
- <a name="cl-3316"></a>
8152
- <a name="cl-3317"></a>#: ../lib/meta.php:466
8153
- <a name="cl-3318"></a>msgid "Time Created"
8154
- <a name="cl-3319"></a>msgstr "luotu (Aika)"
8155
- <a name="cl-3320"></a>
8156
- <a name="cl-3321"></a>#: ../lib/meta.php:467
8157
- <a name="cl-3322"></a>msgid "Author Position"
8158
- <a name="cl-3323"></a>msgstr "Tekijän paikka"
8159
- <a name="cl-3324"></a>
8160
- <a name="cl-3325"></a>#: ../lib/meta.php:468
8161
- <a name="cl-3326"></a>msgid "City"
8162
- <a name="cl-3327"></a>msgstr "Kaupunki"
8163
- <a name="cl-3328"></a>
8164
- <a name="cl-3329"></a>#: ../lib/meta.php:469
8165
- <a name="cl-3330"></a>msgid "Location"
8166
- <a name="cl-3331"></a>msgstr "Sijainti"
8167
- <a name="cl-3332"></a>
8168
- <a name="cl-3333"></a>#: ../lib/meta.php:470
8169
- <a name="cl-3334"></a>msgid "Province/State"
8170
- <a name="cl-3335"></a>msgstr "Maakunta/osavaltio"
8171
- <a name="cl-3336"></a>
8172
- <a name="cl-3337"></a>#: ../lib/meta.php:471
8173
- <a name="cl-3338"></a>msgid "Country code"
8174
- <a name="cl-3339"></a>msgstr "Maakoodi"
8175
- <a name="cl-3340"></a>
8176
- <a name="cl-3341"></a>#: ../lib/meta.php:472
8177
- <a name="cl-3342"></a>msgid "Country"
8178
- <a name="cl-3343"></a>msgstr "Maa"
8179
- <a name="cl-3344"></a>
8180
- <a name="cl-3345"></a>#: ../lib/meta.php:473
8181
- <a name="cl-3346"></a>msgid "Headline"
8182
- <a name="cl-3347"></a>msgstr "Otsikko"
8183
- <a name="cl-3348"></a>
8184
- <a name="cl-3349"></a>#: ../lib/meta.php:475
8185
- <a name="cl-3350"></a>msgid "Source"
8186
- <a name="cl-3351"></a>msgstr "Lähde"
8187
- <a name="cl-3352"></a>
8188
- <a name="cl-3353"></a>#: ../lib/meta.php:476
8189
- <a name="cl-3354"></a>msgid "Copyright Notice"
8190
- <a name="cl-3355"></a>msgstr "Copyright -merkintä"
8191
- <a name="cl-3356"></a>
8192
- <a name="cl-3357"></a>#: ../lib/meta.php:477
8193
- <a name="cl-3358"></a>msgid "Contact"
8194
- <a name="cl-3359"></a>msgstr "Kontakti"
8195
- <a name="cl-3360"></a>
8196
- <a name="cl-3361"></a>#: ../lib/meta.php:478
8197
- <a name="cl-3362"></a>msgid "Last modified"
8198
- <a name="cl-3363"></a>msgstr "Muokattu viimeksi"
8199
- <a name="cl-3364"></a>
8200
- <a name="cl-3365"></a>#: ../lib/meta.php:479
8201
- <a name="cl-3366"></a>msgid "Program tool"
8202
- <a name="cl-3367"></a>msgstr "Ohjelma"
8203
- <a name="cl-3368"></a>
8204
- <a name="cl-3369"></a>#: ../lib/meta.php:480
8205
- <a name="cl-3370"></a>msgid "Format"
8206
- <a name="cl-3371"></a>msgstr "Muoto"
8207
- <a name="cl-3372"></a>
8208
- <a name="cl-3373"></a>#: ../lib/meta.php:481
8209
- <a name="cl-3374"></a>msgid "Image Width"
8210
- <a name="cl-3375"></a>msgstr "Leveys"
8211
- <a name="cl-3376"></a>
8212
- <a name="cl-3377"></a>#: ../lib/meta.php:482
8213
- <a name="cl-3378"></a>msgid "Image Height"
8214
- <a name="cl-3379"></a>msgstr "Korkeus"
8215
- <a name="cl-3380"></a>
8216
- <a name="cl-3381"></a>#: ../lib/meta.php:483
8217
- <a name="cl-3382"></a>msgid "Flash"
8218
- <a name="cl-3383"></a>msgstr "Salama"
8219
- <a name="cl-3384"></a>
8220
- <a name="cl-3385"></a>#: ../lib/multisite.php:23
8221
- <a name="cl-3386"></a>msgid ""
8222
- <a name="cl-3387"></a>"Sorry, you have used your space allocation. Please delete some files to "
8223
- <a name="cl-3388"></a>"upload more files."
8224
- <a name="cl-3389"></a>msgstr ""
8225
- <a name="cl-3390"></a>"Sori, olet käyttänyt tilavarauksesi. Poista joitakin tiedostoja, jotta voit "
8226
- <a name="cl-3391"></a>"lisätä uusia."
8227
- <a name="cl-3392"></a>
8228
- <a name="cl-3393"></a>#: ../lib/ngg-db.php:342 ../lib/ngg-db.php:343
8229
- <a name="cl-3394"></a>msgid "Album overview"
8230
- <a name="cl-3395"></a>msgstr "Albumin yleistiedot"
8231
- <a name="cl-3396"></a>
8232
- <a name="cl-3397"></a>#: ../lib/shortcodes.php:276 ../nggfunctions.php:166 ../nggfunctions.php:651
8233
- <a name="cl-3398"></a>msgid "[Gallery not found]"
8234
- <a name="cl-3399"></a>msgstr "[Galleriaa ei löydy]"
8235
- <a name="cl-3400"></a>
8236
- <a name="cl-3401"></a>#: ../lib/shortcodes.php:340
8237
- <a name="cl-3402"></a>msgid "[Pictures not found]"
8238
- <a name="cl-3403"></a>msgstr "[Kuvia ei löydy]"
8239
- <a name="cl-3404"></a>
8240
- <a name="cl-3405"></a>#: ../lib/tags.php:35
8241
- <a name="cl-3406"></a>msgid "No new tag specified!"
8242
- <a name="cl-3407"></a>msgstr "Mitään uutta tägiä ei ole määritelty!"
8243
- <a name="cl-3408"></a>
8244
- <a name="cl-3409"></a>#: ../lib/tags.php:50
8245
- <a name="cl-3410"></a>msgid "No new/old valid tag specified!"
8246
- <a name="cl-3411"></a>msgstr "Mitään uutta/vanhaa tägiä ei ole määritelty!"
8247
- <a name="cl-3412"></a>
8248
- <a name="cl-3413"></a>#: ../lib/tags.php:86
8249
- <a name="cl-3414"></a>msgid "No tag renamed."
8250
- <a name="cl-3415"></a>msgstr "Mitään tägiä ei nimetty uudelleen."
8251
- <a name="cl-3416"></a>
8252
- <a name="cl-3417"></a>#: ../lib/tags.php:88
8253
- <a name="cl-3418"></a>#, php-format
8254
- <a name="cl-3419"></a>msgid "Renamed tag(s) &amp;laquo;%1$s&amp;raquo; to &amp;laquo;%2$s&amp;raquo;"
8255
- <a name="cl-3420"></a>msgstr "Uudelleennimetty tägit &amp;laquo;%1$s&amp;raquo; bis &amp;laquo;%2$s&amp;raquo; "
8256
- <a name="cl-3421"></a>
8257
- <a name="cl-3422"></a>#: ../lib/tags.php:95
8258
- <a name="cl-3423"></a>msgid "No valid new tag."
8259
- <a name="cl-3424"></a>msgstr "Ei kelvollista tägiä."
8260
- <a name="cl-3425"></a>
8261
- <a name="cl-3426"></a>#: ../lib/tags.php:112
8262
- <a name="cl-3427"></a>msgid "No objects (post/page) found for specified old tags."
8263
- <a name="cl-3428"></a>msgstr ""
8264
- <a name="cl-3429"></a>"Määritellyille tägeille ei löydy mitään uutta kohdetta (Sivu/artikkeli)."
8265
- <a name="cl-3430"></a>
8266
- <a name="cl-3431"></a>#: ../lib/tags.php:141
8267
- <a name="cl-3432"></a>msgid "No tag merged."
8268
- <a name="cl-3433"></a>msgstr "Tägejä ei yhdistetty."
8269
- <a name="cl-3434"></a>
8270
- <a name="cl-3435"></a>#: ../lib/tags.php:143
8271
- <a name="cl-3436"></a>#, php-format
8272
- <a name="cl-3437"></a>msgid ""
8273
- <a name="cl-3438"></a>"Merge tag(s) &amp;laquo;%1$s&amp;raquo; to &amp;laquo;%2$s&amp;raquo;. %3$s objects edited."
8274
- <a name="cl-3439"></a>msgstr ""
8275
- <a name="cl-3440"></a>"Yhdistetty tägit &amp;laquo;%1$s&amp;raquo; bis &amp;laquo;%2$s&amp;raquo; . %3$s kohdetta "
8276
- <a name="cl-3441"></a>"muokattu."
8277
- <a name="cl-3442"></a>
8278
- <a name="cl-3443"></a>#: ../lib/tags.php:146
8279
- <a name="cl-3444"></a>msgid "Error. No enough tags for rename. Too for merge. Choose !"
8280
- <a name="cl-3445"></a>msgstr ""
8281
- <a name="cl-3446"></a>"Virhe. Tägejä ei tarpeeksi uudelleennimettäväksi tai yhdistettäväksi. "
8282
- <a name="cl-3447"></a>"Valitse!"
8283
- <a name="cl-3448"></a>
8284
- <a name="cl-3449"></a>#: ../lib/tags.php:163
8285
- <a name="cl-3450"></a>msgid "No tag specified!"
8286
- <a name="cl-3451"></a>msgstr "Tägiä ei määritelty!"
8287
- <a name="cl-3452"></a>
8288
- <a name="cl-3453"></a>#: ../lib/tags.php:186
8289
- <a name="cl-3454"></a>msgid "No tag deleted."
8290
- <a name="cl-3455"></a>msgstr "Tägejä ei poistettu."
8291
- <a name="cl-3456"></a>
8292
- <a name="cl-3457"></a>#: ../lib/tags.php:188
8293
- <a name="cl-3458"></a>#, php-format
8294
- <a name="cl-3459"></a>msgid "%1s tag(s) deleted."
8295
- <a name="cl-3460"></a>msgstr "%1s tägi(ä) poistettu."
8296
- <a name="cl-3461"></a>
8297
- <a name="cl-3462"></a>#: ../lib/tags.php:202
8298
- <a name="cl-3463"></a>msgid "No new slug(s) specified!"
8299
- <a name="cl-3464"></a>msgstr "Uutta lyhytnimeä (-nimiä) ei määritelty!"
8300
- <a name="cl-3465"></a>
8301
- <a name="cl-3466"></a>#: ../lib/tags.php:214
8302
- <a name="cl-3467"></a>msgid "Tags number and slugs number isn't the same!"
8303
- <a name="cl-3468"></a>msgstr "Tägien nimet ja numerot eivät vastaa toisiaan!"
8304
- <a name="cl-3469"></a>
8305
- <a name="cl-3470"></a>#: ../lib/tags.php:241
8306
- <a name="cl-3471"></a>msgid "No slug edited."
8307
- <a name="cl-3472"></a>msgstr "Lyhytnimiä ei muokattu."
8308
- <a name="cl-3473"></a>
8309
- <a name="cl-3474"></a>#: ../lib/tags.php:243
8310
- <a name="cl-3475"></a>#, php-format
8311
- <a name="cl-3476"></a>msgid "%s slug(s) edited."
8312
- <a name="cl-3477"></a>msgstr "%s lyhytnimi(ä) muutettu."
8313
- <a name="cl-3478"></a>
8314
- <a name="cl-3479"></a>#: ../lib/xmlrpc.php:93
8315
- <a name="cl-3480"></a>#, php-format
8316
- <a name="cl-3481"></a>msgid ""
8317
- <a name="cl-3482"></a>"XML-RPC services are disabled on this blog. An admin user can enable them "
8318
- <a name="cl-3483"></a>"at %s"
8319
- <a name="cl-3484"></a>msgstr ""
8320
- <a name="cl-3485"></a>"XML-RPC Service eivät ole käytössä tässä blogissa. Administraattori voi "
8321
- <a name="cl-3486"></a>"ottaa ne käyttöön paikassa %s "
8322
- <a name="cl-3487"></a>
8323
- <a name="cl-3488"></a>#: ../lib/xmlrpc.php:101
8324
- <a name="cl-3489"></a>msgid "Bad login/pass combination."
8325
- <a name="cl-3490"></a>msgstr "Käyttäjänimi/salasana väärin."
8326
- <a name="cl-3491"></a>
8327
- <a name="cl-3492"></a>#: ../lib/xmlrpc.php:157
8328
- <a name="cl-3493"></a>msgid "You are not allowed to upload files to this site."
8329
- <a name="cl-3494"></a>msgstr "Sinulla ei ole oikeuksia ladata tiedostoja tälle sivustolle."
8330
- <a name="cl-3495"></a>
8331
- <a name="cl-3496"></a>#: ../lib/xmlrpc.php:163 ../lib/xmlrpc.php:777 ../lib/xmlrpc.php:829
8332
- <a name="cl-3497"></a>msgid "Could not find gallery "
8333
- <a name="cl-3498"></a>msgstr "Galleriaa ei löytynyt."
8334
- <a name="cl-3499"></a>
8335
- <a name="cl-3500"></a>#: ../lib/xmlrpc.php:168 ../lib/xmlrpc.php:782 ../lib/xmlrpc.php:834
8336
- <a name="cl-3501"></a>msgid "You are not allowed to upload files to this gallery."
8337
- <a name="cl-3502"></a>msgstr "Sinulla ei ole oikeuksia ladata tiedostoja tähän galleriaan."
8338
- <a name="cl-3503"></a>
8339
- <a name="cl-3504"></a>#: ../lib/xmlrpc.php:180
8340
- <a name="cl-3505"></a>msgid "This is no valid image file."
8341
- <a name="cl-3506"></a>msgstr "Tiedostonimi ei ole sopiva!"
8342
- <a name="cl-3507"></a>
8343
- <a name="cl-3508"></a>#: ../lib/xmlrpc.php:192
8344
- <a name="cl-3509"></a>msgid "Could not find image id "
8345
- <a name="cl-3510"></a>msgstr "Kuva-ID ei löytynyt"
8346
- <a name="cl-3511"></a>
8347
- <a name="cl-3512"></a>#: ../lib/xmlrpc.php:199
8348
- <a name="cl-3513"></a>#, php-format
8349
- <a name="cl-3514"></a>msgid "Failed to delete image %1$s "
8350
- <a name="cl-3515"></a>msgstr "Kuvan %1$s poisto ei onnistunut"
8351
- <a name="cl-3516"></a>
8352
- <a name="cl-3517"></a>#: ../lib/xmlrpc.php:208
8353
- <a name="cl-3518"></a>#, php-format
8354
- <a name="cl-3519"></a>msgid "Could not write file %1$s (%2$s)"
8355
- <a name="cl-3520"></a>msgstr "Tiedoston %1$s (%2$s) tallennus ei onnistunut."
8356
- <a name="cl-3521"></a>
8357
- <a name="cl-3522"></a>#: ../lib/xmlrpc.php:275 ../lib/xmlrpc.php:327
8358
- <a name="cl-3523"></a>msgid "Invalid image ID"
8359
- <a name="cl-3524"></a>msgstr "Värää kuvan ID"
8360
- <a name="cl-3525"></a>
8361
- <a name="cl-3526"></a>#: ../lib/xmlrpc.php:278 ../lib/xmlrpc.php:330
8362
- <a name="cl-3527"></a>msgid "Sorry, you must be able to edit this image"
8363
- <a name="cl-3528"></a>msgstr "Sori, sinulla ei ole oikeuksia tämän kuvan muokkaukseen."
8364
- <a name="cl-3529"></a>
8365
- <a name="cl-3530"></a>#: ../lib/xmlrpc.php:336
8366
- <a name="cl-3531"></a>msgid "Sorry, could not update the image"
8367
- <a name="cl-3532"></a>msgstr "Kuvan päivitys ei onnistunut."
8368
- <a name="cl-3533"></a>
8369
- <a name="cl-3534"></a>#: ../lib/xmlrpc.php:372 ../lib/xmlrpc.php:604 ../lib/xmlrpc.php:704
8370
- <a name="cl-3535"></a>#: ../lib/xmlrpc.php:739
8371
- <a name="cl-3536"></a>msgid "Sorry, you must be able to manage galleries"
8372
- <a name="cl-3537"></a>msgstr "Sori, sinulla ei ole oikeuksia gallerioiden muokkaukseen."
8373
- <a name="cl-3538"></a>
8374
- <a name="cl-3539"></a>#: ../lib/xmlrpc.php:378
8375
- <a name="cl-3540"></a>msgid "Sorry, could not create the gallery"
8376
- <a name="cl-3541"></a>msgstr "Gallerian luonti ei onnistunut."
8377
- <a name="cl-3542"></a>
8378
- <a name="cl-3543"></a>#: ../lib/xmlrpc.php:421 ../lib/xmlrpc.php:601
8379
- <a name="cl-3544"></a>msgid "Invalid gallery ID"
8380
- <a name="cl-3545"></a>msgstr "Väärä gallerian ID"
8381
- <a name="cl-3546"></a>
8382
- <a name="cl-3547"></a>#: ../lib/xmlrpc.php:424
8383
- <a name="cl-3548"></a>msgid "Sorry, you must be able to manage this gallery"
8384
- <a name="cl-3549"></a>msgstr "Sori, sinulla ei ole oikeuksia tämän gallerian muokkaukseen."
8385
- <a name="cl-3550"></a>
8386
- <a name="cl-3551"></a>#: ../lib/xmlrpc.php:430
8387
- <a name="cl-3552"></a>msgid "Sorry, could not update the gallery"
8388
- <a name="cl-3553"></a>msgstr "Gallerian päivitys ei onnistunut."
8389
- <a name="cl-3554"></a>
8390
- <a name="cl-3555"></a>#: ../lib/xmlrpc.php:470 ../lib/xmlrpc.php:522 ../lib/xmlrpc.php:564
8391
- <a name="cl-3556"></a>#: ../lib/xmlrpc.php:637 ../lib/xmlrpc.php:671
8392
- <a name="cl-3557"></a>msgid "Sorry, you must be able to manage albums"
8393
- <a name="cl-3558"></a>msgstr "Sori, sinulla ei ole oikeuksia albumien muokkaukseen."
8394
- <a name="cl-3559"></a>
8395
- <a name="cl-3560"></a>#: ../lib/xmlrpc.php:476
8396
- <a name="cl-3561"></a>msgid "Sorry, could not create the album"
8397
- <a name="cl-3562"></a>msgstr "Albumin luonti ei onnistunut."
8398
- <a name="cl-3563"></a>
8399
- <a name="cl-3564"></a>#: ../lib/xmlrpc.php:519 ../lib/xmlrpc.php:561
8400
- <a name="cl-3565"></a>msgid "Invalid album ID"
8401
- <a name="cl-3566"></a>msgstr "Väärä albumin ID"
8402
- <a name="cl-3567"></a>
8403
- <a name="cl-3568"></a>#: ../lib/xmlrpc.php:528
8404
- <a name="cl-3569"></a>msgid "Sorry, could not update the album"
8405
- <a name="cl-3570"></a>msgstr "Albumin päivitys ei onnistunut"
8406
- <a name="cl-3571"></a>
8407
- <a name="cl-3572"></a>#: ../nggallery.php:122
8408
- <a name="cl-3573"></a>msgid ""
8409
- <a name="cl-3574"></a>"&lt;strong&gt;Translation by : &lt;/strong&gt;&lt;a target=\"_blank\" href=\"http://"
8410
- <a name="cl-3575"></a>"alexrabe.de/wordpress-plugins/nextgen-gallery/languages/\"&gt;See here&lt;/a&gt;"
8411
- <a name="cl-3576"></a>msgstr ""
8412
- <a name="cl-3577"></a>"&lt;strong&gt;Kääntänyt : &lt;/strong&gt;&lt;a target=\"_blank\" href=\"http://alexrabe.de/"
8413
- <a name="cl-3578"></a>"wordpress-plugins/wordtube/translation-of-plugins/\"&gt;Vesa Tiirikainen&lt;/a&gt;"
8414
- <a name="cl-3579"></a>
8415
- <a name="cl-3580"></a>#: ../nggallery.php:123
8416
- <a name="cl-3581"></a>msgid ""
8417
- <a name="cl-3582"></a>"&lt;strong&gt;This translation is not yet updated for Version 1.9.0&lt;/strong&gt;. If "
8418
- <a name="cl-3583"></a>"you would like to help with translation, download the current po from the "
8419
- <a name="cl-3584"></a>"plugin folder and read &lt;a href=\"http://alexrabe.de/wordpress-plugins/"
8420
- <a name="cl-3585"></a>"wordtube/translation-of-plugins/\"&gt;here&lt;/a&gt; how you can translate the plugin."
8421
- <a name="cl-3586"></a>msgstr ""
8422
- <a name="cl-3587"></a>"&lt;strong&gt;Käännös voi olla puutteellinen, joten lähettäkää korjausehdotuksenne "
8423
- <a name="cl-3588"></a>"kääntäjälle&lt;/strong&gt;. Jos haluat auttaa käännöksissä, lataa voimassa oleva "
8424
- <a name="cl-3589"></a>"po-tiedosto lisäosan hakemistosta ja lue &lt;a href=\"http://alexrabe.de/"
8425
- <a name="cl-3590"></a>"wordpress-plugins/wordtube/translation-of-plugins/\"&gt;here&lt;/a&gt; miten lisäosan "
8426
- <a name="cl-3591"></a>"voi kääntää.&lt;/p&gt;"
8427
- <a name="cl-3592"></a>
8428
- <a name="cl-3593"></a>#: ../nggallery.php:232
8429
- <a name="cl-3594"></a>msgid ""
8430
- <a name="cl-3595"></a>"Sorry, NextCellent Gallery works only with a Memory Limit of 16 MB or higher"
8431
- <a name="cl-3596"></a>msgstr "NextCellent Gallery vaatii web-palvelimella muistia vähintään 16MB "
8432
- <a name="cl-3597"></a>
8433
- <a name="cl-3598"></a>#: ../nggallery.php:261
8434
- <a name="cl-3599"></a>msgid "Picture tag"
8435
- <a name="cl-3600"></a>msgstr "Kuvan tägi"
8436
- <a name="cl-3601"></a>
8437
- <a name="cl-3602"></a>#: ../nggallery.php:262
8438
- <a name="cl-3603"></a>msgid "Picture tag: %2$l."
8439
- <a name="cl-3604"></a>msgstr "Kuvan tägi: %2$l."
8440
- <a name="cl-3605"></a>
8441
- <a name="cl-3606"></a>#: ../nggallery.php:263
8442
- <a name="cl-3607"></a>msgid "Separate picture tags with commas."
8443
- <a name="cl-3608"></a>msgstr "Erittele kuvien tägit pilkuilla."
8444
- <a name="cl-3609"></a>
8445
- <a name="cl-3610"></a>#: ../nggallery.php:397
8446
- <a name="cl-3611"></a>msgid "loading"
8447
- <a name="cl-3612"></a>msgstr "lataan..."
8448
- <a name="cl-3613"></a>
8449
- <a name="cl-3614"></a>#: ../nggallery.php:581
8450
- <a name="cl-3615"></a>msgid "Get help"
8451
- <a name="cl-3616"></a>msgstr "Apua"
8452
- <a name="cl-3617"></a>
8453
- <a name="cl-3618"></a>#: ../nggallery.php:663
8454
- <a name="cl-3619"></a>msgid "Sorry, NextCellent Gallery is deactivated: NextGEN version "
8455
- <a name="cl-3620"></a>msgstr "Sori, NextCellent Gallery on deaktivoitu: NextGEN versio"
8456
- <a name="cl-3621"></a>
8457
- <a name="cl-3622"></a>#: ../nggfunctions.php:42
8458
- <a name="cl-3623"></a>msgid ""
8459
- <a name="cl-3624"></a>"The &lt;a href=\"http://www.macromedia.com/go/getflashplayer\"&gt;Flash Player&lt;/a&gt; "
8460
- <a name="cl-3625"></a>"and &lt;a href=\"http://www.mozilla.com/firefox/\"&gt;a browser with Javascript "
8461
- <a name="cl-3626"></a>"support&lt;/a&gt; are needed."
8462
- <a name="cl-3627"></a>msgstr ""
8463
- <a name="cl-3628"></a>"Tarvitset &lt;a href=\"http://www.macromedia.com/go/getflashplayer\"&gt;Adobe "
8464
- <a name="cl-3629"></a>"Flash Playerin&lt;/a&gt; ja &lt;a href=\"http://www.mozilla.com/firefox/\"&gt;selaimen "
8465
- <a name="cl-3630"></a>"Javascript -tuella &lt;/a&gt;."
8466
- <a name="cl-3631"></a>
8467
- <a name="cl-3632"></a>#: ../nggfunctions.php:453
8468
- <a name="cl-3633"></a>msgid "[Album not found]"
8469
- <a name="cl-3634"></a>msgstr "[Albumia ei löydy]"
8470
- <a name="cl-3635"></a>
8471
- <a name="cl-3636"></a>#: ../nggfunctions.php:782
8472
- <a name="cl-3637"></a>msgid "[SinglePic not found]"
8473
- <a name="cl-3638"></a>msgstr "[Kuvaa ei löydy]"
8474
- <a name="cl-3639"></a>
8475
- <a name="cl-3640"></a>#: ../nggfunctions.php:918
8476
- <a name="cl-3641"></a>msgid "Related images for"
8477
- <a name="cl-3642"></a>msgstr "Liittyvät kuvat "
8478
- <a name="cl-3643"></a>
8479
- <a name="cl-3644"></a>#: ../view/album-compact.php:32 ../view/album-extend.php:30
8480
- <a name="cl-3645"></a>msgid "Photos"
8481
- <a name="cl-3646"></a>msgstr "Valokuvaa"
8482
- <a name="cl-3647"></a>
8483
- <a name="cl-3648"></a>#: ../view/gallery-caption.php:32 ../view/gallery.php:32
8484
- <a name="cl-3649"></a>#: ../widgets/media-rss-widget.php:112
8485
- <a name="cl-3650"></a>msgid "[View with PicLens]"
8486
- <a name="cl-3651"></a>msgstr "[Katso PicLensillä]"
8487
- <a name="cl-3652"></a>
8488
- <a name="cl-3653"></a>#: ../view/imagebrowser-caption.php:26 ../view/imagebrowser-exif.php:30
8489
- <a name="cl-3654"></a>#: ../view/imagebrowser.php:26
8490
- <a name="cl-3655"></a>msgid "Back"
8491
- <a name="cl-3656"></a>msgstr "Edellinen"
8492
- <a name="cl-3657"></a>
8493
- <a name="cl-3658"></a>#: ../view/imagebrowser-caption.php:29 ../view/imagebrowser-exif.php:33
8494
- <a name="cl-3659"></a>#: ../view/imagebrowser.php:29
8495
- <a name="cl-3660"></a>msgid "Next"
8496
- <a name="cl-3661"></a>msgstr "Seuraava "
8497
- <a name="cl-3662"></a>
8498
- <a name="cl-3663"></a>#: ../view/imagebrowser-caption.php:31 ../view/imagebrowser-exif.php:35
8499
- <a name="cl-3664"></a>#: ../view/imagebrowser.php:31
8500
- <a name="cl-3665"></a>msgid "of"
8501
- <a name="cl-3666"></a>msgstr " / "
8502
- <a name="cl-3667"></a>
8503
- <a name="cl-3668"></a>#: ../view/imagebrowser-exif.php:38
8504
- <a name="cl-3669"></a>msgid "Meta data"
8505
- <a name="cl-3670"></a>msgstr "Metadata"
8506
- <a name="cl-3671"></a>
8507
- <a name="cl-3672"></a>#: ../view/imagebrowser-exif.php:42
8508
- <a name="cl-3673"></a>msgid "Camera / Type"
8509
- <a name="cl-3674"></a>msgstr "Kamera / tyyppi"
8510
- <a name="cl-3675"></a>
8511
- <a name="cl-3676"></a>#: ../view/imagebrowser-exif.php:50
8512
- <a name="cl-3677"></a>msgid "Focal Length"
8513
- <a name="cl-3678"></a>msgstr "Polttoväli"
8514
- <a name="cl-3679"></a>
8515
- <a name="cl-3680"></a>#: ../widgets/media-rss-widget.php:19
8516
- <a name="cl-3681"></a>msgid "Widget that displays Media RSS links for NextCellent Gallery."
8517
- <a name="cl-3682"></a>msgstr "Vimpain, joka näyttä Media RSS -linkit NextCellent Galleryyn."
8518
- <a name="cl-3683"></a>
8519
- <a name="cl-3684"></a>#: ../widgets/media-rss-widget.php:20
8520
- <a name="cl-3685"></a>msgid "NextCellent Media RSS"
8521
- <a name="cl-3686"></a>msgstr "NextCellent Media RSS "
8522
- <a name="cl-3687"></a>
8523
- <a name="cl-3688"></a>#: ../widgets/media-rss-widget.php:68
8524
- <a name="cl-3689"></a>msgid "Media RSS"
8525
- <a name="cl-3690"></a>msgstr "Media RSS"
8526
- <a name="cl-3691"></a>
8527
- <a name="cl-3692"></a>#: ../widgets/media-rss-widget.php:69
8528
- <a name="cl-3693"></a>msgid "Link to the main image feed"
8529
- <a name="cl-3694"></a>msgstr "Linkki kuvien syötteeseen"
8530
- <a name="cl-3695"></a>
8531
- <a name="cl-3696"></a>#: ../widgets/media-rss-widget.php:79 ../widgets/widgets.php:122
8532
- <a name="cl-3697"></a>#: ../widgets/widgets.php:211
8533
- <a name="cl-3698"></a>msgid "Title:"
8534
- <a name="cl-3699"></a>msgstr "Otsikko:"
8535
- <a name="cl-3700"></a>
8536
- <a name="cl-3701"></a>#: ../widgets/media-rss-widget.php:84
8537
- <a name="cl-3702"></a>msgid "Show Media RSS icon"
8538
- <a name="cl-3703"></a>msgstr "Näytä Media RSS -kuvake"
8539
- <a name="cl-3704"></a>
8540
- <a name="cl-3705"></a>#: ../widgets/media-rss-widget.php:88
8541
- <a name="cl-3706"></a>msgid "Show the Media RSS link"
8542
- <a name="cl-3707"></a>msgstr "Näytä Media RSS -linkki"
8543
- <a name="cl-3708"></a>
8544
- <a name="cl-3709"></a>#: ../widgets/media-rss-widget.php:91
8545
- <a name="cl-3710"></a>msgid "Text for Media RSS link:"
8546
- <a name="cl-3711"></a>msgstr "Teksti Media RSS -linkkiin."
8547
- <a name="cl-3712"></a>
8548
- <a name="cl-3713"></a>#: ../widgets/media-rss-widget.php:95
8549
- <a name="cl-3714"></a>msgid "Tooltip text for Media RSS link:"
8550
- <a name="cl-3715"></a>msgstr "Vinkkiteksti Media RSS -linkkiin."
8551
- <a name="cl-3716"></a>
8552
- <a name="cl-3717"></a>#: ../widgets/widgets.php:22
8553
- <a name="cl-3718"></a>msgid "Show a NextCellent Gallery Slideshow"
8554
- <a name="cl-3719"></a>msgstr "Näytä NextCellent Gallery diasarja"
8555
- <a name="cl-3720"></a>
8556
- <a name="cl-3721"></a>#: ../widgets/widgets.php:23
8557
- <a name="cl-3722"></a>msgid "NextCellent Slideshow"
8558
- <a name="cl-3723"></a>msgstr "NextCellent diasarja"
8559
- <a name="cl-3724"></a>
8560
- <a name="cl-3725"></a>#: ../widgets/widgets.php:64
8561
- <a name="cl-3726"></a>msgid ""
8562
- <a name="cl-3727"></a>"&lt;a href=\"http://www.macromedia.com/go/getflashplayer\"&gt;Get the Flash "
8563
- <a name="cl-3728"></a>"Player&lt;/a&gt; to see the slideshow."
8564
- <a name="cl-3729"></a>msgstr ""
8565
- <a name="cl-3730"></a>"&lt;a href=\"http://www.macromedia.com/go/getflashplayer\"&gt;Lataa Flash Player&lt;/"
8566
- <a name="cl-3731"></a>"a&gt;, nähdäksesi diasarjan."
8567
- <a name="cl-3732"></a>
8568
- <a name="cl-3733"></a>#: ../widgets/widgets.php:126
8569
- <a name="cl-3734"></a>msgid "Select Gallery:"
8570
- <a name="cl-3735"></a>msgstr "Valitse galleria:"
8571
- <a name="cl-3736"></a>
8572
- <a name="cl-3737"></a>#: ../widgets/widgets.php:128
8573
- <a name="cl-3738"></a>msgid "All images"
8574
- <a name="cl-3739"></a>msgstr "Kaikki kuvat"
8575
- <a name="cl-3740"></a>
8576
- <a name="cl-3741"></a>#: ../widgets/widgets.php:142 ../widgets/widgets.php:235
8577
- <a name="cl-3742"></a>msgid "Width:"
8578
- <a name="cl-3743"></a>msgstr "Leveys:"
8579
- <a name="cl-3744"></a>
8580
- <a name="cl-3745"></a>#: ../widgets/widgets.php:145 ../widgets/widgets.php:238
8581
- <a name="cl-3746"></a>msgid "Height:"
8582
- <a name="cl-3747"></a>msgstr "Korkeus:"
8583
- <a name="cl-3748"></a>
8584
- <a name="cl-3749"></a>#: ../widgets/widgets.php:170
8585
- <a name="cl-3750"></a>msgid "Add recent or random images from the galleries"
8586
- <a name="cl-3751"></a>msgstr "Lisää uusimmat tai satunnaiset kuvat gallerioista"
8587
- <a name="cl-3752"></a>
8588
- <a name="cl-3753"></a>#: ../widgets/widgets.php:171
8589
- <a name="cl-3754"></a>#, fuzzy
8590
- <a name="cl-3755"></a>msgid "NextCellent Widget"
8591
- <a name="cl-3756"></a>msgstr "NextCellent -vimpain"
8592
- <a name="cl-3757"></a>
8593
- <a name="cl-3758"></a>#: ../widgets/widgets.php:215
8594
- <a name="cl-3759"></a>#, fuzzy
8595
- <a name="cl-3760"></a>msgid "Show:"
8596
- <a name="cl-3761"></a>msgstr "Näytä :"
8597
- <a name="cl-3762"></a>
8598
- <a name="cl-3763"></a>#: ../widgets/widgets.php:219
8599
- <a name="cl-3764"></a>msgid "Original images"
8600
- <a name="cl-3765"></a>msgstr "Alkuperäiskuvat"
8601
- <a name="cl-3766"></a>
8602
- <a name="cl-3767"></a>#: ../widgets/widgets.php:227
8603
- <a name="cl-3768"></a>msgid "recent added "
8604
- <a name="cl-3769"></a>msgstr "viimeksi lisätyt"
8605
- <a name="cl-3770"></a>
8606
- <a name="cl-3771"></a>#: ../widgets/widgets.php:231
8607
- <a name="cl-3772"></a>msgid "Enable IE8 Web Slices"
8608
- <a name="cl-3773"></a>msgstr "Aktivoi IE8 Web Slices"
8609
- <a name="cl-3774"></a>
8610
- <a name="cl-3775"></a>#: ../widgets/widgets.php:243
8611
- <a name="cl-3776"></a>#, fuzzy
8612
- <a name="cl-3777"></a>msgid "Select:"
8613
- <a name="cl-3778"></a>msgstr "Valitse :"
8614
- <a name="cl-3779"></a>
8615
- <a name="cl-3780"></a>#: ../widgets/widgets.php:245
8616
- <a name="cl-3781"></a>msgid "All galleries"
8617
- <a name="cl-3782"></a>msgstr "Kaikki galleriat"
8618
- <a name="cl-3783"></a>
8619
- <a name="cl-3784"></a>#: ../widgets/widgets.php:246
8620
- <a name="cl-3785"></a>msgid "Only which are not listed"
8621
- <a name="cl-3786"></a>msgstr "Vain listaamattomat"
8622
- <a name="cl-3787"></a>
8623
- <a name="cl-3788"></a>#: ../widgets/widgets.php:247
8624
- <a name="cl-3789"></a>msgid "Only which are listed"
8625
- <a name="cl-3790"></a>msgstr "Vain listatut"
8626
- <a name="cl-3791"></a>
8627
- <a name="cl-3792"></a>#: ../widgets/widgets.php:251
8628
- <a name="cl-3793"></a>#, fuzzy
8629
- <a name="cl-3794"></a>msgid "Gallery ID:"
8630
- <a name="cl-3795"></a>msgstr "Galleria ID :"
8631
- <a name="cl-3796"></a>
8632
- <a name="cl-3797"></a>#: ../widgets/widgets.php:253
8633
- <a name="cl-3798"></a>msgid "Gallery IDs, separated by commas."
8634
- <a name="cl-3799"></a>msgstr "Galleria IDt, erotettuna pilkuilla."
8635
- <a name="cl-3800"></a>
8636
- <a name="cl-3801"></a>#: ../xml/media-rss.php:50
8637
- <a name="cl-3802"></a>msgid "No galleries have been yet created."
8638
- <a name="cl-3803"></a>msgstr "Yhtään galleriaa ei ole vielä luotu."
8639
- <a name="cl-3804"></a>
8640
- <a name="cl-3805"></a>#: ../xml/media-rss.php:69
8641
- <a name="cl-3806"></a>#, php-format
8642
- <a name="cl-3807"></a>msgid "The gallery ID=%s does not exist."
8643
- <a name="cl-3808"></a>msgstr "Galleria ID=%s ei ole olemassa."
8644
- <a name="cl-3809"></a>
8645
- <a name="cl-3810"></a>#: ../xml/media-rss.php:100
8646
- <a name="cl-3811"></a>msgid "No album ID has been provided as parameter"
8647
- <a name="cl-3812"></a>msgstr "Mitään albumi ID:tä ei ole annettu parametrina"
8648
- <a name="cl-3813"></a>
8649
- <a name="cl-3814"></a>#: ../xml/media-rss.php:108
8650
- <a name="cl-3815"></a>#, php-format
8651
- <a name="cl-3816"></a>msgid "The album ID=%s does not exist."
8652
- <a name="cl-3817"></a>msgstr "Albumi ID %s ei ole olemassa"
8653
- <a name="cl-3818"></a>
8654
- <a name="cl-3819"></a>#: ../xml/media-rss.php:115
8655
- <a name="cl-3820"></a>msgid "Invalid MediaRSS command"
8656
- <a name="cl-3821"></a>msgstr "Virheellinen Media RSS -komento"
8657
- <a name="cl-3822"></a>
8658
- <a name="cl-3823"></a>#~ msgid "Choose files to upload"
8659
- <a name="cl-3824"></a>#~ msgstr "Valitse ladattavat tiedostot"
8660
- <a name="cl-3825"></a>
8661
- <a name="cl-3826"></a>#~ msgid ""
8662
- <a name="cl-3827"></a>#~ "The batch upload requires Adobe Flash 10, disable it if you have problems"
8663
- <a name="cl-3828"></a>#~ msgstr ""
8664
- <a name="cl-3829"></a>#~ "Flash-lataus vaatii Adbode Flash 10:n, ota pois käytöstä, jos sinulla on "
8665
- <a name="cl-3830"></a>#~ "ongelmia."
8666
- <a name="cl-3831"></a>
8667
- <a name="cl-3832"></a>#~ msgid "Disable flash upload"
8668
- <a name="cl-3833"></a>#~ msgstr "Ota flash-lataus pois käytöstä"
8669
- <a name="cl-3834"></a>
8670
- <a name="cl-3835"></a>#~ msgid "Upload multiple files at once by ctrl/shift-selecting in dialog"
8671
- <a name="cl-3836"></a>#~ msgstr ""
8672
- <a name="cl-3837"></a>#~ "Lataa useita tiedostoja kerralla valitsemalla ctrl/shift -näppäimin."
8673
- <a name="cl-3838"></a>
8674
- <a name="cl-3839"></a>#~ msgid "Enable flash based upload"
8675
- <a name="cl-3840"></a>#~ msgstr "Ota Flash-lataus käyttöön"
8676
- <a name="cl-3841"></a>
8677
- <a name="cl-3842"></a>#~ msgid "Update Successfully"
8678
- <a name="cl-3843"></a>#~ msgstr "Lataus onnistuui"
8679
- <a name="cl-3844"></a>
8680
- <a name="cl-3845"></a>#~ msgid "Manage Albums"
8681
- <a name="cl-3846"></a>#~ msgstr "Hallitse albumeita"
8682
- <a name="cl-3847"></a>
8683
- <a name="cl-3848"></a>#~ msgid "Manage Galleries"
8684
- <a name="cl-3849"></a>#~ msgstr "Hallitse gallerioita"
8685
- <a name="cl-3850"></a>
8686
- <a name="cl-3851"></a>#~ msgid "Bulk actions"
8687
- <a name="cl-3852"></a>#~ msgstr "Massatoiminnot"
8688
- <a name="cl-3853"></a>
8689
- <a name="cl-3854"></a>#~ msgid "Width x height (in pixel). NextCellent Gallery will keep ratio size"
8690
- <a name="cl-3855"></a>#~ msgstr ""
8691
- <a name="cl-3856"></a>#~ "Leveys x korkeus (pikseleinä). NextGEN Gallery säilyttää mittasuhteet"
8692
- <a name="cl-3857"></a>
8693
- <a name="cl-3858"></a>#~ msgid "Ignore the aspect ratio, no portrait thumbnails"
8694
- <a name="cl-3859"></a>#~ msgstr "Älä huomioi mittasuhteita, ei esikatselukuvia pystyssä"
8695
- <a name="cl-3860"></a>
8696
- <a name="cl-3861"></a>#~ msgid "Width x height (in pixel). NextGEN Gallery will keep ratio size"
8697
- <a name="cl-3862"></a>#~ msgstr ""
8698
- <a name="cl-3863"></a>#~ "Leveys x korkeus (pikseleinä). NextCellent Gallery säilyttää sivusuhteen"
8699
- <a name="cl-3864"></a>
8700
- <a name="cl-3865"></a>#~ msgid "Tags (comma separated list)"
8701
- <a name="cl-3866"></a>#~ msgstr "Tägit (pilkuilla erotettu lista)"
8702
- <a name="cl-3867"></a>
8703
- <a name="cl-3868"></a>#~ msgid "Thanks to all donators..."
8704
- <a name="cl-3869"></a>#~ msgstr "Kiitos kaikille lahjoittajille..."
8705
- <a name="cl-3870"></a>
8706
- <a name="cl-3871"></a>#~ msgid "View all"
8707
- <a name="cl-3872"></a>#~ msgstr "Katso kaikki"
8708
- <a name="cl-3873"></a>
8709
- <a name="cl-3874"></a>#~ msgid "Main NextCellent Gallery overview"
8710
- <a name="cl-3875"></a>#~ msgstr "NextCellent Gallery yleisnäkymä"
8711
- <a name="cl-3876"></a>
8712
- <a name="cl-3877"></a>#~ msgid "Meta Data"
8713
- <a name="cl-3878"></a>#~ msgstr "Metadata"
8714
- <a name="cl-3879"></a>
8715
- <a name="cl-3880"></a>#~ msgid "Tag"
8716
- <a name="cl-3881"></a>#~ msgstr "Tägi"
8717
- <a name="cl-3882"></a>
8718
- <a name="cl-3883"></a>#~ msgid "Editing &lt;strong&gt;%s&lt;/strong&gt;"
8719
- <a name="cl-3884"></a>#~ msgstr "Muokataan &lt;strong&gt;%s&lt;/strong&gt;"
8720
- <a name="cl-3885"></a>
8721
- <a name="cl-3886"></a>#~ msgid "Browsing &lt;strong&gt;%s&lt;/strong&gt;"
8722
- <a name="cl-3887"></a>#~ msgstr "Selataan &lt;strong&gt;%s&lt;/strong&gt;"
8723
- <a name="cl-3888"></a>
8724
- <a name="cl-3889"></a>#~ msgid ""
8725
- <a name="cl-3890"></a>#~ "Tip: Copy your stylesheet (nggallery.css) to your theme folder, so it "
8726
- <a name="cl-3891"></a>#~ "will be not lost during a upgrade"
8727
- <a name="cl-3892"></a>#~ msgstr ""
8728
- <a name="cl-3893"></a>#~ "Vinkki: kopioi tyylitiedostosi (nggallery.css) teemahakemistoosi, niin se "
8729
- <a name="cl-3894"></a>#~ "ei häviä seuraavan päivityksen yhteydessä."
8730
- <a name="cl-3895"></a>
8731
- <a name="cl-3896"></a>#~ msgid "Manage Image Tags"
8732
- <a name="cl-3897"></a>#~ msgstr "Hallitse kuvien tägejä"
8733
- <a name="cl-3898"></a>
8734
- <a name="cl-3899"></a>#~ msgid "Show as"
8735
- <a name="cl-3900"></a>#~ msgstr "Näytä"
8736
- <a name="cl-3901"></a>
8737
- <a name="cl-3902"></a>#~ msgid "Image list"
8738
- <a name="cl-3903"></a>#~ msgstr "Kuvalista"
8739
- <a name="cl-3904"></a>
8740
- <a name="cl-3905"></a>#~ msgid "Width x Height"
8741
- <a name="cl-3906"></a>#~ msgstr "Leveys x korkeus"
8742
- <a name="cl-3907"></a>
8743
- <a name="cl-3908"></a>#~ msgid "Float"
8744
- <a name="cl-3909"></a>#~ msgstr "Kelluta"
8745
- <a name="cl-3910"></a>
8746
- <a name="cl-3911"></a>#~ msgid "Title :"
8747
- <a name="cl-3912"></a>#~ msgstr "Otsikko :"
8748
- <a name="cl-3913"></a>
8749
- <a name="cl-3914"></a>#~ msgid "Width x Height :"
8750
- <a name="cl-3915"></a>#~ msgstr "Leveys x korkeus:"
8751
- </pre></div></td></tr></table>
8752
-
8753
- </div>
8754
-
8755
-
8756
-
8757
-
8758
- </div>
8759
- </div>
8760
-
8761
-
8762
-
8763
-
8764
-
8765
-
8766
- <script id="branch-dialog-template" type="text/html">
8767
-
8768
-
8769
- <div class="tabbed-filter-widget branch-dialog">
8770
- <div class="tabbed-filter">
8771
- <input placeholder="Filter branches" class="filter-box" autosave="branch-dropdown-4335953" type="text">
8772
- [[^ignoreTags]]
8773
- <div class="aui-tabs horizontal-tabs aui-tabs-disabled filter-tabs">
8774
- <ul class="tabs-menu">
8775
- <li class="menu-item active-tab"><a href="#branches">Branches</a></li>
8776
- <li class="menu-item"><a href="#tags">Tags</a></li>
8777
- </ul>
8778
- </div>
8779
- [[/ignoreTags]]
8780
- </div>
8781
-
8782
- <div class="tab-pane active-pane" id="branches" data-filter-placeholder="Filter branches">
8783
- <ol class="filter-list">
8784
- <li class="empty-msg">No matching branches</li>
8785
- [[#branches]]
8786
-
8787
- [[#hasMultipleHeads]]
8788
- [[#heads]]
8789
- <li class="comprev filter-item">
8790
- <a class="pjax-trigger" href="/niknetniko/nextcellent/src/[[changeset]]/lang/nggallery-fi.po?at=[[safeName]]"
8791
- title="[[name]]">
8792
- [[name]] ([[shortChangeset]])
8793
- </a>
8794
- </li>
8795
- [[/heads]]
8796
- [[/hasMultipleHeads]]
8797
- [[^hasMultipleHeads]]
8798
- <li class="comprev filter-item">
8799
- <a class="pjax-trigger" href="/niknetniko/nextcellent/src/[[changeset]]/lang/nggallery-fi.po?at=[[safeName]]" title="[[name]]">
8800
- [[name]]
8801
- </a>
8802
- </li>
8803
- [[/hasMultipleHeads]]
8804
-
8805
- [[/branches]]
8806
- </ol>
8807
- </div>
8808
- <div class="tab-pane" id="tags" data-filter-placeholder="Filter tags">
8809
- <ol class="filter-list">
8810
- <li class="empty-msg">No matching tags</li>
8811
- [[#tags]]
8812
- <li class="comprev filter-item">
8813
- <a class="pjax-trigger" href="/niknetniko/nextcellent/src/[[changeset]]/lang/nggallery-fi.po?at=[[safeName]]" title="[[name]]">
8814
- [[name]]
8815
- </a>
8816
- </li>
8817
- [[/tags]]
8818
- </ol>
8819
- </div>
8820
-
8821
- </div>
8822
-
8823
- </script>
8824
-
8825
-
8826
-
8827
-
8828
- </div>
8829
-
8830
-
8831
-
8832
- <form id="file-search-form" action="#"
8833
-
8834
- data-revision="1c1562ecb0e994fde9fba00d66844dddcda9c403"
8835
- >
8836
- <input type="text" id="file-search-query" class="loading">
8837
- <div id="filtered-files"></div>
8838
- <div class="tip"><em>Tip:</em> Filter by directory path e.g. <strong>/media app.js</strong> to search for public<strong>/media/app.js</strong>.</div>
8839
- <div class="tip"><em>Tip:</em> Use camelCasing e.g. <strong>ProjME</strong> to search for <strong>ProjectModifiedE</strong>vent.java.</div>
8840
- <div class="tip"><em>Tip:</em> Filter by extension type e.g. <strong>/repo .js</strong> to search for all <strong>.js</strong> files in the <strong>/repo</strong> directory.</div>
8841
- <div class="tip"><em>Tip:</em> Separate your search with spaces e.g. <strong>/ssh pom.xml</strong> to search for src<strong>/ssh/pom.xml</strong>.</div>
8842
- <div class="tip"><em>Tip:</em> Use ↑ and ↓ arrow keys to navigate and <strong>return</strong> to view the file.</div>
8843
- <div class="tip mod-osx"><em>Tip:</em> You can also navigate files with <strong>Ctrl+j</strong> <em>(next)</em> and <strong>Ctrl+k</strong> <em>(previous)</em> and view the file with <strong>Ctrl+o</strong>.</div>
8844
- <div class="tip mod-win"><em>Tip:</em> You can also navigate files with <strong>Alt+j</strong> <em>(next)</em> and <strong>Alt+k</strong> <em>(previous)</em> and view the file with <strong>Alt+o</strong>.</div>
8845
- <script id="filtered-files-template" type="text/html">
8846
-
8847
-
8848
- <table class="aui aui-table-interactive bb-list">
8849
- <thead>
8850
- <tr class="assistive">
8851
- <th class="name">Filename</th>
8852
- </tr>
8853
- </thead>
8854
- <tbody>
8855
- [[#files]]
8856
- <tr class="iterable-item">
8857
- <td class="name [[#isDirectory]]directory[[/isDirectory]]">
8858
- <span class="aui-icon aui-icon-small[[#isDirectory]] aui-iconfont-devtools-folder-closed[[/isDirectory]][[^isDirectory]] aui-iconfont-devtools-file[[/isDirectory]]"></span>
8859
- <a href="/niknetniko/nextcellent/src/[[node]]/[[name]][[#branch]][[#isDirectory]]/[[/isDirectory]]?at=[[branch]][[/branch]]"
8860
- title="[[name]]" class="execute" tabindex="-1">
8861
- [[&highlightedName]]
8862
- </a>
8863
- </td>
8864
- </tr>
8865
- [[/files]]
8866
- </tbody>
8867
- </table>
8868
-
8869
- </script>
8870
- </form>
8871
-
8872
-
8873
-
8874
-
8875
-
8876
- <script id="image-upload-template" type="text/html">
8877
-
8878
-
8879
- <form id="upload-image" method="POST"
8880
- action="/xhr/niknetniko/nextcellent/image-upload/">
8881
- <input type='hidden' name='csrfmiddlewaretoken' value='6eiWi83QXDbmPKktlRgHcUTNwJGwWWJ9' />
8882
-
8883
- <div class="drop-target">
8884
- <p class="centered">Drag image here</p>
8885
- </div>
8886
-
8887
-
8888
- <div>
8889
- <button class="aui-button click-target">Select an image</button>
8890
- <input name="file" type="file" class="hidden file-target"
8891
- accept="image/jpeg, image/gif, image/png" />
8892
- <input type="submit" class="hidden">
8893
- </div>
8894
- </form>
8895
-
8896
-
8897
- </script>
8898
-
8899
-
8900
- </div>
8901
- </div>
8902
- </div>
8903
-
8904
- </div>
8905
- </div>
8906
-
8907
- <footer id="footer" role="contentinfo">
8908
- <section class="footer-body">
8909
-
8910
- <ul>
8911
- <li>
8912
- <a class="support-ga" target="_blank"
8913
- data-support-gaq-page="Blog"
8914
- href="http://blog.bitbucket.org">Blog</a>
8915
- </li>
8916
- <li>
8917
- <a class="support-ga" target="_blank"
8918
- data-support-gaq-page="Home"
8919
- href="/support">Support</a>
8920
- </li>
8921
- <li>
8922
- <a class="support-ga"
8923
- data-support-gaq-page="PlansPricing"
8924
- href="/plans">Plans &amp; pricing</a>
8925
- </li>
8926
- <li>
8927
- <a class="support-ga" target="_blank"
8928
- data-support-gaq-page="DocumentationHome"
8929
- href="//confluence.atlassian.com/display/BITBUCKET">Documentation</a>
8930
- </li>
8931
- <li>
8932
- <a class="support-ga" target="_blank"
8933
- data-support-gaq-page="DocumentationAPI"
8934
- href="//confluence.atlassian.com/x/IYBGDQ">API</a>
8935
- </li>
8936
- <li>
8937
- <a class="support-ga" target="_blank"
8938
- data-support-gaq-page="SiteStatus"
8939
- href="http://status.bitbucket.org/">Server status</a>
8940
- </li>
8941
- <li>
8942
- <a class="support-ga" id="meta-info"
8943
- data-support-gaq-page="MetaInfo"
8944
- href="#">Version info</a>
8945
- </li>
8946
- <li>
8947
- <a class="support-ga" target="_blank"
8948
- data-support-gaq-page="EndUserAgreement"
8949
- href="//www.atlassian.com/end-user-agreement?utm_source=bitbucket&amp;utm_medium=link&amp;utm_campaign=footer">Terms of service</a>
8950
- </li>
8951
- <li>
8952
- <a class="support-ga" target="_blank"
8953
- data-support-gaq-page="PrivacyPolicy"
8954
- href="//www.atlassian.com/company/privacy?utm_source=bitbucket&amp;utm_medium=link&amp;utm_campaign=footer">Privacy policy</a>
8955
- </li>
8956
- </ul>
8957
- <div id="meta-info-content" style="display: none;">
8958
- <ul>
8959
-
8960
-
8961
- <li><a href="/account/user/wpgetready/"
8962
- class="view-language-link">English</a></li>
8963
-
8964
-
8965
- <li>
8966
- <a class="support-ga" target="_blank"
8967
- data-support-gaq-page="GitDocumentation"
8968
- href="http://git-scm.com/">Git 1.8.5.2</a>
8969
- </li>
8970
- <li>
8971
- <a class="support-ga" target="_blank"
8972
- data-support-gaq-page="HgDocumentation"
8973
- href="http://mercurial.selenic.com/">Mercurial 2.9</a>
8974
- </li>
8975
- <li>
8976
- <a class="support-ga" target="_blank"
8977
- data-support-gaq-page="DjangoDocumentation"
8978
- href="https://www.djangoproject.com/">Django 1.6.5</a>
8979
- </li>
8980
- <li>
8981
- <a class="support-ga" target="_blank"
8982
- data-support-gaq-page="PythonDocumentation"
8983
- href="http://www.python.org/">Python 2.7.3</a>
8984
- </li>
8985
- <li>
8986
- <a class="support-ga" target="_blank"
8987
- data-support-gaq-page="DeployedVersion"
8988
- href="#">c5245c080d0b / f8a094b2aa66 @ app19</a>
8989
- </li>
8990
- </ul>
8991
- </div>
8992
- <ul class="atlassian-links">
8993
- <li>
8994
- <a id="atlassian-jira-link" target="_blank" title="Track everything – bugs, tasks, deadlines, code – and pull reports to stay informed."
8995
- href="http://www.atlassian.com/software/jira?utm_source=bitbucket&amp;utm_medium=link&amp;utm_campaign=bitbucket_footer">JIRA</a>
8996
- </li>
8997
- <li>
8998
- <a id="atlassian-confluence-link" target="_blank" title="Content Creation, Collaboration & Knowledge Sharing for Teams."
8999
- href="http://www.atlassian.com/software/confluence/overview/team-collaboration-software?utm_source=bitbucket&amp;utm_medium=link&amp;utm_campaign=bitbucket_footer">Confluence</a>
9000
- </li>
9001
- <li>
9002
- <a id="atlassian-bamboo-link" target="_blank" title="Continuous integration and deployment, release management."
9003
- href="http://www.atlassian.com/software/bamboo/overview?utm_source=bitbucket&amp;utm_medium=link&amp;utm_campaign=bitbucket_footer">Bamboo</a>
9004
- </li>
9005
- <li>
9006
- <a id="atlassian-stash-link" target="_blank" title="Git repo management, behind your firewall and Enterprise-ready."
9007
- href="http://www.atlassian.com/software/stash?utm_source=bitbucket&amp;utm_medium=link&amp;utm_campaign=bitbucket_footer">Stash</a>
9008
- </li>
9009
- <li>
9010
- <a id="atlassian-sourcetree-link" target="_blank" title="A free Git and Mercurial desktop client for Mac or Windows."
9011
- href="http://www.sourcetreeapp.com/?utm_source=bitbucket&amp;utm_medium=link&amp;utm_campaign=bitbucket_footer">SourceTree</a>
9012
- </li>
9013
- <li>
9014
- <a id="atlassian-hipchat-link" target="_blank" title="Group chat and IM built for teams."
9015
- href="http://www.hipchat.com/?utm_source=bitbucket&amp;utm_medium=link&amp;utm_campaign=bitbucket_footer">HipChat</a>
9016
- </li>
9017
- </ul>
9018
- <div id="footer-logo">
9019
- <a target="_blank" title="Bitbucket is developed by Atlassian in San Francisco."
9020
- href="http://www.atlassian.com?utm_source=bitbucket&amp;utm_medium=logo&amp;utm_campaign=bitbucket_footer">Atlassian</a>
9021
- </div>
9022
-
9023
-
9024
-
9025
- <div data-modules="components/mentions/index">
9026
- <script id="mention-result" type="text/html">
9027
-
9028
- <div class="aui-avatar aui-avatar-small">
9029
- <div class="aui-avatar-inner">
9030
- <img src="[[avatar_url]]">
9031
- </div>
9032
- </div>
9033
- [[#display_name]]
9034
- <span class="display-name">[[&display_name]]</span> <small class="username">[[&username]]</small>
9035
- [[/display_name]]
9036
- [[^display_name]]
9037
- <span class="username">[[&username]]</span>
9038
- [[/display_name]]
9039
- [[#is_teammate]][[^is_team]]
9040
- <span class="aui-lozenge aui-lozenge-complete aui-lozenge-subtle">teammate</span>
9041
- [[/is_team]][[/is_teammate]]
9042
-
9043
- </script>
9044
- <script id="mention-call-to-action" type="text/html">
9045
-
9046
- [[^query]]
9047
- <li class="bb-typeahead-item">Begin typing to search for a user</li>
9048
- [[/query]]
9049
- [[#query]]
9050
- <li class="bb-typeahead-item">Continue typing to search for a user</li>
9051
- [[/query]]
9052
-
9053
- </script>
9054
- <script id="mention-no-results" type="text/html">
9055
-
9056
- [[^searching]]
9057
- <li class="bb-typeahead-item">Found no matching users for <em>[[query]]</em>.</li>
9058
- [[/searching]]
9059
- [[#searching]]
9060
- <li class="bb-typeahead-item bb-typeahead-searching">Searching for <em>[[query]]</em>.</li>
9061
- [[/searching]]
9062
-
9063
- </script>
9064
- </div>
9065
-
9066
-
9067
-
9068
- <div data-modules="components/repo-typeahead/index">
9069
- <script id="repo-typeahead-result" type="text/html">
9070
- <span class="aui-avatar aui-avatar-project aui-avatar-xsmall">
9071
- <span class="aui-avatar-inner">
9072
- <img src="[[avatar]]">
9073
- </span>
9074
- </span>
9075
- <span class="owner">[[&owner]]</span>/<span class="slug">[[&slug]]</span>
9076
-
9077
- </script>
9078
- </div>
9079
-
9080
- <script id="share-form-template" type="text/html">
9081
-
9082
-
9083
- <div class="error aui-message hidden">
9084
- <span class="aui-icon icon-error"></span>
9085
- <div class="message"></div>
9086
- </div>
9087
- <form class="aui">
9088
- <table class="widget bb-list aui">
9089
- <thead>
9090
- <tr class="assistive">
9091
- <th class="user">User</th>
9092
- <th class="role">Role</th>
9093
- <th class="actions">Actions</th>
9094
- </tr>
9095
- </thead>
9096
- <tbody>
9097
- <tr class="form">
9098
- <td colspan="2">
9099
- <input type="text" class="text bb-user-typeahead user-or-email"
9100
- placeholder="Username or email address"
9101
- autocomplete="off"
9102
- data-bb-typeahead-focus="false"
9103
- [[#disabled]]disabled[[/disabled]]>
9104
- </td>
9105
- <td class="actions">
9106
- <button type="submit" class="aui-button aui-style" disabled>Add</button>
9107
- </td>
9108
- </tr>
9109
- </tbody>
9110
- </table>
9111
- </form>
9112
-
9113
- </script>
9114
- <script id="share-detail-template" type="text/html">
9115
-
9116
-
9117
- [[#username]]
9118
- <td class="user
9119
- [[#hasCustomGroups]]custom-groups[[/hasCustomGroups]]"
9120
- [[#error]]data-error="[[error]]"[[/error]]>
9121
- <div title="[[displayName]]">
9122
- <a href="/[[username]]" class="user">
9123
- <img class="avatar avatar16" src="[[avatar]]" />
9124
- <span>[[displayName]]</span>
9125
- </a>
9126
- </div>
9127
- </td>
9128
- [[/username]]
9129
- [[^username]]
9130
- <td class="email
9131
- [[#hasCustomGroups]]custom-groups[[/hasCustomGroups]]"
9132
- [[#error]]data-error="[[error]]"[[/error]]>
9133
- <div title="[[email]]">
9134
- <span class="aui-icon aui-icon-small aui-iconfont-email"></span>
9135
- [[email]]
9136
- </div>
9137
- </td>
9138
- [[/username]]
9139
- <td class="role
9140
- [[#hasCustomGroups]]custom-groups[[/hasCustomGroups]]">
9141
- <div>
9142
- [[#group]]
9143
- [[#hasCustomGroups]]
9144
- <select class="group [[#noGroupChoices]]hidden[[/noGroupChoices]]">
9145
- [[#groups]]
9146
- <option value="[[slug]]"
9147
- [[#isSelected]]selected[[/isSelected]]>
9148
- [[name]]
9149
- </option>
9150
- [[/groups]]
9151
- </select>
9152
- [[/hasCustomGroups]]
9153
- [[^hasCustomGroups]]
9154
- <label>
9155
- <input type="checkbox" class="admin"
9156
- [[#isAdmin]]checked[[/isAdmin]]>
9157
- Administrator
9158
- </label>
9159
- [[/hasCustomGroups]]
9160
- [[/group]]
9161
- [[^group]]
9162
- <ul>
9163
- <li class="permission aui-lozenge aui-lozenge-complete
9164
- [[^read]]aui-lozenge-subtle[[/read]]"
9165
- data-permission="read">
9166
- read
9167
- </li>
9168
- <li class="permission aui-lozenge aui-lozenge-complete
9169
- [[^write]]aui-lozenge-subtle[[/write]]"
9170
- data-permission="write">
9171
- write
9172
- </li>
9173
- <li class="permission aui-lozenge aui-lozenge-complete
9174
- [[^admin]]aui-lozenge-subtle[[/admin]]"
9175
- data-permission="admin">
9176
- admin
9177
- </li>
9178
- </ul>
9179
- [[/group]]
9180
- </div>
9181
- </td>
9182
- <td class="actions
9183
- [[#hasCustomGroups]]custom-groups[[/hasCustomGroups]]">
9184
- <div>
9185
- <a href="#" class="delete">
9186
- <span class="aui-icon aui-icon-small aui-iconfont-remove">Delete</span>
9187
- </a>
9188
- </div>
9189
- </td>
9190
-
9191
- </script>
9192
- <script id="share-team-template" type="text/html">
9193
-
9194
-
9195
- <div class="clearfix">
9196
- <span class="team-avatar-container">
9197
- <img src="[[avatar]]" alt="[[display_name]]" title="[[display_name]]" class="avatar avatar32" />
9198
- </span>
9199
- <span class="team-name-container">
9200
- [[display_name]]
9201
- </span>
9202
- </div>
9203
- <p class="helptext">
9204
-
9205
- Existing users are granted access to this team immediately.
9206
- New users will be sent an invitation.
9207
-
9208
- </p>
9209
- <div class="share-form"></div>
9210
-
9211
- </script>
9212
-
9213
- </section>
9214
- </footer>
9215
- </div>
9216
-
9217
- <script src="https://d3oaxc4q5k2d6q.cloudfront.net/m/f8a094b2aa66/jsi18n/en/djangojs.js"></script>
9218
-
9219
-
9220
- <script id="require-js"
9221
- src="https://d3oaxc4q5k2d6q.cloudfront.net/m/f8a094b2aa66/amd/build/main.js"
9222
- data-main="https://d3oaxc4q5k2d6q.cloudfront.net/m/f8a094b2aa66/amd/build/main"
9223
- data-page-module="repo/index"></script>
9224
-
9225
-
9226
-
9227
-
9228
- <script>
9229
- (function () {
9230
- var ga = document.createElement('script');
9231
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
9232
- ga.setAttribute('async', 'true');
9233
- document.documentElement.firstChild.appendChild(ga);
9234
- }());
9235
- </script>
9236
-
9237
-
9238
-
9239
-
9240
- <script id="source-changeset" type="text/html">
9241
-
9242
-
9243
- <a href="/niknetniko/nextcellent/src/[[raw_node]]/[[path]]"
9244
- class="[[#selected]]highlight[[/selected]]"
9245
- data-hash="[[node]]">
9246
- [[#author.username]]
9247
- <img class="avatar avatar16" src="[[author.avatar]]"/>
9248
- <span class="author" title="[[raw_author]]">[[author.display_name]]</span>
9249
- [[/author.username]]
9250
- [[^author.username]]
9251
- <img class="avatar avatar16" src="https://d3oaxc4q5k2d6q.cloudfront.net/m/f8a094b2aa66/img/default_avatar/16/user_blue.png"/>
9252
- <span class="author unmapped" title="[[raw_author]]">[[author]]</span>
9253
- [[/author.username]]
9254
- <time datetime="[[utctimestamp]]" data-title="true">[[utctimestamp]]</time>
9255
- <span class="message">[[message]]</span>
9256
- </a>
9257
-
9258
- </script>
9259
- <script id="embed-template" type="text/html">
9260
-
9261
-
9262
- <form class="aui embed">
9263
- <label for="embed-code">Embed this source in another page:</label>
9264
- <input type="text" readonly="true" value="&lt;script src=&quot;[[url]]&quot;&gt;&lt;/script&gt;" id="embed-code">
9265
- </form>
9266
-
9267
- </script>
9268
- <script id="edit-form-template" type="text/html">
9269
-
9270
-
9271
-
9272
- <form class="edit-form aui"
9273
- data-repository="[[owner]]/[[slug]]"
9274
- data-destination-repository="[[destinationOwner]]/[[destinationSlug]]"
9275
- data-local-id="[[localID]]"
9276
- data-is-writer="[[#isWriter]]true[[/isWriter]][[^isWriter]]false[[/isWriter]]"
9277
- data-has-push-access="[[#hasPushAccess]]true[[/hasPushAccess]][[^hasPushAccess]]false[[/hasPushAccess]]"
9278
- data-is-pull-request="[[#isPullRequest]]true[[/isPullRequest]][[^isPullRequest]]false[[/isPullRequest]]"
9279
- data-hash="[[hash]]"
9280
- data-branch="[[branch]]"
9281
- data-path="[[path]]"
9282
- data-is-create="[[isCreate]]"
9283
- data-preview-url="/xhr/[[owner]]/[[slug]]/preview/[[hash]]/[[encodedPath]]"
9284
- data-preview-error="We had trouble generating your preview."
9285
- data-unsaved-changes-error="Your changes will be lost. Are you sure you want to leave?">
9286
- <div class="toolbar clearfix">
9287
- <div class="primary">
9288
- <h2>
9289
- [[#isCreate]]
9290
-
9291
- Creating <span class="edit-path">[[path]]</span> on branch: <strong>[[branch]]</strong>
9292
-
9293
- [[/isCreate]]
9294
- [[^isCreate]]
9295
-
9296
- Editing <span class="edit-path">[[path]]</span> on branch: <strong>[[branch]]</strong>
9297
-
9298
- [[/isCreate]]
9299
- </h2>
9300
- </div>
9301
- <div class="secondary">
9302
- <div class="hunk-nav aui-buttons">
9303
- <button class="prev-hunk-button aui-button aui-button aui-style"
9304
- disabled="disabled" aria-disabled="true" title="previous change">&#x25B2;</button>
9305
- <button class="next-hunk-button aui-button aui-button aui-style"
9306
- disabled="disabled" aria-disabled="true" title="next change">&#x25BC;</button>
9307
- </div>
9308
- </div>
9309
- </div>
9310
- <div class="file-editor">
9311
- <textarea id="id_source"></textarea>
9312
- </div>
9313
- <div class="preview-pane"></div>
9314
- <div class="toolbar footer-toolbar clearfix">
9315
- <div class="primary">
9316
- <div id="syntax-mode" class="field">
9317
- <label for="id_syntax-mode">Syntax mode:</label>
9318
- <select id="id_syntax-mode">
9319
- [[#syntaxes]]
9320
- <option value="[[#mime]][[mime]][[/mime]][[^mime]][[mode]][[/mime]]">[[label]]</option>
9321
- [[/syntaxes]]
9322
- </select>
9323
- </div>
9324
- <div id="indent-mode" class="field">
9325
- <label for="id_indent-mode">Indent mode:</label>
9326
- <select id="id_indent-mode">
9327
- <option value="tabs">Tabs</option>
9328
- <option value="spaces">Spaces</option>
9329
- </select>
9330
- </div>
9331
- <div id="indent-size" class="field">
9332
- <label for="id_indent-size">Indent size:</label>
9333
- <select id="id_indent-size">
9334
- <option value="2">2</option>
9335
- <option value="4">4</option>
9336
- <option value="8">8</option>
9337
- </select>
9338
- </div>
9339
- </div>
9340
- <div class="secondary">
9341
- [[^isCreate]]
9342
- <button class="preview-button aui-button aui-style"
9343
- disabled="disabled" aria-disabled="true"
9344
- data-preview-label="View diff"
9345
- data-edit-label="Edit file">View diff</button>
9346
- [[/isCreate]]
9347
- <button class="save-button aui-button aui-button-primary aui-style"
9348
- disabled="disabled" aria-disabled="true">Commit</button>
9349
- [[^isCreate]]
9350
- <a class="cancel-link" href="#">Cancel</a>
9351
- [[/isCreate]]
9352
- </div>
9353
- </div>
9354
- </form>
9355
-
9356
- </script>
9357
- <script id="commit-form-template" type="text/html">
9358
-
9359
-
9360
- <form class="aui commit-form"
9361
- data-title="Commit changes"
9362
- [[#isDelete]]
9363
- data-default-message="[[filename]] deleted online with Bitbucket"
9364
- [[/isDelete]]
9365
- [[#isCreate]]
9366
- data-default-message="[[filename]] created online with Bitbucket"
9367
- [[/isCreate]]
9368
- [[^isDelete]]
9369
- [[^isCreate]]
9370
- data-default-message="[[filename]] edited online with Bitbucket"
9371
- [[/isCreate]]
9372
- [[/isDelete]]
9373
- data-fork-error="We had trouble creating your fork."
9374
- data-commit-error="We had trouble committing your changes."
9375
- data-pull-request-error="We had trouble creating your pull request."
9376
- data-update-error="We had trouble updating your pull request."
9377
- data-branch-conflict-error="A branch with that name already exists."
9378
- data-forking-message="Forking repository"
9379
- data-committing-message="Committing changes"
9380
- data-merging-message="Branching and merging changes"
9381
- data-creating-pr-message="Creating pull request"
9382
- data-updating-pr-message="Updating pull request"
9383
- data-cta-label="Commit"
9384
- data-cancel-label="Cancel">
9385
- [[#isDelete]]
9386
- <div class="aui-message info">
9387
- <span class="aui-icon icon-info"></span>
9388
- <span class="message">
9389
-
9390
- Committing this change will delete [[filename]] from your repository.
9391
-
9392
- </span>
9393
- </div>
9394
- [[/isDelete]]
9395
- <div class="aui-message error hidden">
9396
- <span class="aui-icon icon-error"></span>
9397
- <span class="message"></span>
9398
- </div>
9399
- [[^isWriter]]
9400
- <div class="aui-message info">
9401
- <span class="aui-icon icon-info"></span>
9402
- <p class="title">
9403
-
9404
- You don't have write access to this repository.
9405
-
9406
- </p>
9407
- <span class="message">
9408
-
9409
- We'll create a fork for your changes and submit a
9410
- pull request back to this repository.
9411
-
9412
- </span>
9413
- </div>
9414
- [[/isWriter]]
9415
- [[#isRename]]
9416
- <div class="field-group">
9417
- <label for="id_path">New path</label>
9418
- <input type="text" id="id_path" class="text" value="[[path]]"/>
9419
- </div>
9420
- [[/isRename]]
9421
- <div class="field-group">
9422
- <label for="id_message">Commit message</label>
9423
- <textarea id="id_message" class="long-field textarea"></textarea>
9424
- </div>
9425
- [[^isPullRequest]]
9426
- [[#isWriter]]
9427
- <fieldset class="group">
9428
- <div class="checkbox">
9429
- [[#hasPushAccess]]
9430
- <input id="id_create-pullrequest" class="checkbox" type="checkbox">
9431
- <label for="id_create-pullrequest">Create a pull request for this change</label>
9432
- [[/hasPushAccess]]
9433
- [[^hasPushAccess]]
9434
- <input id="id_create-pullrequest" class="checkbox" type="checkbox" checked="checked" aria-disabled="true" disabled="true">
9435
- <label for="id_create-pullrequest" title="Branch restrictions do not allow you to update this branch.">Create a pull request for this change</label>
9436
- [[/hasPushAccess]]
9437
-
9438
- </div>
9439
- </fieldset>
9440
- <div id="pr-fields">
9441
- <div id="branch-name-group" class="field-group">
9442
- <label for="id_branch-name">Branch name</label>
9443
- <input type="text" id="id_branch-name" class="text long-field">
9444
- </div>
9445
- <div id="reviewers-group" class="field-group"
9446
- data-api-url="/niknetniko/nextcellent/pull-request/xhr/reviewer/niknetniko/nextcellent/:reviewer_name">
9447
- <label for="participants">Reviewers</label>
9448
- <select id="participants" class="long-field" name="reviewers" multiple></select>
9449
- <div class="error"></div>
9450
-
9451
- </div>
9452
- </div>
9453
- [[/isWriter]]
9454
- [[/isPullRequest]]
9455
- <button type="submit" id="id_submit">Commit</button>
9456
- </form>
9457
-
9458
- </script>
9459
- <script id="merge-message-template" type="text/html">
9460
- Merged [[hash]] into [[branch]]
9461
-
9462
- [[message]]
9463
-
9464
- </script>
9465
- <script id="commit-merge-error-template" type="text/html">
9466
-
9467
-
9468
-
9469
-
9470
- We had trouble merging your changes. We stored them on the <strong>[[branch]]</strong> branch, so feel free to
9471
- <a href="/[[owner]]/[[slug]]/full-commit/[[hash]]/[[path]]?at=[[encodedBranch]]">view them</a> or
9472
- <a href="#" class="create-pull-request-link">create a pull request</a>.
9473
-
9474
-
9475
- </script>
9476
-
9477
-
9478
-
9479
-
9480
- <div id="recently-mentioned-1812593"
9481
- data-value="[]"></div>
9482
-
9483
-
9484
-
9485
-
9486
-
9487
- <script type="text/javascript">window.NREUM||(NREUM={});NREUM.info={"beacon":"beacon-4.newrelic.com","queueTime":0,"licenseKey":"a2cef8c3d3","agent":"js-agent.newrelic.com/nr-412.min.js","transactionName":"Z11RZxdWW0cEVkYLDV4XdUYLVEFdClsdAAtEWkZQDlJBGgRFQhFMQl1DXFcZQ10AQkFYBFlUVlEXWEJHAA==","userAttributes":"SxpaQDpWQEANUFwWC1NZR1YBFQ9AF0BXTkBZS2xSFV4XDgNUXhEHHBpGQABFaloEWFdAWBJPQ1QAQ0dRBFFLQB8=","applicationID":"1841284","errorBeacon":"bam.nr-data.net","applicationTime":192}</script></body>
9488
- </html>
1
+ msgid ""
2
+ msgstr ""
3
+ "Project-Id-Version: NextCellent Gallery suomeksi\n"
4
+ "POT-Creation-Date: 2015-01-09 16:11+0100\n"
5
+ "PO-Revision-Date: \n"
6
+ "Last-Translator: Niko Strijbol <strijbol.niko@gmail.com>\n"
7
+ "Language-Team: Vesa Tiirikainen <vesa@tiirikainen.fi>\n"
8
+ "Language: fi\n"
9
+ "MIME-Version: 1.0\n"
10
+ "Content-Type: text/plain; charset=UTF-8\n"
11
+ "Content-Transfer-Encoding: 8bit\n"
12
+ "X-Poedit-SourceCharset: UTF-8\n"
13
+ "X-Generator: Poedit 1.7.1\n"
14
+
15
+ #: ../admin/about.php:9 ../admin/admin.php:171
16
+ msgid "About"
17
+ msgstr "Lisäosasta"
18
+
19
+ #: ../admin/about.php:12
20
+ msgid "Contributors"
21
+ msgstr "Tukijat"
22
+
23
+ #: ../admin/about.php:14
24
+ msgid ""
25
+ "This plugin is made possible by the great work of a lot of people. A special "
26
+ "thanks the following people:"
27
+ msgstr ""
28
+ "Monien ihmisten hieno työ on tehnyt tämän lisäosan mahdolliseksi. "
29
+ "Erityiskiitokset seuraaville ihmisille: "
30
+
31
+ #: ../admin/about.php:16
32
+ msgid "for their great documented code"
33
+ msgstr "heidän hienosta dokumentoidusta koodistaan"
34
+
35
+ #: ../admin/about.php:17
36
+ msgid "for jQuery, which is the best Web2.0 framework"
37
+ msgstr "jQuery:sta, parhaasta Web2.0 kehikosta"
38
+
39
+ #: ../admin/about.php:18
40
+ msgid "for the fantastic PHP Thumbnail Class"
41
+ msgstr "fantastisesta PHP Thumbnail -luokasta"
42
+
43
+ #: ../admin/about.php:19
44
+ msgid "for a lot of very useful plugins and ideas"
45
+ msgstr "useista hyvin kätevistä lisäosista ja ideoista"
46
+
47
+ #: ../admin/about.php:20
48
+ msgid "for Shutter Reloaded, a real lightweight image effect"
49
+ msgstr "Shutter Reloadedista - tosi kevyesttä kuvaefektistä"
50
+
51
+ #: ../admin/about.php:21
52
+ msgid "for the best Media Flash Scripts on earth"
53
+ msgstr "maailman parhaista Media Flash -skripteistä"
54
+
55
+ #: ../admin/about.php:22
56
+ msgid "for the Gallery Icon"
57
+ msgstr "Gallerian kuvakkeesta"
58
+
59
+ #: ../admin/about.php:23
60
+ msgid "for the Watermark plugin"
61
+ msgstr "Vesileima-lisäosasta"
62
+
63
+ #: ../admin/about.php:24
64
+ msgid "for maintaining this fork of NextGen Gallery"
65
+ msgstr "tämän NextGen Galleryn seuraajan ylläpidosta"
66
+
67
+ #: ../admin/about.php:25
68
+ msgid "The original translators for NextGen Gallery, who made the translations"
69
+ msgstr "NextGen Gallery alkuperäisistä kääntäjistä, jotka loivat käännökset"
70
+
71
+ #: ../admin/about.php:31 ../nggallery.php:386
72
+ msgid "NextCellent"
73
+ msgstr "NextCellent"
74
+
75
+ #: ../admin/about.php:33
76
+ msgid ""
77
+ "NextCellent Gallery is based on the 1.9.13 version of the NextGen Gallery by "
78
+ "Photocrati Media, which is the succesor to the work by Alex Rabe."
79
+ msgstr ""
80
+ "NextCellent Gallery perustuu NextGen Gallery by Photocrati Median versioon "
81
+ "1.9.13, joka on Alex Raben työn suora jatke."
82
+
83
+ #: ../admin/about.php:34
84
+ msgid "What do you get with NextCellent Gallery?"
85
+ msgstr "Mitä saat NextCellent Gallerylla?"
86
+
87
+ #: ../admin/about.php:36
88
+ msgid "Backward compatibility with NextGEN plugin version (1.9.13)"
89
+ msgstr "Taaksepäin yhteensopiva NextGEN -llisäosan versioon (1.9.13)"
90
+
91
+ #: ../admin/about.php:37
92
+ msgid ""
93
+ "Slow evolving code path, made only by NextGEN user's suggestions. Yep, you "
94
+ "read it right: slow in counterpart as fast. Older code is good enough to "
95
+ "keep a community and it worked (and works) for most people."
96
+ msgstr ""
97
+ "Hitaasti kehittyvä koodi, jonka muutokset perustuvat ainoastaan NextGENin "
98
+ "käyttäjien ehdotuksiin. Yep, olet oikeassa: hidas on nopean vastakohta. "
99
+ "Vanhempi koodi on tarpeeksi hyvää säilyttämään yhteisön ja se toimi (ja "
100
+ "toimii yhä) useimmilla käyttäjillä."
101
+
102
+ #: ../admin/about.php:38
103
+ msgid "A reliable way to work with already installed NextGEN galleries."
104
+ msgstr ""
105
+ "Luotettava tie työskennellä jo asennettujen NextGEN -gallerioiden kanssa."
106
+
107
+ #: ../admin/about.php:39
108
+ msgid ""
109
+ "A place for updating the plugin without using FTP manual updates, but "
110
+ "WordPress plugin repository."
111
+ msgstr ""
112
+ "Lisäosan päivitys suoraan WordPressin lisäosien hakemistosta, ei käsin "
113
+ "tehtyjä päivityksiä FTP:llä."
114
+
115
+ #: ../admin/about.php:40
116
+ msgid "Alternative path preserving backward compatibility (while possible)."
117
+ msgstr ""
118
+ "Vaihtoehtoinen tie säilyttää yhteensopivuus taaksepäin (aina kun "
119
+ "mahdollista)."
120
+
121
+ #: ../admin/about.php:46
122
+ msgid "How to support us?"
123
+ msgstr "Miten tukea meitä?"
124
+
125
+ #: ../admin/about.php:48
126
+ msgid "There are several ways to contribute:"
127
+ msgstr "On useita tapoja tukea: "
128
+
129
+ #: ../admin/about.php:50
130
+ msgid "Send us bugfixes / code changes"
131
+ msgstr "Lähetä meille bugikorjauksia / koodimuutoksia"
132
+
133
+ #: ../admin/about.php:50
134
+ msgid ""
135
+ "The most motivated support for this plugin are your ideas and brain work."
136
+ msgstr "Ideasi ja ajatuksesti ovat kaikkein motivoivin tuki tälle lisäosalle."
137
+
138
+ #: ../admin/about.php:51
139
+ msgid "Translate the plugin"
140
+ msgstr "Käännä lisäosa."
141
+
142
+ #: ../admin/about.php:51
143
+ msgid ""
144
+ "To help people to work with this plugin, we would like to have it in all "
145
+ "available languages."
146
+ msgstr ""
147
+ "Jotta ihmiset voivat työskennellä tämän lisäosan kanssa, haluaisimme sen "
148
+ "olevan saatavilla kaikilla kielillä."
149
+
150
+ #: ../admin/about.php:52
151
+ msgid "Place a link to the plugin in your blog/webpage"
152
+ msgstr "Pistä linkki lisäosaan blogiisi tai sivustollesi"
153
+
154
+ #: ../admin/about.php:52
155
+ msgid "Yes, sharing and linking are also supportive and helpful."
156
+ msgstr "Kyllä, jakaminen ja linkitys auttavat ja tukevat myös."
157
+
158
+ #: ../admin/addgallery.php:35 ../admin/addgallery.php:47
159
+ #: ../admin/addgallery.php:59 ../admin/addgallery.php:70 ../admin/album.php:88
160
+ #: ../admin/album.php:123 ../admin/album.php:145
161
+ #: ../admin/edit-thumbnail.php:19 ../admin/edit-thumbnail.php:22
162
+ #: ../admin/manage.php:188 ../admin/publish.php:7 ../admin/publish.php:10
163
+ #: ../admin/publish.php:13 ../admin/rotate.php:17 ../admin/rotate.php:20
164
+ #: ../admin/showmeta.php:10 ../admin/showmeta.php:13
165
+ msgid "Cheatin&#8217; uh?"
166
+ msgstr "Huijaatko&#8217; höh?"
167
+
168
+ #: ../admin/addgallery.php:52 ../admin/addgallery.php:83
169
+ msgid "Upload failed!"
170
+ msgstr "Lataus epäonnistui!"
171
+
172
+ #: ../admin/addgallery.php:75
173
+ msgid "Upload failed! "
174
+ msgstr "Lataus epäonnistui!"
175
+
176
+ #: ../admin/addgallery.php:80 ../admin/addgallery.php:295
177
+ #: ../admin/admin.php:330
178
+ msgid "You didn't select a gallery!"
179
+ msgstr "Mikään galleria ei ole valittuna !"
180
+
181
+ #: ../admin/addgallery.php:150 ../admin/admin.php:139
182
+ msgid "Add Gallery / Images"
183
+ msgstr "Lisää galleria / kuvia"
184
+
185
+ #: ../admin/addgallery.php:170
186
+ msgid "Image Files"
187
+ msgstr "Kuvatiedostot"
188
+
189
+ #: ../admin/addgallery.php:197
190
+ msgid "remove"
191
+ msgstr "poista"
192
+
193
+ #: ../admin/addgallery.php:198 ../admin/addgallery.php:446
194
+ msgid "Browse..."
195
+ msgstr "Selaa..."
196
+
197
+ #: ../admin/addgallery.php:199 ../admin/addgallery.php:237
198
+ #: ../admin/addgallery.php:464 ../admin/addgallery.php:512
199
+ msgid "Upload images"
200
+ msgstr "Lataa kuvia"
201
+
202
+ #: ../admin/addgallery.php:303 ../admin/addgallery.php:311
203
+ #, fuzzy
204
+ msgid "You didn't select a file!"
205
+ msgstr "Mikään galleria ei ole valittuna !"
206
+
207
+ #: ../admin/addgallery.php:351 ../admin/admin.php:477
208
+ msgid "New gallery"
209
+ msgstr "Uusi galleria"
210
+
211
+ #: ../admin/addgallery.php:354 ../admin/admin.php:482 ../admin/admin.php:534
212
+ #: ../admin/manage-galleries.php:414 ../admin/settings.php:286
213
+ msgid "Images"
214
+ msgstr "Kuvia"
215
+
216
+ #: ../admin/addgallery.php:357 ../admin/admin.php:485
217
+ msgid "ZIP file"
218
+ msgstr "ZIP-tiedosto"
219
+
220
+ #: ../admin/addgallery.php:360 ../admin/addgallery.php:453
221
+ #: ../admin/admin.php:488
222
+ msgid "Import folder"
223
+ msgstr "Tuo kuvahakemisto"
224
+
225
+ #: ../admin/addgallery.php:371
226
+ msgid "Add a new gallery"
227
+ msgstr "Lisää uusi galleria"
228
+
229
+ #: ../admin/addgallery.php:376 ../admin/album.php:547 ../admin/showmeta.php:33
230
+ #: ../admin/showmeta.php:59 ../admin/showmeta.php:84 ../admin/showmeta.php:108
231
+ msgid "Name"
232
+ msgstr "Nimi"
233
+
234
+ #: ../admin/addgallery.php:379
235
+ msgid "Create a new, empty gallery in the folder"
236
+ msgstr "Luo uusi tyhjä galleria hakemistoon"
237
+
238
+ #: ../admin/addgallery.php:381 ../admin/manage-galleries.php:282
239
+ msgid "Allowed characters for file and folder names are"
240
+ msgstr "Sallitut merkit tiedosto- ja hakemistonimille ovat"
241
+
242
+ #: ../admin/addgallery.php:384 ../admin/manage-galleries.php:411
243
+ #: ../admin/manage-images.php:292 ../admin/manage-images.php:510
244
+ #: ../admin/manage-images.php:732 ../admin/media-upload.php:225
245
+ #: ../admin/style.php:298
246
+ msgid "Description"
247
+ msgstr "Kuvaus"
248
+
249
+ #: ../admin/addgallery.php:386
250
+ msgid "Add a description. This is optional and can be changed later."
251
+ msgstr ""
252
+
253
+ #: ../admin/addgallery.php:390
254
+ msgid "Add gallery"
255
+ msgstr "Lisää galleria"
256
+
257
+ #: ../admin/addgallery.php:398
258
+ msgid "Upload a ZIP File"
259
+ msgstr "Lataa ZIP-tiedosto"
260
+
261
+ #: ../admin/addgallery.php:403
262
+ msgid "Select ZIP file"
263
+ msgstr "Valitse Zip-tiedosto"
264
+
265
+ #: ../admin/addgallery.php:405
266
+ msgid "Upload a ZIP file with images"
267
+ msgstr "Lataa kuvia sisältävä zip-tiedosto"
268
+
269
+ #: ../admin/addgallery.php:409
270
+ msgid "or enter URL"
271
+ msgstr "tai anna Zip-tiedoston URL"
272
+
273
+ #: ../admin/addgallery.php:411
274
+ msgid "Import a ZIP file from a URL"
275
+ msgstr "Lataa kuvia sisältävä zip-tiedosto URLista"
276
+
277
+ #: ../admin/addgallery.php:415 ../admin/addgallery.php:469
278
+ msgid "in to"
279
+ msgstr "paikkaan"
280
+
281
+ #: ../admin/addgallery.php:417
282
+ msgid "a new gallery"
283
+ msgstr "uusi galleria"
284
+
285
+ #: ../admin/addgallery.php:428
286
+ msgid "Note: the upload limit on your server is "
287
+ msgstr "Huom: latausraja palvelimellasi on "
288
+
289
+ #: ../admin/addgallery.php:432
290
+ msgid "Start upload"
291
+ msgstr "Aloita lataus"
292
+
293
+ #: ../admin/addgallery.php:440
294
+ msgid "Import an image folder"
295
+ msgstr "Tuo palvelin-polusta:"
296
+
297
+ #: ../admin/addgallery.php:445
298
+ msgid "Import from server:"
299
+ msgstr "Tuo palvelimelta:"
300
+
301
+ #: ../admin/addgallery.php:448
302
+ msgid "Note: you can change the default path in the gallery settings"
303
+ msgstr "Huom : muuta oletuspolku gallerian asetuksista"
304
+
305
+ #: ../admin/addgallery.php:450
306
+ msgid ""
307
+ "Please note: If safe-mode is ON, you need to add the subfolder with thumbs "
308
+ "manually"
309
+ msgstr ""
310
+ "Varoitus : jos safe-mode = ON, alihakemiston esikatselukuvat on lisättävä "
311
+ "manuaalisesti"
312
+
313
+ #: ../admin/addgallery.php:453 ../admin/manage-images.php:354
314
+ msgid ""
315
+ "This will change folder and file names (e.g. remove spaces, special "
316
+ "characters, ...)"
317
+ msgstr ""
318
+
319
+ #: ../admin/addgallery.php:453 ../admin/manage-images.php:354
320
+ msgid "You will need to update your URLs if you link directly to the images."
321
+ msgstr ""
322
+
323
+ #: ../admin/addgallery.php:453 ../admin/manage-images.php:354
324
+ msgid "Press OK to proceed, and Cancel to stop."
325
+ msgstr ""
326
+
327
+ #: ../admin/addgallery.php:470
328
+ msgid "Choose gallery"
329
+ msgstr "Valitse galleria"
330
+
331
+ #: ../admin/addgallery.php:492
332
+ #, fuzzy
333
+ msgid "Drop your files in this window"
334
+ msgstr "Tai voit tiputtaa tiedostot tähän ikkunaan. "
335
+
336
+ #: ../admin/addgallery.php:492
337
+ msgid "Or"
338
+ msgstr ""
339
+
340
+ #: ../admin/addgallery.php:493
341
+ msgid "Select Files"
342
+ msgstr "Valitse tiedostot"
343
+
344
+ #: ../admin/addgallery.php:508
345
+ msgid "Click here to use the browser upload instead"
346
+ msgstr ""
347
+
348
+ #: ../admin/addgallery.php:508
349
+ #, fuzzy
350
+ msgid "Use basic uploader"
351
+ msgstr "Käytä kuvaa vesileimana"
352
+
353
+ #: ../admin/addgallery.php:510
354
+ msgid "Advanced uploading"
355
+ msgstr ""
356
+
357
+ #: ../admin/addgallery.php:510
358
+ #, fuzzy
359
+ msgid "Use advanced uploader"
360
+ msgstr "Käytä kuvaa vesileimana"
361
+
362
+ #: ../admin/addgallery.php:514
363
+ #, fuzzy, php-format
364
+ msgid "Your images will be rescaled to max width %1$dpx or max height %2$dpx."
365
+ msgstr "Skaalaa kuvat maksimileveyteen %1$dpx tai maksimikorkeuteen %2$dpx"
366
+
367
+ #: ../admin/admin.php:125 ../admin/admin.php:130 ../admin/admin.php:143
368
+ #: ../admin/admin.php:190 ../admin/admin.php:435
369
+ #: ../admin/manage-galleries.php:126
370
+ msgid "Galleries"
371
+ msgstr "Galleriat"
372
+
373
+ #: ../admin/admin.php:135 ../nggallery.php:671 ../nggfunctions.php:953
374
+ msgid "Overview"
375
+ msgstr "Yleinen"
376
+
377
+ #: ../admin/admin.php:147 ../admin/album.php:280 ../nggallery.php:401
378
+ msgid "Albums"
379
+ msgstr "Albumit"
380
+
381
+ #: ../admin/admin.php:151 ../admin/manage-images.php:733
382
+ #: ../admin/settings.php:369 ../admin/tags.php:98 ../lib/meta.php:459
383
+ #: ../nggallery.php:409
384
+ msgid "Tags"
385
+ msgstr "Tägit"
386
+
387
+ #: ../admin/admin.php:155 ../admin/settings.php:250 ../nggallery.php:417
388
+ msgid "Settings"
389
+ msgstr "Asetukset"
390
+
391
+ #: ../admin/admin.php:160 ../nggallery.php:425
392
+ msgid "Style"
393
+ msgstr "Tyyli"
394
+
395
+ #: ../admin/admin.php:166
396
+ msgid "Roles"
397
+ msgstr "Roolit"
398
+
399
+ #: ../admin/admin.php:171
400
+ msgid "About this Gallery"
401
+ msgstr "Tästä galleriasta "
402
+
403
+ #: ../admin/admin.php:177 ../admin/admin.php:198
404
+ msgid "Reset / Uninstall"
405
+ msgstr "Resetoi / poista"
406
+
407
+ #: ../admin/admin.php:194
408
+ msgid "Network settings"
409
+ msgstr "Verkkoasetukset"
410
+
411
+ #: ../admin/admin.php:304
412
+ msgid "You do not have the correct permission"
413
+ msgstr "Sinulla ei ole tarvittavia valtuuksia"
414
+
415
+ #: ../admin/admin.php:305
416
+ msgid "Unexpected Error"
417
+ msgstr "Odottamaton virhe"
418
+
419
+ #: ../admin/admin.php:306
420
+ msgid "A failure occurred"
421
+ msgstr "Tapahtui virhe"
422
+
423
+ #: ../admin/admin.php:310
424
+ msgid "You have attempted to queue too many files."
425
+ msgstr "Olet laittanut jonoon liian monta tiedostoa."
426
+
427
+ #: ../admin/admin.php:311
428
+ msgid "This file exceeds the maximum upload size for this site."
429
+ msgstr "Tiedosto on suurempi kuin tämän sivuston maksimi latauskoko."
430
+
431
+ #: ../admin/admin.php:312
432
+ msgid "This file is empty. Please try another."
433
+ msgstr "Tiedosto on tyhjä. Yritä uudelleen. "
434
+
435
+ #: ../admin/admin.php:313
436
+ msgid "This file type is not allowed. Please try another."
437
+ msgstr "Tiedostotyyppi ei ole sallittu. Yritä uudelleen. "
438
+
439
+ #: ../admin/admin.php:314
440
+ msgid "This file is not an image. Please try another."
441
+ msgstr "Tämä ei ole kuvatiedosto. Yritä toista tiedostoa."
442
+
443
+ #: ../admin/admin.php:315
444
+ msgid "Memory exceeded. Please try another smaller file."
445
+ msgstr "Muisti ylitetty. Yritä pienentää tiedostoa. "
446
+
447
+ #: ../admin/admin.php:316
448
+ msgid "This is larger than the maximum size. Please try another."
449
+ msgstr "Tiedosto on maksimikokoa suurempi. Yritä toista. "
450
+
451
+ #: ../admin/admin.php:317
452
+ msgid "An error occurred in the upload. Please try again later."
453
+ msgstr "Latauksessa tapahtui virhe.Yritä myöhemmin uudestaan."
454
+
455
+ #: ../admin/admin.php:318
456
+ msgid ""
457
+ "There was a configuration error. Please contact the server administrator."
458
+ msgstr "Konfiguraatiovirhe. Ota yhteys palvelimen hoitajaan. "
459
+
460
+ #: ../admin/admin.php:319
461
+ msgid "You may only upload 1 file."
462
+ msgstr "Voit ladata vain yhden tiedoston."
463
+
464
+ #: ../admin/admin.php:320
465
+ msgid "HTTP error."
466
+ msgstr "HTTP-virhe."
467
+
468
+ #: ../admin/admin.php:321
469
+ msgid "Upload failed."
470
+ msgstr "Lataus epäonnistui!"
471
+
472
+ #: ../admin/admin.php:322
473
+ msgid "IO error."
474
+ msgstr "IO-virhe."
475
+
476
+ #: ../admin/admin.php:323
477
+ msgid "Security error."
478
+ msgstr "Turvavirhe."
479
+
480
+ #: ../admin/admin.php:324
481
+ msgid "File canceled."
482
+ msgstr "Tiedosto peruutettu."
483
+
484
+ #: ../admin/admin.php:325
485
+ msgid "Upload stopped."
486
+ msgstr "Lataus lopetettu."
487
+
488
+ #: ../admin/admin.php:326
489
+ msgid "Dismiss"
490
+ msgstr "Poista"
491
+
492
+ #: ../admin/admin.php:327
493
+ msgid "Crunching&hellip;"
494
+ msgstr "Työskentelen&hellip;"
495
+
496
+ #: ../admin/admin.php:328
497
+ msgid "moved to the trash."
498
+ msgstr "siirretty roskakoriin."
499
+
500
+ #: ../admin/admin.php:329
501
+ #, php-format
502
+ msgid "&#8220;%s&#8221; has failed to upload due to an error"
503
+ msgstr "&#8220;%s&#8221; ei latautunut virheen takia"
504
+
505
+ #: ../admin/admin.php:352 ../nggallery.php:458
506
+ msgid "L O A D I N G"
507
+ msgstr "L A T A A N"
508
+
509
+ #: ../admin/admin.php:353 ../nggallery.php:459
510
+ msgid "Click to Close"
511
+ msgstr "Klikkaa sulkeaksesi"
512
+
513
+ #: ../admin/admin.php:440
514
+ msgid ""
515
+ "Welcome to your NextCellent Dashboard! This screen gives you all kinds of "
516
+ "information about NextCellent at glance. You can get help for any screen by "
517
+ "clicking the Help tab in the upper corner."
518
+ msgstr ""
519
+
520
+ #: ../admin/admin.php:449
521
+ msgid "The boxes on your overview screen are:"
522
+ msgstr ""
523
+
524
+ #: ../admin/admin.php:450 ../admin/overview.php:407
525
+ msgid "At a Glance"
526
+ msgstr "Yleisnäkymä"
527
+
528
+ #: ../admin/admin.php:450
529
+ msgid ""
530
+ "Shows some general information about your site, such as the number of "
531
+ "pictures, albums and galleries."
532
+ msgstr ""
533
+
534
+ #: ../admin/admin.php:451 ../admin/overview.php:90
535
+ msgid "Latest News"
536
+ msgstr "Tuoreimmat uutiset"
537
+
538
+ #: ../admin/admin.php:451
539
+ #, fuzzy
540
+ msgid "The latest NextCellent news."
541
+ msgstr "Tuoreimmat uutiset"
542
+
543
+ #: ../admin/admin.php:453 ../admin/overview.php:94
544
+ msgid "Related plugins"
545
+ msgstr "Liittyvät lisäosat"
546
+
547
+ #: ../admin/admin.php:453
548
+ msgid "Shows plugins that extend NextCellent."
549
+ msgstr ""
550
+
551
+ #: ../admin/admin.php:453 ../admin/overview.php:742
552
+ msgid "Pay attention"
553
+ msgstr "Ole tarkkana"
554
+
555
+ #: ../admin/admin.php:453
556
+ #, php-format
557
+ msgid ""
558
+ "third parties plugins that are compatible with NGG may not be "
559
+ "100% compatible with NextCellent Gallery!"
560
+ msgstr ""
561
+
562
+ #: ../admin/admin.php:455 ../admin/overview.php:87
563
+ msgid "Help me help YOU!"
564
+ msgstr "Auta minua auttamaan SINUA!"
565
+
566
+ #: ../admin/admin.php:455
567
+ msgid "Shows general information about he plugin and some links."
568
+ msgstr ""
569
+
570
+ #: ../admin/admin.php:457 ../admin/overview.php:89
571
+ msgid "Translation"
572
+ msgstr "Käännös"
573
+
574
+ #: ../admin/admin.php:457
575
+ msgid "View information about the current translation."
576
+ msgstr ""
577
+
578
+ #: ../admin/admin.php:460 ../admin/overview.php:93
579
+ msgid "Server Settings"
580
+ msgstr "Palvelinasetukset"
581
+
582
+ #: ../admin/admin.php:460
583
+ #, fuzzy
584
+ msgid "Show all the server settings!."
585
+ msgstr "[Näytä kaikki]"
586
+
587
+ #: ../admin/admin.php:461 ../admin/overview.php:92
588
+ msgid "Plugin Check"
589
+ msgstr "Lisäosan tarkistus"
590
+
591
+ #: ../admin/admin.php:461
592
+ msgid "Check if there are known errors in your installation."
593
+ msgstr ""
594
+
595
+ #: ../admin/admin.php:475
596
+ msgid "On this page you can add galleries and pictures to those galleries."
597
+ msgstr ""
598
+
599
+ #: ../admin/admin.php:477
600
+ #, fuzzy
601
+ msgid "Add new galleries to NextCellent."
602
+ msgstr "Lisää uusimmat tai satunnaiset kuvat gallerioista"
603
+
604
+ #: ../admin/admin.php:480
605
+ msgid "You must add a gallery before adding images!"
606
+ msgstr ""
607
+
608
+ #: ../admin/admin.php:482
609
+ #, fuzzy
610
+ msgid "Add new images to a gallery."
611
+ msgstr "Lisää galleria / kuvia"
612
+
613
+ #: ../admin/admin.php:485
614
+ #, fuzzy
615
+ msgid "Add images from a ZIP file."
616
+ msgstr "Lataa kuvia sisältävä zip-tiedosto"
617
+
618
+ #: ../admin/admin.php:488
619
+ #, fuzzy
620
+ msgid "Import a folder from the server as a new gallery."
621
+ msgstr "Salli käyttäjien tuoda kuvia palvelimelta."
622
+
623
+ #: ../admin/admin.php:505
624
+ #, fuzzy
625
+ msgid "Manage your images and galleries."
626
+ msgstr "Sori, sinulla ei ole oikeuksia gallerioiden muokkaukseen."
627
+
628
+ #: ../admin/admin.php:514
629
+ #, fuzzy
630
+ msgid "Organize your galleries into albums."
631
+ msgstr "Täällä voi hallita kuviasi, gallerioitasi ja albumeitasi."
632
+
633
+ #: ../admin/admin.php:514
634
+ msgid ""
635
+ "First select an album from the dropdown and then drag the galleries you want "
636
+ "to add or remove from the selected album."
637
+ msgstr ""
638
+
639
+ #: ../admin/admin.php:523
640
+ #, fuzzy
641
+ msgid "Organize your pictures with tags."
642
+ msgstr "Erittele kuvien tägit pilkuilla."
643
+
644
+ #: ../admin/admin.php:523
645
+ msgid "Rename, delete and edit tags. Use the rename function to merge tags."
646
+ msgstr ""
647
+
648
+ #: ../admin/admin.php:532
649
+ msgid ""
650
+ "Edit all of NextCellent's options. The options are sorted in multiple "
651
+ "categories."
652
+ msgstr ""
653
+
654
+ #: ../admin/admin.php:533 ../admin/settings.php:285
655
+ msgid "General"
656
+ msgstr "Yleistä"
657
+
658
+ #: ../admin/admin.php:533
659
+ msgid ""
660
+ "General NextCellent options. Contains options for permalinks and related "
661
+ "images."
662
+ msgstr ""
663
+
664
+ #: ../admin/admin.php:534
665
+ msgid "All image-related options. Also contains options for thumbnails."
666
+ msgstr ""
667
+
668
+ #: ../admin/admin.php:535 ../admin/functions.php:212
669
+ #: ../admin/functions.php:374 ../admin/manage-images.php:263
670
+ #: ../admin/overview.php:418 ../admin/settings.php:287
671
+ #: ../admin/tinymce/window.php:120 ../admin/tinymce/window.php:153
672
+ #: ../admin/tinymce/window.php:277 ../admin/tinymce/window.php:398
673
+ #: ../admin/tinymce/window.php:449 ../lib/rewrite.php:220
674
+ #: ../lib/rewrite.php:229 ../nggallery.php:393
675
+ msgid "Gallery"
676
+ msgstr "Galleria"
677
+
678
+ #: ../admin/admin.php:535
679
+ msgid ""
680
+ "Everything about galleries. From sorting options to the number of images, "
681
+ "it's all in here."
682
+ msgstr ""
683
+
684
+ #: ../admin/admin.php:536 ../admin/settings.php:288 ../admin/settings.php:546
685
+ msgid "Effects"
686
+ msgstr "Efektit "
687
+
688
+ #: ../admin/admin.php:536
689
+ msgid "Make your gallery look beautiful."
690
+ msgstr ""
691
+
692
+ #: ../admin/admin.php:537 ../admin/settings.php:289 ../admin/settings.php:587
693
+ #: ../admin/tinymce/window.php:329
694
+ msgid "Watermark"
695
+ msgstr "Vesileima "
696
+
697
+ #: ../admin/admin.php:537
698
+ msgid "Who doesn't want theft-proof images?"
699
+ msgstr ""
700
+
701
+ #: ../admin/admin.php:538 ../admin/settings.php:290 ../admin/settings.php:483
702
+ #: ../admin/settings.php:493 ../admin/settings.php:694
703
+ #: ../admin/tinymce/window.php:159 ../lib/rewrite.php:218
704
+ #: ../widgets/widgets.php:29
705
+ msgid "Slideshow"
706
+ msgstr "Diasarja "
707
+
708
+ #: ../admin/admin.php:538
709
+ #, fuzzy
710
+ msgid "Edit options for the slideshow."
711
+ msgstr "Muokkaa"
712
+
713
+ #: ../admin/admin.php:539
714
+ msgid "Don't forget to press save!"
715
+ msgstr ""
716
+
717
+ #: ../admin/admin.php:548
718
+ msgid "You can edit the css file to adjust how your gallery looks."
719
+ msgstr ""
720
+
721
+ #: ../admin/admin.php:549
722
+ msgid ""
723
+ "When you save an edited file, NextCellent automatically saves it as a copy "
724
+ "in the folder ngg_styles. This protects your changes from upgrades."
725
+ msgstr ""
726
+
727
+ #: ../admin/admin.php:558
728
+ msgid ""
729
+ "You can assign the lowest user role that has access to a certain feature. "
730
+ "Needless to say, all greater user roles will also have access to that "
731
+ "feature."
732
+ msgstr ""
733
+
734
+ #: ../admin/admin.php:559
735
+ msgid ""
736
+ "NextCellent also works with various plugins that extend the default roles "
737
+ "capabilities."
738
+ msgstr ""
739
+
740
+ #: ../admin/admin.php:568
741
+ msgid ""
742
+ "If 'someone' messed with your settings (yeah, definitely not you), you can "
743
+ "reset them here."
744
+ msgstr ""
745
+
746
+ #: ../admin/admin.php:569
747
+ #, fuzzy
748
+ msgid "Attention!"
749
+ msgstr "Ole tarkkana"
750
+
751
+ #: ../admin/admin.php:569
752
+ msgid ""
753
+ "You should not use the Uninstall Plugin button, unless you know what you're "
754
+ "doing! It should never be necessary to press it."
755
+ msgstr ""
756
+
757
+ #: ../admin/admin.php:581
758
+ #, fuzzy
759
+ msgid "For more information:"
760
+ msgstr "Täältä löytyy lisätietoa efekteistä:"
761
+
762
+ #: ../admin/admin.php:582
763
+ #, fuzzy
764
+ msgid "Support Forums"
765
+ msgstr ""
766
+ "<a href=\"http://wordpress.org/tags/nextcellent-gallery-nextgen-legacy\" "
767
+ "target=\"_blank\">Tukifoorumit (engl.)</a>"
768
+
769
+ #: ../admin/admin.php:583
770
+ #, fuzzy
771
+ msgid "Source Code"
772
+ msgstr "Lähde"
773
+
774
+ #: ../admin/ajax.php:291
775
+ msgid "You are not allowed to be here"
776
+ msgstr "Sinulla ei ole lupa olla täällä"
777
+
778
+ #: ../admin/ajax.php:389
779
+ #, php-format
780
+ msgid "Could create image with %s x %s pixel"
781
+ msgstr "Luotiin kuva kooltaan %s x %s pikseliä"
782
+
783
+ #: ../admin/album.php:97 ../admin/album.php:116 ../admin/album.php:161
784
+ #, fuzzy
785
+ msgid "Updated successfully"
786
+ msgstr "CSS-tiedosto päivitetty onnistuneesti."
787
+
788
+ #: ../admin/album.php:134
789
+ msgid "Album deleted"
790
+ msgstr "Albumi poistettu"
791
+
792
+ #: ../admin/album.php:272 ../admin/roles.php:59
793
+ msgid "Edit Album"
794
+ msgstr "Muokkaa albumia"
795
+
796
+ #: ../admin/album.php:286 ../admin/album.php:335
797
+ msgid "Select album"
798
+ msgstr "Valitse albumi"
799
+
800
+ #: ../admin/album.php:288
801
+ msgid "No album selected"
802
+ msgstr "Ei valittua albumia"
803
+
804
+ #: ../admin/album.php:299 ../admin/edit-thumbnail.php:150
805
+ #: ../admin/overview.php:539 ../admin/rotate.php:89 ../admin/wpmu.php:114
806
+ msgid "Update"
807
+ msgstr "Päivitä"
808
+
809
+ #: ../admin/album.php:301
810
+ msgid "Edit album"
811
+ msgstr "Muokkaa albumia"
812
+
813
+ #: ../admin/album.php:304 ../admin/manage-galleries.php:148
814
+ #: ../admin/manage-images.php:481 ../admin/tags.php:225
815
+ msgid "Delete"
816
+ msgstr "Poista"
817
+
818
+ #: ../admin/album.php:308
819
+ msgid "Add new album"
820
+ msgstr "Lisää uusi albumi"
821
+
822
+ #: ../admin/album.php:310
823
+ msgid "Add"
824
+ msgstr "Lisää"
825
+
826
+ #: ../admin/album.php:321
827
+ msgid "Show / hide used galleries"
828
+ msgstr "Näytä / piilota käytetyt galleriat"
829
+
830
+ #: ../admin/album.php:321
831
+ msgid "[Show all]"
832
+ msgstr "[Näytä kaikki]"
833
+
834
+ #: ../admin/album.php:322
835
+ msgid "Maximize the widget content"
836
+ msgstr "Maksimoi vimpaimen sisältö"
837
+
838
+ #: ../admin/album.php:322
839
+ msgid "[Maximize]"
840
+ msgstr "[Maksimoi]"
841
+
842
+ #: ../admin/album.php:323
843
+ msgid "Minimize the widget content"
844
+ msgstr "Minimoi vimpaimen sisältö"
845
+
846
+ #: ../admin/album.php:323
847
+ msgid "[Minimize]"
848
+ msgstr "[Minimoi]"
849
+
850
+ #: ../admin/album.php:325
851
+ msgid ""
852
+ "After you create and select a album, you can drag and drop a gallery or "
853
+ "another album into your new album below"
854
+ msgstr ""
855
+ "Kun olet luonut ja valinnut albumin, voit lisätä pudottamalla gallerian tai "
856
+ "toisen albumin uuteen albumiisi alla"
857
+
858
+ #: ../admin/album.php:351
859
+ msgid "Select gallery"
860
+ msgstr "Valitse galleria"
861
+
862
+ #: ../admin/album.php:380
863
+ msgid "Album ID"
864
+ msgstr "Album ID"
865
+
866
+ #: ../admin/album.php:393
867
+ msgid "No album selected!"
868
+ msgstr "Albumia ei valittuna"
869
+
870
+ #: ../admin/album.php:414
871
+ msgid "Album name:"
872
+ msgstr "Albumin nimi :"
873
+
874
+ #: ../admin/album.php:420
875
+ msgid "Album description:"
876
+ msgstr "Albumin kuvaus:"
877
+
878
+ #: ../admin/album.php:426
879
+ msgid "Select a preview image:"
880
+ msgstr "Valitse esikatselukuva:"
881
+
882
+ #: ../admin/album.php:429 ../admin/album.php:432
883
+ msgid "No picture"
884
+ msgstr "Ei kuvaa"
885
+
886
+ #: ../admin/album.php:443 ../admin/manage-images.php:281
887
+ msgid "Page Link to"
888
+ msgstr "Sivu linkitetty"
889
+
890
+ #: ../admin/album.php:445 ../admin/manage-images.php:284
891
+ msgid "Not linked"
892
+ msgstr "Ei linkitetty"
893
+
894
+ #: ../admin/album.php:458 ../admin/manage-galleries.php:288
895
+ #: ../admin/manage-galleries.php:320 ../admin/manage-galleries.php:350
896
+ #: ../admin/manage-images.php:568 ../admin/manage-images.php:603
897
+ #: ../admin/manage-images.php:634 ../admin/manage-images.php:664
898
+ msgid "OK"
899
+ msgstr "OK"
900
+
901
+ #: ../admin/album.php:460 ../admin/manage-galleries.php:290
902
+ #: ../admin/manage-galleries.php:322 ../admin/manage-galleries.php:352
903
+ #: ../admin/manage-images.php:569 ../admin/manage-images.php:604
904
+ #: ../admin/manage-images.php:635 ../admin/manage-images.php:665
905
+ #: ../admin/tinymce/window.php:472
906
+ msgid "Cancel"
907
+ msgstr "Peruuta"
908
+
909
+ #: ../admin/album.php:548 ../admin/manage-galleries.php:410
910
+ #: ../admin/manage-images.php:279 ../lib/meta.php:457
911
+ msgid "Title"
912
+ msgstr "Otsikko"
913
+
914
+ #: ../admin/album.php:549 ../lib/rewrite.php:232
915
+ msgid "Page"
916
+ msgstr "Sivu"
917
+
918
+ #: ../admin/edit-thumbnail.php:105
919
+ msgid "Select with the mouse the area for the new thumbnail"
920
+ msgstr "Valitse hiirellä uusi alue esikatselukuvalle"
921
+
922
+ #: ../admin/edit-thumbnail.php:119
923
+ msgid "Thumbnail updated"
924
+ msgstr "Esikatselukuva päivitetty"
925
+
926
+ #: ../admin/edit-thumbnail.php:124
927
+ msgid "Error updating thumbnail"
928
+ msgstr "Esikatselukuvan päivityksessä virhe"
929
+
930
+ #: ../admin/edit-thumbnail.php:133
931
+ msgid "Select the area for the thumbnail from the picture on the left."
932
+ msgstr "Valitse vasemmalla olevasta kuvasta esikatselukuvan alue."
933
+
934
+ #: ../admin/functions.php:43
935
+ msgid "No valid gallery name!"
936
+ msgstr "Gallerian nimi ei kelpaa!"
937
+
938
+ #: ../admin/functions.php:50 ../admin/functions.php:59
939
+ #: ../admin/functions.php:84 ../admin/functions.php:157
940
+ #: ../admin/functions.php:164 ../admin/functions.php:344
941
+ #: ../admin/functions.php:352
942
+ msgid "Directory"
943
+ msgstr "Hakemisto"
944
+
945
+ #: ../admin/functions.php:50
946
+ msgid "didn't exist. Please create first the main gallery folder "
947
+ msgstr "ei löydy. Luo ensin päägallerian hakemisto."
948
+
949
+ #: ../admin/functions.php:51 ../admin/functions.php:60
950
+ msgid "Check this link, if you didn't know how to set the permission :"
951
+ msgstr "Tarkista tästä linkistä, jos et tiedä miten valtuus asetetaan:"
952
+
953
+ #: ../admin/functions.php:59 ../admin/functions.php:84
954
+ msgid "is not writeable !"
955
+ msgstr "ei voi kirjoittaa !"
956
+
957
+ #: ../admin/functions.php:80 ../admin/functions.php:89
958
+ #: ../admin/functions.php:1102 ../lib/core.php:102
959
+ msgid "Unable to create directory "
960
+ msgstr "Hakemiston luonti ei onnistu"
961
+
962
+ #: ../admin/functions.php:93
963
+ msgid "The server setting Safe-Mode is on !"
964
+ msgstr "Palvelimella on käytössä Safe-Mode (PHP.INI)"
965
+
966
+ #: ../admin/functions.php:94
967
+ msgid "If you have problems, please create directory"
968
+ msgstr "Jos ongelmia, luo hakemisto"
969
+
970
+ #: ../admin/functions.php:95
971
+ msgid "and the thumbnails directory"
972
+ msgstr "ja Thumbnails-hakemisto"
973
+
974
+ #: ../admin/functions.php:95
975
+ msgid "with permission 777 manually !"
976
+ msgstr "valtuutus 777 manuaalisesti !"
977
+
978
+ #: ../admin/functions.php:122
979
+ #, php-format
980
+ msgid ""
981
+ "Gallery ID %1$s successfully created. You can show this gallery in your post "
982
+ "or page with the shortcode %2$s.<br/>"
983
+ msgstr ""
984
+ "Galleria ID %1$s luonti onnistui. <br> Voit näyttää tämän gallerian "
985
+ "artikkelissasi tai sivullasi lyhytkoodilla %2$s .<br/>"
986
+
987
+ #: ../admin/functions.php:125 ../admin/functions.php:309
988
+ #: ../admin/functions.php:412
989
+ msgid "Edit gallery"
990
+ msgstr "Muokkaa galleriaa"
991
+
992
+ #: ../admin/functions.php:157 ../admin/functions.php:344
993
+ msgid "doesn&#96;t exist!"
994
+ msgstr "ei ole olemassa !"
995
+
996
+ #: ../admin/functions.php:164 ../admin/functions.php:352
997
+ msgid "contains no pictures"
998
+ msgstr "ei sisällä kuvia "
999
+
1000
+ #: ../admin/functions.php:191
1001
+ msgid "Something went wrong when renaming"
1002
+ msgstr ""
1003
+
1004
+ #: ../admin/functions.php:191
1005
+ msgid "Importing was aborted."
1006
+ msgstr ""
1007
+
1008
+ #: ../admin/functions.php:209 ../admin/functions.php:371
1009
+ msgid "Database error. Could not add gallery!"
1010
+ msgstr "Tietokantavirhe. Gallerian lisäys ei onnistunut!"
1011
+
1012
+ #: ../admin/functions.php:212 ../admin/functions.php:374
1013
+ msgid "successfully created!"
1014
+ msgstr "luonti onnistui!"
1015
+
1016
+ #: ../admin/functions.php:299 ../admin/functions.php:407
1017
+ #: ../admin/functions.php:1219 ../admin/manage-galleries.php:80
1018
+ #: ../admin/manage-galleries.php:150 ../admin/manage-images.php:227
1019
+ #: ../admin/manage-images.php:372 ../admin/manage.php:227
1020
+ #: ../admin/manage.php:304
1021
+ msgid "Create new thumbnails"
1022
+ msgstr "Luo uudet esikatselukuvat"
1023
+
1024
+ #: ../admin/functions.php:304
1025
+ #, fuzzy
1026
+ msgid " picture(s) successfully renamed"
1027
+ msgstr " kuva(t) lisätty onnistuneesti"
1028
+
1029
+ #: ../admin/functions.php:306 ../admin/functions.php:410
1030
+ msgid " picture(s) successfully added"
1031
+ msgstr " kuva(t) lisätty onnistuneesti"
1032
+
1033
+ #: ../admin/functions.php:313
1034
+ #, fuzzy
1035
+ msgid "No images were added."
1036
+ msgstr " kuva(t) lisätty onnistuneesti"
1037
+
1038
+ #: ../admin/functions.php:465 ../admin/functions.php:545
1039
+ #: ../admin/functions.php:600 ../admin/functions.php:697
1040
+ #: ../admin/functions.php:751
1041
+ msgid "Object didn't contain correct data"
1042
+ msgstr "Objekti ei sisältänyt oikeita tietoja"
1043
+
1044
+ #: ../admin/functions.php:473
1045
+ msgid " is not writeable "
1046
+ msgstr "ei voida kirjoittaa !"
1047
+
1048
+ #: ../admin/functions.php:555 ../admin/functions.php:603
1049
+ #: ../admin/functions.php:703 ../admin/functions.php:754
1050
+ msgid " is not writeable"
1051
+ msgstr "ei voida kirjoittaa !"
1052
+
1053
+ #: ../admin/functions.php:757
1054
+ msgid "File do not exists"
1055
+ msgstr "Tiedosto ei ole olemassa"
1056
+
1057
+ #: ../admin/functions.php:761
1058
+ msgid "Couldn't restore original image"
1059
+ msgstr "Alkuperäisen kuvan palautus ei onnistunut "
1060
+
1061
+ #: ../admin/functions.php:877
1062
+ msgid "(Error : Couldn't not update data base)"
1063
+ msgstr "(Virhe : tietokannan päivitys ei onnistunut)"
1064
+
1065
+ #: ../admin/functions.php:884
1066
+ msgid "(Error : Couldn't not update meta data)"
1067
+ msgstr "(Virhe : metatietojen päivitys ei onnistunut)"
1068
+
1069
+ #: ../admin/functions.php:893
1070
+ msgid "(Error : Couldn't not find image)"
1071
+ msgstr "(Virhe : kuvaa ei löytynyt)"
1072
+
1073
+ #: ../admin/functions.php:1036
1074
+ msgid "No valid URL path "
1075
+ msgstr "URL-polku ei kelpaa"
1076
+
1077
+ #: ../admin/functions.php:1052
1078
+ msgid "Import via cURL failed."
1079
+ msgstr "cURL-tuonti epäonnistui. "
1080
+
1081
+ #: ../admin/functions.php:1069
1082
+ msgid "Uploaded file was no or a faulty zip file ! The server recognized : "
1083
+ msgstr ""
1084
+ "Ladattu tiedosto ei ollut tai oli väärä zip-tiedosto. Palvelimen ilmoitus :"
1085
+
1086
+ #: ../admin/functions.php:1086
1087
+ msgid "Could not get a valid foldername"
1088
+ msgstr "Ei kelvollista hakemistonimeä"
1089
+
1090
+ #: ../admin/functions.php:1097
1091
+ #, php-format
1092
+ msgid ""
1093
+ "Unable to create directory %s. Is its parent directory writable by the "
1094
+ "server?"
1095
+ msgstr ""
1096
+ "Hakemiston %s luonti ei onnistunut. Voiko päähakemistoon palvelimella "
1097
+ "kirjoittaa?"
1098
+
1099
+ #: ../admin/functions.php:1112
1100
+ msgid "Zip-File successfully unpacked"
1101
+ msgstr "Zip-tiedosto purettu onnistuneesti"
1102
+
1103
+ #: ../admin/functions.php:1143 ../admin/functions.php:1243
1104
+ msgid "No gallery selected !"
1105
+ msgstr "Ei galleriaa valittuna !"
1106
+
1107
+ #: ../admin/functions.php:1151 ../admin/functions.php:1268
1108
+ msgid "Failure in database, no gallery path set !"
1109
+ msgstr "Tietokantavirhe, gallerialle ei ole asetettu polkua!"
1110
+
1111
+ #: ../admin/functions.php:1175 ../admin/functions.php:1262
1112
+ msgid "is no valid image file!"
1113
+ msgstr "ei ole kelvollinen kuvatiedosto !"
1114
+
1115
+ #: ../admin/functions.php:1189 ../admin/functions.php:1387
1116
+ #: ../admin/functions.php:1464
1117
+ #, php-format
1118
+ msgid ""
1119
+ "Unable to write to directory %s. Is this directory writable by the server?"
1120
+ msgstr ""
1121
+ "Hakemistoon %s ei voi kirjoittaa. Onko hakemisto palvelimella "
1122
+ "kirjoitussuojattu?"
1123
+
1124
+ #: ../admin/functions.php:1196 ../admin/functions.php:1285
1125
+ msgid "Error, the file could not be moved to : "
1126
+ msgstr "Virhe: tiedostoa ei voitu siirtää kohtaan :"
1127
+
1128
+ #: ../admin/functions.php:1201 ../admin/functions.php:1289
1129
+ msgid "Error, the file permissions could not be set"
1130
+ msgstr "Virhe: oikeuksia tiedostolle ei voitu asettaa"
1131
+
1132
+ #: ../admin/functions.php:1224
1133
+ msgid " Image(s) successfully added"
1134
+ msgstr "Kuva(t) lisätty onnistuneesti"
1135
+
1136
+ #: ../admin/functions.php:1251
1137
+ msgid "Invalid upload. Error Code : "
1138
+ msgstr "Väärä lataus. Virhekoodi :"
1139
+
1140
+ #: ../admin/functions.php:1327
1141
+ #, php-format
1142
+ msgid ""
1143
+ "SAFE MODE Restriction in effect! You need to create the folder <strong>%s</"
1144
+ "strong> manually"
1145
+ msgstr ""
1146
+ "SAFE MODE -rajoitus käytössä! Sinun on luotava hakemisto <strong>%s</strong> "
1147
+ "manuaalisesti."
1148
+
1149
+ #: ../admin/functions.php:1328
1150
+ #, php-format
1151
+ msgid ""
1152
+ "When safe_mode is on, PHP checks to see if the owner (%s) of the current "
1153
+ "script matches the owner (%s) of the file to be operated on by a file "
1154
+ "function or its directory"
1155
+ msgstr ""
1156
+ "Kun Safe-Mode on käytössä, tarkistaa PHP, vastaako tämän skriptin (%s) "
1157
+ "omistaja (%s) tiedosto- tai hakemistotoiminnon omistajaa."
1158
+
1159
+ #: ../admin/functions.php:1381 ../admin/functions.php:1458
1160
+ msgid "The destination gallery does not exist"
1161
+ msgstr "Kohdegalleriaa ei ole olemassa"
1162
+
1163
+ #: ../admin/functions.php:1412 ../lib/xmlrpc.php:222
1164
+ #, php-format
1165
+ msgid "Failed to move image %1$s to %2$s"
1166
+ msgstr "Kuvan siirto paikasta %1$s paikkaan %2$s ei onnistunut"
1167
+
1168
+ #: ../admin/functions.php:1432
1169
+ #, php-format
1170
+ msgid "Moved %1$s picture(s) to gallery : %2$s ."
1171
+ msgstr " Siirretty %1$s kuva(t) galleriaan : %2$s ."
1172
+
1173
+ #: ../admin/functions.php:1491
1174
+ #, php-format
1175
+ msgid "Failed to copy image %1$s to %2$s"
1176
+ msgstr "Kuvan %1$s kopiointi %2$s kuvaksi ei onnistunut"
1177
+
1178
+ #: ../admin/functions.php:1505
1179
+ #, php-format
1180
+ msgid "Failed to copy database row for picture %s"
1181
+ msgstr "Kuvan %s tietokantarivin kopiointi epäonnistui"
1182
+
1183
+ #: ../admin/functions.php:1517
1184
+ #, php-format
1185
+ msgid ""
1186
+ "Image %1$s (%2$s) copied as image %3$s (%4$s) &raquo; The file already "
1187
+ "existed in the destination gallery."
1188
+ msgstr ""
1189
+ "Kuva %1$s (%2$s) kopioitu kuvaksi %3$s (%4$s) &raquo; tiedosto oli jo "
1190
+ "kohdegalleriassa."
1191
+
1192
+ #: ../admin/functions.php:1520
1193
+ #, php-format
1194
+ msgid "Image %1$s (%2$s) copied as image %3$s (%4$s)"
1195
+ msgstr "Kuva %1$s (%2$s) kopioitu kuvaksi %3$s (%4$s)"
1196
+
1197
+ #: ../admin/functions.php:1529
1198
+ #, php-format
1199
+ msgid "Copied %1$s picture(s) to gallery: %2$s ."
1200
+ msgstr "Kopioitu %1$s kuva(a) galleriaan: %2$s ."
1201
+
1202
+ #: ../admin/functions.php:1637
1203
+ msgid "The uploaded file exceeds the upload_max_filesize directive in php.ini"
1204
+ msgstr ""
1205
+ "Tiedoston koko suurempi kuin sallittu (upload_max_filesize) "
1206
+ "ohjaustiedostossa php.ini"
1207
+
1208
+ #: ../admin/functions.php:1640
1209
+ msgid ""
1210
+ "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in "
1211
+ "the HTML form"
1212
+ msgstr "Tiedosto on suurempi kuin HTML-lomakkeen määritys MAX_FILE_SIZE "
1213
+
1214
+ #: ../admin/functions.php:1643
1215
+ msgid "The uploaded file was only partially uploaded"
1216
+ msgstr "Tiedosto ladattu vain osittain"
1217
+
1218
+ #: ../admin/functions.php:1646
1219
+ msgid "No file was uploaded"
1220
+ msgstr "Yhtään tiedostoa ei ladattu"
1221
+
1222
+ #: ../admin/functions.php:1649
1223
+ msgid "Missing a temporary folder"
1224
+ msgstr "Tilapäiskansiota ei löydy"
1225
+
1226
+ #: ../admin/functions.php:1652
1227
+ msgid "Failed to write file to disk"
1228
+ msgstr "Levylle kirjoitus epäonnistui"
1229
+
1230
+ #: ../admin/functions.php:1655
1231
+ msgid "File upload stopped by extension"
1232
+ msgstr "Tiedoston lataus lopetettu"
1233
+
1234
+ #: ../admin/functions.php:1658
1235
+ msgid "Unknown upload error"
1236
+ msgstr "Tuntematon latausvirhe"
1237
+
1238
+ #: ../admin/install.php:23
1239
+ msgid "Sorry, NextCellent Gallery works only with a role called administrator"
1240
+ msgstr "NextCellent Gallery toimii vain roolissa \"Administrator\""
1241
+
1242
+ #: ../admin/install.php:102
1243
+ msgid ""
1244
+ "NextCellent Gallery : Tables could not created, please check your database "
1245
+ "settings"
1246
+ msgstr ""
1247
+ "NextCellent Gallery : Tauluja ei voitu luoda, tarkista tietokanta-asetukset "
1248
+
1249
+ #: ../admin/install.php:160
1250
+ msgid "[Show as slideshow]"
1251
+ msgstr "[Näytä diasarjana]"
1252
+
1253
+ #: ../admin/install.php:161
1254
+ msgid "[Show picture list]"
1255
+ msgstr "[Näytä kuvalista]"
1256
+
1257
+ #: ../admin/manage-galleries.php:68 ../admin/manage-images.php:195
1258
+ msgid "No images selected"
1259
+ msgstr "Yhtään kuvaa ei valittuna"
1260
+
1261
+ #: ../admin/manage-galleries.php:76 ../admin/manage-galleries.php:151
1262
+ #: ../admin/manage-images.php:223 ../admin/manage-images.php:373
1263
+ #: ../admin/manage.php:211 ../admin/manage.php:290 ../admin/settings.php:394
1264
+ msgid "Resize images"
1265
+ msgstr "Muuta kuvakokoa"
1266
+
1267
+ #: ../admin/manage-galleries.php:85
1268
+ #, php-format
1269
+ msgid ""
1270
+ "You are about to start the bulk edit for %s galleries \n"
1271
+ " \n"
1272
+ " 'Cancel' to stop, 'OK' to proceed."
1273
+ msgstr ""
1274
+ "Olet aloittamassa massapäivityksen %s galleriaan \n"
1275
+ " \n"
1276
+ " 'Peruuta' lopettaaksesi, 'OK' jatkaaksesi."
1277
+
1278
+ #: ../admin/manage-galleries.php:118 ../admin/manage-galleries.php:128
1279
+ msgid "Add new gallery"
1280
+ msgstr "Lisää uusi galleria"
1281
+
1282
+ #: ../admin/manage-galleries.php:132 ../admin/manage-galleries.php:135
1283
+ #: ../admin/manage-images.php:249 ../admin/manage-images.php:252
1284
+ msgid "Search Images"
1285
+ msgstr "Etsi kuvia"
1286
+
1287
+ #: ../admin/manage-galleries.php:147 ../admin/manage-images.php:370
1288
+ #, fuzzy
1289
+ msgid "Actions"
1290
+ msgstr "Sijainti"
1291
+
1292
+ #: ../admin/manage-galleries.php:149 ../admin/manage-images.php:371
1293
+ #: ../admin/manage.php:141 ../admin/manage.php:253
1294
+ msgid "Set watermark"
1295
+ msgstr "Aseta vesileima"
1296
+
1297
+ #: ../admin/manage-galleries.php:152 ../admin/manage-images.php:376
1298
+ #: ../admin/manage.php:146 ../admin/manage.php:274
1299
+ msgid "Import metadata"
1300
+ msgstr "Tuo metadata"
1301
+
1302
+ #: ../admin/manage-galleries.php:153 ../admin/manage-images.php:374
1303
+ #: ../admin/manage.php:136 ../admin/manage.php:250
1304
+ msgid "Recover from backup"
1305
+ msgstr "Palauta varmistuksesta"
1306
+
1307
+ #: ../admin/manage-galleries.php:155 ../admin/manage-images.php:385
1308
+ msgid "Apply"
1309
+ msgstr "Hyväksy"
1310
+
1311
+ #: ../admin/manage-galleries.php:219 ../admin/tags.php:251
1312
+ msgid "Edit"
1313
+ msgstr "Muokkaa"
1314
+
1315
+ #: ../admin/manage-galleries.php:260 ../admin/manage-images.php:541
1316
+ msgid "No entries found"
1317
+ msgstr "Mitään kohteita ei löydy"
1318
+
1319
+ #: ../admin/manage-galleries.php:278
1320
+ msgid "New Gallery"
1321
+ msgstr "Uusi galleria"
1322
+
1323
+ #: ../admin/manage-galleries.php:280
1324
+ msgid "Create a new , empty gallery below the folder"
1325
+ msgstr "Luo uusi, tyhjä galleria hakemiston alle"
1326
+
1327
+ #: ../admin/manage-galleries.php:308 ../admin/manage-images.php:622
1328
+ msgid "Resize Images to"
1329
+ msgstr "Muuta kuvien kooksi "
1330
+
1331
+ #: ../admin/manage-galleries.php:311 ../admin/manage-galleries.php:340
1332
+ #: ../admin/manage-images.php:625 ../admin/manage-images.php:653
1333
+ #: ../admin/settings.php:395 ../admin/settings.php:424
1334
+ #: ../admin/settings.php:698 ../admin/tinymce/window.php:210
1335
+ #: ../admin/tinymce/window.php:318
1336
+ msgid "Width"
1337
+ msgstr "Leveys"
1338
+
1339
+ #: ../admin/manage-galleries.php:313 ../admin/manage-galleries.php:340
1340
+ #: ../admin/manage-images.php:627 ../admin/manage-images.php:654
1341
+ #: ../admin/settings.php:397 ../admin/settings.php:426
1342
+ #: ../admin/settings.php:700 ../admin/tinymce/window.php:211
1343
+ #: ../admin/tinymce/window.php:320
1344
+ msgid "Height"
1345
+ msgstr "Korkeus"
1346
+
1347
+ #: ../admin/manage-galleries.php:315 ../admin/manage-images.php:629
1348
+ #: ../admin/settings.php:399
1349
+ msgid ""
1350
+ "Width and height (in pixels). NextCellent Gallery will keep the ratio size."
1351
+ msgstr ""
1352
+ "Leveys ja korkeus (pikseleinä). NextCellent Gallery säilyttää sivusuhteen."
1353
+
1354
+ #: ../admin/manage-galleries.php:339 ../admin/manage-images.php:652
1355
+ #: ../admin/media-upload.php:242 ../admin/settings.php:663
1356
+ msgid "Size"
1357
+ msgstr "Koko"
1358
+
1359
+ #: ../admin/manage-galleries.php:341 ../admin/manage-images.php:655
1360
+ #: ../admin/settings.php:428
1361
+ msgid "These values are maximum values "
1362
+ msgstr "Nämä ovat maksimiarvot."
1363
+
1364
+ #: ../admin/manage-galleries.php:344 ../admin/manage-images.php:658
1365
+ #: ../admin/settings.php:431
1366
+ msgid "Fixed size"
1367
+ msgstr "Kiinteä koko"
1368
+
1369
+ #: ../admin/manage-galleries.php:346 ../admin/manage-images.php:660
1370
+ #: ../admin/settings.php:433
1371
+ msgid "This will ignore the aspect ratio, so no portrait thumbnails"
1372
+ msgstr "Tämä ohittaa sivusuhteen, eli ei esikatselukuvia pystyssä."
1373
+
1374
+ #: ../admin/manage-galleries.php:409 ../admin/manage-images.php:729
1375
+ msgid "ID"
1376
+ msgstr "ID"
1377
+
1378
+ #: ../admin/manage-galleries.php:412 ../admin/manage-images.php:321
1379
+ #: ../admin/overview.php:771 ../admin/style.php:295 ../lib/meta.php:458
1380
+ msgid "Author"
1381
+ msgstr "Kirjoittaja"
1382
+
1383
+ #: ../admin/manage-galleries.php:413
1384
+ msgid "Page ID"
1385
+ msgstr "Sivu-ID"
1386
+
1387
+ #: ../admin/manage-images.php:34
1388
+ msgid "Gallery not found."
1389
+ msgstr "Galleriaa ei löydy. "
1390
+
1391
+ #: ../admin/manage-images.php:40
1392
+ msgid "Sorry, you have no access here"
1393
+ msgstr "Sori, oikeutesi eivät riitä"
1394
+
1395
+ #: ../admin/manage-images.php:203
1396
+ msgid "Copy image to..."
1397
+ msgstr "Sori, oikeutesi eivät riitä"
1398
+
1399
+ #: ../admin/manage-images.php:207
1400
+ msgid "Move image to..."
1401
+ msgstr "Siirrä kuva..."
1402
+
1403
+ #: ../admin/manage-images.php:211
1404
+ msgid "Add new tags"
1405
+ msgstr "Lisää tägejä"
1406
+
1407
+ #: ../admin/manage-images.php:215 ../admin/manage-images.php:382
1408
+ msgid "Delete tags"
1409
+ msgstr "Poista tägejä"
1410
+
1411
+ #: ../admin/manage-images.php:219
1412
+ msgid "Overwrite"
1413
+ msgstr "Kirjoita yli"
1414
+
1415
+ #: ../admin/manage-images.php:232
1416
+ #, php-format
1417
+ msgid ""
1418
+ "You are about to start the bulk edit for %s images \n"
1419
+ " \n"
1420
+ " 'Cancel' to stop, 'OK' to proceed."
1421
+ msgstr ""
1422
+ "Olet aloittamassa massamuokkauksen %s kuville\n"
1423
+ " \n"
1424
+ " 'Peruuta' lopettaaksesi, 'OK' jatkaaksesi."
1425
+
1426
+ #: ../admin/manage-images.php:246
1427
+ #, php-format
1428
+ msgid "Search results for &#8220;%s&#8221;"
1429
+ msgstr "Hakutulokset &#8220;%s&#8221;"
1430
+
1431
+ #: ../admin/manage-images.php:275 ../admin/settings.php:457
1432
+ msgid "Gallery settings"
1433
+ msgstr "Gallerian asetukset"
1434
+
1435
+ #: ../admin/manage-images.php:275
1436
+ msgid "Click here for more settings"
1437
+ msgstr "Klikkaa tästä lisäasetuksille"
1438
+
1439
+ #: ../admin/manage-images.php:294
1440
+ msgid "Preview image"
1441
+ msgstr "Katso kuvaa"
1442
+
1443
+ #: ../admin/manage-images.php:297
1444
+ msgid "No Picture"
1445
+ msgstr "Ei kuvaa"
1446
+
1447
+ #: ../admin/manage-images.php:319
1448
+ msgid "Path"
1449
+ msgstr "Polku "
1450
+
1451
+ #: ../admin/manage-images.php:334
1452
+ #, fuzzy
1453
+ msgid "Gallery ID"
1454
+ msgstr "Galleria ID=%s ei ole olemassa."
1455
+
1456
+ #: ../admin/manage-images.php:336
1457
+ msgid "Create new page"
1458
+ msgstr "Luo uusi sivu"
1459
+
1460
+ #: ../admin/manage-images.php:339
1461
+ msgid "Main page (No parent)"
1462
+ msgstr "Pääsivu (ei pääsivua)"
1463
+
1464
+ #: ../admin/manage-images.php:344
1465
+ msgid "Add page"
1466
+ msgstr "Lisää sivu"
1467
+
1468
+ #: ../admin/manage-images.php:354
1469
+ #, fuzzy
1470
+ msgid "Scan folder for new images"
1471
+ msgstr "Luo uusi, tyhjä galleria hakemiston alle"
1472
+
1473
+ #: ../admin/manage-images.php:355
1474
+ msgid "Old scanning"
1475
+ msgstr ""
1476
+
1477
+ #: ../admin/manage-images.php:356 ../admin/manage-images.php:391
1478
+ #: ../admin/manage-images.php:548 ../admin/settings.php:379
1479
+ #: ../admin/settings.php:447 ../admin/settings.php:537
1480
+ #: ../admin/settings.php:571 ../admin/settings.php:681
1481
+ #: ../admin/settings.php:833
1482
+ msgid "Save Changes"
1483
+ msgstr "Tallenna muutokset"
1484
+
1485
+ #: ../admin/manage-images.php:375
1486
+ msgid "Delete images"
1487
+ msgstr "Poista kuvia"
1488
+
1489
+ #: ../admin/manage-images.php:377
1490
+ msgid "Rotate images clockwise"
1491
+ msgstr "Pyöritä kuvia myötäpäivään"
1492
+
1493
+ #: ../admin/manage-images.php:378
1494
+ msgid "Rotate images counter-clockwise"
1495
+ msgstr "Pyöritä kuvia vastapäivään"
1496
+
1497
+ #: ../admin/manage-images.php:379
1498
+ msgid "Copy to..."
1499
+ msgstr "Kopioi ..."
1500
+
1501
+ #: ../admin/manage-images.php:380
1502
+ msgid "Move to..."
1503
+ msgstr "Siirrä..."
1504
+
1505
+ #: ../admin/manage-images.php:381
1506
+ msgid "Add tags"
1507
+ msgstr "Lisää tägejä"
1508
+
1509
+ #: ../admin/manage-images.php:383
1510
+ msgid "Overwrite tags"
1511
+ msgstr "Kirjoita tägit yli"
1512
+
1513
+ #: ../admin/manage-images.php:388
1514
+ msgid "Sort gallery"
1515
+ msgstr "Lajittele galleria"
1516
+
1517
+ #: ../admin/manage-images.php:463
1518
+ #, fuzzy
1519
+ msgid "Change Date"
1520
+ msgstr "Pvm/Aika"
1521
+
1522
+ #: ../admin/manage-images.php:467
1523
+ msgid "pixel"
1524
+ msgstr "pikseli"
1525
+
1526
+ #: ../admin/manage-images.php:473
1527
+ #, php-format
1528
+ msgid "View \"%s\""
1529
+ msgstr "Katso \"%s\""
1530
+
1531
+ #: ../admin/manage-images.php:473
1532
+ msgid "View"
1533
+ msgstr "Katso "
1534
+
1535
+ #: ../admin/manage-images.php:474
1536
+ msgid "Show Meta data"
1537
+ msgstr "Näytä metadata"
1538
+
1539
+ #: ../admin/manage-images.php:474
1540
+ msgid "Meta"
1541
+ msgstr "Meta"
1542
+
1543
+ #: ../admin/manage-images.php:475
1544
+ msgid "Customize thumbnail"
1545
+ msgstr "Muokkaa esikatselukuvaa"
1546
+
1547
+ #: ../admin/manage-images.php:475
1548
+ msgid "Edit thumb"
1549
+ msgstr "Muokkaa esikatselukuvaa"
1550
+
1551
+ #: ../admin/manage-images.php:476
1552
+ msgid "Rotate"
1553
+ msgstr "Pyöritä"
1554
+
1555
+ #: ../admin/manage-images.php:478
1556
+ msgid "Publish this image"
1557
+ msgstr "Julkaise kuva"
1558
+
1559
+ #: ../admin/manage-images.php:478 ../admin/publish.php:58
1560
+ msgid "Publish"
1561
+ msgstr "Julkaise"
1562
+
1563
+ #: ../admin/manage-images.php:480
1564
+ msgid "Recover"
1565
+ msgstr "Palauta"
1566
+
1567
+ #: ../admin/manage-images.php:480
1568
+ #, php-format
1569
+ msgid "Recover \"%s\" ?"
1570
+ msgstr "Palauta \"%s\" ?"
1571
+
1572
+ #: ../admin/manage-images.php:481
1573
+ #, php-format
1574
+ msgid "Delete \"%s\" ?"
1575
+ msgstr "Poista \"%s\" ?"
1576
+
1577
+ #: ../admin/manage-images.php:509
1578
+ #, fuzzy
1579
+ msgid "Alt & title text"
1580
+ msgstr "Alt / otsikkoteksti"
1581
+
1582
+ #: ../admin/manage-images.php:523
1583
+ #, fuzzy
1584
+ msgid "Separated by commas"
1585
+ msgstr "Galleria IDt, erotettuna pilkuilla."
1586
+
1587
+ #: ../admin/manage-images.php:564
1588
+ msgid "Enter the tags"
1589
+ msgstr "Anna tägejä"
1590
+
1591
+ #: ../admin/manage-images.php:587
1592
+ msgid "Select the destination gallery:"
1593
+ msgstr "Valitse kohdegalleria:"
1594
+
1595
+ #: ../admin/manage-images.php:730 ../admin/media-upload.php:246
1596
+ msgid "Thumbnail"
1597
+ msgstr "Esikatselukuva"
1598
+
1599
+ #: ../admin/manage-images.php:731 ../admin/manage-sort.php:92
1600
+ msgid "Filename"
1601
+ msgstr "Tiedostonimi"
1602
+
1603
+ #: ../admin/manage-images.php:732
1604
+ msgid "Alt &amp; Title Text"
1605
+ msgstr "Alt &amp; otsikkoteksti"
1606
+
1607
+ #: ../admin/manage-images.php:734
1608
+ #, fuzzy
1609
+ msgid "Exclude"
1610
+ msgstr "piilota "
1611
+
1612
+ #: ../admin/manage-sort.php:35
1613
+ msgid "Sort order changed"
1614
+ msgstr "Lajittelujärjestys muutettu"
1615
+
1616
+ #: ../admin/manage-sort.php:77
1617
+ msgid "Sort Gallery"
1618
+ msgstr "Lajittele galleria"
1619
+
1620
+ #: ../admin/manage-sort.php:81
1621
+ msgid "Update Sort Order"
1622
+ msgstr "Päivitä lajittelujärjestys"
1623
+
1624
+ #: ../admin/manage-sort.php:84
1625
+ msgid "Back to gallery"
1626
+ msgstr "Takaisin galleriaan"
1627
+
1628
+ #: ../admin/manage-sort.php:89
1629
+ msgid "Presort"
1630
+ msgstr "Esilajittele"
1631
+
1632
+ #: ../admin/manage-sort.php:90
1633
+ msgid "Unsorted"
1634
+ msgstr "Lajittelematon"
1635
+
1636
+ #: ../admin/manage-sort.php:91 ../admin/settings.php:524
1637
+ msgid "Image ID"
1638
+ msgstr "Kuva ID"
1639
+
1640
+ #: ../admin/manage-sort.php:93 ../admin/media-upload.php:221
1641
+ msgid "Alt/Title text"
1642
+ msgstr "Alt / otsikkoteksit"
1643
+
1644
+ #: ../admin/manage-sort.php:94 ../lib/meta.php:452
1645
+ msgid "Date/Time"
1646
+ msgstr "Pvm/aika"
1647
+
1648
+ #: ../admin/manage-sort.php:95 ../admin/settings.php:532
1649
+ msgid "Ascending"
1650
+ msgstr "Laskeva"
1651
+
1652
+ #: ../admin/manage-sort.php:96 ../admin/settings.php:533
1653
+ msgid "Descending"
1654
+ msgstr "Nouseva"
1655
+
1656
+ #: ../admin/manage.php:85 ../lib/rewrite.php:223
1657
+ #: ../view/imagebrowser-caption.php:31 ../view/imagebrowser-exif.php:35
1658
+ #: ../view/imagebrowser.php:31
1659
+ msgid "Picture"
1660
+ msgstr "Kuva"
1661
+
1662
+ #: ../admin/manage.php:85
1663
+ msgid "deleted successfully"
1664
+ msgstr "poistettu onnistuneesti"
1665
+
1666
+ #: ../admin/manage.php:100 ../admin/manage.php:109
1667
+ msgid "Operation successful. Please clear your browser cache."
1668
+ msgstr "Toiminto onnistui. Tyhjennä selaimen välimuisti."
1669
+
1670
+ #: ../admin/manage.php:176
1671
+ msgid "Gallery deleted successfully "
1672
+ msgstr "Gallerian poisto onnistui "
1673
+
1674
+ #: ../admin/manage.php:244 ../admin/manage.php:247
1675
+ msgid "Rotate images"
1676
+ msgstr "Pyöritä kuvia"
1677
+
1678
+ #: ../admin/manage.php:270
1679
+ msgid "Pictures deleted successfully "
1680
+ msgstr "Kuvien poisto onnistui"
1681
+
1682
+ #: ../admin/manage.php:366
1683
+ msgid "Tags changed"
1684
+ msgstr "Tägit muutettu"
1685
+
1686
+ #: ../admin/manage.php:402
1687
+ msgid "Update successful"
1688
+ msgstr "Päivitys onnistui"
1689
+
1690
+ #: ../admin/manage.php:445
1691
+ msgid "New gallery page ID"
1692
+ msgstr "Uusi galleriasivu ID"
1693
+
1694
+ #: ../admin/manage.php:445
1695
+ msgid "created"
1696
+ msgstr "luotu "
1697
+
1698
+ #: ../admin/manage.php:483
1699
+ msgid "Published a new post"
1700
+ msgstr "Julkaistu uusi artikkeli "
1701
+
1702
+ #: ../admin/manage.php:598
1703
+ msgid "1 item"
1704
+ msgstr "1 elementti"
1705
+
1706
+ #: ../admin/media-upload.php:11
1707
+ msgid "NextCellent Gallery"
1708
+ msgstr "NextCellent Gallery"
1709
+
1710
+ #: ../admin/media-upload.php:166
1711
+ msgid "No gallery"
1712
+ msgstr "Ei galleriaa"
1713
+
1714
+ #: ../admin/media-upload.php:178
1715
+ msgid "Select &#187;"
1716
+ msgstr "Valitse &#187;"
1717
+
1718
+ #: ../admin/media-upload.php:209
1719
+ msgid "Show"
1720
+ msgstr "Näytä"
1721
+
1722
+ #: ../admin/media-upload.php:210
1723
+ msgid "Hide"
1724
+ msgstr "Piilota"
1725
+
1726
+ #: ../admin/media-upload.php:215
1727
+ msgid "Image ID:"
1728
+ msgstr "Kuva ID:"
1729
+
1730
+ #: ../admin/media-upload.php:229 ../admin/publish.php:45
1731
+ #: ../admin/tinymce/window.php:335
1732
+ msgid "Alignment"
1733
+ msgstr "Tasaus "
1734
+
1735
+ #: ../admin/media-upload.php:232 ../admin/publish.php:47
1736
+ #: ../admin/settings.php:557
1737
+ msgid "None"
1738
+ msgstr "ei mitään"
1739
+
1740
+ #: ../admin/media-upload.php:234 ../admin/publish.php:49
1741
+ #: ../admin/tinymce/window.php:339
1742
+ msgid "Left"
1743
+ msgstr "Vasen"
1744
+
1745
+ #: ../admin/media-upload.php:236 ../admin/publish.php:51
1746
+ #: ../admin/tinymce/window.php:340
1747
+ msgid "Center"
1748
+ msgstr "Keskitä"
1749
+
1750
+ #: ../admin/media-upload.php:238 ../admin/publish.php:53
1751
+ #: ../admin/tinymce/window.php:341
1752
+ msgid "Right"
1753
+ msgstr "Oikea"
1754
+
1755
+ #: ../admin/media-upload.php:248
1756
+ msgid "Full size"
1757
+ msgstr "Täyskoko"
1758
+
1759
+ #: ../admin/media-upload.php:250
1760
+ msgid "Singlepic"
1761
+ msgstr "Yksittäiskuva"
1762
+
1763
+ #: ../admin/media-upload.php:263
1764
+ msgid "Insert into Post"
1765
+ msgstr "Lisää artikkeliin"
1766
+
1767
+ #: ../admin/media-upload.php:274
1768
+ msgid "Save all changes"
1769
+ msgstr "Tallenna kaikki muutokset"
1770
+
1771
+ #: ../admin/overview.php:15
1772
+ msgid "NextCellent Gallery Overview"
1773
+ msgstr "NextCellent Gallery ohjausnäkymä"
1774
+
1775
+ #: ../admin/overview.php:86
1776
+ msgid "Welcome to NextCellent Gallery !"
1777
+ msgstr "Tervetuloa NextCellent Galleryyn!"
1778
+
1779
+ #: ../admin/overview.php:229
1780
+ msgid "Running..."
1781
+ msgstr "Toimii..."
1782
+
1783
+ #: ../admin/overview.php:276
1784
+ msgid "Check plugin/theme conflict"
1785
+ msgstr "Tarkista lisäosa/teema -konfliktit"
1786
+
1787
+ #: ../admin/overview.php:277 ../admin/overview.php:283
1788
+ #: ../admin/overview.php:289
1789
+ msgid "Not tested"
1790
+ msgstr "Ei testattu"
1791
+
1792
+ #: ../admin/overview.php:278
1793
+ msgid "No conflict could be detected"
1794
+ msgstr "Mitään konfliktia ei löytynyt"
1795
+
1796
+ #: ../admin/overview.php:279
1797
+ msgid "Test failed, disable other plugins & switch to default theme"
1798
+ msgstr ""
1799
+ "Testi epäonnistui, ota muut lisäosat pois käytöstä ja käytä oletusteemaa "
1800
+ "(Default Theme)"
1801
+
1802
+ #: ../admin/overview.php:282
1803
+ msgid "Test image function"
1804
+ msgstr "Testaa kuvatoiminto"
1805
+
1806
+ #: ../admin/overview.php:284
1807
+ msgid "The plugin could create images"
1808
+ msgstr "Lisäosa onnistui luomaan kuvia"
1809
+
1810
+ #: ../admin/overview.php:285
1811
+ msgid "Couldn't create image, check your memory limit"
1812
+ msgstr "Kuvien luonti ei onnnsitu, tarkista muistirajasi (palvelimella)"
1813
+
1814
+ #: ../admin/overview.php:288
1815
+ msgid "Check theme compatibility"
1816
+ msgstr "Tarkista teeman yhteensopivuus"
1817
+
1818
+ #: ../admin/overview.php:290
1819
+ msgid "Your theme should work fine with NextCellent