All-in-One Event Calendar - Version 1.4

Version Description

Download this release

Release Info

Developer yani.iliev
Plugin Icon 128x128 All-in-One Event Calendar
Version 1.4
Comparing to
See all releases

Code changes from version 1.3 to 1.4

Files changed (44) hide show
  1. all-in-one-event-calendar.php +3 -1
  2. app/controller/class-ai1ec-app-controller.php +4 -2
  3. app/controller/class-ai1ec-events-controller.php +27 -18
  4. app/controller/class-ai1ec-exporter-controller.php +1 -1
  5. app/helper/class-ai1ec-app-helper.php +32 -1
  6. app/helper/class-ai1ec-events-helper.php +182 -31
  7. app/helper/class-ai1ec-exporter-helper.php +45 -2
  8. app/helper/class-ai1ec-importer-helper.php +1 -0
  9. app/model/class-ai1ec-event.php +39 -2
  10. app/view/box_date_picker.php +0 -10
  11. app/view/box_time_and_date.php +12 -9
  12. app/view/calendar.php +1 -1
  13. app/view/event-single.php +6 -1
  14. css/add_new_event.css +74 -1
  15. css/datepicker.css +191 -0
  16. img/custom_b.png +0 -0
  17. img/custom_bl.png +0 -0
  18. img/custom_br.png +0 -0
  19. img/custom_l.png +0 -0
  20. img/custom_r.png +0 -0
  21. img/custom_t.png +0 -0
  22. img/custom_tl.png +0 -0
  23. img/custom_tr.png +0 -0
  24. img/datepicker_b.png +0 -0
  25. img/datepicker_bl.png +0 -0
  26. img/datepicker_br.png +0 -0
  27. img/datepicker_l.png +0 -0
  28. img/datepicker_r.png +0 -0
  29. img/datepicker_t.png +0 -0
  30. img/datepicker_tl.png +0 -0
  31. img/datepicker_tr.png +0 -0
  32. img/field.png +0 -0
  33. js/add_new_event.js +59 -41
  34. js/datepicker.js +891 -0
  35. js/jquery-tools-1.2.5.min.js +115 -0
  36. language/all-in-one-event-calendar.mo +0 -0
  37. language/all-in-one-event-calendar.po +721 -430
  38. language/all-in-one-event-calendar.pot +139 -117
  39. lib/global-functions.php +58 -0
  40. lib/helpers/SG_iCal_Freq.php +3 -1
  41. lib/helpers/SG_iCal_Parser.php +1 -1
  42. lib/iCalcreator-2.10.23/iCalcreator.class.php +1 -1
  43. lib/iCalcreator-2.10/iCalcreator.class.php +1 -1
  44. readme.txt +14 -1
all-in-one-event-calendar.php CHANGED
@@ -5,7 +5,7 @@
5
  * Description: An event calendar system with month, week, agenda views, upcoming events widget, color-coded categories, recurrence, and import/export of .ics feeds.
6
  * Author: The Seed Studio
7
  * Author URI: http://theseednetwork.com/
8
- * Version: 1.3
9
  */ // NOTE: When updating version number also update first line of app/view/calendar.php
10
  @set_time_limit( 0 );
11
  @ini_set( "memory_limit", "256M" );
@@ -163,6 +163,8 @@ require_once( AI1EC_LIB_PATH . '/helpers/SG_iCal_Recurrence.php' );
163
  require_once( AI1EC_LIB_PATH . '/helpers/SG_iCal_Parser.php' );
164
  require_once( AI1EC_LIB_PATH . '/helpers/SG_iCal_Query.php' );
165
  require_once( AI1EC_LIB_PATH . '/helpers/SG_iCal_Factory.php' );
 
 
166
 
167
  // ===============================
168
  // = The autoload function =
5
  * Description: An event calendar system with month, week, agenda views, upcoming events widget, color-coded categories, recurrence, and import/export of .ics feeds.
6
  * Author: The Seed Studio
7
  * Author URI: http://theseednetwork.com/
8
+ * Version: 1.4
9
  */ // NOTE: When updating version number also update first line of app/view/calendar.php
10
  @set_time_limit( 0 );
11
  @ini_set( "memory_limit", "256M" );
163
  require_once( AI1EC_LIB_PATH . '/helpers/SG_iCal_Parser.php' );
164
  require_once( AI1EC_LIB_PATH . '/helpers/SG_iCal_Query.php' );
165
  require_once( AI1EC_LIB_PATH . '/helpers/SG_iCal_Factory.php' );
166
+ // include our global functions
167
+ require_once( AI1EC_LIB_PATH . '/global-functions.php' );
168
 
169
  // ===============================
170
  // = The autoload function =
app/controller/class-ai1ec-app-controller.php CHANGED
@@ -391,7 +391,9 @@ class Ai1ec_App_Controller {
391
  // regex pattern to match our shortcode [ai1ec]
392
  // \[(\[?)(ai1ec)\b([^\]\/]*(?:\/(?!\])[^\]\/]*)*?)(?:(\/)\]|\](?:([^\[]*+(?:\[(?!\/\2\])[^\[]*+)*+)\[\/\2\])?)(\]?)
393
  $out = array();
394
- preg_match( "/\[(\[?)(ai1ec)\b([^\]\/]*(?:\/(?!\])[^\]\/]*)*?)(?:(\/)\]|\](?:([^\[]*+(?:\[(?!\/\2\])[^\[]*+)*+)\[\/\2\])?)(\]?)/s", $post->post_content, $out );
 
 
395
 
396
  // Find out if the calendar page ID is defined, and we're on it
397
  if( $ai1ec_settings->calendar_page_id &&
@@ -411,7 +413,7 @@ class Ai1ec_App_Controller {
411
  // page content filters (some themes are overly ambitious here)
412
  add_filter( 'the_content', array( &$this, 'append_content' ), PHP_INT_MAX - 1 );
413
  }
414
- } else if( $out[2] == 'ai1ec' ) {
415
  // if content has [ai1ec] shortcode, display the calendar page
416
  $attr = shortcode_parse_atts( $out[3] );
417
  // Proceed only if the page password is correctly entered OR
391
  // regex pattern to match our shortcode [ai1ec]
392
  // \[(\[?)(ai1ec)\b([^\]\/]*(?:\/(?!\])[^\]\/]*)*?)(?:(\/)\]|\](?:([^\[]*+(?:\[(?!\/\2\])[^\[]*+)*+)\[\/\2\])?)(\]?)
393
  $out = array();
394
+ if( isset( $post->post_content ) ) {
395
+ preg_match( "/\[(\[?)(ai1ec)\b([^\]\/]*(?:\/(?!\])[^\]\/]*)*?)(?:(\/)\]|\](?:([^\[]*+(?:\[(?!\/\2\])[^\[]*+)*+)\[\/\2\])?)(\]?)/s", $post->post_content, $out );
396
+ }
397
 
398
  // Find out if the calendar page ID is defined, and we're on it
399
  if( $ai1ec_settings->calendar_page_id &&
413
  // page content filters (some themes are overly ambitious here)
414
  add_filter( 'the_content', array( &$this, 'append_content' ), PHP_INT_MAX - 1 );
415
  }
416
+ } else if( isset( $out[2] ) && $out[2] == 'ai1ec' ) {
417
  // if content has [ai1ec] shortcode, display the calendar page
418
  $attr = shortcode_parse_atts( $out[3] );
419
  // Proceed only if the page password is correctly entered OR
app/controller/class-ai1ec-events-controller.php CHANGED
@@ -118,15 +118,19 @@ class Ai1ec_Events_Controller {
118
  // Include element selector function
119
  wp_enqueue_script( 'ai1ec-element-selector', AI1EC_JS_URL . '/element-selector.js', array( 'jquery' ) );
120
  // Include jQuery Tools form elements
121
- wp_enqueue_script( 'jquery.tools-form', 'http://cdn.jquerytools.org/1.2.5/form/jquery.tools.min.js', array( 'jquery' ), '1.2.5' );
122
  // Include add new event script
123
  wp_enqueue_script( 'ai1ec-blockui', AI1EC_JS_URL . '/jquery.blockUI.js', array( 'jquery' ) );
 
 
 
124
  wp_enqueue_script( 'ai1ec-add_new_event', AI1EC_JS_URL . '/add_new_event.js', array( 'jquery',
125
  'jquery.timespan',
126
  'ai1ec-element-selector',
127
  'jquery.tools-form',
128
- 'ai1ec-blockui' ) );
129
-
 
130
  wp_enqueue_script( 'ai1ec-color-picker', AI1EC_JS_URL . '/colorpicker.js', array( 'jquery' ) );
131
 
132
  // Supply custom value to JavaScript from PHP
@@ -159,6 +163,8 @@ class Ai1ec_Events_Controller {
159
  wp_enqueue_style( 'colorpicker', AI1EC_CSS_URL . '/colorpicker.css' );
160
  // include add new event style
161
  wp_enqueue_style( 'ai1ec_add_new_event', AI1EC_CSS_URL . '/add_new_event.css' );
 
 
162
  }
163
  // Initialize front-end view
164
  else
@@ -219,9 +225,7 @@ class Ai1ec_Events_Controller {
219
  $exrule = '';
220
  $exrule_text = '';
221
  $exclude_event = false;
222
- $exdate_event = false;
223
  $exdate = '';
224
- $exdate_text = '';
225
 
226
  try
227
  {
@@ -248,8 +252,9 @@ class Ai1ec_Events_Controller {
248
  $contact_phone = $event->contact_phone;
249
  $contact_email = $event->contact_email;
250
  $cost = $event->cost;
251
- $rrule = empty( $event->recurrence_rules ) ? '' : $event->recurrence_rules;
252
- $exrule = empty( $event->exception_rules ) ? '' : $event->exception_rules;
 
253
  $repeating_event = empty( $rrule ) ? false : true;
254
  $exclude_event = empty( $exrule ) ? false : true;
255
 
@@ -283,9 +288,7 @@ class Ai1ec_Events_Controller {
283
  'exrule' => $exrule,
284
  'exrule_text' => $exrule_text,
285
  'timezone' => $timezone,
286
- 'exdate_event' => $exdate_event,
287
- 'exdate' => $exdate,
288
- 'exdate_text' => $exdate_text
289
  );
290
  $ai1ec_view_helper->display( 'box_time_and_date.php', $args );
291
 
@@ -390,15 +393,19 @@ class Ai1ec_Events_Controller {
390
 
391
  $rrule = null;
392
  $exrule = null;
 
 
 
 
 
 
 
 
 
393
 
394
- // =================================
395
- // = Repeating event, assing rrule =
396
- // =================================
397
- if( isset( $_POST['ai1ec_repeat'] ) )
398
- $rrule = $_POST['ai1ec_rrule'];
399
-
400
- if( isset( $_POST['ai1ec_exclude'] ) )
401
- $exrule = $_POST['ai1ec_exrule'];
402
 
403
  $is_new = false;
404
  $event = null;
@@ -428,6 +435,7 @@ class Ai1ec_Events_Controller {
428
  $event->contact_email = $contact_email;
429
  $event->recurrence_rules = $rrule;
430
  $event->exception_rules = $exrule;
 
431
  $event->save( ! $is_new );
432
 
433
  $ai1ec_events_helper->delete_event_cache( $post_id );
@@ -592,6 +600,7 @@ class Ai1ec_Events_Controller {
592
  $args = array(
593
  'event' => &$event,
594
  'recurrence' => $event->recurrence_html,
 
595
  'categories' => $event->categories_html,
596
  'tags' => $event->tags_html,
597
  'location' => nl2br( $event->location ),
118
  // Include element selector function
119
  wp_enqueue_script( 'ai1ec-element-selector', AI1EC_JS_URL . '/element-selector.js', array( 'jquery' ) );
120
  // Include jQuery Tools form elements
121
+ wp_enqueue_script( 'jquery.tools-form', AI1EC_JS_URL . '/jquery-tools-1.2.5.min.js', array( 'jquery' ) );
122
  // Include add new event script
123
  wp_enqueue_script( 'ai1ec-blockui', AI1EC_JS_URL . '/jquery.blockUI.js', array( 'jquery' ) );
124
+ // Include date picker plugin
125
+ wp_enqueue_script( 'ai1ec-datepicker', AI1EC_JS_URL . '/datepicker.js', array( 'jquery' ) );
126
+
127
  wp_enqueue_script( 'ai1ec-add_new_event', AI1EC_JS_URL . '/add_new_event.js', array( 'jquery',
128
  'jquery.timespan',
129
  'ai1ec-element-selector',
130
  'jquery.tools-form',
131
+ 'ai1ec-blockui',
132
+ 'ai1ec-datepicker' ) );
133
+
134
  wp_enqueue_script( 'ai1ec-color-picker', AI1EC_JS_URL . '/colorpicker.js', array( 'jquery' ) );
135
 
136
  // Supply custom value to JavaScript from PHP
163
  wp_enqueue_style( 'colorpicker', AI1EC_CSS_URL . '/colorpicker.css' );
164
  // include add new event style
165
  wp_enqueue_style( 'ai1ec_add_new_event', AI1EC_CSS_URL . '/add_new_event.css' );
166
+ // include datepicker style
167
+ wp_enqueue_style( 'ai1ec_datepicker', AI1EC_CSS_URL . '/datepicker.css' );
168
  }
169
  // Initialize front-end view
170
  else
225
  $exrule = '';
226
  $exrule_text = '';
227
  $exclude_event = false;
 
228
  $exdate = '';
 
229
 
230
  try
231
  {
252
  $contact_phone = $event->contact_phone;
253
  $contact_email = $event->contact_email;
254
  $cost = $event->cost;
255
+ $rrule = empty( $event->recurrence_rules ) ? '' : $ai1ec_events_helper->ics_rule_to_local( $event->recurrence_rules );
256
+ $exrule = empty( $event->exception_rules ) ? '' : $ai1ec_events_helper->ics_rule_to_local( $event->exception_rules );
257
+ $exdate = empty( $event->exception_dates ) ? '' : $ai1ec_events_helper->exception_dates_to_local( $event->exception_dates );
258
  $repeating_event = empty( $rrule ) ? false : true;
259
  $exclude_event = empty( $exrule ) ? false : true;
260
 
288
  'exrule' => $exrule,
289
  'exrule_text' => $exrule_text,
290
  'timezone' => $timezone,
291
+ 'exdate' => $exdate
 
 
292
  );
293
  $ai1ec_view_helper->display( 'box_time_and_date.php', $args );
294
 
393
 
394
  $rrule = null;
395
  $exrule = null;
396
+ $exdate = null;
397
+
398
+ // if rrule is set, convert it from local to UTC time
399
+ if( isset( $_POST['ai1ec_repeat'] ) && ! empty( $_POST['ai1ec_repeat'] ) )
400
+ $rrule = $ai1ec_events_helper->ics_rule_to_gmt( $_POST['ai1ec_rrule'] );
401
+
402
+ // if exrule is set, convert it from local to UTC time
403
+ if( isset( $_POST['ai1ec_exclude'] ) && ! empty( $_POST['ai1ec_exclude'] ) )
404
+ $exrule = $ai1ec_events_helper->ics_rule_to_gmt( $_POST['ai1ec_exrule'] );
405
 
406
+ // if exdate is set, convert it from local to UTC time
407
+ if( isset( $_POST['ai1ec_exdate'] ) && ! empty( $_POST['ai1ec_exdate'] ) )
408
+ $exdate = $ai1ec_events_helper->exception_dates_to_gmt( $_POST['ai1ec_exdate'] );
 
 
 
 
 
409
 
410
  $is_new = false;
411
  $event = null;
435
  $event->contact_email = $contact_email;
436
  $event->recurrence_rules = $rrule;
437
  $event->exception_rules = $exrule;
438
+ $event->exception_dates = $exdate;
439
  $event->save( ! $is_new );
440
 
441
  $ai1ec_events_helper->delete_event_cache( $post_id );
600
  $args = array(
601
  'event' => &$event,
602
  'recurrence' => $event->recurrence_html,
603
+ 'exclude' => $event->exclude_html,
604
  'categories' => $event->categories_html,
605
  'tags' => $event->tags_html,
606
  'location' => nl2br( $event->location ),
app/controller/class-ai1ec-exporter-controller.php CHANGED
@@ -88,7 +88,7 @@ class Ai1ec_Exporter_Controller {
88
  }
89
  $str = $c->createCalendar();
90
 
91
- header( 'Content-type: text/calendar' );
92
  echo $str;
93
  exit;
94
  }
88
  }
89
  $str = $c->createCalendar();
90
 
91
+ header( 'Content-type: text/calendar; charset=utf-8' );
92
  echo $str;
93
  exit;
94
  }
app/helper/class-ai1ec-app-helper.php CHANGED
@@ -213,6 +213,14 @@ class Ai1ec_App_Helper {
213
  'name' => _x( 'Event Tags', 'Event tags taxonomy', AI1EC_PLUGIN_NAME ),
214
  'singular_name' => _x( 'Event Tag', 'Event tags taxonomy (singular)', AI1EC_PLUGIN_NAME )
215
  );
 
 
 
 
 
 
 
 
216
 
217
  // ======================================
218
  // = args for event categories taxonomy =
@@ -243,6 +251,22 @@ class Ai1ec_App_Helper {
243
  'assign_terms' => 'edit_ai1ec_events'
244
  )
245
  );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
246
 
247
  // ======================================
248
  // = register event categories taxonomy =
@@ -253,6 +277,11 @@ class Ai1ec_App_Helper {
253
  // = register event tags taxonomy =
254
  // ================================
255
  register_taxonomy( 'events_tags', array( AI1EC_POST_TYPE ), $events_tags_args );
 
 
 
 
 
256
 
257
  // ========================================
258
  // = register custom post type for events =
@@ -340,7 +369,9 @@ class Ai1ec_App_Helper {
340
  else
341
  $term = get_term_by( 'slug', $var, $tax_slug );
342
 
343
- $var = $term->slug;
 
 
344
  }
345
  }
346
  }
213
  'name' => _x( 'Event Tags', 'Event tags taxonomy', AI1EC_PLUGIN_NAME ),
214
  'singular_name' => _x( 'Event Tag', 'Event tags taxonomy (singular)', AI1EC_PLUGIN_NAME )
215
  );
216
+
217
+ // ==================================
218
+ // = labels for event feeds taxonomy =
219
+ // ==================================
220
+ $events_feeds_labels = array(
221
+ 'name' => _x( 'Event Feeds', 'Event feeds taxonomy', AI1EC_PLUGIN_NAME ),
222
+ 'singular_name' => _x( 'Event Feed', 'Event feed taxonomy (singular)', AI1EC_PLUGIN_NAME )
223
+ );
224
 
225
  // ======================================
226
  // = args for event categories taxonomy =
251
  'assign_terms' => 'edit_ai1ec_events'
252
  )
253
  );
254
+
255
+ // ================================
256
+ // = args for event feeds taxonomy =
257
+ // ================================
258
+ $events_feeds_args = array(
259
+ 'labels' => $events_feeds_labels,
260
+ 'hierarchical' => false,
261
+ 'rewrite' => array( 'slug' => 'events_feeds' ),
262
+ 'capabilities' => array(
263
+ 'manage_terms' => 'manage_categories',
264
+ 'edit_terms' => 'manage_categories',
265
+ 'delete_terms' => 'manage_categories',
266
+ 'assign_terms' => 'edit_ai1ec_events'
267
+ ),
268
+ 'public' => false // don't show taxonomy in admin UI
269
+ );
270
 
271
  // ======================================
272
  // = register event categories taxonomy =
277
  // = register event tags taxonomy =
278
  // ================================
279
  register_taxonomy( 'events_tags', array( AI1EC_POST_TYPE ), $events_tags_args );
280
+
281
+ // ================================
282
+ // = register event tags taxonomy =
283
+ // ================================
284
+ register_taxonomy( 'events_feeds', array( AI1EC_POST_TYPE ), $events_feeds_args );
285
 
286
  // ========================================
287
  // = register custom post type for events =
369
  else
370
  $term = get_term_by( 'slug', $var, $tax_slug );
371
 
372
+ if( isset( $term->slug ) ) {
373
+ $var = $term->slug;
374
+ }
375
  }
376
  }
377
  }
app/helper/class-ai1ec-events-helper.php CHANGED
@@ -149,47 +149,44 @@ class Ai1ec_Events_Helper {
149
  'end' => $event->end,
150
  );
151
  $duration = $event->getDuration();
152
-
 
 
153
  // Always cache initial instance
154
  $evs[] = $e;
155
 
156
  $_start = $event->start;
157
  $_end = $event->end;
158
-
159
  if( $event->recurrence_rules )
160
  {
161
  $count = 0;
162
  $start = $event->start;
163
- $freq = $event->getFrequency();
 
 
 
 
164
 
165
  $freq->firstOccurrence();
166
- while( ( $next = $freq->nextOccurrence( $start ) ) > 0 &&
167
- $count < 1000 )
168
  {
169
  $count++;
170
  $start = $next;
171
  $e['start'] = $start;
172
  $e['end'] = $start + $duration;
173
  $excluded = false;
174
-
175
- if( $event->exception_rules ) {
176
- $_count = 0;
177
- $_s = $_start;
178
- $_f = new SG_iCal_Freq( $event->exception_rules, $_start );
179
- $_f->firstOccurrence();
180
- while( ( $_next = $_f->nextOccurrence( $_s ) ) > 0 && $_count < 1000 ) {
181
- $_count++;
182
- $_s = $_next;
183
- // only add the event if the start time of the
184
- // reccuring event is different than the start time
185
- // of the excluding event
186
- if( $start == $_s ) {
187
- $excluded = true;
188
- break;
189
- }
190
- }
191
  }
192
-
 
193
  if( $excluded == false )
194
  $evs[] = $e;
195
  }
@@ -240,6 +237,39 @@ class Ai1ec_Events_Helper {
240
  }
241
  }
242
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
243
 
244
  /**
245
  * insert_event_in_cache_table function
@@ -1017,24 +1047,31 @@ class Ai1ec_Events_Helper {
1017
  *
1018
  * @return int
1019
  **/
1020
- function get_timezone_offset( $remote_tz, $origin_tz = null, $timestamp = "now" ) {
1021
- if( $origin_tz === null )
1022
- if( ! is_string( $origin_tz = date_default_timezone_get() ) )
 
 
 
 
 
1023
  return false; // A UTC timestamp was returned -- bail out!
 
 
1024
 
1025
  try {
1026
  $origin_dtz = new DateTimeZone( $origin_tz );
1027
  $remote_dtz = new DateTimeZone( $remote_tz );
1028
 
1029
  // if DateTimeZone fails, throw exception
1030
- if( $origin_dtz === false || $remote_dtz === false )
1031
  throw new Exception( 'DateTimeZone class failed' );
1032
 
1033
  $origin_dt = new DateTime( gmdate( 'Y-m-d H:i:s', $timestamp ), $origin_dtz );
1034
  $remote_dt = new DateTime( gmdate( 'Y-m-d H:i:s', $timestamp ), $remote_dtz );
1035
 
1036
  // if DateTime fails, throw exception
1037
- if( $origin_dt === false || $remote_dt === false )
1038
  throw new Exception( 'DateTime class failed' );
1039
 
1040
  $offset = $origin_dtz->getOffset( $origin_dt ) - $remote_dtz->getOffset( $remote_dt );
@@ -1346,7 +1383,7 @@ class Ai1ec_Events_Helper {
1346
  *
1347
  *
1348
  *
1349
- * @return void
1350
  **/
1351
  function rrule_to_text( $rrule = '') {
1352
  $txt = '';
@@ -1377,6 +1414,120 @@ class Ai1ec_Events_Helper {
1377
  return $txt;
1378
  }
1379
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1380
  /**
1381
  * _get_sentence_by function
1382
  *
@@ -1583,7 +1734,7 @@ class Ai1ec_Events_Helper {
1583
  if( $until = $rc->getUntil() ) {
1584
  if( ! is_int( $until ) )
1585
  $until = strtotime( $until );
1586
- $txt .= ' ' . sprintf( __( 'until %s', AI1EC_PLUGIN_NAME ), date_i18n( get_option( 'date_format' ), $until ) );
1587
  }
1588
  else if( $count = $rc->getCount() )
1589
  $txt .= ' ' . sprintf( __( 'for %d occurrences', AI1EC_PLUGIN_NAME ), $count );
@@ -1746,4 +1897,4 @@ class Ai1ec_Events_Helper {
1746
  return - ( 7 - ( $ai1ec_settings->week_start_day - $wday ) ) % 7;
1747
  }
1748
  }
1749
- // END class
149
  'end' => $event->end,
150
  );
151
  $duration = $event->getDuration();
152
+
153
+ // Timestamp of today's date + 10 years
154
+ $tif = gmmktime() + 315569260; //315 569 260 = 10 years in seconds
155
  // Always cache initial instance
156
  $evs[] = $e;
157
 
158
  $_start = $event->start;
159
  $_end = $event->end;
160
+
161
  if( $event->recurrence_rules )
162
  {
163
  $count = 0;
164
  $start = $event->start;
165
+ $exrule = array();
166
+ if( $event->exception_rules ) {
167
+ $exrule = $this->generate_dates_array_from_ics_rule( $start, $event->exception_rules );
168
+ }
169
+ $freq = $event->getFrequency( $exrule );
170
 
171
  $freq->firstOccurrence();
172
+ while( ( $next = $freq->nextOccurrence( $start ) ) > 0 && $count < 1000 )
 
173
  {
174
  $count++;
175
  $start = $next;
176
  $e['start'] = $start;
177
  $e['end'] = $start + $duration;
178
  $excluded = false;
179
+
180
+ // if event's start date is 10 years in the future, stop the cache at this point
181
+ if( $start > $tif ) break;
182
+
183
+ // Check if exception dates match this occurence
184
+ if( $event->exception_dates ) {
185
+ if( $this->date_match_exdates( $start, $event->exception_dates ) )
186
+ $excluded = true;
 
 
 
 
 
 
 
 
 
187
  }
188
+
189
+ // Add event only if it is not excluded
190
  if( $excluded == false )
191
  $evs[] = $e;
192
  }
237
  }
238
  }
239
  }
240
+
241
+ /**
242
+ * date_match_exdates function
243
+ *
244
+ * @return bool
245
+ **/
246
+ function date_match_exdates( $date, $ics_rule ) {
247
+ foreach( explode( ",", $ics_rule ) as $_date ) {
248
+ // convert to timestamp
249
+ $_date_start = strtotime( $_date );
250
+ // convert from UTC to local time
251
+ $_date_start = $this->gmt_to_local( $_date_start ) - date( 'Z', $_date_start );
252
+ if( $_date_start != false ) {
253
+ // add 23h 59m 59s so the whole day is excluded
254
+ $_date_end = $_date_start + (24 * 60 * 60) - 1;
255
+ if( $date >= $_date_start && $date <= $_date_end ) {
256
+ // event is within the time-frame
257
+ return true;
258
+ }
259
+ }
260
+ }
261
+ return false;
262
+ }
263
+
264
+ /**
265
+ * generate_dates_array_from_ics_rule function
266
+ *
267
+ * @return array
268
+ **/
269
+ function generate_dates_array_from_ics_rule( $start, $ics_rule ) {
270
+ $freq = new SG_iCal_Freq( $ics_rule, $start, array(), array(), true );
271
+ return $freq->getAllOccurrences();
272
+ }
273
 
274
  /**
275
  * insert_event_in_cache_table function
1047
  *
1048
  * @return int
1049
  **/
1050
+ function get_timezone_offset( $remote_tz, $origin_tz = null, $timestamp = false ) {
1051
+ // set timestamp to time now
1052
+ if( $timestamp == false ) {
1053
+ $timestamp = gmmktime();
1054
+ }
1055
+
1056
+ if( $origin_tz === null ) {
1057
+ if( ! is_string( $origin_tz = date_default_timezone_get() ) ) {
1058
  return false; // A UTC timestamp was returned -- bail out!
1059
+ }
1060
+ }
1061
 
1062
  try {
1063
  $origin_dtz = new DateTimeZone( $origin_tz );
1064
  $remote_dtz = new DateTimeZone( $remote_tz );
1065
 
1066
  // if DateTimeZone fails, throw exception
1067
+ if( $origin_dtz == false || $remote_dtz == false )
1068
  throw new Exception( 'DateTimeZone class failed' );
1069
 
1070
  $origin_dt = new DateTime( gmdate( 'Y-m-d H:i:s', $timestamp ), $origin_dtz );
1071
  $remote_dt = new DateTime( gmdate( 'Y-m-d H:i:s', $timestamp ), $remote_dtz );
1072
 
1073
  // if DateTime fails, throw exception
1074
+ if( $origin_dt == false || $remote_dt == false )
1075
  throw new Exception( 'DateTime class failed' );
1076
 
1077
  $offset = $origin_dtz->getOffset( $origin_dt ) - $remote_dtz->getOffset( $remote_dt );
1383
  *
1384
  *
1385
  *
1386
+ * @return string
1387
  **/
1388
  function rrule_to_text( $rrule = '') {
1389
  $txt = '';
1414
  return $txt;
1415
  }
1416
 
1417
+ /**
1418
+ * exdate_to_text function
1419
+ *
1420
+ * @return string
1421
+ **/
1422
+ function exdate_to_text( $exception_dates ) {
1423
+ $dates_to_add = array();
1424
+ foreach( explode( ",", $exception_dates ) as $_exdate ) {
1425
+ // convert to timestamp
1426
+ $_exdate = strtotime( $_exdate );
1427
+ $dates_to_add[] = $this->get_long_date( $_exdate, true );
1428
+ }
1429
+ // append dates to the string and return it;
1430
+ return implode( ", ", $dates_to_add );
1431
+ }
1432
+
1433
+ /**
1434
+ * ics_rule_to_local function
1435
+ *
1436
+ * @return void
1437
+ **/
1438
+ function ics_rule_to_local( $rule ) {
1439
+ return $this->ics_rule_to( $rule, false );
1440
+ }
1441
+
1442
+ /**
1443
+ * ics_rule_to_gmt function
1444
+ *
1445
+ * @return void
1446
+ **/
1447
+ function ics_rule_to_gmt( $rule ) {
1448
+ return $this->ics_rule_to( $rule, true );
1449
+ }
1450
+
1451
+ /**
1452
+ * ics_rule_to function
1453
+ *
1454
+ * @return void
1455
+ **/
1456
+ private function ics_rule_to( $rule, $to_gmt = false ) {
1457
+ $rc = new SG_iCal_Recurrence( new SG_iCal_Line( 'RRULE:' . $rule ) );
1458
+ if( $until = $rc->getUntil() ) {
1459
+ if( ! is_int( $until ) ) {
1460
+ $until = strtotime( $until );
1461
+ }
1462
+ if( $to_gmt ) {
1463
+ $until = $this->local_to_gmt( $until );
1464
+ } else {
1465
+ $until = $this->gmt_to_local( $until );
1466
+ }
1467
+
1468
+ $until = gmdate( "Ymd\THis\Z", $until );
1469
+ $rule_props = explode( ';', $rule );
1470
+ $_rule = array();
1471
+ foreach( $rule_props as $property ) {
1472
+ // don't apply any logic to empty properties
1473
+ if( empty( $property ) ) {
1474
+ $_rule[] = $property;
1475
+ continue;
1476
+ }
1477
+ $name_and_value = explode( '=', $property );
1478
+ if( isset( $name_and_value[0] ) && strtolower( $name_and_value[0] ) == 'until' ) {
1479
+ if( isset( $name_and_value[1] ) ) {
1480
+ $_rule[] = "UNTIL=" . $until;
1481
+ }
1482
+ } else {
1483
+ $_rule[] = $property;
1484
+ }
1485
+ }
1486
+ $rule = implode( ';', $_rule );
1487
+ }
1488
+ return $rule;
1489
+ }
1490
+
1491
+ /**
1492
+ * exception_dates_to_local function
1493
+ *
1494
+ * @return string
1495
+ **/
1496
+ function exception_dates_to_local( $exception_dates ) {
1497
+ return $this->exception_dates_to( $exception_dates, false );
1498
+ }
1499
+
1500
+ /**
1501
+ * exception_dates_to_gmt function
1502
+ *
1503
+ * @return string
1504
+ **/
1505
+ function exception_dates_to_gmt( $exception_dates ) {
1506
+ return $this->exception_dates_to( $exception_dates, true );
1507
+ }
1508
+
1509
+ /**
1510
+ * exception_dates_to function
1511
+ *
1512
+ * @return string
1513
+ **/
1514
+ private function exception_dates_to( $exception_dates, $to_gmt = false ) {
1515
+ $dates_to_add = array();
1516
+ foreach( explode( ",", $exception_dates ) as $_exdate ) {
1517
+ // convert to timestamp
1518
+ $_exdate = strtotime( $_exdate );
1519
+ if( $to_gmt ) {
1520
+ $_exdate = $this->gmt_to_local( $_exdate );
1521
+ } else {
1522
+ $_exdate = $this->gmt_to_local( $_exdate );
1523
+ }
1524
+
1525
+ $dates_to_add[] = gmdate( "Ymd\THis\Z", $_exdate );
1526
+ }
1527
+ // append dates to the string and return it;
1528
+ return implode( ",", $dates_to_add );
1529
+ }
1530
+
1531
  /**
1532
  * _get_sentence_by function
1533
  *
1734
  if( $until = $rc->getUntil() ) {
1735
  if( ! is_int( $until ) )
1736
  $until = strtotime( $until );
1737
+ $txt .= ' ' . sprintf( __( 'until %s', AI1EC_PLUGIN_NAME ), date_i18n( get_option( 'date_format' ), $until, true ) );
1738
  }
1739
  else if( $count = $rc->getCount() )
1740
  $txt .= ' ' . sprintf( __( 'for %d occurrences', AI1EC_PLUGIN_NAME ), $count );
1897
  return - ( 7 - ( $ai1ec_settings->week_start_day - $wday ) ) % 7;
1898
  }
1899
  }
1900
+ // END class
app/helper/class-ai1ec-exporter-helper.php CHANGED
@@ -64,7 +64,7 @@ class Ai1ec_Exporter_Helper {
64
  $e = & $c->newComponent( 'vevent' );
65
  $uid = $event->ical_uid ? $event->ical_uid : $event->post->guid;
66
  $e->setProperty( 'uid', $uid );
67
- $e->setProperty( 'url', get_permalink( $event->post_id ) . '?instance_id=' . $event->instance_id );
68
  $e->setProperty( 'summary', html_entity_decode( apply_filters( 'the_title', $event->post->post_title ), ENT_QUOTES ) );
69
  $content = apply_filters( 'the_content', $event->post->post_content );
70
  $content = str_replace(']]>', ']]&gt;', $content);
@@ -136,7 +136,50 @@ class Ai1ec_Exporter_Helper {
136
  $rrule[ $k ] = $v;
137
  }
138
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
139
 
140
- if( ! empty( $rrule ) ) $e->setProperty( 'rrule', $rrule );
 
 
 
 
 
 
141
  }
142
  }
64
  $e = & $c->newComponent( 'vevent' );
65
  $uid = $event->ical_uid ? $event->ical_uid : $event->post->guid;
66
  $e->setProperty( 'uid', $uid );
67
+ $e->setProperty( 'url', get_permalink( $event->post_id ) );
68
  $e->setProperty( 'summary', html_entity_decode( apply_filters( 'the_title', $event->post->post_title ), ENT_QUOTES ) );
69
  $content = apply_filters( 'the_content', $event->post->post_content );
70
  $content = str_replace(']]>', ']]&gt;', $content);
136
  $rrule[ $k ] = $v;
137
  }
138
  }
139
+
140
+ $exrule = array();
141
+ if( ! empty( $event->exception_rules ) ) {
142
+ $rules = array();
143
+ foreach( explode( ';', $event->exception_rules ) AS $v) {
144
+ if( strpos( $v, '=' ) === false ) continue;
145
+
146
+ list($k, $v) = explode( '=', $v );
147
+ // If $v is a comma-separated list, turn it into array for iCalcreator
148
+ switch( $k ) {
149
+ case 'BYSECOND':
150
+ case 'BYMINUTE':
151
+ case 'BYHOUR':
152
+ case 'BYDAY':
153
+ case 'BYMONTHDAY':
154
+ case 'BYYEARDAY':
155
+ case 'BYWEEKNO':
156
+ case 'BYMONTH':
157
+ case 'BYSETPOS':
158
+ $exploded = explode( ',', $v );
159
+ break;
160
+ default:
161
+ $exploded = $v;
162
+ break;
163
+ }
164
+ // iCalcreator requires a more complex array structure for BYDAY...
165
+ if( $k == 'BYDAY' ) {
166
+ $v = array();
167
+ foreach( $exploded as $day ) {
168
+ $v[] = array( 'DAY' => $day );
169
+ }
170
+ } else {
171
+ $v = $exploded;
172
+ }
173
+ $exrule[ $k ] = $v;
174
+ }
175
+ }
176
 
177
+ // add rrule to exported calendar
178
+ if( ! empty( $rrule ) ) $e->setProperty( 'rrule', $rrule );
179
+ // add exrule to exported calendar
180
+ if( ! empty( $exrule ) ) $e->setProperty( 'exrule', $exrule );
181
+ // add exdates to exported calendar
182
+ if( ! empty( $event->exception_dates ) )
183
+ $e->setProperty( 'exdate', explode( ',', $event->exception_dates ) );
184
  }
185
  }
app/helper/class-ai1ec-importer-helper.php CHANGED
@@ -184,6 +184,7 @@ class Ai1ec_Importer_Helper {
184
  'ical_uid' => $e->getProperty( 'uid' ),
185
  'categories' => $feed->feed_category,
186
  'tags' => $feed->feed_tags,
 
187
  'post' => array(
188
  'post_status' => 'publish',
189
  'post_type' => AI1EC_POST_TYPE,
184
  'ical_uid' => $e->getProperty( 'uid' ),
185
  'categories' => $feed->feed_category,
186
  'tags' => $feed->feed_tags,
187
+ 'feed' => $feed,
188
  'post' => array(
189
  'post_status' => 'publish',
190
  'post_type' => AI1EC_POST_TYPE,
app/model/class-ai1ec-event.php CHANGED
@@ -241,6 +241,15 @@ class Ai1ec_Event {
241
  * @var string
242
  **/
243
  var $categories;
 
 
 
 
 
 
 
 
 
244
 
245
  /**
246
  * category_colors class variable
@@ -630,6 +639,11 @@ class Ai1ec_Event {
630
  return null;
631
 
632
  return '<strong>' . esc_html( $ai1ec_events_helper->rrule_to_text( $this->recurrence_rules ) ) . '</strong>';
 
 
 
 
 
633
  }
634
  }
635
 
@@ -735,6 +749,29 @@ class Ai1ec_Event {
735
  wp_set_post_terms( $this->post_id, $this->categories, 'events_categories' );
736
  wp_set_post_terms( $this->post_id, $this->tags, 'events_tags' );
737
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
738
  // =========================
739
  // = Insert new event data =
740
  // =========================
@@ -803,8 +840,8 @@ class Ai1ec_Event {
803
  *
804
  * @return object
805
  **/
806
- function getFrequency() {
807
- return new SG_iCal_Freq( $this->recurrence_rules, $this->start );
808
  }
809
 
810
  /**
241
  * @var string
242
  **/
243
  var $categories;
244
+
245
+ /**
246
+ * feed class variable
247
+ *
248
+ * Associated event feed object
249
+ *
250
+ * @var string
251
+ **/
252
+ var $feed;
253
 
254
  /**
255
  * category_colors class variable
639
  return null;
640
 
641
  return '<strong>' . esc_html( $ai1ec_events_helper->rrule_to_text( $this->recurrence_rules ) ) . '</strong>';
642
+ case 'exclude_html':
643
+ if( ! $this->exception_dates || empty( $this->exception_dates ) )
644
+ return null;
645
+
646
+ return '<strong>' . esc_html( $ai1ec_events_helper->exdate_to_text( $this->exception_dates ) ) . '</strong>';
647
  }
648
  }
649
 
749
  wp_set_post_terms( $this->post_id, $this->categories, 'events_categories' );
750
  wp_set_post_terms( $this->post_id, $this->tags, 'events_tags' );
751
 
752
+ if( isset( $this->feed ) && isset( $this->feed->feed_id ) ) {
753
+ $url_components = parse_url( $this->feed->feed_url );
754
+ $feed_name = $url_components["host"];
755
+ $term = term_exists( $feed_name, 'events_feeds' );
756
+ if( ! $term ) {
757
+ // term doesn't exist, create it
758
+ $term = wp_insert_term(
759
+ $feed_name, // term
760
+ 'events_feeds', // taxonomy
761
+ array(
762
+ 'description' => $this->feed->feed_url
763
+ )
764
+ );
765
+ }
766
+ // term_exists returns object, wp_insert_term returns array
767
+ $term = (object)$term;
768
+ if( isset( $term->term_id ) ) {
769
+ // associate the event with the feed only if we have term id set
770
+ $a = wp_set_object_terms( $this->post_id, (int)$term->term_id, 'events_feeds', false );
771
+ }
772
+
773
+ }
774
+
775
  // =========================
776
  // = Insert new event data =
777
  // =========================
840
  *
841
  * @return object
842
  **/
843
+ function getFrequency( $excluded = array() ) {
844
+ return new SG_iCal_Freq( $this->recurrence_rules, $this->start, $excluded );
845
  }
846
 
847
  /**
app/view/box_date_picker.php DELETED
@@ -1,10 +0,0 @@
1
- <div class="ai1ec-date-picker-holder">
2
- <div class="ai1ec-date-picker-calendar">
3
- <label for="ai1ec-date-picker-calendar">
4
- <?php _e( 'Select dates', AI1EC_PLUGIN_NAME ) ?>:
5
- </label>
6
- <input type="text" class="ai1ec-date-input" id="ai1ec-date-picker-input" style="display: none;" />
7
- <input type="hidden" name="ai1ec_date_picker_input" id="ai1ec-date-picker-time" value="" />
8
- </div>
9
- <div class="ai1ec-date-picker-dates"><?php echo $dates ?></div>
10
- </div>
 
 
 
 
 
 
 
 
 
 
app/view/box_time_and_date.php CHANGED
@@ -64,24 +64,27 @@
64
  <div id="ai1ec_exclude_text">
65
  <a href="#ai1ec_exclude_box"><?php echo $exrule_text ?></a>
66
  </div>
 
67
  </td>
68
  </tr>
69
- <!--
70
  <tr>
71
  <td>
72
- <input type="checkbox" name="ai1ec_exclude_date" id="ai1ec_exclude_date" value="1" <?php echo $exdate_event ? 'checked="checked"' : '' ?>/>
73
- <input type="hidden" name="ai1ec_exdate" id="ai1ec_exdate" value="<?php echo $exdate ?>" />
74
- <label for="ai1ec_exclude_date" id="ai1ec_exclude_date_label">
75
- <?php _e( 'Exclude dates', AI1EC_PLUGIN_NAME ); echo $exdate_event ? ':' : '...' ?>
76
  </label>
77
  </td>
78
  <td>
79
- <div id="ai1ec_exclude_date_text">
80
- <a href="#ai1ec_exclude_date_box"><?php echo $exdate_text ?></a>
81
- </div>
 
 
 
 
 
 
82
  </td>
83
  </tr>
84
- -->
85
  <div id="ai1ec_repeat_box"></div>
86
  </tbody>
87
  </table>
64
  <div id="ai1ec_exclude_text">
65
  <a href="#ai1ec_exclude_box"><?php echo $exrule_text ?></a>
66
  </div>
67
+ <span class="ai1ec-info-text">(<?php _e( 'Choose a rule for exclusion', AI1EC_PLUGIN_NAME ) ?>)</span>
68
  </td>
69
  </tr>
 
70
  <tr>
71
  <td>
72
+ <label for="ai1ec_exdate_calendar_icon" id="ai1ec_exclude_date_label">
73
+ <?php _e( 'Exclude dates', AI1EC_PLUGIN_NAME ) ?>:
 
 
74
  </label>
75
  </td>
76
  <td>
77
+ <div id="datepicker-widget">
78
+ <div id="widgetField">
79
+ <span></span>
80
+ <a href="#"><?php _e( 'Select date range', AI1EC_PLUGIN_NAME ) ?></a>
81
+ </div>
82
+ <div id="widgetCalendar"></div>
83
+ </div>
84
+ <input type="hidden" name="ai1ec_exdate" id="ai1ec_exdate" value="<?php echo $exdate ?>" />
85
+ <span class="ai1ec-info-text">(<?php _e( 'Choose specific dates to exclude', AI1EC_PLUGIN_NAME ) ?>)</span>
86
  </td>
87
  </tr>
 
88
  <div id="ai1ec_repeat_box"></div>
89
  </tbody>
90
  </table>
app/view/calendar.php CHANGED
@@ -1,4 +1,4 @@
1
- <!-- START All-in-One Event Calendar Plugin - Version 1.3 -->
2
  <table class="ai1ec-calendar-toolbar">
3
  <tbody>
4
  <tr>
1
+ <!-- START All-in-One Event Calendar Plugin - Version 1.4 -->
2
  <table class="ai1ec-calendar-toolbar">
3
  <tbody>
4
  <tr>
app/view/event-single.php CHANGED
@@ -16,7 +16,12 @@
16
  <td class="ai1ec-recurrence" colspan="2"><?php echo $recurrence ?></td>
17
  </tr>
18
  <?php endif ?>
19
- <tr>
 
 
 
 
 
20
  <th scope="row" class="ai1ec-location <?php if( ! $location ) echo 'ai1ec-empty' ?>"><?php if( $location ) _e( 'Where:', AI1EC_PLUGIN_NAME ) ?></th>
21
  <td class="ai1ec-location <?php if( ! $location ) echo 'ai1ec-empty' ?>"><?php echo $location ?></td>
22
  <td rowspan="5" class="ai1ec-map <?php if( $map ) echo 'ai1ec-has-map' ?>">
16
  <td class="ai1ec-recurrence" colspan="2"><?php echo $recurrence ?></td>
17
  </tr>
18
  <?php endif ?>
19
+ <?php if( $exclude ): ?>
20
+ <tr>
21
+ <th scope="row" class="ai1ec-exclude"><?php _e( 'Excluding:', AI1EC_PLUGIN_NAME ) ?></th>
22
+ <td class="ai1ec-exclude" colspan="2"><?php echo $exclude ?></td>
23
+ </tr>
24
+ <?php endif ?>
25
  <th scope="row" class="ai1ec-location <?php if( ! $location ) echo 'ai1ec-empty' ?>"><?php if( $location ) _e( 'Where:', AI1EC_PLUGIN_NAME ) ?></th>
26
  <td class="ai1ec-location <?php if( ! $location ) echo 'ai1ec-empty' ?>"><?php echo $location ?></td>
27
  <td rowspan="5" class="ai1ec-map <?php if( $map ) echo 'ai1ec-has-map' ?>">
css/add_new_event.css CHANGED
@@ -411,6 +411,9 @@ ul.ai1ec_repeat_tabs li a.ai1ec_active {
411
  text-decoration: none;
412
  border-bottom: 1px dashed red;
413
  }
 
 
 
414
  #ai1ec_ending_box, #ai1ec_apply_button_holder {
415
  margin-top: 10px;
416
  }
@@ -443,5 +446,75 @@ div.growlUI h1, div.growlUI h2 {
443
  padding-left: 163px;
444
  width: 31px;
445
  height: 31px;
446
- background: url( ../img/ajax-loader.gif ) no-repeat center right;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
447
  }
411
  text-decoration: none;
412
  border-bottom: 1px dashed red;
413
  }
414
+ #ai1ec_exclude_text {
415
+ margin-right: 20px;
416
+ }
417
  #ai1ec_ending_box, #ai1ec_apply_button_holder {
418
  margin-top: 10px;
419
  }
446
  padding-left: 163px;
447
  width: 31px;
448
  height: 31px;
449
+ background: url( ../img/ajax-loader.gif ) no-repeat center right !important;
450
+ }
451
+ #ai1ec-date-picker-input {
452
+ width: 0px;
453
+ height: 0px;
454
+ }
455
+ /* Exclude date style*/
456
+ #datepicker-widget {
457
+ position: relative;
458
+ }
459
+ #widgetField {
460
+ width: 290px;
461
+ height: 26px;
462
+ background: url(../img/field.png);
463
+ overflow: hidden;
464
+ position: relative;
465
+ }
466
+ #widgetField a {
467
+ display: block;
468
+ position: absolute;
469
+ width: 26px;
470
+ height: 26px;
471
+ top: 0;
472
+ right: 0;
473
+ text-decoration: none;
474
+ text-indent: -3000px;
475
+ }
476
+ #widgetField span {
477
+ font-size: 12px;
478
+ font-weight: bold;
479
+ color: #000;
480
+ position: absolute;
481
+ top: 0;
482
+ height: 26px;
483
+ line-height: 26px;
484
+ left: 5px;
485
+ width: 250px;
486
+ text-align: center;
487
+ cursor: pointer;
488
+ }
489
+ #widgetCalendar {
490
+ position: absolute;
491
+ top: 26px;
492
+ left: 0;
493
+ height: 0px;
494
+ overflow: hidden;
495
+ width: 588px;
496
+ background: #B9B9B9;
497
+ }
498
+ #widgetCalendar .datepicker {
499
+ position: absolute;
500
+ bottom: 0;
501
+ top: auto;
502
+ }
503
+ #widgetCalendar .datepickerContainer,
504
+ #widgetCalendar .datepickerBorderT,
505
+ #widgetCalendar .datepickerBorderB,
506
+ #widgetCalendar .datepickerBorderL,
507
+ #widgetCalendar .datepickerBorderR,
508
+ #widgetCalendar .datepickerBorderTL,
509
+ #widgetCalendar .datepickerBorderTR,
510
+ #widgetCalendar .datepickerBorderBL,
511
+ #widgetCalendar .datepickerBorderBR {
512
+ background: transparent !important;
513
+ }
514
+ #widgetCalendar .datepicker a:hover{
515
+ color: #b6f063;
516
+ }
517
+ .ai1ec-info-text {
518
+ font-size: 10px;
519
+ float: left;
520
  }
css/datepicker.css ADDED
@@ -0,0 +1,191 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ div.datepicker {
2
+ position: relative;
3
+ font-family: Arial, Helvetica, sans-serif;
4
+ font-size: 12px;
5
+ width: 196px;
6
+ height: 147px;
7
+ position: absolute;
8
+ cursor: default;
9
+ top: 0;
10
+ left: 0;
11
+ display: none;
12
+ }
13
+ .datepickerContainer {
14
+ background: #121212;
15
+ position: absolute;
16
+ top: 10px;
17
+ left: 10px;
18
+ }
19
+ .datepickerBorderT {
20
+ position: absolute;
21
+ left: 10px;
22
+ top: 0;
23
+ right: 10px;
24
+ height: 10px;
25
+ background: url(../img/datepicker_t.png);
26
+ }
27
+ .datepickerBorderB {
28
+ position: absolute;
29
+ left: 10px;
30
+ bottom: 0;
31
+ right: 10px;
32
+ height: 10px;
33
+ background: url(../img/datepicker_b.png);
34
+ }
35
+ .datepickerBorderL {
36
+ position: absolute;
37
+ left: 0;
38
+ bottom: 10px;
39
+ top: 10px;
40
+ width: 10px;
41
+ background: url(../img/datepicker_l.png);
42
+ }
43
+ .datepickerBorderR {
44
+ position: absolute;
45
+ right: 0;
46
+ bottom: 10px;
47
+ top: 10px;
48
+ width: 10px;
49
+ background: url(../img/datepicker_r.png);
50
+ }
51
+ .datepickerBorderTL {
52
+ position: absolute;
53
+ top: 0;
54
+ left: 0;
55
+ width: 10px;
56
+ height: 10px;
57
+ background: url(../img/datepicker_tl.png);
58
+ }
59
+ .datepickerBorderTR {
60
+ position: absolute;
61
+ top: 0;
62
+ right: 0;
63
+ width: 10px;
64
+ height: 10px;
65
+ background: url(../img/datepicker_tr.png);
66
+ }
67
+ .datepickerBorderBL {
68
+ position: absolute;
69
+ bottom: 0;
70
+ left: 0;
71
+ width: 10px;
72
+ height: 10px;
73
+ background: url(../img/datepicker_bl.png);
74
+ }
75
+ .datepickerBorderBR {
76
+ position: absolute;
77
+ bottom: 0;
78
+ right: 0;
79
+ width: 10px;
80
+ height: 10px;
81
+ background: url(../img/datepicker_br.png);
82
+ }
83
+ .datepickerHidden {
84
+ display: none;
85
+ }
86
+ div.datepicker table {
87
+ border-collapse:collapse;
88
+ }
89
+ div.datepicker a {
90
+ color: #eee;
91
+ text-decoration: none;
92
+ cursor: default;
93
+ outline: none;
94
+ }
95
+ div.datepicker table td {
96
+ text-align: right;
97
+ padding: 0;
98
+ margin: 0;
99
+ }
100
+ div.datepicker th {
101
+ text-align: center;
102
+ color: #999;
103
+ font-weight: normal;
104
+ }
105
+ div.datepicker tbody th {
106
+ text-align: left;
107
+ }
108
+ div.datepicker tbody a {
109
+ display: block;
110
+ }
111
+ .datepickerDays a {
112
+ width: 20px;
113
+ line-height: 16px;
114
+ height: 16px;
115
+ padding-right: 2px;
116
+ }
117
+ .datepickerYears a,
118
+ .datepickerMonths a{
119
+ width: 44px;
120
+ line-height: 36px;
121
+ height: 36px;
122
+ text-align: center;
123
+ }
124
+ td.datepickerNotInMonth a {
125
+ color: #666;
126
+ }
127
+ tbody.datepickerDays td.datepickerSelected{
128
+ background: #136A9F;
129
+ }
130
+ tbody.datepickerDays td.datepickerNotInMonth.datepickerSelected {
131
+ background: #17384d;
132
+ }
133
+ tbody.datepickerYears td.datepickerSelected,
134
+ tbody.datepickerMonths td.datepickerSelected{
135
+ background: #17384d;
136
+ }
137
+ div.datepicker a:hover,
138
+ div.datepicker a:hover {
139
+ color: #88c5eb;
140
+ }
141
+ div.datepicker td.datepickerNotInMonth a:hover {
142
+ color: #999;
143
+ }
144
+ div.datepicker tbody th {
145
+ text-align: left;
146
+ }
147
+ .datepickerSpace div {
148
+ width: 20px;
149
+ }
150
+ .datepickerGoNext a,
151
+ .datepickerGoPrev a,
152
+ .datepickerMonth a {
153
+ text-align: center;
154
+ height: 20px;
155
+ line-height: 20px;
156
+ }
157
+ .datepickerGoNext a {
158
+ float: right;
159
+ width: 20px;
160
+ }
161
+ .datepickerGoPrev a {
162
+ float: left;
163
+ width: 20px;
164
+ }
165
+ table.datepickerViewDays tbody.datepickerMonths,
166
+ table.datepickerViewDays tbody.datepickerYears {
167
+ display: none;
168
+ }
169
+ table.datepickerViewMonths tbody.datepickerDays,
170
+ table.datepickerViewMonths tbody.datepickerYears,
171
+ table.datepickerViewMonths tr.datepickerDoW {
172
+ display: none;
173
+ }
174
+ table.datepickerViewYears tbody.datepickerDays,
175
+ table.datepickerViewYears tbody.datepickerMonths,
176
+ table.datepickerViewYears tr.datepickerDoW {
177
+ display: none;
178
+ }
179
+ td.datepickerDisabled a,
180
+ td.datepickerDisabled.datepickerNotInMonth a{
181
+ color: #333;
182
+ }
183
+ td.datepickerDisabled a:hover {
184
+ color: #333;
185
+ }
186
+ td.datepickerSpecial a {
187
+ background: #700;
188
+ }
189
+ td.datepickerSpecial.datepickerSelected a {
190
+ background: #a00;
191
+ }
img/custom_b.png ADDED
Binary file
img/custom_bl.png ADDED
Binary file
img/custom_br.png ADDED
Binary file
img/custom_l.png ADDED
Binary file
img/custom_r.png ADDED
Binary file
img/custom_t.png ADDED
Binary file
img/custom_tl.png ADDED
Binary file
img/custom_tr.png ADDED
Binary file
img/datepicker_b.png ADDED
Binary file
img/datepicker_bl.png ADDED
Binary file
img/datepicker_br.png ADDED
Binary file
img/datepicker_l.png ADDED
Binary file
img/datepicker_r.png ADDED
Binary file
img/datepicker_t.png ADDED
Binary file
img/datepicker_tl.png ADDED
Binary file
img/datepicker_tr.png ADDED
Binary file
img/field.png ADDED
Binary file
js/add_new_event.js CHANGED
@@ -208,23 +208,6 @@ var ai1ec_apply_js_on_repeat_block = function() {
208
  jQuery.inputdate( data );
209
  };
210
 
211
- // called after the date picker block is inserted in the DOM
212
- var ai1ec_apply_js_on_date_picker_box = function() {
213
- // Initialize inputdate plugin on our "until" date input.
214
- data = {
215
- start_date_input: '#ai1ec-date-picker-input',
216
- start_time: '#ai1ec-date-picker-time',
217
- date_format: ai1ec_add_new_event.date_format,
218
- month_names: ai1ec_add_new_event.month_names,
219
- day_names: ai1ec_add_new_event.day_names,
220
- week_start_day: ai1ec_add_new_event.week_start_day,
221
- twentyfour_hour: ai1ec_add_new_event.twentyfour_hour,
222
- now: new Date( ai1ec_add_new_event.now * 1000 )
223
- }
224
- jQuery.inputdate( data );
225
- jQuery( '#ai1ec-date-picker-input' ).trigger( 'click' );
226
- };
227
-
228
  var ai1ec_show_repeat_tabs = function( data, post_ajax_func ) {
229
  jQuery.blockUI( {
230
  message: '<div class="ai1ec-repeat-box-loading"></div>',
@@ -313,6 +296,65 @@ jQuery( function( $ ){
313
  now: now
314
  }
315
  $.timespan( data );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
316
 
317
  /**
318
  * Google map setup
@@ -564,18 +606,6 @@ jQuery( function( $ ){
564
  },
565
  'ai1ec_apply_js_on_repeat_block'
566
  );
567
-
568
- // handles click on exdate text
569
- ai1ec_click_on_ics_rule_text(
570
- '#ai1ec_exclude_date_text > a',
571
- '#ai1ec_exclude_date',
572
- '#ai1ec_exclude_date_label',
573
- {
574
- action: 'ai1ec_get_date_picker_box',
575
- post_id: $( '#post_ID' ).val()
576
- },
577
- 'ai1ec_apply_js_on_date_picker_box'
578
- );
579
 
580
  // handles click on repeat checkbox
581
  ai1ec_click_on_checkbox(
@@ -602,18 +632,6 @@ jQuery( function( $ ){
602
  },
603
  'ai1ec_apply_js_on_repeat_block'
604
  );
605
-
606
- // handles click on exclude date checkbox
607
- ai1ec_click_on_checkbox(
608
- '#ai1ec_exclude_date',
609
- '#ai1ec_exclude_date_text > a',
610
- '#ai1ec_exclude_date_label',
611
- {
612
- action: 'ai1ec_get_date_picker_box',
613
- post_id: $( '#post_ID' ).val()
614
- },
615
- 'ai1ec_apply_js_on_date_picker_box'
616
- );
617
 
618
  $( 'a.ai1ec_repeat_cancel' ).live( 'click', function() {
619
  if( $( '#ai1ec_is_box_repeat' ).val() == '1' ) {
208
  jQuery.inputdate( data );
209
  };
210
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
211
  var ai1ec_show_repeat_tabs = function( data, post_ajax_func ) {
212
  jQuery.blockUI( {
213
  message: '<div class="ai1ec-repeat-box-loading"></div>',
296
  now: now
297
  }
298
  $.timespan( data );
299
+
300
+ var exdate = $( "#ai1ec_exdate" ).val();
301
+ var dp_date = null;
302
+ var _clear_dp = false;
303
+ if( exdate.length >= 8 ) {
304
+ dp_date = new Array();
305
+ var _span_html = '';
306
+ $.each( exdate.split( ',' ), function( i, v ) {
307
+ _date = v.slice( 0, 8 );
308
+ _year = _date.substr( 0, 4 );
309
+ _month = _date.substr( 4, 2 );
310
+ _day = _date.substr( 6, 2 );
311
+ _span_html += _year + '-' + _month + '-' + _day + ',';
312
+ _month = _month.charAt(0) == '0' ? ( '0' + ( parseInt( _month.charAt( 1 ) ) - 1 ) )
313
+ : ( parseInt( _month ) - 1 )
314
+
315
+ dp_date.push( new Date( _year, _month, _day ) );
316
+ });
317
+ _span_html = _span_html.slice( 0, _span_html.length - 1 );
318
+ $( '#widgetField span:first' ).html( _span_html );
319
+ } else {
320
+ dp_date = new Date( ai1ec_add_new_event.now * 1000 )
321
+ _clear_dp = true;
322
+ }
323
+
324
+ $( '#widgetCalendar' ).DatePicker({
325
+ flat: true,
326
+ calendars: 3,
327
+ mode: 'multiple',
328
+ start: 1,
329
+ date: dp_date,
330
+ onChange: function( formated ) {
331
+ $( '#widgetField span' ).get( 0 ).innerHTML = formated;
332
+ formated = formated.toString();
333
+ if( formated.length >= 8 ) {
334
+ // save the date in your hidden field
335
+ var exdate = '';
336
+ $.each( formated.split( ',' ), function( i, v ) {
337
+ exdate += v.replace( /-/g, '' ) + 'T000000Z,';
338
+ });
339
+ exdate = exdate.slice( 0, exdate.length - 1 );
340
+ $( "#ai1ec_exdate" ).val( exdate );
341
+ } else {
342
+ $( "#ai1ec_exdate" ).val( '' );
343
+ }
344
+ }
345
+ });
346
+
347
+ if( _clear_dp ) {
348
+ $( '#widgetCalendar' ).DatePickerClear();
349
+ }
350
+
351
+ var state = false;
352
+ $( '#widgetField > a, #widgetField > span, #ai1ec_exclude_date_label' ).bind( 'click', function() {
353
+ $('#widgetCalendar').stop().animate( { height: state ? 0 : $( '#widgetCalendar div.datepicker' ).get( 0 ).offsetHeight }, 500 );
354
+ state = !state;
355
+ return false;
356
+ });
357
+ $( '#widgetCalendar div.datepicker' ).css( 'position', 'absolute' )
358
 
359
  /**
360
  * Google map setup
606
  },
607
  'ai1ec_apply_js_on_repeat_block'
608
  );
 
 
 
 
 
 
 
 
 
 
 
 
609
 
610
  // handles click on repeat checkbox
611
  ai1ec_click_on_checkbox(
632
  },
633
  'ai1ec_apply_js_on_repeat_block'
634
  );
 
 
 
 
 
 
 
 
 
 
 
 
635
 
636
  $( 'a.ai1ec_repeat_cancel' ).live( 'click', function() {
637
  if( $( '#ai1ec_is_box_repeat' ).val() == '1' ) {
js/datepicker.js ADDED
@@ -0,0 +1,891 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ *
3
+ * Date picker
4
+ * Author: Stefan Petre www.eyecon.ro
5
+ *
6
+ * Dual licensed under the MIT and GPL licenses
7
+ *
8
+ */
9
+ (function ($) {
10
+ var DatePicker = function () {
11
+ var ids = {},
12
+ views = {
13
+ years: 'datepickerViewYears',
14
+ moths: 'datepickerViewMonths',
15
+ days: 'datepickerViewDays'
16
+ },
17
+ tpl = {
18
+ wrapper: '<div class="datepicker"><div class="datepickerBorderT" /><div class="datepickerBorderB" /><div class="datepickerBorderL" /><div class="datepickerBorderR" /><div class="datepickerBorderTL" /><div class="datepickerBorderTR" /><div class="datepickerBorderBL" /><div class="datepickerBorderBR" /><div class="datepickerContainer"><table cellspacing="0" cellpadding="0"><tbody><tr></tr></tbody></table></div></div>',
19
+ head: [
20
+ '<td>',
21
+ '<table cellspacing="0" cellpadding="0">',
22
+ '<thead>',
23
+ '<tr>',
24
+ '<th class="datepickerGoPrev"><a href="#"><span><%=prev%></span></a></th>',
25
+ '<th colspan="6" class="datepickerMonth"><a href="#"><span></span></a></th>',
26
+ '<th class="datepickerGoNext"><a href="#"><span><%=next%></span></a></th>',
27
+ '</tr>',
28
+ '<tr class="datepickerDoW">',
29
+ '<th><span><%=week%></span></th>',
30
+ '<th><span><%=day1%></span></th>',
31
+ '<th><span><%=day2%></span></th>',
32
+ '<th><span><%=day3%></span></th>',
33
+ '<th><span><%=day4%></span></th>',
34
+ '<th><span><%=day5%></span></th>',
35
+ '<th><span><%=day6%></span></th>',
36
+ '<th><span><%=day7%></span></th>',
37
+ '</tr>',
38
+ '</thead>',
39
+ '</table></td>'
40
+ ],
41
+ space : '<td class="datepickerSpace"><div></div></td>',
42
+ days: [
43
+ '<tbody class="datepickerDays">',
44
+ '<tr>',
45
+ '<th class="datepickerWeek"><a href="#"><span><%=weeks[0].week%></span></a></th>',
46
+ '<td class="<%=weeks[0].days[0].classname%>"><a href="#"><span><%=weeks[0].days[0].text%></span></a></td>',
47
+ '<td class="<%=weeks[0].days[1].classname%>"><a href="#"><span><%=weeks[0].days[1].text%></span></a></td>',
48
+ '<td class="<%=weeks[0].days[2].classname%>"><a href="#"><span><%=weeks[0].days[2].text%></span></a></td>',
49
+ '<td class="<%=weeks[0].days[3].classname%>"><a href="#"><span><%=weeks[0].days[3].text%></span></a></td>',
50
+ '<td class="<%=weeks[0].days[4].classname%>"><a href="#"><span><%=weeks[0].days[4].text%></span></a></td>',
51
+ '<td class="<%=weeks[0].days[5].classname%>"><a href="#"><span><%=weeks[0].days[5].text%></span></a></td>',
52
+ '<td class="<%=weeks[0].days[6].classname%>"><a href="#"><span><%=weeks[0].days[6].text%></span></a></td>',
53
+ '</tr>',
54
+ '<tr>',
55
+ '<th class="datepickerWeek"><a href="#"><span><%=weeks[1].week%></span></a></th>',
56
+ '<td class="<%=weeks[1].days[0].classname%>"><a href="#"><span><%=weeks[1].days[0].text%></span></a></td>',
57
+ '<td class="<%=weeks[1].days[1].classname%>"><a href="#"><span><%=weeks[1].days[1].text%></span></a></td>',
58
+ '<td class="<%=weeks[1].days[2].classname%>"><a href="#"><span><%=weeks[1].days[2].text%></span></a></td>',
59
+ '<td class="<%=weeks[1].days[3].classname%>"><a href="#"><span><%=weeks[1].days[3].text%></span></a></td>',
60
+ '<td class="<%=weeks[1].days[4].classname%>"><a href="#"><span><%=weeks[1].days[4].text%></span></a></td>',
61
+ '<td class="<%=weeks[1].days[5].classname%>"><a href="#"><span><%=weeks[1].days[5].text%></span></a></td>',
62
+ '<td class="<%=weeks[1].days[6].classname%>"><a href="#"><span><%=weeks[1].days[6].text%></span></a></td>',
63
+ '</tr>',
64
+ '<tr>',
65
+ '<th class="datepickerWeek"><a href="#"><span><%=weeks[2].week%></span></a></th>',
66
+ '<td class="<%=weeks[2].days[0].classname%>"><a href="#"><span><%=weeks[2].days[0].text%></span></a></td>',
67
+ '<td class="<%=weeks[2].days[1].classname%>"><a href="#"><span><%=weeks[2].days[1].text%></span></a></td>',
68
+ '<td class="<%=weeks[2].days[2].classname%>"><a href="#"><span><%=weeks[2].days[2].text%></span></a></td>',
69
+ '<td class="<%=weeks[2].days[3].classname%>"><a href="#"><span><%=weeks[2].days[3].text%></span></a></td>',
70
+ '<td class="<%=weeks[2].days[4].classname%>"><a href="#"><span><%=weeks[2].days[4].text%></span></a></td>',
71
+ '<td class="<%=weeks[2].days[5].classname%>"><a href="#"><span><%=weeks[2].days[5].text%></span></a></td>',
72
+ '<td class="<%=weeks[2].days[6].classname%>"><a href="#"><span><%=weeks[2].days[6].text%></span></a></td>',
73
+ '</tr>',
74
+ '<tr>',
75
+ '<th class="datepickerWeek"><a href="#"><span><%=weeks[3].week%></span></a></th>',
76
+ '<td class="<%=weeks[3].days[0].classname%>"><a href="#"><span><%=weeks[3].days[0].text%></span></a></td>',
77
+ '<td class="<%=weeks[3].days[1].classname%>"><a href="#"><span><%=weeks[3].days[1].text%></span></a></td>',
78
+ '<td class="<%=weeks[3].days[2].classname%>"><a href="#"><span><%=weeks[3].days[2].text%></span></a></td>',
79
+ '<td class="<%=weeks[3].days[3].classname%>"><a href="#"><span><%=weeks[3].days[3].text%></span></a></td>',
80
+ '<td class="<%=weeks[3].days[4].classname%>"><a href="#"><span><%=weeks[3].days[4].text%></span></a></td>',
81
+ '<td class="<%=weeks[3].days[5].classname%>"><a href="#"><span><%=weeks[3].days[5].text%></span></a></td>',
82
+ '<td class="<%=weeks[3].days[6].classname%>"><a href="#"><span><%=weeks[3].days[6].text%></span></a></td>',
83
+ '</tr>',
84
+ '<tr>',
85
+ '<th class="datepickerWeek"><a href="#"><span><%=weeks[4].week%></span></a></th>',
86
+ '<td class="<%=weeks[4].days[0].classname%>"><a href="#"><span><%=weeks[4].days[0].text%></span></a></td>',
87
+ '<td class="<%=weeks[4].days[1].classname%>"><a href="#"><span><%=weeks[4].days[1].text%></span></a></td>',
88
+ '<td class="<%=weeks[4].days[2].classname%>"><a href="#"><span><%=weeks[4].days[2].text%></span></a></td>',
89
+ '<td class="<%=weeks[4].days[3].classname%>"><a href="#"><span><%=weeks[4].days[3].text%></span></a></td>',
90
+ '<td class="<%=weeks[4].days[4].classname%>"><a href="#"><span><%=weeks[4].days[4].text%></span></a></td>',
91
+ '<td class="<%=weeks[4].days[5].classname%>"><a href="#"><span><%=weeks[4].days[5].text%></span></a></td>',
92
+ '<td class="<%=weeks[4].days[6].classname%>"><a href="#"><span><%=weeks[4].days[6].text%></span></a></td>',
93
+ '</tr>',
94
+ '<tr>',
95
+ '<th class="datepickerWeek"><a href="#"><span><%=weeks[5].week%></span></a></th>',
96
+ '<td class="<%=weeks[5].days[0].classname%>"><a href="#"><span><%=weeks[5].days[0].text%></span></a></td>',
97
+ '<td class="<%=weeks[5].days[1].classname%>"><a href="#"><span><%=weeks[5].days[1].text%></span></a></td>',
98
+ '<td class="<%=weeks[5].days[2].classname%>"><a href="#"><span><%=weeks[5].days[2].text%></span></a></td>',
99
+ '<td class="<%=weeks[5].days[3].classname%>"><a href="#"><span><%=weeks[5].days[3].text%></span></a></td>',
100
+ '<td class="<%=weeks[5].days[4].classname%>"><a href="#"><span><%=weeks[5].days[4].text%></span></a></td>',
101
+ '<td class="<%=weeks[5].days[5].classname%>"><a href="#"><span><%=weeks[5].days[5].text%></span></a></td>',
102
+ '<td class="<%=weeks[5].days[6].classname%>"><a href="#"><span><%=weeks[5].days[6].text%></span></a></td>',
103
+ '</tr>',
104
+ '</tbody>'
105
+ ],
106
+ months: [
107
+ '<tbody class="<%=className%>">',
108
+ '<tr>',
109
+ '<td colspan="2"><a href="#"><span><%=data[0]%></span></a></td>',
110
+ '<td colspan="2"><a href="#"><span><%=data[1]%></span></a></td>',
111
+ '<td colspan="2"><a href="#"><span><%=data[2]%></span></a></td>',
112
+ '<td colspan="2"><a href="#"><span><%=data[3]%></span></a></td>',
113
+ '</tr>',
114
+ '<tr>',
115
+ '<td colspan="2"><a href="#"><span><%=data[4]%></span></a></td>',
116
+ '<td colspan="2"><a href="#"><span><%=data[5]%></span></a></td>',
117
+ '<td colspan="2"><a href="#"><span><%=data[6]%></span></a></td>',
118
+ '<td colspan="2"><a href="#"><span><%=data[7]%></span></a></td>',
119
+ '</tr>',
120
+ '<tr>',
121
+ '<td colspan="2"><a href="#"><span><%=data[8]%></span></a></td>',
122
+ '<td colspan="2"><a href="#"><span><%=data[9]%></span></a></td>',
123
+ '<td colspan="2"><a href="#"><span><%=data[10]%></span></a></td>',
124
+ '<td colspan="2"><a href="#"><span><%=data[11]%></span></a></td>',
125
+ '</tr>',
126
+ '</tbody>'
127
+ ]
128
+ },
129
+ defaults = {
130
+ flat: false,
131
+ starts: 1,
132
+ prev: '&#9664;',
133
+ next: '&#9654;',
134
+ lastSel: false,
135
+ mode: 'single',
136
+ view: 'days',
137
+ calendars: 1,
138
+ format: 'Y-m-d',
139
+ position: 'bottom',
140
+ eventName: 'click',
141
+ onRender: function(){return {};},
142
+ onChange: function(){return true;},
143
+ onShow: function(){return true;},
144
+ onBeforeShow: function(){return true;},
145
+ onHide: function(){return true;},
146
+ locale: {
147
+ days: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"],
148
+ daysShort: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"],
149
+ daysMin: ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa", "Su"],
150
+ months: ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"],
151
+ monthsShort: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"],
152
+ weekMin: 'wk'
153
+ }
154
+ },
155
+ fill = function(el) {
156
+ var options = $(el).data('datepicker');
157
+ var cal = $(el);
158
+ var currentCal = Math.floor(options.calendars/2), date, data, dow, month, cnt = 0, week, days, indic, indic2, html, tblCal;
159
+ cal.find('td>table tbody').remove();
160
+ for (var i = 0; i < options.calendars; i++) {
161
+ date = new Date(options.current);
162
+ date.addMonths(-currentCal + i);
163
+ tblCal = cal.find('table').eq(i+1);
164
+ switch (tblCal[0].className) {
165
+ case 'datepickerViewDays':
166
+ dow = formatDate(date, 'B, Y');
167
+ break;
168
+ case 'datepickerViewMonths':
169
+ dow = date.getFullYear();
170
+ break;
171
+ case 'datepickerViewYears':
172
+ dow = (date.getFullYear()-6) + ' - ' + (date.getFullYear()+5);
173
+ break;
174
+ }
175
+ tblCal.find('thead tr:first th:eq(1) span').text(dow);
176
+ dow = date.getFullYear()-6;
177
+ data = {
178
+ data: [],
179
+ className: 'datepickerYears'
180
+ }
181
+ for ( var j = 0; j < 12; j++) {
182
+ data.data.push(dow + j);
183
+ }
184
+ html = tmpl(tpl.months.join(''), data);
185
+ date.setDate(1);
186
+ data = {weeks:[], test: 10};
187
+ month = date.getMonth();
188
+ var dow = (date.getDay() - options.starts) % 7;
189
+ date.addDays(-(dow + (dow < 0 ? 7 : 0)));
190
+ week = -1;
191
+ cnt = 0;
192
+ while (cnt < 42) {
193
+ indic = parseInt(cnt/7,10);
194
+ indic2 = cnt%7;
195
+ if (!data.weeks[indic]) {
196
+ week = date.getWeekNumber();
197
+ data.weeks[indic] = {
198
+ week: week,
199
+ days: []
200
+ };
201
+ }
202
+ data.weeks[indic].days[indic2] = {
203
+ text: date.getDate(),
204
+ classname: []
205
+ };
206
+ if (month != date.getMonth()) {
207
+ data.weeks[indic].days[indic2].classname.push('datepickerNotInMonth');
208
+ }
209
+ if (date.getDay() == 0) {
210
+ data.weeks[indic].days[indic2].classname.push('datepickerSunday');
211
+ }
212
+ if (date.getDay() == 6) {
213
+ data.weeks[indic].days[indic2].classname.push('datepickerSaturday');
214
+ }
215
+ var fromUser = options.onRender(date);
216
+ var val = date.valueOf();
217
+ if (fromUser.selected || options.date == val || $.inArray(val, options.date) > -1 || (options.mode == 'range' && val >= options.date[0] && val <= options.date[1])) {
218
+ data.weeks[indic].days[indic2].classname.push('datepickerSelected');
219
+ }
220
+ if (fromUser.disabled) {
221
+ data.weeks[indic].days[indic2].classname.push('datepickerDisabled');
222
+ }
223
+ if (fromUser.className) {
224
+ data.weeks[indic].days[indic2].classname.push(fromUser.className);
225
+ }
226
+ data.weeks[indic].days[indic2].classname = data.weeks[indic].days[indic2].classname.join(' ');
227
+ cnt++;
228
+ date.addDays(1);
229
+ }
230
+ html = tmpl(tpl.days.join(''), data) + html;
231
+ data = {
232
+ data: options.locale.monthsShort,
233
+ className: 'datepickerMonths'
234
+ };
235
+ html = tmpl(tpl.months.join(''), data) + html;
236
+ tblCal.append(html);
237
+ }
238
+ },
239
+ parseDate = function (date, format) {
240
+ if (date.constructor == Date) {
241
+ return new Date(date);
242
+ }
243
+ var parts = date.split(/\W+/);
244
+ var against = format.split(/\W+/), d, m, y, h, min, now = new Date();
245
+ for (var i = 0; i < parts.length; i++) {
246
+ switch (against[i]) {
247
+ case 'd':
248
+ case 'e':
249
+ d = parseInt(parts[i],10);
250
+ break;
251
+ case 'm':
252
+ m = parseInt(parts[i], 10)-1;
253
+ break;
254
+ case 'Y':
255
+ case 'y':
256
+ y = parseInt(parts[i], 10);
257
+ y += y > 100 ? 0 : (y < 29 ? 2000 : 1900);
258
+ break;
259
+ case 'H':
260
+ case 'I':
261
+ case 'k':
262
+ case 'l':
263
+ h = parseInt(parts[i], 10);
264
+ break;
265
+ case 'P':
266
+ case 'p':
267
+ if (/pm/i.test(parts[i]) && h < 12) {
268
+ h += 12;
269
+ } else if (/am/i.test(parts[i]) && h >= 12) {
270
+ h -= 12;
271
+ }
272
+ break;
273
+ case 'M':
274
+ min = parseInt(parts[i], 10);
275
+ break;
276
+ }
277
+ }
278
+ return new Date(
279
+ y === undefined ? now.getFullYear() : y,
280
+ m === undefined ? now.getMonth() : m,
281
+ d === undefined ? now.getDate() : d,
282
+ h === undefined ? now.getHours() : h,
283
+ min === undefined ? now.getMinutes() : min,
284
+ 0
285
+ );
286
+ },
287
+ formatDate = function(date, format) {
288
+ var m = date.getMonth();
289
+ var d = date.getDate();
290
+ var y = date.getFullYear();
291
+ var wn = date.getWeekNumber();
292
+ var w = date.getDay();
293
+ var s = {};
294
+ var hr = date.getHours();
295
+ var pm = (hr >= 12);
296
+ var ir = (pm) ? (hr - 12) : hr;
297
+ var dy = date.getDayOfYear();
298
+ if (ir == 0) {
299
+ ir = 12;
300
+ }
301
+ var min = date.getMinutes();
302
+ var sec = date.getSeconds();
303
+ var parts = format.split(''), part;
304
+ for ( var i = 0; i < parts.length; i++ ) {
305
+ part = parts[i];
306
+ switch (parts[i]) {
307
+ case 'a':
308
+ part = date.getDayName();
309
+ break;
310
+ case 'A':
311
+ part = date.getDayName(true);
312
+ break;
313
+ case 'b':
314
+ part = date.getMonthName();
315
+ break;
316
+ case 'B':
317
+ part = date.getMonthName(true);
318
+ break;
319
+ case 'C':
320
+ part = 1 + Math.floor(y / 100);
321
+ break;
322
+ case 'd':
323
+ part = (d < 10) ? ("0" + d) : d;
324
+ break;
325
+ case 'e':
326
+ part = d;
327
+ break;
328
+ case 'H':
329
+ part = (hr < 10) ? ("0" + hr) : hr;
330
+ break;
331
+ case 'I':
332
+ part = (ir < 10) ? ("0" + ir) : ir;
333
+ break;
334
+ case 'j':
335
+ part = (dy < 100) ? ((dy < 10) ? ("00" + dy) : ("0" + dy)) : dy;
336
+ break;
337
+ case 'k':
338
+ part = hr;
339
+ break;
340
+ case 'l':
341
+ part = ir;
342
+ break;
343
+ case 'm':
344
+ part = (m < 9) ? ("0" + (1+m)) : (1+m);
345
+ break;
346
+ case 'M':
347
+ part = (min < 10) ? ("0" + min) : min;
348
+ break;
349
+ case 'p':
350
+ case 'P':
351
+ part = pm ? "PM" : "AM";
352
+ break;
353
+ case 's':
354
+ part = Math.floor(date.getTime() / 1000);
355
+ break;
356
+ case 'S':
357
+ part = (sec < 10) ? ("0" + sec) : sec;
358
+ break;
359
+ case 'u':
360
+ part = w + 1;
361
+ break;
362
+ case 'w':
363
+ part = w;
364
+ break;
365
+ case 'y':
366
+ part = ('' + y).substr(2, 2);
367
+ break;
368
+ case 'Y':
369
+ part = y;
370
+ break;
371
+ }
372
+ parts[i] = part;
373
+ }
374
+ return parts.join('');
375
+ },
376
+ extendDate = function(options) {
377
+ if (Date.prototype.tempDate) {
378
+ return;
379
+ }
380
+ Date.prototype.tempDate = null;
381
+ Date.prototype.months = options.months;
382
+ Date.prototype.monthsShort = options.monthsShort;
383
+ Date.prototype.days = options.days;
384
+ Date.prototype.daysShort = options.daysShort;
385
+ Date.prototype.getMonthName = function(fullName) {
386
+ return this[fullName ? 'months' : 'monthsShort'][this.getMonth()];
387
+ };
388
+ Date.prototype.getDayName = function(fullName) {
389
+ return this[fullName ? 'days' : 'daysShort'][this.getDay()];
390
+ };
391
+ Date.prototype.addDays = function (n) {
392
+ this.setDate(this.getDate() + n);
393
+ this.tempDate = this.getDate();
394
+ };
395
+ Date.prototype.addMonths = function (n) {
396
+ if (this.tempDate == null) {
397
+ this.tempDate = this.getDate();
398
+ }
399
+ this.setDate(1);
400
+ this.setMonth(this.getMonth() + n);
401
+ this.setDate(Math.min(this.tempDate, this.getMaxDays()));
402
+ };
403
+ Date.prototype.addYears = function (n) {
404
+ if (this.tempDate == null) {
405
+ this.tempDate = this.getDate();
406
+ }
407
+ this.setDate(1);
408
+ this.setFullYear(this.getFullYear() + n);
409
+ this.setDate(Math.min(this.tempDate, this.getMaxDays()));
410
+ };
411
+ Date.prototype.getMaxDays = function() {
412
+ var tmpDate = new Date(Date.parse(this)),
413
+ d = 28, m;
414
+ m = tmpDate.getMonth();
415
+ d = 28;
416
+ while (tmpDate.getMonth() == m) {
417
+ d ++;
418
+ tmpDate.setDate(d);
419
+ }
420
+ return d - 1;
421
+ };
422
+ Date.prototype.getFirstDay = function() {
423
+ var tmpDate = new Date(Date.parse(this));
424
+ tmpDate.setDate(1);
425
+ return tmpDate.getDay();
426
+ };
427
+ Date.prototype.getWeekNumber = function() {
428
+ var tempDate = new Date(this);
429
+ tempDate.setDate(tempDate.getDate() - (tempDate.getDay() + 6) % 7 + 3);
430
+ var dms = tempDate.valueOf();
431
+ tempDate.setMonth(0);
432
+ tempDate.setDate(4);
433
+ return Math.round((dms - tempDate.valueOf()) / (604800000)) + 1;
434
+ };
435
+ Date.prototype.getDayOfYear = function() {
436
+ var now = new Date(this.getFullYear(), this.getMonth(), this.getDate(), 0, 0, 0);
437
+ var then = new Date(this.getFullYear(), 0, 0, 0, 0, 0);
438
+ var time = now - then;
439
+ return Math.floor(time / 24*60*60*1000);
440
+ };
441
+ },
442
+ layout = function (el) {
443
+ var options = $(el).data('datepicker');
444
+ var cal = $('#' + options.id);
445
+ if (!options.extraHeight) {
446
+ var divs = $(el).find('div');
447
+ options.extraHeight = divs.get(0).offsetHeight + divs.get(1).offsetHeight;
448
+ options.extraWidth = divs.get(2).offsetWidth + divs.get(3).offsetWidth;
449
+ }
450
+ var tbl = cal.find('table:first').get(0);
451
+ var width = tbl.offsetWidth;
452
+ var height = tbl.offsetHeight;
453
+ cal.css({
454
+ width: width + options.extraWidth + 'px',
455
+ height: height + options.extraHeight + 'px'
456
+ }).find('div.datepickerContainer').css({
457
+ width: width + 'px',
458
+ height: height + 'px'
459
+ });
460
+ },
461
+ click = function(ev) {
462
+ if ($(ev.target).is('span')) {
463
+ ev.target = ev.target.parentNode;
464
+ }
465
+ var el = $(ev.target);
466
+ if (el.is('a')) {
467
+ ev.target.blur();
468
+ if (el.hasClass('datepickerDisabled')) {
469
+ return false;
470
+ }
471
+ var options = $(this).data('datepicker');
472
+ var parentEl = el.parent();
473
+ var tblEl = parentEl.parent().parent().parent();
474
+ var tblIndex = $('table', this).index(tblEl.get(0)) - 1;
475
+ var tmp = new Date(options.current);
476
+ var changed = false;
477
+ var fillIt = false;
478
+ if (parentEl.is('th')) {
479
+ if (parentEl.hasClass('datepickerWeek') && options.mode == 'range' && !parentEl.next().hasClass('datepickerDisabled')) {
480
+ var val = parseInt(parentEl.next().text(), 10);
481
+ tmp.addMonths(tblIndex - Math.floor(options.calendars/2));
482
+ if (parentEl.next().hasClass('datepickerNotInMonth')) {
483
+ tmp.addMonths(val > 15 ? -1 : 1);
484
+ }
485
+ tmp.setDate(val);
486
+ options.date[0] = (tmp.setHours(0,0,0,0)).valueOf();
487
+ tmp.setHours(23,59,59,0);
488
+ tmp.addDays(6);
489
+ options.date[1] = tmp.valueOf();
490
+ fillIt = true;
491
+ changed = true;
492
+ options.lastSel = false;
493
+ } else if (parentEl.hasClass('datepickerMonth')) {
494
+ tmp.addMonths(tblIndex - Math.floor(options.calendars/2));
495
+ switch (tblEl.get(0).className) {
496
+ case 'datepickerViewDays':
497
+ tblEl.get(0).className = 'datepickerViewMonths';
498
+ el.find('span').text(tmp.getFullYear());
499
+ break;
500
+ case 'datepickerViewMonths':
501
+ tblEl.get(0).className = 'datepickerViewYears';
502
+ el.find('span').text((tmp.getFullYear()-6) + ' - ' + (tmp.getFullYear()+5));
503
+ break;
504
+ case 'datepickerViewYears':
505
+ tblEl.get(0).className = 'datepickerViewDays';
506
+ el.find('span').text(formatDate(tmp, 'B, Y'));
507
+ break;
508
+ }
509
+ } else if (parentEl.parent().parent().is('thead')) {
510
+ switch (tblEl.get(0).className) {
511
+ case 'datepickerViewDays':
512
+ options.current.addMonths(parentEl.hasClass('datepickerGoPrev') ? -1 : 1);
513
+ break;
514
+ case 'datepickerViewMonths':
515
+ options.current.addYears(parentEl.hasClass('datepickerGoPrev') ? -1 : 1);
516
+ break;
517
+ case 'datepickerViewYears':
518
+ options.current.addYears(parentEl.hasClass('datepickerGoPrev') ? -12 : 12);
519
+ break;
520
+ }
521
+ fillIt = true;
522
+ }
523
+ } else if (parentEl.is('td') && !parentEl.hasClass('datepickerDisabled')) {
524
+ switch (tblEl.get(0).className) {
525
+ case 'datepickerViewMonths':
526
+ options.current.setMonth(tblEl.find('tbody.datepickerMonths td').index(parentEl));
527
+ options.current.setFullYear(parseInt(tblEl.find('thead th.datepickerMonth span').text(), 10));
528
+ options.current.addMonths(Math.floor(options.calendars/2) - tblIndex);
529
+ tblEl.get(0).className = 'datepickerViewDays';
530
+ break;
531
+ case 'datepickerViewYears':
532
+ options.current.setFullYear(parseInt(el.text(), 10));
533
+ tblEl.get(0).className = 'datepickerViewMonths';
534
+ break;
535
+ default:
536
+ var val = parseInt(el.text(), 10);
537
+ tmp.addMonths(tblIndex - Math.floor(options.calendars/2));
538
+ if (parentEl.hasClass('datepickerNotInMonth')) {
539
+ tmp.addMonths(val > 15 ? -1 : 1);
540
+ }
541
+ tmp.setDate(val);
542
+ switch (options.mode) {
543
+ case 'multiple':
544
+ val = (tmp.setHours(0,0,0,0)).valueOf();
545
+ if ($.inArray(val, options.date) > -1) {
546
+ $.each(options.date, function(nr, dat){
547
+ if (dat == val) {
548
+ options.date.splice(nr,1);
549
+ return false;
550
+ }
551
+ });
552
+ } else {
553
+ options.date.push(val);
554
+ }
555
+ break;
556
+ case 'range':
557
+ if (!options.lastSel) {
558
+ options.date[0] = (tmp.setHours(0,0,0,0)).valueOf();
559
+ }
560
+ val = (tmp.setHours(23,59,59,0)).valueOf();
561
+ if (val < options.date[0]) {
562
+ options.date[1] = options.date[0] + 86399000;
563
+ options.date[0] = val - 86399000;
564
+ } else {
565
+ options.date[1] = val;
566
+ }
567
+ options.lastSel = !options.lastSel;
568
+ break;
569
+ default:
570
+ options.date = tmp.valueOf();
571
+ break;
572
+ }
573
+ break;
574
+ }
575
+ fillIt = true;
576
+ changed = true;
577
+ }
578
+ if (fillIt) {
579
+ fill(this);
580
+ }
581
+ if (changed) {
582
+ options.onChange.apply(this, prepareDate(options));
583
+ }
584
+ }
585
+ return false;
586
+ },
587
+ prepareDate = function (options) {
588
+ var tmp;
589
+ if (options.mode == 'single') {
590
+ tmp = new Date(options.date);
591
+ return [formatDate(tmp, options.format), tmp, options.el];
592
+ } else {
593
+ tmp = [[],[], options.el];
594
+ $.each(options.date, function(nr, val){
595
+ var date = new Date(val);
596
+ tmp[0].push(formatDate(date, options.format));
597
+ tmp[1].push(date);
598
+ });
599
+ return tmp;
600
+ }
601
+ },
602
+ getViewport = function () {
603
+ var m = document.compatMode == 'CSS1Compat';
604
+ return {
605
+ l : window.pageXOffset || (m ? document.documentElement.scrollLeft : document.body.scrollLeft),
606
+ t : window.pageYOffset || (m ? document.documentElement.scrollTop : document.body.scrollTop),
607
+ w : window.innerWidth || (m ? document.documentElement.clientWidth : document.body.clientWidth),
608
+ h : window.innerHeight || (m ? document.documentElement.clientHeight : document.body.clientHeight)
609
+ };
610
+ },
611
+ isChildOf = function(parentEl, el, container) {
612
+ if (parentEl == el) {
613
+ return true;
614
+ }
615
+ if (parentEl.contains) {
616
+ return parentEl.contains(el);
617
+ }
618
+ if ( parentEl.compareDocumentPosition ) {
619
+ return !!(parentEl.compareDocumentPosition(el) & 16);
620
+ }
621
+ var prEl = el.parentNode;
622
+ while(prEl && prEl != container) {
623
+ if (prEl == parentEl)
624
+ return true;
625
+ prEl = prEl.parentNode;
626
+ }
627
+ return false;
628
+ },
629
+ show = function (ev) {
630
+ var cal = $('#' + $(this).data('datepickerId'));
631
+ if (!cal.is(':visible')) {
632
+ var calEl = cal.get(0);
633
+ fill(calEl);
634
+ var options = cal.data('datepicker');
635
+ options.onBeforeShow.apply(this, [cal.get(0)]);
636
+ var pos = $(this).offset();
637
+ var viewPort = getViewport();
638
+ var top = pos.top;
639
+ var left = pos.left;
640
+ var oldDisplay = $.curCSS(calEl, 'display');
641
+ cal.css({
642
+ visibility: 'hidden',
643
+ display: 'block'
644
+ });
645
+ layout(calEl);
646
+ switch (options.position){
647
+ case 'top':
648
+ top -= calEl.offsetHeight;
649
+ break;
650
+ case 'left':
651
+ left -= calEl.offsetWidth;
652
+ break;
653
+ case 'right':
654
+ left += this.offsetWidth;
655
+ break;
656
+ case 'bottom':
657
+ top += this.offsetHeight;
658
+ break;
659
+ }
660
+ if (top + calEl.offsetHeight > viewPort.t + viewPort.h) {
661
+ top = pos.top - calEl.offsetHeight;
662
+ }
663
+ if (top < viewPort.t) {
664
+ top = pos.top + this.offsetHeight + calEl.offsetHeight;
665
+ }
666
+ if (left + calEl.offsetWidth > viewPort.l + viewPort.w) {
667
+ left = pos.left - calEl.offsetWidth;
668
+ }
669
+ if (left < viewPort.l) {
670
+ left = pos.left + this.offsetWidth
671
+ }
672
+ cal.css({
673
+ visibility: 'visible',
674
+ display: 'block',
675
+ top: top + 'px',
676
+ left: left + 'px'
677
+ });
678
+ if (options.onShow.apply(this, [cal.get(0)]) != false) {
679
+ cal.show();
680
+ }
681
+ $(document).bind('mousedown', {cal: cal, trigger: this}, hide);
682
+ }
683
+ return false;
684
+ },
685
+ hide = function (ev) {
686
+ if (ev.target != ev.data.trigger && !isChildOf(ev.data.cal.get(0), ev.target, ev.data.cal.get(0))) {
687
+ if (ev.data.cal.data('datepicker').onHide.apply(this, [ev.data.cal.get(0)]) != false) {
688
+ ev.data.cal.hide();
689
+ }
690
+ $(document).unbind('mousedown', hide);
691
+ }
692
+ };
693
+ return {
694
+ init: function(options){
695
+ options = $.extend({}, defaults, options||{});
696
+ extendDate(options.locale);
697
+ options.calendars = Math.max(1, parseInt(options.calendars,10)||1);
698
+ options.mode = /single|multiple|range/.test(options.mode) ? options.mode : 'single';
699
+ return this.each(function(){
700
+ if (!$(this).data('datepicker')) {
701
+ options.el = this;
702
+ if (options.date.constructor == String) {
703
+ options.date = parseDate(options.date, options.format);
704
+ options.date.setHours(0,0,0,0);
705
+ }
706
+ if (options.mode != 'single') {
707
+ if (options.date.constructor != Array) {
708
+ options.date = [options.date.valueOf()];
709
+ if (options.mode == 'range') {
710
+ options.date.push(((new Date(options.date[0])).setHours(23,59,59,0)).valueOf());
711
+ }
712
+ } else {
713
+ for (var i = 0; i < options.date.length; i++) {
714
+ options.date[i] = (parseDate(options.date[i], options.format).setHours(0,0,0,0)).valueOf();
715
+ }
716
+ if (options.mode == 'range') {
717
+ options.date[1] = ((new Date(options.date[1])).setHours(23,59,59,0)).valueOf();
718
+ }
719
+ }
720
+ } else {
721
+ options.date = options.date.valueOf();
722
+ }
723
+ if (!options.current) {
724
+ options.current = new Date();
725
+ } else {
726
+ options.current = parseDate(options.current, options.format);
727
+ }
728
+ options.current.setDate(1);
729
+ options.current.setHours(0,0,0,0);
730
+ var id = 'datepicker_' + parseInt(Math.random() * 1000), cnt;
731
+ options.id = id;
732
+ $(this).data('datepickerId', options.id);
733
+ var cal = $(tpl.wrapper).attr('id', id).bind('click', click).data('datepicker', options);
734
+ if (options.className) {
735
+ cal.addClass(options.className);
736
+ }
737
+ var html = '';
738
+ for (var i = 0; i < options.calendars; i++) {
739
+ cnt = options.starts;
740
+ if (i > 0) {
741
+ html += tpl.space;
742
+ }
743
+ html += tmpl(tpl.head.join(''), {
744
+ week: options.locale.weekMin,
745
+ prev: options.prev,
746
+ next: options.next,
747
+ day1: options.locale.daysMin[(cnt++)%7],
748
+ day2: options.locale.daysMin[(cnt++)%7],
749
+ day3: options.locale.daysMin[(cnt++)%7],
750
+ day4: options.locale.daysMin[(cnt++)%7],
751
+ day5: options.locale.daysMin[(cnt++)%7],
752
+ day6: options.locale.daysMin[(cnt++)%7],
753
+ day7: options.locale.daysMin[(cnt++)%7]
754
+ });
755
+ }
756
+ cal
757
+ .find('tr:first').append(html)
758
+ .find('table').addClass(views[options.view]);
759
+ fill(cal.get(0));
760
+ if (options.flat) {
761
+ cal.appendTo(this).show().css('position', 'relative');
762
+ layout(cal.get(0));
763
+ } else {
764
+ cal.appendTo(document.body);
765
+ $(this).bind(options.eventName, show);
766
+ }
767
+ }
768
+ });
769
+ },
770
+ showPicker: function() {
771
+ return this.each( function () {
772
+ if ($(this).data('datepickerId')) {
773
+ show.apply(this);
774
+ }
775
+ });
776
+ },
777
+ hidePicker: function() {
778
+ return this.each( function () {
779
+ if ($(this).data('datepickerId')) {
780
+ $('#' + $(this).data('datepickerId')).hide();
781
+ }
782
+ });
783
+ },
784
+ setDate: function(date, shiftTo){
785
+ return this.each(function(){
786
+ if ($(this).data('datepickerId')) {
787
+ var cal = $('#' + $(this).data('datepickerId'));
788
+ var options = cal.data('datepicker');
789
+ options.date = date;
790
+ if (options.date.constructor == String) {
791
+ options.date = parseDate(options.date, options.format);
792
+ options.date.setHours(0,0,0,0);
793
+ }
794
+ if (options.mode != 'single') {
795
+ if (options.date.constructor != Array) {
796
+ options.date = [options.date.valueOf()];
797
+ if (options.mode == 'range') {
798
+ options.date.push(((new Date(options.date[0])).setHours(23,59,59,0)).valueOf());
799
+ }
800
+ } else {
801
+ for (var i = 0; i < options.date.length; i++) {
802
+ options.date[i] = (parseDate(options.date[i], options.format).setHours(0,0,0,0)).valueOf();
803
+ }
804
+ if (options.mode == 'range') {
805
+ options.date[1] = ((new Date(options.date[1])).setHours(23,59,59,0)).valueOf();
806
+ }
807
+ }
808
+ } else {
809
+ options.date = options.date.valueOf();
810
+ }
811
+ if (shiftTo) {
812
+ options.current = new Date (options.mode != 'single' ? options.date[0] : options.date);
813
+ }
814
+ fill(cal.get(0));
815
+ }
816
+ });
817
+ },
818
+ getDate: function(formated) {
819
+ if (this.size() > 0) {
820
+ return prepareDate($('#' + $(this).data('datepickerId')).data('datepicker'))[formated ? 0 : 1];
821
+ }
822
+ },
823
+ clear: function(){
824
+ return this.each(function(){
825
+ if ($(this).data('datepickerId')) {
826
+ var cal = $('#' + $(this).data('datepickerId'));
827
+ var options = cal.data('datepicker');
828
+ if (options.mode != 'single') {
829
+ options.date = [];
830
+ fill(cal.get(0));
831
+ }
832
+ }
833
+ });
834
+ },
835
+ fixLayout: function(){
836
+ return this.each(function(){
837
+ if ($(this).data('datepickerId')) {
838
+ var cal = $('#' + $(this).data('datepickerId'));
839
+ var options = cal.data('datepicker');
840
+ if (options.flat) {
841
+ layout(cal.get(0));
842
+ }
843
+ }
844
+ });
845
+ }
846
+ };
847
+ }();
848
+ $.fn.extend({
849
+ DatePicker: DatePicker.init,
850
+ DatePickerHide: DatePicker.hidePicker,
851
+ DatePickerShow: DatePicker.showPicker,
852
+ DatePickerSetDate: DatePicker.setDate,
853
+ DatePickerGetDate: DatePicker.getDate,
854
+ DatePickerClear: DatePicker.clear,
855
+ DatePickerLayout: DatePicker.fixLayout
856
+ });
857
+ })(jQuery);
858
+
859
+ (function(){
860
+ var cache = {};
861
+
862
+ this.tmpl = function tmpl(str, data){
863
+ // Figure out if we're getting a template, or if we need to
864
+ // load the template - and be sure to cache the result.
865
+ var fn = !/\W/.test(str) ?
866
+ cache[str] = cache[str] ||
867
+ tmpl(document.getElementById(str).innerHTML) :
868
+
869
+ // Generate a reusable function that will serve as a template
870
+ // generator (and which will be cached).
871
+ new Function("obj",
872
+ "var p=[],print=function(){p.push.apply(p,arguments);};" +
873
+
874
+ // Introduce the data as local variables using with(){}
875
+ "with(obj){p.push('" +
876
+
877
+ // Convert the template into pure JavaScript
878
+ str
879
+ .replace(/[\r\t\n]/g, " ")
880
+ .split("<%").join("\t")
881
+ .replace(/((^|%>)[^\t]*)'/g, "$1\r")
882
+ .replace(/\t=(.*?)%>/g, "',$1,'")
883
+ .split("\t").join("');")
884
+ .split("%>").join("p.push('")
885
+ .split("\r").join("\\'")
886
+ + "');}return p.join('');");
887
+
888
+ // Provide some basic currying to the user
889
+ return data ? fn( data ) : fn;
890
+ };
891
+ })();
js/jquery-tools-1.2.5.min.js ADDED
@@ -0,0 +1,115 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /*
2
+ * jQuery Tools 1.2.5 - The missing UI library for the Web
3
+ *
4
+ * [toolbox.flashembed, toolbox.history, toolbox.expose, toolbox.mousewheel, tabs, tabs.slideshow, tooltip, tooltip.slide, tooltip.dynamic, scrollable, scrollable.autoscroll, scrollable.navigator, overlay, overlay.apple, dateinput, rangeinput, validator]
5
+ *
6
+ * NO COPYRIGHTS OR LICENSES. DO WHAT YOU LIKE.
7
+ *
8
+ * http://flowplayer.org/tools/
9
+ *
10
+ * jquery.event.wheel.js - rev 1
11
+ * Copyright (c) 2008, Three Dub Media (http://threedubmedia.com)
12
+ * Liscensed under the MIT License (MIT-LICENSE.txt)
13
+ * http://www.opensource.org/licenses/mit-license.php
14
+ * Created: 2008-07-01 | Updated: 2008-07-14
15
+ *
16
+ * -----
17
+ *
18
+ * File generated: Wed Sep 22 06:12:53 GMT 2010
19
+ */
20
+ (function(){function f(a,b){if(b)for(var c in b)if(b.hasOwnProperty(c))a[c]=b[c];return a}function l(a,b){var c=[];for(var d in a)if(a.hasOwnProperty(d))c[d]=b(a[d]);return c}function m(a,b,c){if(e.isSupported(b.version))a.innerHTML=e.getHTML(b,c);else if(b.expressInstall&&e.isSupported([6,65]))a.innerHTML=e.getHTML(f(b,{src:b.expressInstall}),{MMredirectURL:location.href,MMplayerType:"PlugIn",MMdoctitle:document.title});else{if(!a.innerHTML.replace(/\s/g,"")){a.innerHTML="<h2>Flash version "+b.version+
21
+ " or greater is required</h2><h3>"+(g[0]>0?"Your version is "+g:"You have no flash plugin installed")+"</h3>"+(a.tagName=="A"?"<p>Click here to download latest version</p>":"<p>Download latest version from <a href='"+k+"'>here</a></p>");if(a.tagName=="A")a.onclick=function(){location.href=k}}if(b.onFail){var d=b.onFail.call(this);if(typeof d=="string")a.innerHTML=d}}if(i)window[b.id]=document.getElementById(b.id);f(this,{getRoot:function(){return a},getOptions:function(){return b},getConf:function(){return c},
22
+ getApi:function(){return a.firstChild}})}var i=document.all,k="http://www.adobe.com/go/getflashplayer",n=typeof jQuery=="function",o=/(\d+)[^\d]+(\d+)[^\d]*(\d*)/,j={width:"100%",height:"100%",id:"_"+(""+Math.random()).slice(9),allowfullscreen:true,allowscriptaccess:"always",quality:"high",version:[3,0],onFail:null,expressInstall:null,w3c:false,cachebusting:false};window.attachEvent&&window.attachEvent("onbeforeunload",function(){__flash_unloadHandler=function(){};__flash_savedUnloadHandler=function(){}});
23
+ window.flashembed=function(a,b,c){if(typeof a=="string")a=document.getElementById(a.replace("#",""));if(a){if(typeof b=="string")b={src:b};return new m(a,f(f({},j),b),c)}};var e=f(window.flashembed,{conf:j,getVersion:function(){var a,b;try{b=navigator.plugins["Shockwave Flash"].description.slice(16)}catch(c){try{b=(a=new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7"))&&a.GetVariable("$version")}catch(d){try{b=(a=new ActiveXObject("ShockwaveFlash.ShockwaveFlash.6"))&&a.GetVariable("$version")}catch(h){}}}return(b=
24
+ o.exec(b))?[b[1],b[3]]:[0,0]},asString:function(a){if(a===null||a===undefined)return null;var b=typeof a;if(b=="object"&&a.push)b="array";switch(b){case "string":a=a.replace(new RegExp('(["\\\\])',"g"),"\\$1");a=a.replace(/^\s?(\d+\.?\d+)%/,"$1pct");return'"'+a+'"';case "array":return"["+l(a,function(d){return e.asString(d)}).join(",")+"]";case "function":return'"function()"';case "object":b=[];for(var c in a)a.hasOwnProperty(c)&&b.push('"'+c+'":'+e.asString(a[c]));return"{"+b.join(",")+"}"}return String(a).replace(/\s/g,
25
+ " ").replace(/\'/g,'"')},getHTML:function(a,b){a=f({},a);var c='<object width="'+a.width+'" height="'+a.height+'" id="'+a.id+'" name="'+a.id+'"';if(a.cachebusting)a.src+=(a.src.indexOf("?")!=-1?"&":"?")+Math.random();c+=a.w3c||!i?' data="'+a.src+'" type="application/x-shockwave-flash"':' classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"';c+=">";if(a.w3c||i)c+='<param name="movie" value="'+a.src+'" />';a.width=a.height=a.id=a.w3c=a.src=null;a.onFail=a.version=a.expressInstall=null;for(var d in a)if(a[d])c+=
26
+ '<param name="'+d+'" value="'+a[d]+'" />';a="";if(b){for(var h in b)if(b[h]){d=b[h];a+=h+"="+(/function|object/.test(typeof d)?e.asString(d):d)+"&"}a=a.slice(0,-1);c+='<param name="flashvars" value=\''+a+"' />"}c+="</object>";return c},isSupported:function(a){return g[0]>a[0]||g[0]==a[0]&&g[1]>=a[1]}}),g=e.getVersion();if(n){jQuery.tools=jQuery.tools||{version:"1.2.5"};jQuery.tools.flashembed={conf:j};jQuery.fn.flashembed=function(a,b){return this.each(function(){$(this).data("flashembed",flashembed(this,
27
+ a,b))})}}})();
28
+ (function(b){function h(c){if(c){var a=d.contentWindow.document;a.open().close();a.location.hash=c}}var g,d,f,i;b.tools=b.tools||{version:"1.2.5"};b.tools.history={init:function(c){if(!i){if(b.browser.msie&&b.browser.version<"8"){if(!d){d=b("<iframe/>").attr("src","javascript:false;").hide().get(0);b("body").append(d);setInterval(function(){var a=d.contentWindow.document;a=a.location.hash;g!==a&&b.event.trigger("hash",a)},100);h(location.hash||"#")}}else setInterval(function(){var a=location.hash;
29
+ a!==g&&b.event.trigger("hash",a)},100);f=!f?c:f.add(c);c.click(function(a){var e=b(this).attr("href");d&&h(e);if(e.slice(0,1)!="#"){location.href="#"+e;return a.preventDefault()}});i=true}}};b(window).bind("hash",function(c,a){a?f.filter(function(){var e=b(this).attr("href");return e==a||e==a.replace("#","")}).trigger("history",[a]):f.eq(0).trigger("history",[a]);g=a});b.fn.history=function(c){b.tools.history.init(this);return this.bind("history",c)}})(jQuery);
30
+ (function(b){function k(){if(b.browser.msie){var a=b(document).height(),d=b(window).height();return[window.innerWidth||document.documentElement.clientWidth||document.body.clientWidth,a-d<20?d:a]}return[b(document).width(),b(document).height()]}function h(a){if(a)return a.call(b.mask)}b.tools=b.tools||{version:"1.2.5"};var l;l=b.tools.expose={conf:{maskId:"exposeMask",loadSpeed:"slow",closeSpeed:"fast",closeOnClick:true,closeOnEsc:true,zIndex:9998,opacity:0.8,startOpacity:0,color:"#fff",onLoad:null,
31
+ onClose:null}};var c,i,e,g,j;b.mask={load:function(a,d){if(e)return this;if(typeof a=="string")a={color:a};a=a||g;g=a=b.extend(b.extend({},l.conf),a);c=b("#"+a.maskId);if(!c.length){c=b("<div/>").attr("id",a.maskId);b("body").append(c)}var m=k();c.css({position:"absolute",top:0,left:0,width:m[0],height:m[1],display:"none",opacity:a.startOpacity,zIndex:a.zIndex});a.color&&c.css("backgroundColor",a.color);if(h(a.onBeforeLoad)===false)return this;a.closeOnEsc&&b(document).bind("keydown.mask",function(f){f.keyCode==
32
+ 27&&b.mask.close(f)});a.closeOnClick&&c.bind("click.mask",function(f){b.mask.close(f)});b(window).bind("resize.mask",function(){b.mask.fit()});if(d&&d.length){j=d.eq(0).css("zIndex");b.each(d,function(){var f=b(this);/relative|absolute|fixed/i.test(f.css("position"))||f.css("position","relative")});i=d.css({zIndex:Math.max(a.zIndex+1,j=="auto"?0:j)})}c.css({display:"block"}).fadeTo(a.loadSpeed,a.opacity,function(){b.mask.fit();h(a.onLoad);e="full"});e=true;return this},close:function(){if(e){if(h(g.onBeforeClose)===
33
+ false)return this;c.fadeOut(g.closeSpeed,function(){h(g.onClose);i&&i.css({zIndex:j});e=false});b(document).unbind("keydown.mask");c.unbind("click.mask");b(window).unbind("resize.mask")}return this},fit:function(){if(e){var a=k();c.css({width:a[0],height:a[1]})}},getMask:function(){return c},isLoaded:function(a){return a?e=="full":e},getConf:function(){return g},getExposed:function(){return i}};b.fn.mask=function(a){b.mask.load(a);return this};b.fn.expose=function(a){b.mask.load(a,this);return this}})(jQuery);
34
+ (function(b){function c(a){switch(a.type){case "mousemove":return b.extend(a.data,{clientX:a.clientX,clientY:a.clientY,pageX:a.pageX,pageY:a.pageY});case "DOMMouseScroll":b.extend(a,a.data);a.delta=-a.detail/3;break;case "mousewheel":a.delta=a.wheelDelta/120;break}a.type="wheel";return b.event.handle.call(this,a,a.delta)}b.fn.mousewheel=function(a){return this[a?"bind":"trigger"]("wheel",a)};b.event.special.wheel={setup:function(){b.event.add(this,d,c,{})},teardown:function(){b.event.remove(this,
35
+ d,c)}};var d=!b.browser.mozilla?"mousewheel":"DOMMouseScroll"+(b.browser.version<"1.9"?" mousemove":"")})(jQuery);
36
+ (function(c){function p(d,b,a){var e=this,l=d.add(this),h=d.find(a.tabs),i=b.jquery?b:d.children(b),j;h.length||(h=d.children());i.length||(i=d.parent().find(b));i.length||(i=c(b));c.extend(this,{click:function(f,g){var k=h.eq(f);if(typeof f=="string"&&f.replace("#","")){k=h.filter("[href*="+f.replace("#","")+"]");f=Math.max(h.index(k),0)}if(a.rotate){var n=h.length-1;if(f<0)return e.click(n,g);if(f>n)return e.click(0,g)}if(!k.length){if(j>=0)return e;f=a.initialIndex;k=h.eq(f)}if(f===j)return e;
37
+ g=g||c.Event();g.type="onBeforeClick";l.trigger(g,[f]);if(!g.isDefaultPrevented()){o[a.effect].call(e,f,function(){g.type="onClick";l.trigger(g,[f])});j=f;h.removeClass(a.current);k.addClass(a.current);return e}},getConf:function(){return a},getTabs:function(){return h},getPanes:function(){return i},getCurrentPane:function(){return i.eq(j)},getCurrentTab:function(){return h.eq(j)},getIndex:function(){return j},next:function(){return e.click(j+1)},prev:function(){return e.click(j-1)},destroy:function(){h.unbind(a.event).removeClass(a.current);
38
+ i.find("a[href^=#]").unbind("click.T");return e}});c.each("onBeforeClick,onClick".split(","),function(f,g){c.isFunction(a[g])&&c(e).bind(g,a[g]);e[g]=function(k){k&&c(e).bind(g,k);return e}});if(a.history&&c.fn.history){c.tools.history.init(h);a.event="history"}h.each(function(f){c(this).bind(a.event,function(g){e.click(f,g);return g.preventDefault()})});i.find("a[href^=#]").bind("click.T",function(f){e.click(c(this).attr("href"),f)});if(location.hash&&a.tabs=="a"&&d.find("[href="+location.hash+"]").length)e.click(location.hash);
39
+ else if(a.initialIndex===0||a.initialIndex>0)e.click(a.initialIndex)}c.tools=c.tools||{version:"1.2.5"};c.tools.tabs={conf:{tabs:"a",current:"current",onBeforeClick:null,onClick:null,effect:"default",initialIndex:0,event:"click",rotate:false,history:false},addEffect:function(d,b){o[d]=b}};var o={"default":function(d,b){this.getPanes().hide().eq(d).show();b.call()},fade:function(d,b){var a=this.getConf(),e=a.fadeOutSpeed,l=this.getPanes();e?l.fadeOut(e):l.hide();l.eq(d).fadeIn(a.fadeInSpeed,b)},slide:function(d,
40
+ b){this.getPanes().slideUp(200);this.getPanes().eq(d).slideDown(400,b)},ajax:function(d,b){this.getPanes().eq(0).load(this.getTabs().eq(d).attr("href"),b)}},m;c.tools.tabs.addEffect("horizontal",function(d,b){m||(m=this.getPanes().eq(0).width());this.getCurrentPane().animate({width:0},function(){c(this).hide()});this.getPanes().eq(d).animate({width:m},function(){c(this).show();b.call()})});c.fn.tabs=function(d,b){var a=this.data("tabs");if(a){a.destroy();this.removeData("tabs")}if(c.isFunction(b))b=
41
+ {onBeforeClick:b};b=c.extend({},c.tools.tabs.conf,b);this.each(function(){a=new p(c(this),d,b);c(this).data("tabs",a)});return b.api?a:this}})(jQuery);
42
+ (function(c){function p(g,a){function m(f){var e=c(f);return e.length<2?e:g.parent().find(f)}var b=this,i=g.add(this),d=g.data("tabs"),h,j=true,n=m(a.next).click(function(){d.next()}),k=m(a.prev).click(function(){d.prev()});c.extend(b,{getTabs:function(){return d},getConf:function(){return a},play:function(){if(h)return b;var f=c.Event("onBeforePlay");i.trigger(f);if(f.isDefaultPrevented())return b;h=setInterval(d.next,a.interval);j=false;i.trigger("onPlay");return b},pause:function(){if(!h)return b;
43
+ var f=c.Event("onBeforePause");i.trigger(f);if(f.isDefaultPrevented())return b;h=clearInterval(h);i.trigger("onPause");return b},stop:function(){b.pause();j=true}});c.each("onBeforePlay,onPlay,onBeforePause,onPause".split(","),function(f,e){c.isFunction(a[e])&&c(b).bind(e,a[e]);b[e]=function(q){return c(b).bind(e,q)}});a.autopause&&d.getTabs().add(n).add(k).add(d.getPanes()).hover(b.pause,function(){j||b.play()});a.autoplay&&b.play();a.clickable&&d.getPanes().click(function(){d.next()});if(!d.getConf().rotate){var l=
44
+ a.disabledClass;d.getIndex()||k.addClass(l);d.onBeforeClick(function(f,e){k.toggleClass(l,!e);n.toggleClass(l,e==d.getTabs().length-1)})}}var o;o=c.tools.tabs.slideshow={conf:{next:".forward",prev:".backward",disabledClass:"disabled",autoplay:false,autopause:true,interval:3E3,clickable:true,api:false}};c.fn.slideshow=function(g){var a=this.data("slideshow");if(a)return a;g=c.extend({},o.conf,g);this.each(function(){a=new p(c(this),g);c(this).data("slideshow",a)});return g.api?a:this}})(jQuery);
45
+ (function(f){function p(a,b,c){var h=c.relative?a.position().top:a.offset().top,d=c.relative?a.position().left:a.offset().left,i=c.position[0];h-=b.outerHeight()-c.offset[0];d+=a.outerWidth()+c.offset[1];if(/iPad/i.test(navigator.userAgent))h-=f(window).scrollTop();var j=b.outerHeight()+a.outerHeight();if(i=="center")h+=j/2;if(i=="bottom")h+=j;i=c.position[1];a=b.outerWidth()+a.outerWidth();if(i=="center")d-=a/2;if(i=="left")d-=a;return{top:h,left:d}}function u(a,b){var c=this,h=a.add(c),d,i=0,j=
46
+ 0,m=a.attr("title"),q=a.attr("data-tooltip"),r=o[b.effect],l,s=a.is(":input"),v=s&&a.is(":checkbox, :radio, select, :button, :submit"),t=a.attr("type"),k=b.events[t]||b.events[s?v?"widget":"input":"def"];if(!r)throw'Nonexistent effect "'+b.effect+'"';k=k.split(/,\s*/);if(k.length!=2)throw"Tooltip: bad events configuration for "+t;a.bind(k[0],function(e){clearTimeout(i);if(b.predelay)j=setTimeout(function(){c.show(e)},b.predelay);else c.show(e)}).bind(k[1],function(e){clearTimeout(j);if(b.delay)i=
47
+ setTimeout(function(){c.hide(e)},b.delay);else c.hide(e)});if(m&&b.cancelDefault){a.removeAttr("title");a.data("title",m)}f.extend(c,{show:function(e){if(!d){if(q)d=f(q);else if(b.tip)d=f(b.tip).eq(0);else if(m)d=f(b.layout).addClass(b.tipClass).appendTo(document.body).hide().append(m);else{d=a.next();d.length||(d=a.parent().next())}if(!d.length)throw"Cannot find tooltip for "+a;}if(c.isShown())return c;d.stop(true,true);var g=p(a,d,b);b.tip&&d.html(a.data("title"));e=e||f.Event();e.type="onBeforeShow";
48
+ h.trigger(e,[g]);if(e.isDefaultPrevented())return c;g=p(a,d,b);d.css({position:"absolute",top:g.top,left:g.left});l=true;r[0].call(c,function(){e.type="onShow";l="full";h.trigger(e)});g=b.events.tooltip.split(/,\s*/);if(!d.data("__set")){d.bind(g[0],function(){clearTimeout(i);clearTimeout(j)});g[1]&&!a.is("input:not(:checkbox, :radio), textarea")&&d.bind(g[1],function(n){n.relatedTarget!=a[0]&&a.trigger(k[1].split(" ")[0])});d.data("__set",true)}return c},hide:function(e){if(!d||!c.isShown())return c;
49
+ e=e||f.Event();e.type="onBeforeHide";h.trigger(e);if(!e.isDefaultPrevented()){l=false;o[b.effect][1].call(c,function(){e.type="onHide";h.trigger(e)});return c}},isShown:function(e){return e?l=="full":l},getConf:function(){return b},getTip:function(){return d},getTrigger:function(){return a}});f.each("onHide,onBeforeShow,onShow,onBeforeHide".split(","),function(e,g){f.isFunction(b[g])&&f(c).bind(g,b[g]);c[g]=function(n){n&&f(c).bind(g,n);return c}})}f.tools=f.tools||{version:"1.2.5"};f.tools.tooltip=
50
+ {conf:{effect:"toggle",fadeOutSpeed:"fast",predelay:0,delay:30,opacity:1,tip:0,position:["top","center"],offset:[0,0],relative:false,cancelDefault:true,events:{def:"mouseenter,mouseleave",input:"focus,blur",widget:"focus mouseenter,blur mouseleave",tooltip:"mouseenter,mouseleave"},layout:"<div/>",tipClass:"tooltip"},addEffect:function(a,b,c){o[a]=[b,c]}};var o={toggle:[function(a){var b=this.getConf(),c=this.getTip();b=b.opacity;b<1&&c.css({opacity:b});c.show();a.call()},function(a){this.getTip().hide();
51
+ a.call()}],fade:[function(a){var b=this.getConf();this.getTip().fadeTo(b.fadeInSpeed,b.opacity,a)},function(a){this.getTip().fadeOut(this.getConf().fadeOutSpeed,a)}]};f.fn.tooltip=function(a){var b=this.data("tooltip");if(b)return b;a=f.extend(true,{},f.tools.tooltip.conf,a);if(typeof a.position=="string")a.position=a.position.split(/,?\s/);this.each(function(){b=new u(f(this),a);f(this).data("tooltip",b)});return a.api?b:this}})(jQuery);
52
+ (function(d){var i=d.tools.tooltip;d.extend(i.conf,{direction:"up",bounce:false,slideOffset:10,slideInSpeed:200,slideOutSpeed:200,slideFade:!d.browser.msie});var e={up:["-","top"],down:["+","top"],left:["-","left"],right:["+","left"]};i.addEffect("slide",function(g){var a=this.getConf(),f=this.getTip(),b=a.slideFade?{opacity:a.opacity}:{},c=e[a.direction]||e.up;b[c[1]]=c[0]+"="+a.slideOffset;a.slideFade&&f.css({opacity:0});f.show().animate(b,a.slideInSpeed,g)},function(g){var a=this.getConf(),f=a.slideOffset,
53
+ b=a.slideFade?{opacity:0}:{},c=e[a.direction]||e.up,h=""+c[0];if(a.bounce)h=h=="+"?"-":"+";b[c[1]]=h+"="+f;this.getTip().animate(b,a.slideOutSpeed,function(){d(this).hide();g.call()})})})(jQuery);
54
+ (function(g){function j(a){var c=g(window),d=c.width()+c.scrollLeft(),h=c.height()+c.scrollTop();return[a.offset().top<=c.scrollTop(),d<=a.offset().left+a.width(),h<=a.offset().top+a.height(),c.scrollLeft()>=a.offset().left]}function k(a){for(var c=a.length;c--;)if(a[c])return false;return true}var i=g.tools.tooltip;i.dynamic={conf:{classNames:"top right bottom left"}};g.fn.dynamic=function(a){if(typeof a=="number")a={speed:a};a=g.extend({},i.dynamic.conf,a);var c=a.classNames.split(/\s/),d;this.each(function(){var h=
55
+ g(this).tooltip().onBeforeShow(function(e,f){e=this.getTip();var b=this.getConf();d||(d=[b.position[0],b.position[1],b.offset[0],b.offset[1],g.extend({},b)]);g.extend(b,d[4]);b.position=[d[0],d[1]];b.offset=[d[2],d[3]];e.css({visibility:"hidden",position:"absolute",top:f.top,left:f.left}).show();f=j(e);if(!k(f)){if(f[2]){g.extend(b,a.top);b.position[0]="top";e.addClass(c[0])}if(f[3]){g.extend(b,a.right);b.position[1]="right";e.addClass(c[1])}if(f[0]){g.extend(b,a.bottom);b.position[0]="bottom";e.addClass(c[2])}if(f[1]){g.extend(b,
56
+ a.left);b.position[1]="left";e.addClass(c[3])}if(f[0]||f[2])b.offset[0]*=-1;if(f[1]||f[3])b.offset[1]*=-1}e.css({visibility:"visible"}).hide()});h.onBeforeShow(function(){var e=this.getConf();this.getTip();setTimeout(function(){e.position=[d[0],d[1]];e.offset=[d[2],d[3]]},0)});h.onHide(function(){var e=this.getTip();e.removeClass(a.classNames)});ret=h});return a.api?ret:this}})(jQuery);
57
+ (function(e){function p(f,c){var b=e(c);return b.length<2?b:f.parent().find(c)}function u(f,c){var b=this,n=f.add(b),g=f.children(),l=0,j=c.vertical;k||(k=b);if(g.length>1)g=e(c.items,f);e.extend(b,{getConf:function(){return c},getIndex:function(){return l},getSize:function(){return b.getItems().size()},getNaviButtons:function(){return o.add(q)},getRoot:function(){return f},getItemWrap:function(){return g},getItems:function(){return g.children(c.item).not("."+c.clonedClass)},move:function(a,d){return b.seekTo(l+
58
+ a,d)},next:function(a){return b.move(1,a)},prev:function(a){return b.move(-1,a)},begin:function(a){return b.seekTo(0,a)},end:function(a){return b.seekTo(b.getSize()-1,a)},focus:function(){return k=b},addItem:function(a){a=e(a);if(c.circular){g.children("."+c.clonedClass+":last").before(a);g.children("."+c.clonedClass+":first").replaceWith(a.clone().addClass(c.clonedClass))}else g.append(a);n.trigger("onAddItem",[a]);return b},seekTo:function(a,d,h){a.jquery||(a*=1);if(c.circular&&a===0&&l==-1&&d!==
59
+ 0)return b;if(!c.circular&&a<0||a>b.getSize()||a<-1)return b;var i=a;if(a.jquery)a=b.getItems().index(a);else i=b.getItems().eq(a);var r=e.Event("onBeforeSeek");if(!h){n.trigger(r,[a,d]);if(r.isDefaultPrevented()||!i.length)return b}i=j?{top:-i.position().top}:{left:-i.position().left};l=a;k=b;if(d===undefined)d=c.speed;g.animate(i,d,c.easing,h||function(){n.trigger("onSeek",[a])});return b}});e.each(["onBeforeSeek","onSeek","onAddItem"],function(a,d){e.isFunction(c[d])&&e(b).bind(d,c[d]);b[d]=function(h){h&&
60
+ e(b).bind(d,h);return b}});if(c.circular){var s=b.getItems().slice(-1).clone().prependTo(g),t=b.getItems().eq(1).clone().appendTo(g);s.add(t).addClass(c.clonedClass);b.onBeforeSeek(function(a,d,h){if(!a.isDefaultPrevented())if(d==-1){b.seekTo(s,h,function(){b.end(0)});return a.preventDefault()}else d==b.getSize()&&b.seekTo(t,h,function(){b.begin(0)})});b.seekTo(0,0,function(){})}var o=p(f,c.prev).click(function(){b.prev()}),q=p(f,c.next).click(function(){b.next()});if(!c.circular&&b.getSize()>1){b.onBeforeSeek(function(a,
61
+ d){setTimeout(function(){if(!a.isDefaultPrevented()){o.toggleClass(c.disabledClass,d<=0);q.toggleClass(c.disabledClass,d>=b.getSize()-1)}},1)});c.initialIndex||o.addClass(c.disabledClass)}c.mousewheel&&e.fn.mousewheel&&f.mousewheel(function(a,d){if(c.mousewheel){b.move(d<0?1:-1,c.wheelSpeed||50);return false}});if(c.touch){var m={};g[0].ontouchstart=function(a){a=a.touches[0];m.x=a.clientX;m.y=a.clientY};g[0].ontouchmove=function(a){if(a.touches.length==1&&!g.is(":animated")){var d=a.touches[0],h=
62
+ m.x-d.clientX;d=m.y-d.clientY;b[j&&d>0||!j&&h>0?"next":"prev"]();a.preventDefault()}}}c.keyboard&&e(document).bind("keydown.scrollable",function(a){if(!(!c.keyboard||a.altKey||a.ctrlKey||e(a.target).is(":input")))if(!(c.keyboard!="static"&&k!=b)){var d=a.keyCode;if(j&&(d==38||d==40)){b.move(d==38?-1:1);return a.preventDefault()}if(!j&&(d==37||d==39)){b.move(d==37?-1:1);return a.preventDefault()}}});c.initialIndex&&b.seekTo(c.initialIndex,0,function(){})}e.tools=e.tools||{version:"1.2.5"};e.tools.scrollable=
63
+ {conf:{activeClass:"active",circular:false,clonedClass:"cloned",disabledClass:"disabled",easing:"swing",initialIndex:0,item:null,items:".items",keyboard:true,mousewheel:false,next:".next",prev:".prev",speed:400,vertical:false,touch:true,wheelSpeed:0}};var k;e.fn.scrollable=function(f){var c=this.data("scrollable");if(c)return c;f=e.extend({},e.tools.scrollable.conf,f);this.each(function(){c=new u(e(this),f);e(this).data("scrollable",c)});return f.api?c:this}})(jQuery);
64
+ (function(b){var f=b.tools.scrollable;f.autoscroll={conf:{autoplay:true,interval:3E3,autopause:true}};b.fn.autoscroll=function(c){if(typeof c=="number")c={interval:c};var d=b.extend({},f.autoscroll.conf,c),g;this.each(function(){var a=b(this).data("scrollable");if(a)g=a;var e,h=true;a.play=function(){if(!e){h=false;e=setInterval(function(){a.next()},d.interval)}};a.pause=function(){e=clearInterval(e)};a.stop=function(){a.pause();h=true};d.autopause&&a.getRoot().add(a.getNaviButtons()).hover(a.pause,
65
+ a.play);d.autoplay&&a.play()});return d.api?g:this}})(jQuery);
66
+ (function(d){function p(b,g){var h=d(g);return h.length<2?h:b.parent().find(g)}var m=d.tools.scrollable;m.navigator={conf:{navi:".navi",naviItem:null,activeClass:"active",indexed:false,idPrefix:null,history:false}};d.fn.navigator=function(b){if(typeof b=="string")b={navi:b};b=d.extend({},m.navigator.conf,b);var g;this.each(function(){function h(a,c,i){e.seekTo(c);if(j){if(location.hash)location.hash=a.attr("href").replace("#","")}else return i.preventDefault()}function f(){return k.find(b.naviItem||
67
+ "> *")}function n(a){var c=d("<"+(b.naviItem||"a")+"/>").click(function(i){h(d(this),a,i)}).attr("href","#"+a);a===0&&c.addClass(l);b.indexed&&c.text(a+1);b.idPrefix&&c.attr("id",b.idPrefix+a);return c.appendTo(k)}function o(a,c){a=f().eq(c.replace("#",""));a.length||(a=f().filter("[href="+c+"]"));a.click()}var e=d(this).data("scrollable"),k=b.navi.jquery?b.navi:p(e.getRoot(),b.navi),q=e.getNaviButtons(),l=b.activeClass,j=b.history&&d.fn.history;if(e)g=e;e.getNaviButtons=function(){return q.add(k)};
68
+ f().length?f().each(function(a){d(this).click(function(c){h(d(this),a,c)})}):d.each(e.getItems(),function(a){n(a)});e.onBeforeSeek(function(a,c){setTimeout(function(){if(!a.isDefaultPrevented()){var i=f().eq(c);!a.isDefaultPrevented()&&i.length&&f().removeClass(l).eq(c).addClass(l)}},1)});e.onAddItem(function(a,c){c=n(e.getItems().index(c));j&&c.history(o)});j&&f().history(o)});return b.api?g:this}})(jQuery);
69
+ (function(a){function t(d,b){var c=this,j=d.add(c),o=a(window),k,f,m,g=a.tools.expose&&(b.mask||b.expose),n=Math.random().toString().slice(10);if(g){if(typeof g=="string")g={color:g};g.closeOnClick=g.closeOnEsc=false}var p=b.target||d.attr("rel");f=p?a(p):d;if(!f.length)throw"Could not find Overlay: "+p;d&&d.index(f)==-1&&d.click(function(e){c.load(e);return e.preventDefault()});a.extend(c,{load:function(e){if(c.isOpened())return c;var h=q[b.effect];if(!h)throw'Overlay: cannot find effect : "'+b.effect+
70
+ '"';b.oneInstance&&a.each(s,function(){this.close(e)});e=e||a.Event();e.type="onBeforeLoad";j.trigger(e);if(e.isDefaultPrevented())return c;m=true;g&&a(f).expose(g);var i=b.top,r=b.left,u=f.outerWidth({margin:true}),v=f.outerHeight({margin:true});if(typeof i=="string")i=i=="center"?Math.max((o.height()-v)/2,0):parseInt(i,10)/100*o.height();if(r=="center")r=Math.max((o.width()-u)/2,0);h[0].call(c,{top:i,left:r},function(){if(m){e.type="onLoad";j.trigger(e)}});g&&b.closeOnClick&&a.mask.getMask().one("click",
71
+ c.close);b.closeOnClick&&a(document).bind("click."+n,function(l){a(l.target).parents(f).length||c.close(l)});b.closeOnEsc&&a(document).bind("keydown."+n,function(l){l.keyCode==27&&c.close(l)});return c},close:function(e){if(!c.isOpened())return c;e=e||a.Event();e.type="onBeforeClose";j.trigger(e);if(!e.isDefaultPrevented()){m=false;q[b.effect][1].call(c,function(){e.type="onClose";j.trigger(e)});a(document).unbind("click."+n).unbind("keydown."+n);g&&a.mask.close();return c}},getOverlay:function(){return f},
72
+ getTrigger:function(){return d},getClosers:function(){return k},isOpened:function(){return m},getConf:function(){return b}});a.each("onBeforeLoad,onStart,onLoad,onBeforeClose,onClose".split(","),function(e,h){a.isFunction(b[h])&&a(c).bind(h,b[h]);c[h]=function(i){i&&a(c).bind(h,i);return c}});k=f.find(b.close||".close");if(!k.length&&!b.close){k=a('<a class="close"></a>');f.prepend(k)}k.click(function(e){c.close(e)});b.load&&c.load()}a.tools=a.tools||{version:"1.2.5"};a.tools.overlay={addEffect:function(d,
73
+ b,c){q[d]=[b,c]},conf:{close:null,closeOnClick:true,closeOnEsc:true,closeSpeed:"fast",effect:"default",fixed:!a.browser.msie||a.browser.version>6,left:"center",load:false,mask:null,oneInstance:true,speed:"normal",target:null,top:"10%"}};var s=[],q={};a.tools.overlay.addEffect("default",function(d,b){var c=this.getConf(),j=a(window);if(!c.fixed){d.top+=j.scrollTop();d.left+=j.scrollLeft()}d.position=c.fixed?"fixed":"absolute";this.getOverlay().css(d).fadeIn(c.speed,b)},function(d){this.getOverlay().fadeOut(this.getConf().closeSpeed,
74
+ d)});a.fn.overlay=function(d){var b=this.data("overlay");if(b)return b;if(a.isFunction(d))d={onBeforeLoad:d};d=a.extend(true,{},a.tools.overlay.conf,d);this.each(function(){b=new t(a(this),d);s.push(b);a(this).data("overlay",b)});return d.api?b:this}})(jQuery);
75
+ (function(h){function k(d){var e=d.offset();return{top:e.top+d.height()/2,left:e.left+d.width()/2}}var l=h.tools.overlay,f=h(window);h.extend(l.conf,{start:{top:null,left:null},fadeInSpeed:"fast",zIndex:9999});function o(d,e){var a=this.getOverlay(),c=this.getConf(),g=this.getTrigger(),p=this,m=a.outerWidth({margin:true}),b=a.data("img"),n=c.fixed?"fixed":"absolute";if(!b){b=a.css("backgroundImage");if(!b)throw"background-image CSS property not set for overlay";b=b.slice(b.indexOf("(")+1,b.indexOf(")")).replace(/\"/g,
76
+ "");a.css("backgroundImage","none");b=h('<img src="'+b+'"/>');b.css({border:0,display:"none"}).width(m);h("body").append(b);a.data("img",b)}var i=c.start.top||Math.round(f.height()/2),j=c.start.left||Math.round(f.width()/2);if(g){g=k(g);i=g.top;j=g.left}if(c.fixed){i-=f.scrollTop();j-=f.scrollLeft()}else{d.top+=f.scrollTop();d.left+=f.scrollLeft()}b.css({position:"absolute",top:i,left:j,width:0,zIndex:c.zIndex}).show();d.position=n;a.css(d);b.animate({top:a.css("top"),left:a.css("left"),width:m},
77
+ c.speed,function(){a.css("zIndex",c.zIndex+1).fadeIn(c.fadeInSpeed,function(){p.isOpened()&&!h(this).index(a)?e.call():a.hide()})}).css("position",n)}function q(d){var e=this.getOverlay().hide(),a=this.getConf(),c=this.getTrigger();e=e.data("img");var g={top:a.start.top,left:a.start.left,width:0};c&&h.extend(g,k(c));a.fixed&&e.css({position:"absolute"}).animate({top:"+="+f.scrollTop(),left:"+="+f.scrollLeft()},0);e.animate(g,a.closeSpeed,d)}l.addEffect("apple",o,q)})(jQuery);
78
+ (function(d){function R(a,c){return 32-(new Date(a,c,32)).getDate()}function S(a,c){a=""+a;for(c=c||2;a.length<c;)a="0"+a;return a}function T(a,c,j){var q=a.getDate(),h=a.getDay(),r=a.getMonth();a=a.getFullYear();var f={d:q,dd:S(q),ddd:B[j].shortDays[h],dddd:B[j].days[h],m:r+1,mm:S(r+1),mmm:B[j].shortMonths[r],mmmm:B[j].months[r],yy:String(a).slice(2),yyyy:a};c=c.replace(X,function(s){return s in f?f[s]:s.slice(1,s.length-1)});return Y.html(c).html()}function v(a){return parseInt(a,10)}function U(a,
79
+ c){return a.getFullYear()===c.getFullYear()&&a.getMonth()==c.getMonth()&&a.getDate()==c.getDate()}function C(a){if(a){if(a.constructor==Date)return a;if(typeof a=="string"){var c=a.split("-");if(c.length==3)return new Date(v(c[0]),v(c[1])-1,v(c[2]));if(!/^-?\d+$/.test(a))return;a=v(a)}c=new Date;c.setDate(c.getDate()+a);return c}}function Z(a,c){function j(b,e,g){n=b;D=b.getFullYear();E=b.getMonth();G=b.getDate();g=g||d.Event("api");g.type="change";H.trigger(g,[b]);if(!g.isDefaultPrevented()){a.val(T(b,
80
+ e.format,e.lang));a.data("date",b);h.hide(g)}}function q(b){b.type="onShow";H.trigger(b);d(document).bind("keydown.d",function(e){if(e.ctrlKey)return true;var g=e.keyCode;if(g==8){a.val("");return h.hide(e)}if(g==27)return h.hide(e);if(d(V).index(g)>=0){if(!w){h.show(e);return e.preventDefault()}var i=d("#"+f.weeks+" a"),t=d("."+f.focus),o=i.index(t);t.removeClass(f.focus);if(g==74||g==40)o+=7;else if(g==75||g==38)o-=7;else if(g==76||g==39)o+=1;else if(g==72||g==37)o-=1;if(o>41){h.addMonth();t=d("#"+
81
+ f.weeks+" a:eq("+(o-42)+")")}else if(o<0){h.addMonth(-1);t=d("#"+f.weeks+" a:eq("+(o+42)+")")}else t=i.eq(o);t.addClass(f.focus);return e.preventDefault()}if(g==34)return h.addMonth();if(g==33)return h.addMonth(-1);if(g==36)return h.today();if(g==13)d(e.target).is("select")||d("."+f.focus).click();return d([16,17,18,9]).index(g)>=0});d(document).bind("click.d",function(e){var g=e.target;if(!d(g).parents("#"+f.root).length&&g!=a[0]&&(!L||g!=L[0]))h.hide(e)})}var h=this,r=new Date,f=c.css,s=B[c.lang],
82
+ k=d("#"+f.root),M=k.find("#"+f.title),L,I,J,D,E,G,n=a.attr("data-value")||c.value||a.val(),m=a.attr("min")||c.min,p=a.attr("max")||c.max,w;if(m===0)m="0";n=C(n)||r;m=C(m||c.yearRange[0]*365);p=C(p||c.yearRange[1]*365);if(!s)throw"Dateinput: invalid language: "+c.lang;if(a.attr("type")=="date"){var N=d("<input/>");d.each("class,disabled,id,maxlength,name,readonly,required,size,style,tabindex,title,value".split(","),function(b,e){N.attr(e,a.attr(e))});a.replaceWith(N);a=N}a.addClass(f.input);var H=
83
+ a.add(h);if(!k.length){k=d("<div><div><a/><div/><a/></div><div><div/><div/></div></div>").hide().css({position:"absolute"}).attr("id",f.root);k.children().eq(0).attr("id",f.head).end().eq(1).attr("id",f.body).children().eq(0).attr("id",f.days).end().eq(1).attr("id",f.weeks).end().end().end().find("a").eq(0).attr("id",f.prev).end().eq(1).attr("id",f.next);M=k.find("#"+f.head).find("div").attr("id",f.title);if(c.selectors){var z=d("<select/>").attr("id",f.month),A=d("<select/>").attr("id",f.year);M.html(z.add(A))}for(var $=
84
+ k.find("#"+f.days),O=0;O<7;O++)$.append(d("<span/>").text(s.shortDays[(O+c.firstDay)%7]));d("body").append(k)}if(c.trigger)L=d("<a/>").attr("href","#").addClass(f.trigger).click(function(b){h.show();return b.preventDefault()}).insertAfter(a);var K=k.find("#"+f.weeks);A=k.find("#"+f.year);z=k.find("#"+f.month);d.extend(h,{show:function(b){if(!(a.attr("readonly")||a.attr("disabled")||w)){b=b||d.Event();b.type="onBeforeShow";H.trigger(b);if(!b.isDefaultPrevented()){d.each(W,function(){this.hide()});
85
+ w=true;z.unbind("change").change(function(){h.setValue(A.val(),d(this).val())});A.unbind("change").change(function(){h.setValue(d(this).val(),z.val())});I=k.find("#"+f.prev).unbind("click").click(function(){I.hasClass(f.disabled)||h.addMonth(-1);return false});J=k.find("#"+f.next).unbind("click").click(function(){J.hasClass(f.disabled)||h.addMonth();return false});h.setValue(n);var e=a.offset();if(/iPad/i.test(navigator.userAgent))e.top-=d(window).scrollTop();k.css({top:e.top+a.outerHeight({margins:true})+
86
+ c.offset[0],left:e.left+c.offset[1]});if(c.speed)k.show(c.speed,function(){q(b)});else{k.show();q(b)}return h}}},setValue:function(b,e,g){var i=v(e)>=-1?new Date(v(b),v(e),v(g||1)):b||n;if(i<m)i=m;else if(i>p)i=p;b=i.getFullYear();e=i.getMonth();g=i.getDate();if(e==-1){e=11;b--}else if(e==12){e=0;b++}if(!w){j(i,c);return h}E=e;D=b;g=new Date(b,e,1-c.firstDay);g=g.getDay();var t=R(b,e),o=R(b,e-1),P;if(c.selectors){z.empty();d.each(s.months,function(x,F){m<new Date(b,x+1,-1)&&p>new Date(b,x,0)&&z.append(d("<option/>").html(F).attr("value",
87
+ x))});A.empty();i=r.getFullYear();for(var l=i+c.yearRange[0];l<i+c.yearRange[1];l++)m<=new Date(l+1,-1,1)&&p>new Date(l,0,0)&&A.append(d("<option/>").text(l));z.val(e);A.val(b)}else M.html(s.months[e]+" "+b);K.empty();I.add(J).removeClass(f.disabled);l=!g?-7:0;for(var u,y;l<(!g?35:42);l++){u=d("<a/>");if(l%7===0){P=d("<div/>").addClass(f.week);K.append(P)}if(l<g){u.addClass(f.off);y=o-g+l+1;i=new Date(b,e-1,y)}else if(l>=g+t){u.addClass(f.off);y=l-t-g+1;i=new Date(b,e+1,y)}else{y=l-g+1;i=new Date(b,
88
+ e,y);if(U(n,i))u.attr("id",f.current).addClass(f.focus);else U(r,i)&&u.attr("id",f.today)}m&&i<m&&u.add(I).addClass(f.disabled);p&&i>p&&u.add(J).addClass(f.disabled);u.attr("href","#"+y).text(y).data("date",i);P.append(u)}K.find("a").click(function(x){var F=d(this);if(!F.hasClass(f.disabled)){d("#"+f.current).removeAttr("id");F.attr("id",f.current);j(F.data("date"),c,x)}return false});f.sunday&&K.find(f.week).each(function(){var x=c.firstDay?7-c.firstDay:0;d(this).children().slice(x,x+1).addClass(f.sunday)});
89
+ return h},setMin:function(b,e){m=C(b);e&&n<m&&h.setValue(m);return h},setMax:function(b,e){p=C(b);e&&n>p&&h.setValue(p);return h},today:function(){return h.setValue(r)},addDay:function(b){return this.setValue(D,E,G+(b||1))},addMonth:function(b){return this.setValue(D,E+(b||1),G)},addYear:function(b){return this.setValue(D+(b||1),E,G)},hide:function(b){if(w){b=d.Event();b.type="onHide";H.trigger(b);d(document).unbind("click.d").unbind("keydown.d");if(b.isDefaultPrevented())return;k.hide();w=false}return h},
90
+ getConf:function(){return c},getInput:function(){return a},getCalendar:function(){return k},getValue:function(b){return b?T(n,b,c.lang):n},isOpen:function(){return w}});d.each(["onBeforeShow","onShow","change","onHide"],function(b,e){d.isFunction(c[e])&&d(h).bind(e,c[e]);h[e]=function(g){g&&d(h).bind(e,g);return h}});a.bind("focus click",h.show).keydown(function(b){var e=b.keyCode;if(!w&&d(V).index(e)>=0){h.show(b);return b.preventDefault()}return b.shiftKey||b.ctrlKey||b.altKey||e==9?true:b.preventDefault()});
91
+ C(a.val())&&j(n,c)}d.tools=d.tools||{version:"1.2.5"};var W=[],Q,V=[75,76,38,39,74,72,40,37],B={};Q=d.tools.dateinput={conf:{format:"mm/dd/yy",selectors:false,yearRange:[-5,5],lang:"en",offset:[0,0],speed:0,firstDay:0,min:undefined,max:undefined,trigger:false,css:{prefix:"cal",input:"date",root:0,head:0,title:0,prev:0,next:0,month:0,year:0,days:0,body:0,weeks:0,today:0,current:0,week:0,off:0,sunday:0,focus:0,disabled:0,trigger:0}},localize:function(a,c){d.each(c,function(j,q){c[j]=q.split(",")});
92
+ B[a]=c}};Q.localize("en",{months:"January,February,March,April,May,June,July,August,September,October,November,December",shortMonths:"Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec",days:"Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday",shortDays:"Sun,Mon,Tue,Wed,Thu,Fri,Sat"});var X=/d{1,4}|m{1,4}|yy(?:yy)?|"[^"]*"|'[^']*'/g,Y=d("<a/>");d.expr[":"].date=function(a){var c=a.getAttribute("type");return c&&c=="date"||!!d(a).data("dateinput")};d.fn.dateinput=function(a){if(this.data("dateinput"))return this;
93
+ a=d.extend(true,{},Q.conf,a);d.each(a.css,function(j,q){if(!q&&j!="prefix")a.css[j]=(a.css.prefix||"")+(q||j)});var c;this.each(function(){var j=new Z(d(this),a);W.push(j);j=j.getInput().data("dateinput",j);c=c?c.add(j):j});return c?c:this}})(jQuery);
94
+ (function(e){function F(d,a){a=Math.pow(10,a);return Math.round(d*a)/a}function q(d,a){if(a=parseInt(d.css(a),10))return a;return(d=d[0].currentStyle)&&d.width&&parseInt(d.width,10)}function C(d){return(d=d.data("events"))&&d.onSlide}function G(d,a){function h(c,b,f,j){if(f===undefined)f=b/k*z;else if(j)f-=a.min;if(s)f=Math.round(f/s)*s;if(b===undefined||s)b=f*k/z;if(isNaN(f))return g;b=Math.max(0,Math.min(b,k));f=b/k*z;if(j||!n)f+=a.min;if(n)if(j)b=k-b;else f=a.max-f;f=F(f,t);var r=c.type=="click";
95
+ if(D&&l!==undefined&&!r){c.type="onSlide";A.trigger(c,[f,b]);if(c.isDefaultPrevented())return g}j=r?a.speed:0;r=r?function(){c.type="change";A.trigger(c,[f])}:null;if(n){m.animate({top:b},j,r);a.progress&&B.animate({height:k-b+m.width()/2},j)}else{m.animate({left:b},j,r);a.progress&&B.animate({width:b+m.width()/2},j)}l=f;H=b;d.val(f);return g}function o(){if(n=a.vertical||q(i,"height")>q(i,"width")){k=q(i,"height")-q(m,"height");u=i.offset().top+k}else{k=q(i,"width")-q(m,"width");u=i.offset().left}}
96
+ function v(){o();g.setValue(a.value!==undefined?a.value:a.min)}var g=this,p=a.css,i=e("<div><div/><a href='#'/></div>").data("rangeinput",g),n,l,u,k,H;d.before(i);var m=i.addClass(p.slider).find("a").addClass(p.handle),B=i.find("div").addClass(p.progress);e.each("min,max,step,value".split(","),function(c,b){c=d.attr(b);if(parseFloat(c))a[b]=parseFloat(c,10)});var z=a.max-a.min,s=a.step=="any"?0:a.step,t=a.precision;if(t===undefined)try{t=s.toString().split(".")[1].length}catch(I){t=0}if(d.attr("type")==
97
+ "range"){var w=e("<input/>");e.each("class,disabled,id,maxlength,name,readonly,required,size,style,tabindex,title,value".split(","),function(c,b){w.attr(b,d.attr(b))});w.val(a.value);d.replaceWith(w);d=w}d.addClass(p.input);var A=e(g).add(d),D=true;e.extend(g,{getValue:function(){return l},setValue:function(c,b){o();return h(b||e.Event("api"),undefined,c,true)},getConf:function(){return a},getProgress:function(){return B},getHandle:function(){return m},getInput:function(){return d},step:function(c,
98
+ b){b=b||e.Event();var f=a.step=="any"?1:a.step;g.setValue(l+f*(c||1),b)},stepUp:function(c){return g.step(c||1)},stepDown:function(c){return g.step(-c||-1)}});e.each("onSlide,change".split(","),function(c,b){e.isFunction(a[b])&&e(g).bind(b,a[b]);g[b]=function(f){f&&e(g).bind(b,f);return g}});m.drag({drag:false}).bind("dragStart",function(){o();D=C(e(g))||C(d)}).bind("drag",function(c,b,f){if(d.is(":disabled"))return false;h(c,n?b:f)}).bind("dragEnd",function(c){if(!c.isDefaultPrevented()){c.type=
99
+ "change";A.trigger(c,[l])}}).click(function(c){return c.preventDefault()});i.click(function(c){if(d.is(":disabled")||c.target==m[0])return c.preventDefault();o();var b=m.width()/2;h(c,n?k-u-b+c.pageY:c.pageX-u-b)});a.keyboard&&d.keydown(function(c){if(!d.attr("readonly")){var b=c.keyCode,f=e([75,76,38,33,39]).index(b)!=-1,j=e([74,72,40,34,37]).index(b)!=-1;if((f||j)&&!(c.shiftKey||c.altKey||c.ctrlKey)){if(f)g.step(b==33?10:1,c);else if(j)g.step(b==34?-10:-1,c);return c.preventDefault()}}});d.blur(function(c){var b=
100
+ e(this).val();b!==l&&g.setValue(b,c)});e.extend(d[0],{stepUp:g.stepUp,stepDown:g.stepDown});v();k||e(window).load(v)}e.tools=e.tools||{version:"1.2.5"};var E;E=e.tools.rangeinput={conf:{min:0,max:100,step:"any",steps:0,value:0,precision:undefined,vertical:0,keyboard:true,progress:false,speed:100,css:{input:"range",slider:"slider",progress:"progress",handle:"handle"}}};var x,y;e.fn.drag=function(d){document.ondragstart=function(){return false};d=e.extend({x:true,y:true,drag:true},d);x=x||e(document).bind("mousedown mouseup",
101
+ function(a){var h=e(a.target);if(a.type=="mousedown"&&h.data("drag")){var o=h.position(),v=a.pageX-o.left,g=a.pageY-o.top,p=true;x.bind("mousemove.drag",function(i){var n=i.pageX-v;i=i.pageY-g;var l={};if(d.x)l.left=n;if(d.y)l.top=i;if(p){h.trigger("dragStart");p=false}d.drag&&h.css(l);h.trigger("drag",[i,n]);y=h});a.preventDefault()}else try{y&&y.trigger("dragEnd")}finally{x.unbind("mousemove.drag");y=null}});return this.data("drag",true)};e.expr[":"].range=function(d){var a=d.getAttribute("type");
102
+ return a&&a=="range"||!!e(d).filter("input").data("rangeinput")};e.fn.rangeinput=function(d){if(this.data("rangeinput"))return this;d=e.extend(true,{},E.conf,d);var a;this.each(function(){var h=new G(e(this),e.extend(true,{},d));h=h.getInput().data("rangeinput",h);a=a?a.add(h):h});return a?a:this}})(jQuery);
103
+ (function(e){function t(a,b,c){var k=a.offset().top,f=a.offset().left,l=c.position.split(/,?\s+/),p=l[0];l=l[1];k-=b.outerHeight()-c.offset[0];f+=a.outerWidth()+c.offset[1];if(/iPad/i.test(navigator.userAgent))k-=e(window).scrollTop();c=b.outerHeight()+a.outerHeight();if(p=="center")k+=c/2;if(p=="bottom")k+=c;a=a.outerWidth();if(l=="center")f-=(a+b.outerWidth())/2;if(l=="left")f-=a;return{top:k,left:f}}function y(a){function b(){return this.getAttribute("type")==a}b.key="[type="+a+"]";return b}function u(a,
104
+ b,c){function k(g,d,i){if(!(!c.grouped&&g.length)){var j;if(i===false||e.isArray(i)){j=h.messages[d.key||d]||h.messages["*"];j=j[c.lang]||h.messages["*"].en;(d=j.match(/\$\d/g))&&e.isArray(i)&&e.each(d,function(m){j=j.replace(this,i[m])})}else j=i[c.lang]||i;g.push(j)}}var f=this,l=b.add(f);a=a.not(":button, :image, :reset, :submit");e.extend(f,{getConf:function(){return c},getForm:function(){return b},getInputs:function(){return a},reflow:function(){a.each(function(){var g=e(this),d=g.data("msg.el");
105
+ if(d){g=t(g,d,c);d.css({top:g.top,left:g.left})}});return f},invalidate:function(g,d){if(!d){var i=[];e.each(g,function(j,m){j=a.filter("[name='"+j+"']");if(j.length){j.trigger("OI",[m]);i.push({input:j,messages:[m]})}});g=i;d=e.Event()}d.type="onFail";l.trigger(d,[g]);d.isDefaultPrevented()||q[c.effect][0].call(f,g,d);return f},reset:function(g){g=g||a;g.removeClass(c.errorClass).each(function(){var d=e(this).data("msg.el");if(d){d.remove();e(this).data("msg.el",null)}}).unbind(c.errorInputEvent||
106
+ "");return f},destroy:function(){b.unbind(c.formEvent+".V").unbind("reset.V");a.unbind(c.inputEvent+".V").unbind("change.V");return f.reset()},checkValidity:function(g,d){g=g||a;g=g.not(":disabled");if(!g.length)return true;d=d||e.Event();d.type="onBeforeValidate";l.trigger(d,[g]);if(d.isDefaultPrevented())return d.result;var i=[];g.not(":radio:not(:checked)").each(function(){var m=[],n=e(this).data("messages",m),v=r&&n.is(":date")?"onHide.v":c.errorInputEvent+".v";n.unbind(v);e.each(w,function(){var o=
107
+ this,s=o[0];if(n.filter(s).length){o=o[1].call(f,n,n.val());if(o!==true){d.type="onBeforeFail";l.trigger(d,[n,s]);if(d.isDefaultPrevented())return false;var x=n.attr(c.messageAttr);if(x){m=[x];return false}else k(m,s,o)}}});if(m.length){i.push({input:n,messages:m});n.trigger("OI",[m]);c.errorInputEvent&&n.bind(v,function(o){f.checkValidity(n,o)})}if(c.singleError&&i.length)return false});var j=q[c.effect];if(!j)throw'Validator: cannot find effect "'+c.effect+'"';if(i.length){f.invalidate(i,d);return false}else{j[1].call(f,
108
+ g,d);d.type="onSuccess";l.trigger(d,[g]);g.unbind(c.errorInputEvent+".v")}return true}});e.each("onBeforeValidate,onBeforeFail,onFail,onSuccess".split(","),function(g,d){e.isFunction(c[d])&&e(f).bind(d,c[d]);f[d]=function(i){i&&e(f).bind(d,i);return f}});c.formEvent&&b.bind(c.formEvent+".V",function(g){if(!f.checkValidity(null,g))return g.preventDefault()});b.bind("reset.V",function(){f.reset()});a[0]&&a[0].validity&&a.each(function(){this.oninvalid=function(){return false}});if(b[0])b[0].checkValidity=
109
+ f.checkValidity;c.inputEvent&&a.bind(c.inputEvent+".V",function(g){f.checkValidity(e(this),g)});a.filter(":checkbox, select").filter("[required]").bind("change.V",function(g){var d=e(this);if(this.checked||d.is("select")&&e(this).val())q[c.effect][1].call(f,d,g)});var p=a.filter(":radio").change(function(g){f.checkValidity(p,g)});e(window).resize(function(){f.reflow()})}e.tools=e.tools||{version:"1.2.5"};var z=/\[type=([a-z]+)\]/,A=/^-?[0-9]*(\.[0-9]+)?$/,r=e.tools.dateinput,B=/^([a-z0-9_\.\-\+]+)@([\da-z\.\-]+)\.([a-z\.]{2,6})$/i,
110
+ C=/^(https?:\/\/)?[\da-z\.\-]+\.[a-z\.]{2,6}[#&+_\?\/\w \.\-=]*$/i,h;h=e.tools.validator={conf:{grouped:false,effect:"default",errorClass:"invalid",inputEvent:null,errorInputEvent:"keyup",formEvent:"submit",lang:"en",message:"<div/>",messageAttr:"data-message",messageClass:"error",offset:[0,0],position:"center right",singleError:false,speed:"normal"},messages:{"*":{en:"Please correct this value"}},localize:function(a,b){e.each(b,function(c,k){h.messages[c]=h.messages[c]||{};h.messages[c][a]=k})},
111
+ localizeFn:function(a,b){h.messages[a]=h.messages[a]||{};e.extend(h.messages[a],b)},fn:function(a,b,c){if(e.isFunction(b))c=b;else{if(typeof b=="string")b={en:b};this.messages[a.key||a]=b}if(b=z.exec(a))a=y(b[1]);w.push([a,c])},addEffect:function(a,b,c){q[a]=[b,c]}};var w=[],q={"default":[function(a){var b=this.getConf();e.each(a,function(c,k){c=k.input;c.addClass(b.errorClass);var f=c.data("msg.el");if(!f){f=e(b.message).addClass(b.messageClass).appendTo(document.body);c.data("msg.el",f)}f.css({visibility:"hidden"}).find("p").remove();
112
+ e.each(k.messages,function(l,p){e("<p/>").html(p).appendTo(f)});f.outerWidth()==f.parent().width()&&f.add(f.find("p")).css({display:"inline"});k=t(c,f,b);f.css({visibility:"visible",position:"absolute",top:k.top,left:k.left}).fadeIn(b.speed)})},function(a){var b=this.getConf();a.removeClass(b.errorClass).each(function(){var c=e(this).data("msg.el");c&&c.css({visibility:"hidden"})})}]};e.each("email,url,number".split(","),function(a,b){e.expr[":"][b]=function(c){return c.getAttribute("type")===b}});
113
+ e.fn.oninvalid=function(a){return this[a?"bind":"trigger"]("OI",a)};h.fn(":email","Please enter a valid email address",function(a,b){return!b||B.test(b)});h.fn(":url","Please enter a valid URL",function(a,b){return!b||C.test(b)});h.fn(":number","Please enter a numeric value.",function(a,b){return A.test(b)});h.fn("[max]","Please enter a value smaller than $1",function(a,b){if(b===""||r&&a.is(":date"))return true;a=a.attr("max");return parseFloat(b)<=parseFloat(a)?true:[a]});h.fn("[min]","Please enter a value larger than $1",
114
+ function(a,b){if(b===""||r&&a.is(":date"))return true;a=a.attr("min");return parseFloat(b)>=parseFloat(a)?true:[a]});h.fn("[required]","Please complete this mandatory field.",function(a,b){if(a.is(":checkbox"))return a.is(":checked");return!!b});h.fn("[pattern]",function(a){var b=new RegExp("^"+a.attr("pattern")+"$");return b.test(a.val())});e.fn.validator=function(a){var b=this.data("validator");if(b){b.destroy();this.removeData("validator")}a=e.extend(true,{},h.conf,a);if(this.is("form"))return this.each(function(){var c=
115
+ e(this);b=new u(c.find(":input"),c,a);c.data("validator",b)});else{b=new u(this,this.eq(0).closest("form"),a);return this.data("validator",b)}}})(jQuery);
language/all-in-one-event-calendar.mo CHANGED
Binary file
language/all-in-one-event-calendar.po CHANGED
@@ -1,23 +1,167 @@
1
- # Copyright (C) 2010 All-in-One Event Calendar Plugin
2
- # This file is distributed under the same license as the All-in-One Event Calendar Plugin package.
3
  msgid ""
4
  msgstr ""
5
- "Project-Id-Version: All-in-One Event Calendar Plugin 1.0.9\n"
6
  "Report-Msgid-Bugs-To: http://wordpress.org/tag/all-in-one-event-calendar\n"
7
- "POT-Creation-Date: 2011-10-03 16:47:28+00:00\n"
8
  "MIME-Version: 1.0\n"
9
  "Content-Type: text/plain; charset=UTF-8\n"
10
  "Content-Transfer-Encoding: 8bit\n"
11
- "PO-Revision-Date: 2011-10-03 20:23+0200\n"
12
- "Last-Translator: Yanislav Iliev <yani@the-seed.ca>\n"
13
  "Language-Team: The Seed Studio\n"
14
 
15
- #: app/helper/class-ai1ec-calendar-helper.php:601
16
- msgid "« Previous Events"
 
17
  msgstr ""
18
 
19
- #: app/helper/class-ai1ec-calendar-helper.php:608
20
- msgid "Next Events »"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
21
  msgstr ""
22
 
23
  #: app/helper/class-ai1ec-app-helper.php:147
@@ -90,415 +234,494 @@ msgctxt "Event tags taxonomy (singular)"
90
  msgid "Event Tag"
91
  msgstr ""
92
 
93
- #: app/helper/class-ai1ec-app-helper.php:313
 
 
 
 
 
 
 
 
 
 
 
 
 
 
94
  msgid "All Events <span class=\"update-plugins count-%d\" title=\"%d Pending Events\"><span class=\"update-count\">%d</span></span>"
95
  msgstr ""
96
 
97
- #: app/helper/class-ai1ec-app-helper.php:319
98
  msgid "All Events"
99
  msgstr ""
100
 
101
- #: app/helper/class-ai1ec-app-helper.php:395
102
  msgid "Event Details"
103
  msgstr ""
104
 
105
- #: app/helper/class-ai1ec-app-helper.php:412
106
  msgid "Post Date"
107
  msgstr ""
108
 
109
- #: app/helper/class-ai1ec-app-helper.php:413
110
  msgid "Event date/time"
111
  msgstr ""
112
 
113
- #: app/helper/class-ai1ec-app-helper.php:630
114
  msgid "%sTo set up the plugin: %s 1. Select an option in the <strong>Calendar page</strong> dropdown list. %s 2. Select an option in the <strong>Timezone</strong> dropdown list. %s 3. Click <strong>Update Settings</strong>. %s"
115
  msgstr ""
116
 
117
- #: app/helper/class-ai1ec-app-helper.php:632
118
  msgid "To set up the plugin: Select an option in the <strong>Calendar page</strong> dropdown list, the click <strong>Update Settings</strong>."
119
  msgstr ""
120
 
121
- #: app/helper/class-ai1ec-app-helper.php:634
122
  msgid "To set up the plugin: Select an option in the <strong>Timezone</strong> dropdown list, the click <strong>Update Settings</strong>."
123
  msgstr ""
124
 
125
- #: app/helper/class-ai1ec-app-helper.php:638
126
  msgid "The plugin is installed, but has not been configured. <a href=\"%s\">Click here to set it up now »</a>"
127
  msgstr ""
128
 
129
- #: app/helper/class-ai1ec-app-helper.php:644
130
  msgid "The plugin is installed, but has not been configured. Please log in as a WordPress Administrator to set it up."
131
  msgstr ""
132
 
133
- #: app/helper/class-ai1ec-events-helper.php:313
134
- msgid "No repeat"
 
135
  msgstr ""
136
 
137
- #: app/helper/class-ai1ec-events-helper.php:314
138
- #: app/helper/class-ai1ec-settings-helper.php:205
139
- msgid "Daily"
140
  msgstr ""
141
 
142
- #: app/helper/class-ai1ec-events-helper.php:315
143
- msgid "Mondays"
144
  msgstr ""
145
 
146
- #: app/helper/class-ai1ec-events-helper.php:316
147
- msgid "Tuesdays"
 
148
  msgstr ""
149
 
150
- #: app/helper/class-ai1ec-events-helper.php:317
151
- msgid "Wednesdays"
 
152
  msgstr ""
153
 
154
- #: app/helper/class-ai1ec-events-helper.php:318
155
- msgid "Thursdays"
 
156
  msgstr ""
157
 
158
- #: app/helper/class-ai1ec-events-helper.php:319
159
- msgid "Fridays"
 
160
  msgstr ""
161
 
162
- #: app/helper/class-ai1ec-events-helper.php:320
163
- msgid "Saturdays"
 
164
  msgstr ""
165
 
166
- #: app/helper/class-ai1ec-events-helper.php:321
167
- msgid "Sundays"
 
168
  msgstr ""
169
 
170
- #: app/helper/class-ai1ec-events-helper.php:322
171
- msgid "Tuesdays & Thursdays"
172
  msgstr ""
173
 
174
- #: app/helper/class-ai1ec-events-helper.php:323
175
- msgid "Mondays, Wednesdays & Fridays"
176
  msgstr ""
177
 
178
- #: app/helper/class-ai1ec-events-helper.php:324
179
- msgid "Weekdays"
180
  msgstr ""
181
 
182
- #: app/helper/class-ai1ec-events-helper.php:325
183
- msgid "Weekends"
184
  msgstr ""
185
 
186
- #: app/helper/class-ai1ec-events-helper.php:326
187
- msgid "Weekly"
188
  msgstr ""
189
 
190
- #: app/helper/class-ai1ec-events-helper.php:327
191
- msgid "Monthly"
192
  msgstr ""
193
 
194
- #: app/helper/class-ai1ec-events-helper.php:328
195
- msgid "Yearly"
196
  msgstr ""
197
 
198
- #: app/helper/class-ai1ec-events-helper.php:443
199
- msgid "times"
200
  msgstr ""
201
 
202
- #: app/helper/class-ai1ec-events-helper.php:967
203
- msgid "Never"
204
  msgstr ""
205
 
206
- #: app/helper/class-ai1ec-events-helper.php:968
207
- msgid "After"
208
  msgstr ""
209
 
210
- #: app/helper/class-ai1ec-events-helper.php:969
211
- #: app/view/box_time_and_date.php:74
212
- msgid "On date"
213
  msgstr ""
214
 
215
- #: app/helper/class-ai1ec-settings-helper.php:85
216
- msgid "- Auto-Create New Page -"
217
  msgstr ""
218
 
219
- #: app/helper/class-ai1ec-settings-helper.php:106
220
- msgid "View \"%s\" »"
221
  msgstr ""
222
 
223
- #: app/helper/class-ai1ec-settings-helper.php:148
224
- #: app/view/calendar.php:10
225
- #: app/view/calendar.php:11
226
- #: app/view/calendar.php:17
227
- msgid "Month"
228
  msgstr ""
229
 
230
- #: app/helper/class-ai1ec-settings-helper.php:151
231
- #: app/view/calendar.php:18
232
- #: app/controller/class-ai1ec-calendar-controller.php:280
233
- msgid "Agenda"
234
  msgstr ""
235
 
236
- #: app/helper/class-ai1ec-settings-helper.php:199
237
- msgid "Hourly"
 
 
 
 
238
  msgstr ""
239
 
240
- #: app/helper/class-ai1ec-settings-helper.php:202
241
- msgid "Twice Daily"
 
 
 
242
  msgstr ""
243
 
244
- #: app/helper/class-ai1ec-settings-helper.php:289
245
- msgid "Calendar"
 
 
 
246
  msgstr ""
247
 
248
- #: app/view/box_ics_import_settings.php:2
249
- msgid "Auto-refresh"
 
 
 
250
  msgstr ""
251
 
252
- #: app/view/box_ics_import_settings.php:8
253
- #: app/view/feed_row.php:3
254
- msgid "iCalendar/.ics Feed URL:"
255
  msgstr ""
256
 
257
- #: app/view/box_ics_import_settings.php:12
258
- msgid "Event category"
259
  msgstr ""
260
 
261
- #: app/view/box_ics_import_settings.php:18
262
- #: app/view/feed_row.php:15
263
- msgid "Tag with"
264
  msgstr ""
265
 
266
- #: app/view/box_ics_import_settings.php:22
267
- msgid "+ Add new subscription"
268
  msgstr ""
269
 
270
- #: app/view/calendar.php:27
271
- msgid "+ Post Your Event"
272
  msgstr ""
273
 
274
- #: app/view/calendar.php:36
275
- msgid "Clear Filters"
276
  msgstr ""
277
 
278
- #: app/view/calendar.php:36
279
- msgid "✘"
 
280
  msgstr ""
281
 
282
- #: app/view/calendar.php:37
283
- msgid "Filter:"
 
 
 
284
  msgstr ""
285
 
286
- #: app/view/calendar.php:42
287
- msgid "Categories ▾"
 
 
288
  msgstr ""
289
 
290
- #: app/view/calendar.php:64
291
- msgid "Tags ▾"
 
 
 
 
292
  msgstr ""
293
 
294
- #: app/view/calendar.php:101
295
- #: app/view/agenda-widget.php:67
296
- msgid "Subscribe to this calendar using your favourite calendar program (iCal, Outlook, etc.)"
 
297
  msgstr ""
298
 
299
- #: app/view/calendar.php:102
300
- #: app/view/agenda-widget.php:68
301
- msgid "✔ Subscribe"
 
 
302
  msgstr ""
303
 
304
- #: app/view/calendar.php:103
305
- msgid "to this filtered calendar"
306
  msgstr ""
307
 
308
- #: app/view/calendar.php:107
309
- #: app/view/agenda-widget.php:72
310
- msgid "Subscribe to this calendar in your Google Calendar"
311
  msgstr ""
312
 
313
- #: app/view/calendar.php:109
314
- msgid "Subscribe in Google Calendar"
315
  msgstr ""
316
 
317
- #. #-#-#-#-# plugin.pot (All-in-One Event Calendar Plugin 1.0.9) #-#-#-#-#
318
- #. Author of the plugin/theme
319
- #: app/view/box_the_seed_studio.php:3
320
- msgid "The Seed Studio"
321
  msgstr ""
322
 
323
- #: app/view/box_the_seed_studio.php:5
324
- msgid "The Seed Studio provides web development and support services for clients and web developers."
325
  msgstr ""
326
 
327
- #: app/view/box_the_seed_studio.php:11
328
- msgid "Follow @the_seed_studio"
329
  msgstr ""
330
 
331
- #: app/view/box_the_seed_studio.php:16
332
- msgid "Get Support<span> from one of our experienced pros</span>"
333
  msgstr ""
334
 
335
- #: app/view/box_the_seed_studio.php:18
336
- msgid "Support"
337
  msgstr ""
338
 
339
- #: app/view/box_the_seed_studio.php:20
340
- msgid "View plugin documentation"
341
  msgstr ""
342
 
343
- #: app/view/box_the_seed_studio.php:23
344
- msgid "You can also hire The Seed for support on a contract or per-hour basis for this plugin, for your website or for any of your Internet marketing needs (we can really help!)."
345
  msgstr ""
346
 
347
- #: app/view/box_the_seed_studio.php:26
348
- msgid "Plugin users: The Seed gives support priority to clients. For free support from other WordPress users, visit the plugin's forum."
349
  msgstr ""
350
 
351
- #: app/view/box_the_seed_studio.php:29
352
- msgid "Vote and Share"
353
  msgstr ""
354
 
355
- #: app/view/box_the_seed_studio.php:32
356
- msgid "This plugin is offered free to the Wordpress Community under the GPL3 license. All we ask is that you:"
357
  msgstr ""
358
 
359
- #: app/view/box_the_seed_studio.php:34
360
- msgid "<a href=\"http://wordpress.org/extend/plugins/all-in-one-event-calendar/\" target=\"_blank\">Give it a five-star rating on wordpress.org</a> (if you think it deserves it!)"
361
  msgstr ""
362
 
363
- #: app/view/box_the_seed_studio.php:35
364
- msgid "Link to the plugin page on our website"
 
 
 
365
  msgstr ""
366
 
367
- #: app/view/box_the_seed_studio.php:36
368
- msgid "Become a Fan on Facebook"
 
 
369
  msgstr ""
370
 
371
- #: app/view/box_the_seed_studio.php:37
372
- msgid "Follow us on Twitter"
373
  msgstr ""
374
 
375
- #: app/view/box_the_seed_studio.php:41
376
- msgid "Donate"
377
  msgstr ""
378
 
379
- #: app/view/box_the_seed_studio.php:43
380
- msgid "If you would like to help support development of this plugin, then by all means..."
381
  msgstr ""
382
 
383
- #: app/view/settings.php:5
384
- msgid "All-in-one Event Calendar"
385
  msgstr ""
386
 
387
- #: app/view/settings.php:17
388
- msgid "Update Settings"
389
  msgstr ""
390
 
391
- #: app/view/event-single.php:5
392
- #: app/view/event-excerpt.php:2
393
- #: app/view/event-multi.php:4
394
- msgid "When:"
395
  msgstr ""
396
 
397
- #: app/view/event-single.php:8
398
- msgid "Back to Calendar »"
399
  msgstr ""
400
 
401
- #: app/view/event-single.php:15
402
- #: app/view/event-multi.php:14
403
- msgid "Repeats:"
404
  msgstr ""
405
 
406
- #: app/view/event-single.php:20
407
- #: app/view/event-excerpt.php:4
408
- #: app/view/event-multi.php:20
409
- msgid "Where:"
410
  msgstr ""
411
 
412
- #: app/view/event-single.php:27
413
- msgid "Add this event to your favourite calendar program (iCal, Outlook, etc.)"
414
  msgstr ""
415
 
416
- #: app/view/event-single.php:28
417
- msgid " Add to Calendar"
418
  msgstr ""
419
 
420
- #: app/view/event-single.php:31
421
- msgid "Add this event to your Google Calendar"
422
  msgstr ""
423
 
424
- #: app/view/event-single.php:33
425
- msgid "Add to Google Calendar"
426
  msgstr ""
427
 
428
- #: app/view/event-single.php:40
429
- #: app/view/event-multi.php:33
430
- msgid "Cost:"
431
  msgstr ""
432
 
433
- #: app/view/event-single.php:46
434
- #: app/view/event-multi.php:39
435
- msgid "Contact:"
436
  msgstr ""
437
 
438
- #: app/view/event-single.php:52
439
- #: app/view/event-multi.php:45
440
- #: app/view/agenda.php:79
441
- msgid "Categories:"
442
  msgstr ""
443
 
444
- #: app/view/event-single.php:59
445
- #: app/view/event-multi.php:51
446
- #: app/view/agenda.php:85
447
- msgid "Tags:"
448
  msgstr ""
449
 
450
- #: app/view/box_time_and_date.php:2
451
- msgid "Event date and time"
452
  msgstr ""
453
 
454
- #: app/view/box_time_and_date.php:8
455
- msgid "All-day event"
456
  msgstr ""
457
 
458
- #: app/view/box_time_and_date.php:18
459
- msgid "Start date / time"
460
  msgstr ""
461
 
462
- #: app/view/box_time_and_date.php:31
463
- msgid "End date / time"
464
  msgstr ""
465
 
466
- #: app/view/box_time_and_date.php:44
467
- msgid "Repeat"
468
  msgstr ""
469
 
470
- #: app/view/box_time_and_date.php:54
471
- msgid "End"
 
472
  msgstr ""
473
 
474
- #: app/view/box_time_and_date.php:64
475
- msgid "Ending after"
 
476
  msgstr ""
477
 
478
- #: app/view/admin_notices.php:2
479
- msgid "All-in-One Event Calendar Notice:"
 
480
  msgstr ""
481
 
482
- #: app/view/import.php:6
483
- msgid "Successfully imported events:"
484
  msgstr ""
485
 
486
- #: app/view/event_categories-color_picker.php:5
487
- #: app/view/event_categories-color_picker.php:19
488
- msgid "Category Color"
489
  msgstr ""
490
 
491
- #: app/view/event_categories-color_picker.php:13
492
- #: app/view/event_categories-color_picker.php:25
493
- msgid "Events in this category will be identified by this color"
494
  msgstr ""
495
 
496
- #: app/view/event-single-footer.php:4
497
- msgid "This post was replicated from another site's <a class=\"ai1ec-ics-icon\" href=\"%s\" title=\"iCalendar feed\">calendar feed</a>."
 
 
498
  msgstr ""
499
 
500
- #: app/view/event-single-footer.php:8
501
- msgid "View original post »"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
502
  msgstr ""
503
 
504
  #: app/view/box_event_location.php:1
@@ -517,12 +740,92 @@ msgstr ""
517
  msgid "Show Google Map:"
518
  msgstr ""
519
 
520
- #: app/view/event-multi.php:7
521
- msgid "View in Calendar »"
522
  msgstr ""
523
 
524
- #: app/view/event-multi.php:24
525
- msgid "View Map »"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
526
  msgstr ""
527
 
528
  #: app/view/box_general_settings.php:1
@@ -562,391 +865,379 @@ msgid "events"
562
  msgstr ""
563
 
564
  #: app/view/box_general_settings.php:31
565
- msgid "<strong>Exclude</strong> events from search results"
566
  msgstr ""
567
 
568
  #: app/view/box_general_settings.php:37
569
- msgid "Show <strong>Post Your Event</strong> button above the calendar to privileged users"
570
  msgstr ""
571
 
572
  #: app/view/box_general_settings.php:43
573
- msgid "Hide <strong>Subscribe</strong>/<strong>Add to Calendar</strong> buttons in calendar and single event views"
574
  msgstr ""
575
 
576
  #: app/view/box_general_settings.php:49
577
- msgid "Hide <strong>Google Maps</strong> until clicked"
578
  msgstr ""
579
 
580
  #: app/view/box_general_settings.php:55
581
- msgid "Include <strong>event categories</strong> in post category lists"
582
- msgstr ""
583
-
584
- #: app/view/box_general_settings.php:59
585
- msgid "Adding/Editing Events"
586
- msgstr ""
587
-
588
- #: app/view/box_general_settings.php:63
589
- msgid "Input dates in <strong>US format</strong>"
590
- msgstr ""
591
-
592
- #: app/view/box_general_settings.php:69
593
- msgid "Use <strong>24h time</strong> in time pickers"
594
  msgstr ""
595
 
596
- #: app/view/box_general_settings.php:75
597
- msgid "Display <strong>Publish</strong> at bottom of Edit Event form"
598
  msgstr ""
599
 
600
- #: app/view/agenda-widget-form.php:2
601
- msgid "Title:"
602
  msgstr ""
603
 
604
- #: app/view/agenda-widget-form.php:6
605
- msgid "Number of events to show:"
606
  msgstr ""
607
 
608
- #: app/view/agenda-widget-form.php:11
609
- msgid "Show <strong>View Calendar</strong> button"
610
  msgstr ""
611
 
612
- #: app/view/agenda-widget-form.php:14
613
- msgid "Show <strong>Subscribe</strong> buttons"
614
  msgstr ""
615
 
616
- #: app/view/agenda-widget-form.php:17
617
- msgid "Hide this widget on calendar page"
618
  msgstr ""
619
 
620
- #: app/view/month.php:4
621
- #: app/view/agenda.php:12
622
- msgid "Today"
623
  msgstr ""
624
 
625
- #: app/view/month.php:50
626
- msgid "Summary:"
 
627
  msgstr ""
628
 
629
- #: app/view/month.php:53
630
- msgid "click anywhere for details"
631
  msgstr ""
632
 
633
- #: app/view/month.php:68
634
- #: app/view/agenda.php:57
635
- #: app/view/agenda.php:107
636
- msgid "(all-day)"
637
  msgstr ""
638
 
639
- #: app/view/agenda.php:5
640
- msgid "+ Expand All"
641
  msgstr ""
642
 
643
- #: app/view/agenda.php:8
644
- msgid "− Collapse All"
645
  msgstr ""
646
 
647
- #: app/view/agenda.php:28
648
- msgid "There are no upcoming events to display at this time."
649
  msgstr ""
650
 
651
- #: app/view/agenda.php:75
652
- msgid "Read more »"
653
  msgstr ""
654
 
655
- #: app/view/agenda-widget.php:11
656
- msgid "There are no upcoming events."
657
  msgstr ""
658
 
659
- #: app/view/agenda-widget.php:59
660
- msgid "View Calendar »"
 
 
661
  msgstr ""
662
 
663
- #: app/view/agenda-widget.php:74
664
- msgid "Add to Google"
665
  msgstr ""
666
 
667
- #: app/view/box_event_contact.php:1
668
- msgid "Organizer contact info"
669
  msgstr ""
670
 
671
- #: app/view/box_event_contact.php:7
672
- msgid "Contact name:"
673
  msgstr ""
674
 
675
- #: app/view/box_event_contact.php:17
676
- msgid "Phone:"
677
  msgstr ""
678
 
679
- #: app/view/box_event_contact.php:27
680
- msgid "E-mail:"
681
  msgstr ""
682
 
683
- #: app/view/class-ai1ec-agenda-widget.php:18
684
- #: app/view/class-ai1ec-agenda-widget.php:39
685
- msgid "Upcoming Events"
686
  msgstr ""
687
 
688
- #: app/view/class-ai1ec-agenda-widget.php:20
689
- msgid "All-in-One Event Calendar: Lists upcoming events in Agenda view"
690
  msgstr ""
691
 
692
- #: app/view/box_event_cost.php:1
693
- msgid "Event cost"
694
  msgstr ""
695
 
696
- #: app/view/box_event_cost.php:7
697
- msgid "Cost"
698
  msgstr ""
699
 
700
- #: app/view/event-map.php:2
701
- msgid "Click to view map"
702
  msgstr ""
703
 
704
- #: app/view/event-map.php:9
705
- msgid "View Full-Size Map »"
706
  msgstr ""
707
 
708
- #: app/view/box_eventbrite.php:1
709
- msgid "Eventbrite Ticketing"
710
  msgstr ""
711
 
712
- #: app/view/box_eventbrite.php:7
713
- msgid "Register this event with Eventbrite.com?"
714
  msgstr ""
715
 
716
- #: app/view/box_eventbrite.php:12
717
- msgid "Yes"
718
  msgstr ""
719
 
720
- #: app/view/box_eventbrite.php:14
721
- msgid "No"
722
  msgstr ""
723
 
724
- #: app/view/box_eventbrite.php:22
725
- msgid "Set up your first ticket"
726
  msgstr ""
727
 
728
- #: app/view/box_eventbrite.php:24
729
- msgid "To create multiple tickets per event, submit this form, then follow the link to Eventbrite."
730
  msgstr ""
731
 
732
- #: app/view/box_eventbrite.php:32
733
- msgid "Name"
734
  msgstr ""
735
 
736
- #: app/view/box_eventbrite.php:42
737
- msgid "Description"
738
  msgstr ""
739
 
740
- #: app/view/box_eventbrite.php:53
741
- msgid "Type"
742
  msgstr ""
743
 
744
- #: app/view/box_eventbrite.php:58
745
- msgid "Set Price"
746
  msgstr ""
747
 
748
- #: app/view/box_eventbrite.php:60
749
- msgid "Donation Based"
750
  msgstr ""
751
 
752
- #: app/view/box_eventbrite.php:68
753
- msgid "The price for this event's first ticket will be taken from the Cost field above."
754
  msgstr ""
755
 
756
- #: app/view/box_eventbrite.php:75
757
- msgid "Quantity"
758
  msgstr ""
759
 
760
- #: app/view/box_eventbrite.php:85
761
- msgid "Include Fee in Price"
762
  msgstr ""
763
 
764
- #: app/view/box_eventbrite.php:90
765
- msgid "Add Service Fee on top of price"
766
  msgstr ""
767
 
768
- #: app/view/box_eventbrite.php:92
769
- msgid "Include Service fee in price"
770
  msgstr ""
771
 
772
- #: app/view/box_eventbrite.php:98
773
- msgid "Payment Options"
774
  msgstr ""
775
 
776
- #: app/view/box_eventbrite.php:103
777
- msgid "Paypal"
778
  msgstr ""
779
 
780
- #: app/view/box_eventbrite.php:105
781
- msgid "Google Checkout"
782
  msgstr ""
783
 
784
- #: app/view/box_eventbrite.php:107
785
- msgid "Check"
786
  msgstr ""
787
 
788
- #: app/view/box_eventbrite.php:109
789
- msgid "Cash"
790
  msgstr ""
791
 
792
- #: app/view/box_eventbrite.php:111
793
- msgid "Send an Invoice"
 
794
  msgstr ""
795
 
796
- #: app/view/feed_row.php:9
797
- msgid "Event category:"
798
  msgstr ""
799
 
800
- #: app/view/feed_row.php:19
801
- msgid "× Delete"
 
 
802
  msgstr ""
803
 
804
- #: app/view/feed_row.php:20
805
- #: app/controller/class-ai1ec-events-controller.php:276
806
- msgid "Update"
 
807
  msgstr ""
808
 
809
- #: app/view/feed_row.php:22
810
- #: app/controller/class-ai1ec-settings-controller.php:215
811
- msgid "Flush 1 event"
812
- msgid_plural "Flush %s events"
813
- msgstr[0] ""
814
- msgstr[1] ""
815
-
816
- #: app/controller/class-ai1ec-events-controller.php:135
817
- msgid "This feed is already being imported."
818
  msgstr ""
819
 
820
- #: app/controller/class-ai1ec-events-controller.php:136
821
- msgid "Please enter a valid iCalendar URL."
822
  msgstr ""
823
 
824
- #: app/controller/class-ai1ec-events-controller.php:276
825
- msgid "Publish"
826
  msgstr ""
827
 
828
- #: app/controller/class-ai1ec-events-controller.php:278
829
- msgid "Submit for Review"
 
830
  msgstr ""
831
 
832
- #: app/controller/class-ai1ec-events-controller.php:472
833
- msgid "Event updated. <a href=\"%s\">View event</a>"
834
  msgstr ""
835
 
836
- #: app/controller/class-ai1ec-events-controller.php:473
837
- msgid "Custom field updated."
 
838
  msgstr ""
839
 
840
- #: app/controller/class-ai1ec-events-controller.php:474
841
- msgid "Custom field deleted."
 
842
  msgstr ""
843
 
844
- #: app/controller/class-ai1ec-events-controller.php:475
845
- msgid "Event updated."
846
  msgstr ""
847
 
848
- #. translators: %s: date and time of the revision
849
- #: app/controller/class-ai1ec-events-controller.php:477
850
- msgid "Event restored to revision from %s"
851
  msgstr ""
852
 
853
- #: app/controller/class-ai1ec-events-controller.php:478
854
- msgid "Event published. <a href=\"%s\">View event</a>"
855
  msgstr ""
856
 
857
- #: app/controller/class-ai1ec-events-controller.php:479
858
- msgid "Event saved."
859
  msgstr ""
860
 
861
- #: app/controller/class-ai1ec-events-controller.php:480
862
- msgid "Event submitted. <a target=\"_blank\" href=\"%s\">Preview event</a>"
863
  msgstr ""
864
 
865
- #: app/controller/class-ai1ec-events-controller.php:481
866
- msgid "Event scheduled for: <strong>%1$s</strong>. <a target=\"_blank\" href=\"%2$s\">Preview event</a>"
867
  msgstr ""
868
 
869
- #. translators: Publish box date format, see http:php.net/date
870
- #: app/controller/class-ai1ec-events-controller.php:483
871
- msgid "M j, Y @ G:i"
872
  msgstr ""
873
 
874
- #: app/controller/class-ai1ec-events-controller.php:484
875
- msgid "Event draft updated. <a target=\"_blank\" href=\"%s\">Preview event</a>"
876
  msgstr ""
877
 
878
- #: app/controller/class-ai1ec-app-controller.php:346
879
- #: app/controller/class-ai1ec-app-controller.php:347
880
- msgid "Settings"
881
  msgstr ""
882
 
883
- #: app/controller/class-ai1ec-settings-controller.php:82
884
- msgid "Settings Updated."
 
885
  msgstr ""
886
 
887
- #: app/controller/class-ai1ec-settings-controller.php:172
888
- msgid "Flushed %d events"
889
  msgstr ""
890
 
891
- #: app/controller/class-ai1ec-settings-controller.php:214
892
- msgid "Imported %d events"
893
  msgstr ""
894
 
895
- #: app/controller/class-ai1ec-settings-controller.php:266
896
- msgctxt "meta box"
897
- msgid "General Settings"
898
  msgstr ""
899
 
900
- #: app/controller/class-ai1ec-settings-controller.php:273
901
- msgctxt "meta box"
902
- msgid "The Seed Studio Support"
 
903
  msgstr ""
904
 
905
- #: app/controller/class-ai1ec-settings-controller.php:280
906
- msgctxt "meta box"
907
- msgid "ICS Import Settings"
 
908
  msgstr ""
909
 
910
- #: app/controller/class-ai1ec-settings-controller.php:344
911
- msgid "<a href=\"%s\">Settings</a>"
 
 
 
 
912
  msgstr ""
913
 
914
- #: app/controller/class-ai1ec-settings-controller.php:358
915
- msgid "<a href=\"%s\" target=\"_blank\">Donate</a>"
916
  msgstr ""
917
 
918
- #: app/controller/class-ai1ec-settings-controller.php:359
919
- msgid "<a href=\"%s\" target=\"_blank\">Get Support</a>"
920
  msgstr ""
921
 
922
- #: app/controller/class-ai1ec-importer-controller.php:91
923
- msgid "The Events Calendar → All-in-One Event Calendar"
 
924
  msgstr ""
925
 
926
- #: app/controller/class-ai1ec-importer-controller.php:92
927
- msgid "Imports events created using The Events Calendar plugin into the All-in-One Event Calendar"
 
928
  msgstr ""
929
 
930
- #: app/model/class-ai1ec-event.php:445
931
- msgid " (all-day)"
932
  msgstr ""
933
 
934
- #: app/model/class-ai1ec-event.php:584
935
- msgid "ending after <strong>%d</strong> time"
936
- msgid_plural "ending after <strong>%d</strong> times"
937
- msgstr[0] ""
938
- msgstr[1] ""
939
-
940
- #: app/model/class-ai1ec-event.php:595
941
- msgid "until <strong>%s</strong>"
942
  msgstr ""
943
 
944
- #: app/model/class-ai1ec-event.php:604
945
- msgid " or "
946
  msgstr ""
947
 
948
  #. Plugin Name of the plugin/theme
949
- msgid "All-in-One Event Calendar Plugin"
950
  msgstr ""
951
 
952
  #. Plugin URI of the plugin/theme
@@ -954,7 +1245,7 @@ msgid "http://theseednetwork.com/software/all-in-one-event-calendar-wordpress/"
954
  msgstr ""
955
 
956
  #. Description of the plugin/theme
957
- msgid "An event calendar system with month and agenda views, upcoming events widget, color-coded categories, recurrence, and import/export of .ics feeds."
958
  msgstr ""
959
 
960
  #. Author URI of the plugin/theme
1
+ # Copyright (C) 2012 All-in-One Event Calendar
2
+ # This file is distributed under the same license as the All-in-One Event Calendar package.
3
  msgid ""
4
  msgstr ""
5
+ "Project-Id-Version: All-in-One Event Calendar 1.3\n"
6
  "Report-Msgid-Bugs-To: http://wordpress.org/tag/all-in-one-event-calendar\n"
7
+ "POT-Creation-Date: 2012-03-01 20:50:01+00:00\n"
8
  "MIME-Version: 1.0\n"
9
  "Content-Type: text/plain; charset=UTF-8\n"
10
  "Content-Transfer-Encoding: 8bit\n"
11
+ "PO-Revision-Date: 2012-03-01 22:54+0200\n"
12
+ "Last-Translator: Yani Iliev <yani@the-seed.ca>\n"
13
  "Language-Team: The Seed Studio\n"
14
 
15
+ #: app/controller/class-ai1ec-app-controller.php:364
16
+ #: app/controller/class-ai1ec-app-controller.php:365
17
+ msgid "Settings"
18
  msgstr ""
19
 
20
+ #. translators: "%s" represents the week's starting date
21
+ #: app/controller/class-ai1ec-calendar-controller.php:326
22
+ #: app/helper/class-ai1ec-calendar-helper.php:717
23
+ #: app/helper/class-ai1ec-calendar-helper.php:726
24
+ msgid "Week of %s"
25
+ msgstr ""
26
+
27
+ #: app/controller/class-ai1ec-calendar-controller.php:326
28
+ msgid "F j"
29
+ msgstr ""
30
+
31
+ #: app/controller/class-ai1ec-calendar-controller.php:383
32
+ #: app/helper/class-ai1ec-settings-helper.php:155
33
+ #: app/view/calendar.php:26
34
+ msgid "Agenda"
35
+ msgstr ""
36
+
37
+ #: app/controller/class-ai1ec-events-controller.php:153
38
+ msgid "This feed is already being imported."
39
+ msgstr ""
40
+
41
+ #: app/controller/class-ai1ec-events-controller.php:154
42
+ msgid "Please enter a valid iCalendar URL."
43
+ msgstr ""
44
+
45
+ #: app/controller/class-ai1ec-events-controller.php:333
46
+ msgid "Publish"
47
+ msgstr ""
48
+
49
+ #: app/controller/class-ai1ec-events-controller.php:333
50
+ #: app/view/feed_row.php:20
51
+ msgid "Update"
52
+ msgstr ""
53
+
54
+ #: app/controller/class-ai1ec-events-controller.php:335
55
+ msgid "Submit for Review"
56
+ msgstr ""
57
+
58
+ #: app/controller/class-ai1ec-events-controller.php:458
59
+ msgid "Event updated. <a href=\"%s\">View event</a>"
60
+ msgstr ""
61
+
62
+ #: app/controller/class-ai1ec-events-controller.php:459
63
+ msgid "Custom field updated."
64
+ msgstr ""
65
+
66
+ #: app/controller/class-ai1ec-events-controller.php:460
67
+ msgid "Custom field deleted."
68
+ msgstr ""
69
+
70
+ #: app/controller/class-ai1ec-events-controller.php:461
71
+ msgid "Event updated."
72
+ msgstr ""
73
+
74
+ #. translators: %s: date and time of the revision
75
+ #: app/controller/class-ai1ec-events-controller.php:463
76
+ msgid "Event restored to revision from %s"
77
+ msgstr ""
78
+
79
+ #: app/controller/class-ai1ec-events-controller.php:464
80
+ msgid "Event published. <a href=\"%s\">View event</a>"
81
+ msgstr ""
82
+
83
+ #: app/controller/class-ai1ec-events-controller.php:465
84
+ msgid "Event saved."
85
+ msgstr ""
86
+
87
+ #: app/controller/class-ai1ec-events-controller.php:466
88
+ msgid "Event submitted. <a target=\"_blank\" href=\"%s\">Preview event</a>"
89
+ msgstr ""
90
+
91
+ #: app/controller/class-ai1ec-events-controller.php:467
92
+ msgid "Event scheduled for: <strong>%1$s</strong>. <a target=\"_blank\" href=\"%2$s\">Preview event</a>"
93
+ msgstr ""
94
+
95
+ #. translators: Publish box date format, see http:php.net/date
96
+ #: app/controller/class-ai1ec-events-controller.php:469
97
+ msgid "M j, Y @ G:i"
98
+ msgstr ""
99
+
100
+ #: app/controller/class-ai1ec-events-controller.php:470
101
+ msgid "Event draft updated. <a target=\"_blank\" href=\"%s\">Preview event</a>"
102
+ msgstr ""
103
+
104
+ #: app/controller/class-ai1ec-importer-controller.php:91
105
+ msgid "The Events Calendar → All-in-One Event Calendar"
106
+ msgstr ""
107
+
108
+ #: app/controller/class-ai1ec-importer-controller.php:92
109
+ msgid "Imports events created using The Events Calendar plugin into the All-in-One Event Calendar"
110
+ msgstr ""
111
+
112
+ #: app/controller/class-ai1ec-settings-controller.php:82
113
+ msgid "Settings Updated."
114
+ msgstr ""
115
+
116
+ #: app/controller/class-ai1ec-settings-controller.php:173
117
+ msgid "Flushed %d events"
118
+ msgstr ""
119
+
120
+ #: app/controller/class-ai1ec-settings-controller.php:181
121
+ #: app/controller/class-ai1ec-settings-controller.php:231
122
+ msgid "Invalid ICS feed ID"
123
+ msgstr ""
124
+
125
+ #: app/controller/class-ai1ec-settings-controller.php:216
126
+ msgid "No events were found"
127
+ msgstr ""
128
+
129
+ #: app/controller/class-ai1ec-settings-controller.php:221
130
+ msgid "Imported %d events"
131
+ msgstr ""
132
+
133
+ #: app/controller/class-ai1ec-settings-controller.php:222
134
+ #: app/view/feed_row.php:22
135
+ msgid "Flush 1 event"
136
+ msgid_plural "Flush %s events"
137
+ msgstr[0] ""
138
+ msgstr[1] ""
139
+
140
+ #: app/controller/class-ai1ec-settings-controller.php:274
141
+ msgctxt "meta box"
142
+ msgid "General Settings"
143
+ msgstr ""
144
+
145
+ #: app/controller/class-ai1ec-settings-controller.php:282
146
+ msgctxt "meta box"
147
+ msgid "The Seed Studio Support"
148
+ msgstr ""
149
+
150
+ #: app/controller/class-ai1ec-settings-controller.php:289
151
+ msgctxt "meta box"
152
+ msgid "ICS Import Settings"
153
+ msgstr ""
154
+
155
+ #: app/controller/class-ai1ec-settings-controller.php:338
156
+ msgid "<a href=\"%s\">Settings</a>"
157
+ msgstr ""
158
+
159
+ #: app/controller/class-ai1ec-settings-controller.php:352
160
+ msgid "<a href=\"%s\" target=\"_blank\">Donate</a>"
161
+ msgstr ""
162
+
163
+ #: app/controller/class-ai1ec-settings-controller.php:353
164
+ msgid "<a href=\"%s\" target=\"_blank\">Get Support</a>"
165
  msgstr ""
166
 
167
  #: app/helper/class-ai1ec-app-helper.php:147
234
  msgid "Event Tag"
235
  msgstr ""
236
 
237
+ #: app/helper/class-ai1ec-app-helper.php:221
238
+ msgctxt "Event feeds taxonomy"
239
+ msgid "Event Feeds"
240
+ msgstr ""
241
+
242
+ #: app/helper/class-ai1ec-app-helper.php:222
243
+ msgctxt "Event feed taxonomy (singular)"
244
+ msgid "Event Feed"
245
+ msgstr ""
246
+
247
+ #: app/helper/class-ai1ec-app-helper.php:310
248
+ msgid "Show All "
249
+ msgstr ""
250
+
251
+ #: app/helper/class-ai1ec-app-helper.php:342
252
  msgid "All Events <span class=\"update-plugins count-%d\" title=\"%d Pending Events\"><span class=\"update-count\">%d</span></span>"
253
  msgstr ""
254
 
255
+ #: app/helper/class-ai1ec-app-helper.php:348
256
  msgid "All Events"
257
  msgstr ""
258
 
259
+ #: app/helper/class-ai1ec-app-helper.php:426
260
  msgid "Event Details"
261
  msgstr ""
262
 
263
+ #: app/helper/class-ai1ec-app-helper.php:459
264
  msgid "Post Date"
265
  msgstr ""
266
 
267
+ #: app/helper/class-ai1ec-app-helper.php:460
268
  msgid "Event date/time"
269
  msgstr ""
270
 
271
+ #: app/helper/class-ai1ec-app-helper.php:684
272
  msgid "%sTo set up the plugin: %s 1. Select an option in the <strong>Calendar page</strong> dropdown list. %s 2. Select an option in the <strong>Timezone</strong> dropdown list. %s 3. Click <strong>Update Settings</strong>. %s"
273
  msgstr ""
274
 
275
+ #: app/helper/class-ai1ec-app-helper.php:686
276
  msgid "To set up the plugin: Select an option in the <strong>Calendar page</strong> dropdown list, the click <strong>Update Settings</strong>."
277
  msgstr ""
278
 
279
+ #: app/helper/class-ai1ec-app-helper.php:688
280
  msgid "To set up the plugin: Select an option in the <strong>Timezone</strong> dropdown list, the click <strong>Update Settings</strong>."
281
  msgstr ""
282
 
283
+ #: app/helper/class-ai1ec-app-helper.php:692
284
  msgid "The plugin is installed, but has not been configured. <a href=\"%s\">Click here to set it up now »</a>"
285
  msgstr ""
286
 
287
+ #: app/helper/class-ai1ec-app-helper.php:698
288
  msgid "The plugin is installed, but has not been configured. Please log in as a WordPress Administrator to set it up."
289
  msgstr ""
290
 
291
+ #: app/helper/class-ai1ec-calendar-helper.php:718
292
+ #: app/helper/class-ai1ec-calendar-helper.php:727
293
+ msgid "M j"
294
  msgstr ""
295
 
296
+ #: app/helper/class-ai1ec-calendar-helper.php:759
297
+ msgid "« Previous Events"
 
298
  msgstr ""
299
 
300
+ #: app/helper/class-ai1ec-calendar-helper.php:766
301
+ msgid "Next Events »"
302
  msgstr ""
303
 
304
+ #: app/helper/class-ai1ec-events-helper.php:372
305
+ #: app/helper/class-ai1ec-events-helper.php:394
306
+ msgid "No repeat"
307
  msgstr ""
308
 
309
+ #: app/helper/class-ai1ec-events-helper.php:373
310
+ #: app/helper/class-ai1ec-events-helper.php:395
311
+ msgid "Every day"
312
  msgstr ""
313
 
314
+ #: app/helper/class-ai1ec-events-helper.php:374
315
+ #: app/helper/class-ai1ec-events-helper.php:396
316
+ msgid "Every week"
317
  msgstr ""
318
 
319
+ #: app/helper/class-ai1ec-events-helper.php:375
320
+ #: app/helper/class-ai1ec-events-helper.php:397
321
+ msgid "Every month"
322
  msgstr ""
323
 
324
+ #: app/helper/class-ai1ec-events-helper.php:376
325
+ #: app/helper/class-ai1ec-events-helper.php:398
326
+ msgid "Every year"
327
  msgstr ""
328
 
329
+ #: app/helper/class-ai1ec-events-helper.php:378
330
+ #: app/helper/class-ai1ec-events-helper.php:400
331
+ msgid "Custom..."
332
  msgstr ""
333
 
334
+ #: app/helper/class-ai1ec-events-helper.php:521
335
+ msgid "first"
336
  msgstr ""
337
 
338
+ #: app/helper/class-ai1ec-events-helper.php:522
339
+ msgid "second"
340
  msgstr ""
341
 
342
+ #: app/helper/class-ai1ec-events-helper.php:523
343
+ msgid "third"
344
  msgstr ""
345
 
346
+ #: app/helper/class-ai1ec-events-helper.php:524
347
+ msgid "fourth"
348
  msgstr ""
349
 
350
+ #: app/helper/class-ai1ec-events-helper.php:526
351
+ msgid "last"
352
  msgstr ""
353
 
354
+ #: app/helper/class-ai1ec-events-helper.php:531
355
+ msgid "Sunday"
356
  msgstr ""
357
 
358
+ #: app/helper/class-ai1ec-events-helper.php:532
359
+ msgid "Monday"
360
  msgstr ""
361
 
362
+ #: app/helper/class-ai1ec-events-helper.php:533
363
+ msgid "Tuesday"
364
  msgstr ""
365
 
366
+ #: app/helper/class-ai1ec-events-helper.php:534
367
+ msgid "Wednesday"
368
  msgstr ""
369
 
370
+ #: app/helper/class-ai1ec-events-helper.php:535
371
+ msgid "Thursday"
372
  msgstr ""
373
 
374
+ #: app/helper/class-ai1ec-events-helper.php:536
375
+ msgid "Friday"
 
376
  msgstr ""
377
 
378
+ #: app/helper/class-ai1ec-events-helper.php:537
379
+ msgid "Saturday"
380
  msgstr ""
381
 
382
+ #: app/helper/class-ai1ec-events-helper.php:539
383
+ msgid "day"
384
  msgstr ""
385
 
386
+ #: app/helper/class-ai1ec-events-helper.php:540
387
+ msgid "weekday"
 
 
 
388
  msgstr ""
389
 
390
+ #: app/helper/class-ai1ec-events-helper.php:541
391
+ msgid "weekend day"
 
 
392
  msgstr ""
393
 
394
+ #: app/helper/class-ai1ec-events-helper.php:607
395
+ #: app/helper/class-ai1ec-events-helper.php:626
396
+ #: app/helper/class-ai1ec-events-helper.php:1676
397
+ #: app/helper/class-ai1ec-settings-helper.php:237
398
+ #: app/view/box_repeat.php:2
399
+ msgid "Daily"
400
  msgstr ""
401
 
402
+ #: app/helper/class-ai1ec-events-helper.php:608
403
+ #: app/helper/class-ai1ec-events-helper.php:627
404
+ #: app/helper/class-ai1ec-events-helper.php:1688
405
+ #: app/view/box_repeat.php:3
406
+ msgid "Weekly"
407
  msgstr ""
408
 
409
+ #: app/helper/class-ai1ec-events-helper.php:609
410
+ #: app/helper/class-ai1ec-events-helper.php:628
411
+ #: app/helper/class-ai1ec-events-helper.php:1700
412
+ #: app/view/box_repeat.php:4
413
+ msgid "Monthly"
414
  msgstr ""
415
 
416
+ #: app/helper/class-ai1ec-events-helper.php:610
417
+ #: app/helper/class-ai1ec-events-helper.php:629
418
+ #: app/helper/class-ai1ec-events-helper.php:1712
419
+ #: app/view/box_repeat.php:5
420
+ msgid "Yearly"
421
  msgstr ""
422
 
423
+ #: app/helper/class-ai1ec-events-helper.php:651
424
+ msgid "day(s)"
 
425
  msgstr ""
426
 
427
+ #: app/helper/class-ai1ec-events-helper.php:680
428
+ msgid "week(s)"
429
  msgstr ""
430
 
431
+ #: app/helper/class-ai1ec-events-helper.php:750
432
+ msgid "month(s)"
 
433
  msgstr ""
434
 
435
+ #: app/helper/class-ai1ec-events-helper.php:773
436
+ msgid "year(s)"
437
  msgstr ""
438
 
439
+ #: app/helper/class-ai1ec-events-helper.php:1360
440
+ msgid "Never"
441
  msgstr ""
442
 
443
+ #: app/helper/class-ai1ec-events-helper.php:1361
444
+ msgid "After"
445
  msgstr ""
446
 
447
+ #: app/helper/class-ai1ec-events-helper.php:1362
448
+ #: app/view/box_repeat.php:28
449
+ msgid "On date"
450
  msgstr ""
451
 
452
+ #: app/helper/class-ai1ec-events-helper.php:1555
453
+ #: app/helper/class-ai1ec-events-helper.php:1564
454
+ #: app/helper/class-ai1ec-events-helper.php:1572
455
+ msgctxt "Recurrence editor - weekly tab"
456
+ msgid "on"
457
  msgstr ""
458
 
459
+ #: app/helper/class-ai1ec-events-helper.php:1560
460
+ #: app/helper/class-ai1ec-events-helper.php:1589
461
+ #: app/helper/class-ai1ec-events-helper.php:1627
462
+ msgid "and"
463
  msgstr ""
464
 
465
+ #: app/helper/class-ai1ec-events-helper.php:1585
466
+ #: app/helper/class-ai1ec-events-helper.php:1592
467
+ #: app/helper/class-ai1ec-events-helper.php:1598
468
+ #: app/helper/class-ai1ec-events-helper.php:1609
469
+ msgctxt "Recurrence editor - monthly tab"
470
+ msgid "on"
471
  msgstr ""
472
 
473
+ #: app/helper/class-ai1ec-events-helper.php:1585
474
+ #: app/helper/class-ai1ec-events-helper.php:1592
475
+ #: app/helper/class-ai1ec-events-helper.php:1598
476
+ msgid "of the month"
477
  msgstr ""
478
 
479
+ #: app/helper/class-ai1ec-events-helper.php:1622
480
+ #: app/helper/class-ai1ec-events-helper.php:1630
481
+ #: app/helper/class-ai1ec-events-helper.php:1637
482
+ msgctxt "Recurrence editor - yearly tab"
483
+ msgid "on"
484
  msgstr ""
485
 
486
+ #: app/helper/class-ai1ec-events-helper.php:1679
487
+ msgid "Every other day"
488
  msgstr ""
489
 
490
+ #: app/helper/class-ai1ec-events-helper.php:1681
491
+ msgid "Every %d days"
 
492
  msgstr ""
493
 
494
+ #: app/helper/class-ai1ec-events-helper.php:1691
495
+ msgid "Every other week"
496
  msgstr ""
497
 
498
+ #: app/helper/class-ai1ec-events-helper.php:1693
499
+ msgid "Every %d weeks"
 
 
500
  msgstr ""
501
 
502
+ #: app/helper/class-ai1ec-events-helper.php:1703
503
+ msgid "Every other month"
504
  msgstr ""
505
 
506
+ #: app/helper/class-ai1ec-events-helper.php:1705
507
+ msgid "Every %d months"
508
  msgstr ""
509
 
510
+ #: app/helper/class-ai1ec-events-helper.php:1715
511
+ msgid "Every other year"
512
  msgstr ""
513
 
514
+ #: app/helper/class-ai1ec-events-helper.php:1717
515
+ msgid "Every %d years"
516
  msgstr ""
517
 
518
+ #: app/helper/class-ai1ec-events-helper.php:1737
519
+ msgid "until %s"
520
  msgstr ""
521
 
522
+ #: app/helper/class-ai1ec-events-helper.php:1740
523
+ msgid "for %d occurrences"
524
  msgstr ""
525
 
526
+ #: app/helper/class-ai1ec-events-helper.php:1742
527
+ msgid "forever"
528
  msgstr ""
529
 
530
+ #: app/helper/class-ai1ec-events-helper.php:1839
531
+ msgid "times"
532
  msgstr ""
533
 
534
+ #: app/helper/class-ai1ec-settings-helper.php:85
535
+ msgid "- Auto-Create New Page -"
536
  msgstr ""
537
 
538
+ #: app/helper/class-ai1ec-settings-helper.php:107
539
+ msgid "View \"%s\" »"
540
  msgstr ""
541
 
542
+ #: app/helper/class-ai1ec-settings-helper.php:149
543
+ #: app/view/calendar.php:11
544
+ #: app/view/calendar.php:12
545
+ #: app/view/calendar.php:25
546
+ msgid "Month"
547
  msgstr ""
548
 
549
+ #: app/helper/class-ai1ec-settings-helper.php:152
550
+ #: app/view/calendar.php:18
551
+ #: app/view/calendar.php:19
552
+ msgid "Week"
553
  msgstr ""
554
 
555
+ #: app/helper/class-ai1ec-settings-helper.php:204
556
+ msgid "Default (d/m/y)"
557
  msgstr ""
558
 
559
+ #: app/helper/class-ai1ec-settings-helper.php:207
560
+ msgid "US (m/d/y)"
561
  msgstr ""
562
 
563
+ #: app/helper/class-ai1ec-settings-helper.php:210
564
+ msgid "ISO 8601 (y-m-d)"
565
  msgstr ""
566
 
567
+ #: app/helper/class-ai1ec-settings-helper.php:213
568
+ msgid "Dotted (m.d.y)"
569
  msgstr ""
570
 
571
+ #: app/helper/class-ai1ec-settings-helper.php:231
572
+ msgid "Hourly"
573
  msgstr ""
574
 
575
+ #: app/helper/class-ai1ec-settings-helper.php:234
576
+ msgid "Twice Daily"
 
 
577
  msgstr ""
578
 
579
+ #: app/helper/class-ai1ec-settings-helper.php:321
580
+ msgid "Calendar"
581
  msgstr ""
582
 
583
+ #: app/model/class-ai1ec-event.php:496
584
+ msgid " (all-day)"
 
585
  msgstr ""
586
 
587
+ #: app/view/admin_notices.php:2
588
+ msgid "All-in-One Event Calendar Notice:"
 
 
589
  msgstr ""
590
 
591
+ #: app/view/agenda-widget-form.php:2
592
+ msgid "Title:"
593
  msgstr ""
594
 
595
+ #: app/view/agenda-widget-form.php:6
596
+ msgid "Number of events to show:"
597
  msgstr ""
598
 
599
+ #: app/view/agenda-widget-form.php:14
600
+ msgid "Events with these <strong>Categories</strong>"
601
  msgstr ""
602
 
603
+ #: app/view/agenda-widget-form.php:23
604
+ msgid "No categories found."
605
  msgstr ""
606
 
607
+ #: app/view/agenda-widget-form.php:30
608
+ msgid "<strong>Or</strong> events with these <strong>Tags</strong>"
 
609
  msgstr ""
610
 
611
+ #: app/view/agenda-widget-form.php:39
612
+ msgid "No tags found."
 
613
  msgstr ""
614
 
615
+ #: app/view/agenda-widget-form.php:46
616
+ msgid "<strong>Or</strong> any of these <strong>Events</strong>"
 
 
617
  msgstr ""
618
 
619
+ #: app/view/agenda-widget-form.php:55
620
+ msgid "No events found."
 
 
621
  msgstr ""
622
 
623
+ #: app/view/agenda-widget-form.php:62
624
+ msgid "Show <strong>View Calendar</strong> button"
625
  msgstr ""
626
 
627
+ #: app/view/agenda-widget-form.php:65
628
+ msgid "Show <strong>Subscribe</strong> buttons"
629
  msgstr ""
630
 
631
+ #: app/view/agenda-widget-form.php:68
632
+ msgid "Hide this widget on calendar page"
633
  msgstr ""
634
 
635
+ #: app/view/agenda-widget.php:11
636
+ msgid "There are no upcoming events."
637
  msgstr ""
638
 
639
+ #: app/view/agenda-widget.php:59
640
+ msgid "View Calendar »"
641
  msgstr ""
642
 
643
+ #: app/view/agenda-widget.php:67
644
+ #: app/view/calendar.php:110
645
+ msgid "Subscribe to this calendar using your favourite calendar program (iCal, Outlook, etc.)"
646
  msgstr ""
647
 
648
+ #: app/view/agenda-widget.php:68
649
+ #: app/view/calendar.php:111
650
+ msgid "✔ Subscribe"
651
  msgstr ""
652
 
653
+ #: app/view/agenda-widget.php:72
654
+ #: app/view/calendar.php:116
655
+ msgid "Subscribe to this calendar in your Google Calendar"
656
  msgstr ""
657
 
658
+ #: app/view/agenda-widget.php:74
659
+ msgid "Add to Google"
660
  msgstr ""
661
 
662
+ #: app/view/agenda.php:5
663
+ msgid "+ Expand All"
 
664
  msgstr ""
665
 
666
+ #: app/view/agenda.php:8
667
+ msgid "− Collapse All"
 
668
  msgstr ""
669
 
670
+ #: app/view/agenda.php:12
671
+ #: app/view/month.php:4
672
+ #: app/view/week.php:4
673
+ msgid "Today"
674
  msgstr ""
675
 
676
+ #: app/view/agenda.php:29
677
+ msgid "There are no upcoming events to display at this time."
678
+ msgstr ""
679
+
680
+ #: app/view/agenda.php:59
681
+ #: app/view/agenda.php:109
682
+ #: app/view/month.php:68
683
+ #: app/view/week.php:69
684
+ msgid "(all-day)"
685
+ msgstr ""
686
+
687
+ #: app/view/agenda.php:77
688
+ msgid "Read more »"
689
+ msgstr ""
690
+
691
+ #: app/view/agenda.php:81
692
+ #: app/view/event-multi.php:45
693
+ #: app/view/event-single.php:57
694
+ msgid "Categories:"
695
+ msgstr ""
696
+
697
+ #: app/view/agenda.php:87
698
+ #: app/view/event-multi.php:51
699
+ #: app/view/event-single.php:64
700
+ msgid "Tags:"
701
+ msgstr ""
702
+
703
+ #: app/view/box_event_contact.php:1
704
+ msgid "Organizer contact info"
705
+ msgstr ""
706
+
707
+ #: app/view/box_event_contact.php:7
708
+ msgid "Contact name:"
709
+ msgstr ""
710
+
711
+ #: app/view/box_event_contact.php:17
712
+ msgid "Phone:"
713
+ msgstr ""
714
+
715
+ #: app/view/box_event_contact.php:27
716
+ msgid "E-mail:"
717
+ msgstr ""
718
+
719
+ #: app/view/box_event_cost.php:1
720
+ msgid "Event cost"
721
+ msgstr ""
722
+
723
+ #: app/view/box_event_cost.php:7
724
+ msgid "Cost"
725
  msgstr ""
726
 
727
  #: app/view/box_event_location.php:1
740
  msgid "Show Google Map:"
741
  msgstr ""
742
 
743
+ #: app/view/box_eventbrite.php:1
744
+ msgid "Eventbrite Ticketing"
745
  msgstr ""
746
 
747
+ #: app/view/box_eventbrite.php:7
748
+ msgid "Register this event with Eventbrite.com?"
749
+ msgstr ""
750
+
751
+ #: app/view/box_eventbrite.php:12
752
+ msgid "Yes"
753
+ msgstr ""
754
+
755
+ #: app/view/box_eventbrite.php:14
756
+ msgid "No"
757
+ msgstr ""
758
+
759
+ #: app/view/box_eventbrite.php:22
760
+ msgid "Set up your first ticket"
761
+ msgstr ""
762
+
763
+ #: app/view/box_eventbrite.php:24
764
+ msgid "To create multiple tickets per event, submit this form, then follow the link to Eventbrite."
765
+ msgstr ""
766
+
767
+ #: app/view/box_eventbrite.php:32
768
+ msgid "Name"
769
+ msgstr ""
770
+
771
+ #: app/view/box_eventbrite.php:42
772
+ msgid "Description"
773
+ msgstr ""
774
+
775
+ #: app/view/box_eventbrite.php:53
776
+ msgid "Type"
777
+ msgstr ""
778
+
779
+ #: app/view/box_eventbrite.php:58
780
+ msgid "Set Price"
781
+ msgstr ""
782
+
783
+ #: app/view/box_eventbrite.php:60
784
+ msgid "Donation Based"
785
+ msgstr ""
786
+
787
+ #: app/view/box_eventbrite.php:68
788
+ msgid "The price for this event's first ticket will be taken from the Cost field above."
789
+ msgstr ""
790
+
791
+ #: app/view/box_eventbrite.php:75
792
+ msgid "Quantity"
793
+ msgstr ""
794
+
795
+ #: app/view/box_eventbrite.php:85
796
+ msgid "Include Fee in Price"
797
+ msgstr ""
798
+
799
+ #: app/view/box_eventbrite.php:90
800
+ msgid "Add Service Fee on top of price"
801
+ msgstr ""
802
+
803
+ #: app/view/box_eventbrite.php:92
804
+ msgid "Include Service fee in price"
805
+ msgstr ""
806
+
807
+ #: app/view/box_eventbrite.php:98
808
+ msgid "Payment Options"
809
+ msgstr ""
810
+
811
+ #: app/view/box_eventbrite.php:103
812
+ msgid "Paypal"
813
+ msgstr ""
814
+
815
+ #: app/view/box_eventbrite.php:105
816
+ msgid "Google Checkout"
817
+ msgstr ""
818
+
819
+ #: app/view/box_eventbrite.php:107
820
+ msgid "Check"
821
+ msgstr ""
822
+
823
+ #: app/view/box_eventbrite.php:109
824
+ msgid "Cash"
825
+ msgstr ""
826
+
827
+ #: app/view/box_eventbrite.php:111
828
+ msgid "Send an Invoice"
829
  msgstr ""
830
 
831
  #: app/view/box_general_settings.php:1
865
  msgstr ""
866
 
867
  #: app/view/box_general_settings.php:31
868
+ msgid "Keep all events <strong>expanded</strong> in the agenda view"
869
  msgstr ""
870
 
871
  #: app/view/box_general_settings.php:37
872
+ msgid "<strong>Exclude</strong> events from search results"
873
  msgstr ""
874
 
875
  #: app/view/box_general_settings.php:43
876
+ msgid "Show <strong>Post Your Event</strong> button above the calendar to privileged users"
877
  msgstr ""
878
 
879
  #: app/view/box_general_settings.php:49
880
+ msgid "Hide <strong>Subscribe</strong>/<strong>Add to Calendar</strong> buttons in calendar and single event views"
881
  msgstr ""
882
 
883
  #: app/view/box_general_settings.php:55
884
+ msgid "Hide <strong>Google Maps</strong> until clicked"
 
 
 
 
 
 
 
 
 
 
 
 
885
  msgstr ""
886
 
887
+ #: app/view/box_general_settings.php:61
888
+ msgid "Use the configured <strong>region</strong> (WordPress locale) to bias the address autocomplete function"
889
  msgstr ""
890
 
891
+ #: app/view/box_general_settings.php:67
892
+ msgid "Include <strong>event categories</strong> in post category lists"
893
  msgstr ""
894
 
895
+ #: app/view/box_general_settings.php:71
896
+ msgid "Adding/Editing Events"
897
  msgstr ""
898
 
899
+ #: app/view/box_general_settings.php:73
900
+ msgid "Input dates in this format:"
901
  msgstr ""
902
 
903
+ #: app/view/box_general_settings.php:79
904
+ msgid "Use <strong>24h time</strong> in time pickers"
905
  msgstr ""
906
 
907
+ #: app/view/box_general_settings.php:85
908
+ msgid "Display <strong>Publish</strong> at bottom of Edit Event form"
909
  msgstr ""
910
 
911
+ #: app/view/box_ics_import_settings.php:2
912
+ msgid "Auto-refresh"
 
913
  msgstr ""
914
 
915
+ #: app/view/box_ics_import_settings.php:8
916
+ #: app/view/feed_row.php:3
917
+ msgid "iCalendar/.ics Feed URL:"
918
  msgstr ""
919
 
920
+ #: app/view/box_ics_import_settings.php:12
921
+ msgid "Event category"
922
  msgstr ""
923
 
924
+ #: app/view/box_ics_import_settings.php:18
925
+ #: app/view/feed_row.php:15
926
+ msgid "Tag with"
 
927
  msgstr ""
928
 
929
+ #: app/view/box_ics_import_settings.php:22
930
+ msgid "+ Add new subscription"
931
  msgstr ""
932
 
933
+ #: app/view/box_repeat.php:14
934
+ msgid "End"
935
  msgstr ""
936
 
937
+ #: app/view/box_repeat.php:21
938
+ msgid "Ending after"
939
  msgstr ""
940
 
941
+ #: app/view/box_repeat.php:36
942
+ msgid "Apply"
943
  msgstr ""
944
 
945
+ #: app/view/box_repeat.php:37
946
+ msgid "Cancel"
947
  msgstr ""
948
 
949
+ #. #-#-#-#-# plugin.pot (All-in-One Event Calendar 1.3) #-#-#-#-#
950
+ #. Author of the plugin/theme
951
+ #: app/view/box_the_seed_studio.php:4
952
+ msgid "The Seed Studio"
953
  msgstr ""
954
 
955
+ #: app/view/box_the_seed_studio.php:7
956
+ msgid "The Seed Studio provides web development and support services for clients and web developers."
957
  msgstr ""
958
 
959
+ #: app/view/box_the_seed_studio.php:14
960
+ msgid "Follow @theseednet"
961
  msgstr ""
962
 
963
+ #: app/view/box_the_seed_studio.php:20
964
+ msgid "Get Support<span> from one of our experienced pros</span>"
965
  msgstr ""
966
 
967
+ #: app/view/box_the_seed_studio.php:23
968
+ msgid "Support"
969
  msgstr ""
970
 
971
+ #: app/view/box_the_seed_studio.php:25
972
+ msgid "View plugin documentation"
973
  msgstr ""
974
 
975
+ #: app/view/box_the_seed_studio.php:28
976
+ msgid "You can also hire The Seed for support on a contract or per-hour basis for this plugin, for your website or for any of your Internet marketing needs (we can really help!)."
 
977
  msgstr ""
978
 
979
+ #: app/view/box_the_seed_studio.php:31
980
+ msgid "Plugin users: The Seed gives support priority to clients. For free support from other WordPress users, visit the plugin's forum."
981
  msgstr ""
982
 
983
+ #: app/view/box_the_seed_studio.php:34
984
+ msgid "Vote and Share"
985
  msgstr ""
986
 
987
+ #: app/view/box_the_seed_studio.php:36
988
+ msgid "This plugin is offered free to the Wordpress Community under the GPL3 license. All we ask is that you:"
989
  msgstr ""
990
 
991
+ #: app/view/box_the_seed_studio.php:38
992
+ msgid "<a href=\"http://wordpress.org/extend/plugins/all-in-one-event-calendar/\" target=\"_blank\">Give it a five-star rating on wordpress.org</a> (if you think it deserves it!)"
993
  msgstr ""
994
 
995
+ #: app/view/box_the_seed_studio.php:39
996
+ msgid "Link to the plugin page on our website"
997
  msgstr ""
998
 
999
+ #: app/view/box_the_seed_studio.php:40
1000
+ msgid "Become a Fan on Facebook"
1001
  msgstr ""
1002
 
1003
+ #: app/view/box_the_seed_studio.php:41
1004
+ msgid "Follow us on Twitter"
1005
  msgstr ""
1006
 
1007
+ #: app/view/box_the_seed_studio.php:46
1008
+ msgid "Latest from the Seed Network"
1009
  msgstr ""
1010
 
1011
+ #: app/view/box_time_and_date.php:2
1012
+ msgid "Event date and time"
1013
  msgstr ""
1014
 
1015
+ #: app/view/box_time_and_date.php:8
1016
+ msgid "All-day event"
1017
  msgstr ""
1018
 
1019
+ #: app/view/box_time_and_date.php:18
1020
+ msgid "Start date / time"
1021
  msgstr ""
1022
 
1023
+ #: app/view/box_time_and_date.php:31
1024
+ msgid "End date / time"
1025
  msgstr ""
1026
 
1027
+ #: app/view/box_time_and_date.php:46
1028
+ msgid "Repeat"
1029
  msgstr ""
1030
 
1031
+ #: app/view/box_time_and_date.php:60
1032
+ msgid "Exclude"
1033
  msgstr ""
1034
 
1035
+ #: app/view/box_time_and_date.php:67
1036
+ msgid "Choose a rule for exclusion"
1037
  msgstr ""
1038
 
1039
+ #: app/view/box_time_and_date.php:73
1040
+ msgid "Exclude dates"
1041
  msgstr ""
1042
 
1043
+ #: app/view/box_time_and_date.php:80
1044
+ msgid "Select date range"
1045
  msgstr ""
1046
 
1047
+ #: app/view/box_time_and_date.php:85
1048
+ msgid "Choose specific dates to exclude"
1049
  msgstr ""
1050
 
1051
+ #: app/view/calendar.php:35
1052
+ msgid "+ Post Your Event"
1053
  msgstr ""
1054
 
1055
+ #: app/view/calendar.php:44
1056
+ msgid "Clear Filters"
1057
  msgstr ""
1058
 
1059
+ #: app/view/calendar.php:44
1060
+ msgid ""
1061
  msgstr ""
1062
 
1063
+ #: app/view/calendar.php:45
1064
+ msgid "Filter:"
1065
  msgstr ""
1066
 
1067
+ #: app/view/calendar.php:50
1068
+ msgid "Categories ▾"
1069
  msgstr ""
1070
 
1071
+ #: app/view/calendar.php:72
1072
+ msgid "Tags "
1073
  msgstr ""
1074
 
1075
+ #: app/view/calendar.php:112
1076
+ msgid "to this filtered calendar"
1077
  msgstr ""
1078
 
1079
+ #: app/view/calendar.php:118
1080
+ msgid "Subscribe in Google Calendar"
1081
  msgstr ""
1082
 
1083
+ #: app/view/class-ai1ec-agenda-widget.php:18
1084
+ #: app/view/class-ai1ec-agenda-widget.php:39
1085
+ msgid "Upcoming Events"
1086
  msgstr ""
1087
 
1088
+ #: app/view/class-ai1ec-agenda-widget.php:20
1089
+ msgid "All-in-One Event Calendar: Lists upcoming events in Agenda view"
1090
  msgstr ""
1091
 
1092
+ #: app/view/event-excerpt.php:2
1093
+ #: app/view/event-multi.php:4
1094
+ #: app/view/event-single.php:5
1095
+ msgid "When:"
1096
  msgstr ""
1097
 
1098
+ #: app/view/event-excerpt.php:4
1099
+ #: app/view/event-multi.php:20
1100
+ #: app/view/event-single.php:25
1101
+ msgid "Where:"
1102
  msgstr ""
1103
 
1104
+ #: app/view/event-map.php:2
1105
+ msgid "Click to view map"
 
 
 
 
 
 
 
1106
  msgstr ""
1107
 
1108
+ #: app/view/event-map.php:9
1109
+ msgid "View Full-Size Map »"
1110
  msgstr ""
1111
 
1112
+ #: app/view/event-multi.php:7
1113
+ msgid "View in Calendar »"
1114
  msgstr ""
1115
 
1116
+ #: app/view/event-multi.php:14
1117
+ #: app/view/event-single.php:15
1118
+ msgid "Repeats:"
1119
  msgstr ""
1120
 
1121
+ #: app/view/event-multi.php:24
1122
+ msgid "View Map »"
1123
  msgstr ""
1124
 
1125
+ #: app/view/event-multi.php:33
1126
+ #: app/view/event-single.php:45
1127
+ msgid "Cost:"
1128
  msgstr ""
1129
 
1130
+ #: app/view/event-multi.php:39
1131
+ #: app/view/event-single.php:51
1132
+ msgid "Contact:"
1133
  msgstr ""
1134
 
1135
+ #: app/view/event-single-footer.php:4
1136
+ msgid "This post was replicated from another site's <a class=\"ai1ec-ics-icon\" href=\"%s\" title=\"iCalendar feed\">calendar feed</a>."
1137
  msgstr ""
1138
 
1139
+ #: app/view/event-single-footer.php:8
1140
+ msgid "View original post »"
 
1141
  msgstr ""
1142
 
1143
+ #: app/view/event-single.php:8
1144
+ msgid "Back to Calendar »"
1145
  msgstr ""
1146
 
1147
+ #: app/view/event-single.php:21
1148
+ msgid "Excluding:"
1149
  msgstr ""
1150
 
1151
+ #: app/view/event-single.php:32
1152
+ msgid "Add this event to your favourite calendar program (iCal, Outlook, etc.)"
1153
  msgstr ""
1154
 
1155
+ #: app/view/event-single.php:33
1156
+ msgid " Add to Calendar"
1157
  msgstr ""
1158
 
1159
+ #: app/view/event-single.php:36
1160
+ msgid "Add this event to your Google Calendar"
 
1161
  msgstr ""
1162
 
1163
+ #: app/view/event-single.php:38
1164
+ msgid "Add to Google Calendar"
1165
  msgstr ""
1166
 
1167
+ #: app/view/event_categories-color_picker.php:5
1168
+ #: app/view/event_categories-color_picker.php:19
1169
+ msgid "Category Color"
1170
  msgstr ""
1171
 
1172
+ #: app/view/event_categories-color_picker.php:13
1173
+ #: app/view/event_categories-color_picker.php:25
1174
+ msgid "Events in this category will be identified by this color"
1175
  msgstr ""
1176
 
1177
+ #: app/view/feed_row.php:9
1178
+ msgid "Event category:"
1179
  msgstr ""
1180
 
1181
+ #: app/view/feed_row.php:19
1182
+ msgid "× Delete"
1183
  msgstr ""
1184
 
1185
+ #: app/view/import.php:6
1186
+ msgid "Successfully imported events:"
 
1187
  msgstr ""
1188
 
1189
+ #: app/view/month.php:50
1190
+ #: app/view/week.php:55
1191
+ #: app/view/week.php:127
1192
+ msgid "Summary:"
1193
  msgstr ""
1194
 
1195
+ #: app/view/month.php:53
1196
+ #: app/view/week.php:58
1197
+ #: app/view/week.php:130
1198
+ msgid "click anywhere for details"
1199
  msgstr ""
1200
 
1201
+ #: app/view/row_daily.php:3
1202
+ #: app/view/row_monthly.php:3
1203
+ #: app/view/row_monthly.php:22
1204
+ #: app/view/row_weekly.php:3
1205
+ #: app/view/row_yearly.php:3
1206
+ msgid "Every"
1207
  msgstr ""
1208
 
1209
+ #: app/view/row_monthly.php:9
1210
+ msgid "On day of the month"
1211
  msgstr ""
1212
 
1213
+ #: app/view/row_monthly.php:13
1214
+ msgid "On day of the week"
1215
  msgstr ""
1216
 
1217
+ #: app/view/row_weekly.php:6
1218
+ msgctxt "Recurrence editor - weekly tab"
1219
+ msgid "On"
1220
  msgstr ""
1221
 
1222
+ #: app/view/row_yearly.php:7
1223
+ msgctxt "Recurrence editor - yearly tab"
1224
+ msgid "In"
1225
  msgstr ""
1226
 
1227
+ #: app/view/settings.php:5
1228
+ msgid "All-in-one Event Calendar"
1229
  msgstr ""
1230
 
1231
+ #: app/view/settings.php:16
1232
+ msgid "Update Settings"
 
 
 
 
 
 
1233
  msgstr ""
1234
 
1235
+ #: app/view/week.php:33
1236
+ msgid "All-day"
1237
  msgstr ""
1238
 
1239
  #. Plugin Name of the plugin/theme
1240
+ msgid "All-in-One Event Calendar"
1241
  msgstr ""
1242
 
1243
  #. Plugin URI of the plugin/theme
1245
  msgstr ""
1246
 
1247
  #. Description of the plugin/theme
1248
+ msgid "An event calendar system with month, week, agenda views, upcoming events widget, color-coded categories, recurrence, and import/export of .ics feeds."
1249
  msgstr ""
1250
 
1251
  #. Author URI of the plugin/theme
language/all-in-one-event-calendar.pot CHANGED
@@ -4,7 +4,7 @@ msgid ""
4
  msgstr ""
5
  "Project-Id-Version: All-in-One Event Calendar 1.3\n"
6
  "Report-Msgid-Bugs-To: http://wordpress.org/tag/all-in-one-event-calendar\n"
7
- "POT-Creation-Date: 2012-02-15 16:20:12+00:00\n"
8
  "MIME-Version: 1.0\n"
9
  "Content-Type: text/plain; charset=UTF-8\n"
10
  "Content-Transfer-Encoding: 8bit\n"
@@ -33,72 +33,72 @@ msgstr ""
33
  msgid "Agenda"
34
  msgstr ""
35
 
36
- #: app/controller/class-ai1ec-events-controller.php:149
37
  msgid "This feed is already being imported."
38
  msgstr ""
39
 
40
- #: app/controller/class-ai1ec-events-controller.php:150
41
  msgid "Please enter a valid iCalendar URL."
42
  msgstr ""
43
 
44
- #: app/controller/class-ai1ec-events-controller.php:330
45
  msgid "Publish"
46
  msgstr ""
47
 
48
- #: app/controller/class-ai1ec-events-controller.php:330
49
  #: app/view/feed_row.php:20
50
  msgid "Update"
51
  msgstr ""
52
 
53
- #: app/controller/class-ai1ec-events-controller.php:332
54
  msgid "Submit for Review"
55
  msgstr ""
56
 
57
- #: app/controller/class-ai1ec-events-controller.php:450
58
  msgid "Event updated. <a href=\"%s\">View event</a>"
59
  msgstr ""
60
 
61
- #: app/controller/class-ai1ec-events-controller.php:451
62
  msgid "Custom field updated."
63
  msgstr ""
64
 
65
- #: app/controller/class-ai1ec-events-controller.php:452
66
  msgid "Custom field deleted."
67
  msgstr ""
68
 
69
- #: app/controller/class-ai1ec-events-controller.php:453
70
  msgid "Event updated."
71
  msgstr ""
72
 
73
  #. translators: %s: date and time of the revision
74
- #: app/controller/class-ai1ec-events-controller.php:455
75
  msgid "Event restored to revision from %s"
76
  msgstr ""
77
 
78
- #: app/controller/class-ai1ec-events-controller.php:456
79
  msgid "Event published. <a href=\"%s\">View event</a>"
80
  msgstr ""
81
 
82
- #: app/controller/class-ai1ec-events-controller.php:457
83
  msgid "Event saved."
84
  msgstr ""
85
 
86
- #: app/controller/class-ai1ec-events-controller.php:458
87
  msgid "Event submitted. <a target=\"_blank\" href=\"%s\">Preview event</a>"
88
  msgstr ""
89
 
90
- #: app/controller/class-ai1ec-events-controller.php:459
91
  msgid ""
92
  "Event scheduled for: <strong>%1$s</strong>. <a target=\"_blank\" href=\"%2$s"
93
  "\">Preview event</a>"
94
  msgstr ""
95
 
96
  #. translators: Publish box date format, see http:php.net/date
97
- #: app/controller/class-ai1ec-events-controller.php:461
98
  msgid "M j, Y @ G:i"
99
  msgstr ""
100
 
101
- #: app/controller/class-ai1ec-events-controller.php:462
102
  msgid "Event draft updated. <a target=\"_blank\" href=\"%s\">Preview event</a>"
103
  msgstr ""
104
 
@@ -237,58 +237,68 @@ msgctxt "Event tags taxonomy (singular)"
237
  msgid "Event Tag"
238
  msgstr ""
239
 
240
- #: app/helper/class-ai1ec-app-helper.php:281
 
 
 
 
 
 
 
 
 
 
241
  msgid "Show All "
242
  msgstr ""
243
 
244
- #: app/helper/class-ai1ec-app-helper.php:313
245
  msgid ""
246
  "All Events <span class=\"update-plugins count-%d\" title=\"%d Pending Events"
247
  "\"><span class=\"update-count\">%d</span></span>"
248
  msgstr ""
249
 
250
- #: app/helper/class-ai1ec-app-helper.php:319
251
  msgid "All Events"
252
  msgstr ""
253
 
254
- #: app/helper/class-ai1ec-app-helper.php:395
255
  msgid "Event Details"
256
  msgstr ""
257
 
258
- #: app/helper/class-ai1ec-app-helper.php:428
259
  msgid "Post Date"
260
  msgstr ""
261
 
262
- #: app/helper/class-ai1ec-app-helper.php:429
263
  msgid "Event date/time"
264
  msgstr ""
265
 
266
- #: app/helper/class-ai1ec-app-helper.php:653
267
  msgid ""
268
  "%sTo set up the plugin: %s 1. Select an option in the <strong>Calendar page</"
269
  "strong> dropdown list. %s 2. Select an option in the <strong>Timezone</"
270
  "strong> dropdown list. %s 3. Click <strong>Update Settings</strong>. %s"
271
  msgstr ""
272
 
273
- #: app/helper/class-ai1ec-app-helper.php:655
274
  msgid ""
275
  "To set up the plugin: Select an option in the <strong>Calendar page</strong> "
276
  "dropdown list, the click <strong>Update Settings</strong>."
277
  msgstr ""
278
 
279
- #: app/helper/class-ai1ec-app-helper.php:657
280
  msgid ""
281
  "To set up the plugin: Select an option in the <strong>Timezone</strong> "
282
  "dropdown list, the click <strong>Update Settings</strong>."
283
  msgstr ""
284
 
285
- #: app/helper/class-ai1ec-app-helper.php:661
286
  msgid ""
287
  "The plugin is installed, but has not been configured. <a href=\"%s\">Click "
288
  "here to set it up now »</a>"
289
  msgstr ""
290
 
291
- #: app/helper/class-ai1ec-app-helper.php:667
292
  msgid ""
293
  "The plugin is installed, but has not been configured. Please log in as a "
294
  "WordPress Administrator to set it up."
@@ -307,228 +317,228 @@ msgstr ""
307
  msgid "Next Events »"
308
  msgstr ""
309
 
310
- #: app/helper/class-ai1ec-events-helper.php:342
311
- #: app/helper/class-ai1ec-events-helper.php:364
312
  msgid "No repeat"
313
  msgstr ""
314
 
315
- #: app/helper/class-ai1ec-events-helper.php:343
316
- #: app/helper/class-ai1ec-events-helper.php:365
317
  msgid "Every day"
318
  msgstr ""
319
 
320
- #: app/helper/class-ai1ec-events-helper.php:344
321
- #: app/helper/class-ai1ec-events-helper.php:366
322
  msgid "Every week"
323
  msgstr ""
324
 
325
- #: app/helper/class-ai1ec-events-helper.php:345
326
- #: app/helper/class-ai1ec-events-helper.php:367
327
  msgid "Every month"
328
  msgstr ""
329
 
330
- #: app/helper/class-ai1ec-events-helper.php:346
331
- #: app/helper/class-ai1ec-events-helper.php:368
332
  msgid "Every year"
333
  msgstr ""
334
 
335
- #: app/helper/class-ai1ec-events-helper.php:348
336
- #: app/helper/class-ai1ec-events-helper.php:370
337
  msgid "Custom..."
338
  msgstr ""
339
 
340
- #: app/helper/class-ai1ec-events-helper.php:491
341
  msgid "first"
342
  msgstr ""
343
 
344
- #: app/helper/class-ai1ec-events-helper.php:492
345
  msgid "second"
346
  msgstr ""
347
 
348
- #: app/helper/class-ai1ec-events-helper.php:493
349
  msgid "third"
350
  msgstr ""
351
 
352
- #: app/helper/class-ai1ec-events-helper.php:494
353
  msgid "fourth"
354
  msgstr ""
355
 
356
- #: app/helper/class-ai1ec-events-helper.php:496
357
  msgid "last"
358
  msgstr ""
359
 
360
- #: app/helper/class-ai1ec-events-helper.php:501
361
  msgid "Sunday"
362
  msgstr ""
363
 
364
- #: app/helper/class-ai1ec-events-helper.php:502
365
  msgid "Monday"
366
  msgstr ""
367
 
368
- #: app/helper/class-ai1ec-events-helper.php:503
369
  msgid "Tuesday"
370
  msgstr ""
371
 
372
- #: app/helper/class-ai1ec-events-helper.php:504
373
  msgid "Wednesday"
374
  msgstr ""
375
 
376
- #: app/helper/class-ai1ec-events-helper.php:505
377
  msgid "Thursday"
378
  msgstr ""
379
 
380
- #: app/helper/class-ai1ec-events-helper.php:506
381
  msgid "Friday"
382
  msgstr ""
383
 
384
- #: app/helper/class-ai1ec-events-helper.php:507
385
  msgid "Saturday"
386
  msgstr ""
387
 
388
- #: app/helper/class-ai1ec-events-helper.php:509
389
  msgid "day"
390
  msgstr ""
391
 
392
- #: app/helper/class-ai1ec-events-helper.php:510
393
  msgid "weekday"
394
  msgstr ""
395
 
396
- #: app/helper/class-ai1ec-events-helper.php:511
397
  msgid "weekend day"
398
  msgstr ""
399
 
400
- #: app/helper/class-ai1ec-events-helper.php:577
401
- #: app/helper/class-ai1ec-events-helper.php:596
402
- #: app/helper/class-ai1ec-events-helper.php:1525
403
  #: app/helper/class-ai1ec-settings-helper.php:237 app/view/box_repeat.php:2
404
  msgid "Daily"
405
  msgstr ""
406
 
407
- #: app/helper/class-ai1ec-events-helper.php:578
408
- #: app/helper/class-ai1ec-events-helper.php:597
409
- #: app/helper/class-ai1ec-events-helper.php:1537 app/view/box_repeat.php:3
410
  msgid "Weekly"
411
  msgstr ""
412
 
413
- #: app/helper/class-ai1ec-events-helper.php:579
414
- #: app/helper/class-ai1ec-events-helper.php:598
415
- #: app/helper/class-ai1ec-events-helper.php:1549 app/view/box_repeat.php:4
416
  msgid "Monthly"
417
  msgstr ""
418
 
419
- #: app/helper/class-ai1ec-events-helper.php:580
420
- #: app/helper/class-ai1ec-events-helper.php:599
421
- #: app/helper/class-ai1ec-events-helper.php:1561 app/view/box_repeat.php:5
422
  msgid "Yearly"
423
  msgstr ""
424
 
425
- #: app/helper/class-ai1ec-events-helper.php:621
426
  msgid "day(s)"
427
  msgstr ""
428
 
429
- #: app/helper/class-ai1ec-events-helper.php:650
430
  msgid "week(s)"
431
  msgstr ""
432
 
433
- #: app/helper/class-ai1ec-events-helper.php:720
434
  msgid "month(s)"
435
  msgstr ""
436
 
437
- #: app/helper/class-ai1ec-events-helper.php:743
438
  msgid "year(s)"
439
  msgstr ""
440
 
441
- #: app/helper/class-ai1ec-events-helper.php:1323
442
  msgid "Never"
443
  msgstr ""
444
 
445
- #: app/helper/class-ai1ec-events-helper.php:1324
446
  msgid "After"
447
  msgstr ""
448
 
449
- #: app/helper/class-ai1ec-events-helper.php:1325 app/view/box_repeat.php:28
450
  msgid "On date"
451
  msgstr ""
452
 
453
- #: app/helper/class-ai1ec-events-helper.php:1404
454
- #: app/helper/class-ai1ec-events-helper.php:1413
455
- #: app/helper/class-ai1ec-events-helper.php:1421
456
  msgctxt "Recurrence editor - weekly tab"
457
  msgid "on"
458
  msgstr ""
459
 
460
- #: app/helper/class-ai1ec-events-helper.php:1409
461
- #: app/helper/class-ai1ec-events-helper.php:1438
462
- #: app/helper/class-ai1ec-events-helper.php:1476
463
  msgid "and"
464
  msgstr ""
465
 
466
- #: app/helper/class-ai1ec-events-helper.php:1434
467
- #: app/helper/class-ai1ec-events-helper.php:1441
468
- #: app/helper/class-ai1ec-events-helper.php:1447
469
- #: app/helper/class-ai1ec-events-helper.php:1458
470
  msgctxt "Recurrence editor - monthly tab"
471
  msgid "on"
472
  msgstr ""
473
 
474
- #: app/helper/class-ai1ec-events-helper.php:1434
475
- #: app/helper/class-ai1ec-events-helper.php:1441
476
- #: app/helper/class-ai1ec-events-helper.php:1447
477
  msgid "of the month"
478
  msgstr ""
479
 
480
- #: app/helper/class-ai1ec-events-helper.php:1471
481
- #: app/helper/class-ai1ec-events-helper.php:1479
482
- #: app/helper/class-ai1ec-events-helper.php:1486
483
  msgctxt "Recurrence editor - yearly tab"
484
  msgid "on"
485
  msgstr ""
486
 
487
- #: app/helper/class-ai1ec-events-helper.php:1528
488
  msgid "Every other day"
489
  msgstr ""
490
 
491
- #: app/helper/class-ai1ec-events-helper.php:1530
492
  msgid "Every %d days"
493
  msgstr ""
494
 
495
- #: app/helper/class-ai1ec-events-helper.php:1540
496
  msgid "Every other week"
497
  msgstr ""
498
 
499
- #: app/helper/class-ai1ec-events-helper.php:1542
500
  msgid "Every %d weeks"
501
  msgstr ""
502
 
503
- #: app/helper/class-ai1ec-events-helper.php:1552
504
  msgid "Every other month"
505
  msgstr ""
506
 
507
- #: app/helper/class-ai1ec-events-helper.php:1554
508
  msgid "Every %d months"
509
  msgstr ""
510
 
511
- #: app/helper/class-ai1ec-events-helper.php:1564
512
  msgid "Every other year"
513
  msgstr ""
514
 
515
- #: app/helper/class-ai1ec-events-helper.php:1566
516
  msgid "Every %d years"
517
  msgstr ""
518
 
519
- #: app/helper/class-ai1ec-events-helper.php:1586
520
  msgid "until %s"
521
  msgstr ""
522
 
523
- #: app/helper/class-ai1ec-events-helper.php:1589
524
  msgid "for %d occurrences"
525
  msgstr ""
526
 
527
- #: app/helper/class-ai1ec-events-helper.php:1591
528
  msgid "forever"
529
  msgstr ""
530
 
531
- #: app/helper/class-ai1ec-events-helper.php:1688
532
  msgid "times"
533
  msgstr ""
534
 
@@ -578,7 +588,7 @@ msgstr ""
578
  msgid "Calendar"
579
  msgstr ""
580
 
581
- #: app/model/class-ai1ec-event.php:487
582
  msgid " (all-day)"
583
  msgstr ""
584
 
@@ -682,19 +692,15 @@ msgid "Read more »"
682
  msgstr ""
683
 
684
  #: app/view/agenda.php:81 app/view/event-multi.php:45
685
- #: app/view/event-single.php:52
686
  msgid "Categories:"
687
  msgstr ""
688
 
689
  #: app/view/agenda.php:87 app/view/event-multi.php:51
690
- #: app/view/event-single.php:59
691
  msgid "Tags:"
692
  msgstr ""
693
 
694
- #: app/view/box_date_picker.php:4
695
- msgid "Select dates"
696
- msgstr ""
697
-
698
  #: app/view/box_event_contact.php:1
699
  msgid "Organizer contact info"
700
  msgstr ""
@@ -1051,10 +1057,22 @@ msgstr ""
1051
  msgid "Exclude"
1052
  msgstr ""
1053
 
1054
- #: app/view/box_time_and_date.php:75
 
 
 
 
1055
  msgid "Exclude dates"
1056
  msgstr ""
1057
 
 
 
 
 
 
 
 
 
1058
  #: app/view/calendar.php:35
1059
  msgid "+ Post Your Event"
1060
  msgstr ""
@@ -1102,7 +1120,7 @@ msgid "When:"
1102
  msgstr ""
1103
 
1104
  #: app/view/event-excerpt.php:4 app/view/event-multi.php:20
1105
- #: app/view/event-single.php:20
1106
  msgid "Where:"
1107
  msgstr ""
1108
 
@@ -1126,11 +1144,11 @@ msgstr ""
1126
  msgid "View Map »"
1127
  msgstr ""
1128
 
1129
- #: app/view/event-multi.php:33 app/view/event-single.php:40
1130
  msgid "Cost:"
1131
  msgstr ""
1132
 
1133
- #: app/view/event-multi.php:39 app/view/event-single.php:46
1134
  msgid "Contact:"
1135
  msgstr ""
1136
 
@@ -1148,19 +1166,23 @@ msgstr ""
1148
  msgid "Back to Calendar »"
1149
  msgstr ""
1150
 
1151
- #: app/view/event-single.php:27
 
 
 
 
1152
  msgid "Add this event to your favourite calendar program (iCal, Outlook, etc.)"
1153
  msgstr ""
1154
 
1155
- #: app/view/event-single.php:28
1156
  msgid "✔ Add to Calendar"
1157
  msgstr ""
1158
 
1159
- #: app/view/event-single.php:31
1160
  msgid "Add this event to your Google Calendar"
1161
  msgstr ""
1162
 
1163
- #: app/view/event-single.php:33
1164
  msgid "Add to Google Calendar"
1165
  msgstr ""
1166
 
4
  msgstr ""
5
  "Project-Id-Version: All-in-One Event Calendar 1.3\n"
6
  "Report-Msgid-Bugs-To: http://wordpress.org/tag/all-in-one-event-calendar\n"
7
+ "POT-Creation-Date: 2012-03-01 20:50:01+00:00\n"
8
  "MIME-Version: 1.0\n"
9
  "Content-Type: text/plain; charset=UTF-8\n"
10
  "Content-Transfer-Encoding: 8bit\n"
33
  msgid "Agenda"
34
  msgstr ""
35
 
36
+ #: app/controller/class-ai1ec-events-controller.php:153
37
  msgid "This feed is already being imported."
38
  msgstr ""
39
 
40
+ #: app/controller/class-ai1ec-events-controller.php:154
41
  msgid "Please enter a valid iCalendar URL."
42
  msgstr ""
43
 
44
+ #: app/controller/class-ai1ec-events-controller.php:333
45
  msgid "Publish"
46
  msgstr ""
47
 
48
+ #: app/controller/class-ai1ec-events-controller.php:333
49
  #: app/view/feed_row.php:20
50
  msgid "Update"
51
  msgstr ""
52
 
53
+ #: app/controller/class-ai1ec-events-controller.php:335
54
  msgid "Submit for Review"
55
  msgstr ""
56
 
57
+ #: app/controller/class-ai1ec-events-controller.php:458
58
  msgid "Event updated. <a href=\"%s\">View event</a>"
59
  msgstr ""
60
 
61
+ #: app/controller/class-ai1ec-events-controller.php:459
62
  msgid "Custom field updated."
63
  msgstr ""
64
 
65
+ #: app/controller/class-ai1ec-events-controller.php:460
66
  msgid "Custom field deleted."
67
  msgstr ""
68
 
69
+ #: app/controller/class-ai1ec-events-controller.php:461
70
  msgid "Event updated."
71
  msgstr ""
72
 
73
  #. translators: %s: date and time of the revision
74
+ #: app/controller/class-ai1ec-events-controller.php:463
75
  msgid "Event restored to revision from %s"
76
  msgstr ""
77
 
78
+ #: app/controller/class-ai1ec-events-controller.php:464
79
  msgid "Event published. <a href=\"%s\">View event</a>"
80
  msgstr ""
81
 
82
+ #: app/controller/class-ai1ec-events-controller.php:465
83
  msgid "Event saved."
84
  msgstr ""
85
 
86
+ #: app/controller/class-ai1ec-events-controller.php:466
87
  msgid "Event submitted. <a target=\"_blank\" href=\"%s\">Preview event</a>"
88
  msgstr ""
89
 
90
+ #: app/controller/class-ai1ec-events-controller.php:467
91
  msgid ""
92
  "Event scheduled for: <strong>%1$s</strong>. <a target=\"_blank\" href=\"%2$s"
93
  "\">Preview event</a>"
94
  msgstr ""
95
 
96
  #. translators: Publish box date format, see http:php.net/date
97
+ #: app/controller/class-ai1ec-events-controller.php:469
98
  msgid "M j, Y @ G:i"
99
  msgstr ""
100
 
101
+ #: app/controller/class-ai1ec-events-controller.php:470
102
  msgid "Event draft updated. <a target=\"_blank\" href=\"%s\">Preview event</a>"
103
  msgstr ""
104
 
237
  msgid "Event Tag"
238
  msgstr ""
239
 
240
+ #: app/helper/class-ai1ec-app-helper.php:221
241
+ msgctxt "Event feeds taxonomy"
242
+ msgid "Event Feeds"
243
+ msgstr ""
244
+
245
+ #: app/helper/class-ai1ec-app-helper.php:222
246
+ msgctxt "Event feed taxonomy (singular)"
247
+ msgid "Event Feed"
248
+ msgstr ""
249
+
250
+ #: app/helper/class-ai1ec-app-helper.php:310
251
  msgid "Show All "
252
  msgstr ""
253
 
254
+ #: app/helper/class-ai1ec-app-helper.php:342
255
  msgid ""
256
  "All Events <span class=\"update-plugins count-%d\" title=\"%d Pending Events"
257
  "\"><span class=\"update-count\">%d</span></span>"
258
  msgstr ""
259
 
260
+ #: app/helper/class-ai1ec-app-helper.php:348
261
  msgid "All Events"
262
  msgstr ""
263
 
264
+ #: app/helper/class-ai1ec-app-helper.php:426
265
  msgid "Event Details"
266
  msgstr ""
267
 
268
+ #: app/helper/class-ai1ec-app-helper.php:459
269
  msgid "Post Date"
270
  msgstr ""
271
 
272
+ #: app/helper/class-ai1ec-app-helper.php:460
273
  msgid "Event date/time"
274
  msgstr ""
275
 
276
+ #: app/helper/class-ai1ec-app-helper.php:684
277
  msgid ""
278
  "%sTo set up the plugin: %s 1. Select an option in the <strong>Calendar page</"
279
  "strong> dropdown list. %s 2. Select an option in the <strong>Timezone</"
280
  "strong> dropdown list. %s 3. Click <strong>Update Settings</strong>. %s"
281
  msgstr ""
282
 
283
+ #: app/helper/class-ai1ec-app-helper.php:686
284
  msgid ""
285
  "To set up the plugin: Select an option in the <strong>Calendar page</strong> "
286
  "dropdown list, the click <strong>Update Settings</strong>."
287
  msgstr ""
288
 
289
+ #: app/helper/class-ai1ec-app-helper.php:688
290
  msgid ""
291
  "To set up the plugin: Select an option in the <strong>Timezone</strong> "
292
  "dropdown list, the click <strong>Update Settings</strong>."
293
  msgstr ""
294
 
295
+ #: app/helper/class-ai1ec-app-helper.php:692
296
  msgid ""
297
  "The plugin is installed, but has not been configured. <a href=\"%s\">Click "
298
  "here to set it up now »</a>"
299
  msgstr ""
300
 
301
+ #: app/helper/class-ai1ec-app-helper.php:698
302
  msgid ""
303
  "The plugin is installed, but has not been configured. Please log in as a "
304
  "WordPress Administrator to set it up."
317
  msgid "Next Events »"
318
  msgstr ""
319
 
320
+ #: app/helper/class-ai1ec-events-helper.php:372
321
+ #: app/helper/class-ai1ec-events-helper.php:394
322
  msgid "No repeat"
323
  msgstr ""
324
 
325
+ #: app/helper/class-ai1ec-events-helper.php:373
326
+ #: app/helper/class-ai1ec-events-helper.php:395
327
  msgid "Every day"
328
  msgstr ""
329
 
330
+ #: app/helper/class-ai1ec-events-helper.php:374
331
+ #: app/helper/class-ai1ec-events-helper.php:396
332
  msgid "Every week"
333
  msgstr ""
334
 
335
+ #: app/helper/class-ai1ec-events-helper.php:375
336
+ #: app/helper/class-ai1ec-events-helper.php:397
337
  msgid "Every month"
338
  msgstr ""
339
 
340
+ #: app/helper/class-ai1ec-events-helper.php:376
341
+ #: app/helper/class-ai1ec-events-helper.php:398
342
  msgid "Every year"
343
  msgstr ""
344
 
345
+ #: app/helper/class-ai1ec-events-helper.php:378
346
+ #: app/helper/class-ai1ec-events-helper.php:400
347
  msgid "Custom..."
348
  msgstr ""
349
 
350
+ #: app/helper/class-ai1ec-events-helper.php:521
351
  msgid "first"
352
  msgstr ""
353
 
354
+ #: app/helper/class-ai1ec-events-helper.php:522
355
  msgid "second"
356
  msgstr ""
357
 
358
+ #: app/helper/class-ai1ec-events-helper.php:523
359
  msgid "third"
360
  msgstr ""
361
 
362
+ #: app/helper/class-ai1ec-events-helper.php:524
363
  msgid "fourth"
364
  msgstr ""
365
 
366
+ #: app/helper/class-ai1ec-events-helper.php:526
367
  msgid "last"
368
  msgstr ""
369
 
370
+ #: app/helper/class-ai1ec-events-helper.php:531
371
  msgid "Sunday"
372
  msgstr ""
373
 
374
+ #: app/helper/class-ai1ec-events-helper.php:532
375
  msgid "Monday"
376
  msgstr ""
377
 
378
+ #: app/helper/class-ai1ec-events-helper.php:533
379
  msgid "Tuesday"
380
  msgstr ""
381
 
382
+ #: app/helper/class-ai1ec-events-helper.php:534
383
  msgid "Wednesday"
384
  msgstr ""
385
 
386
+ #: app/helper/class-ai1ec-events-helper.php:535
387
  msgid "Thursday"
388
  msgstr ""
389
 
390
+ #: app/helper/class-ai1ec-events-helper.php:536
391
  msgid "Friday"
392
  msgstr ""
393
 
394
+ #: app/helper/class-ai1ec-events-helper.php:537
395
  msgid "Saturday"
396
  msgstr ""
397
 
398
+ #: app/helper/class-ai1ec-events-helper.php:539
399
  msgid "day"
400
  msgstr ""
401
 
402
+ #: app/helper/class-ai1ec-events-helper.php:540
403
  msgid "weekday"
404
  msgstr ""
405
 
406
+ #: app/helper/class-ai1ec-events-helper.php:541
407
  msgid "weekend day"
408
  msgstr ""
409
 
410
+ #: app/helper/class-ai1ec-events-helper.php:607
411
+ #: app/helper/class-ai1ec-events-helper.php:626
412
+ #: app/helper/class-ai1ec-events-helper.php:1676
413
  #: app/helper/class-ai1ec-settings-helper.php:237 app/view/box_repeat.php:2
414
  msgid "Daily"
415
  msgstr ""
416
 
417
+ #: app/helper/class-ai1ec-events-helper.php:608
418
+ #: app/helper/class-ai1ec-events-helper.php:627
419
+ #: app/helper/class-ai1ec-events-helper.php:1688 app/view/box_repeat.php:3
420
  msgid "Weekly"
421
  msgstr ""
422
 
423
+ #: app/helper/class-ai1ec-events-helper.php:609
424
+ #: app/helper/class-ai1ec-events-helper.php:628
425
+ #: app/helper/class-ai1ec-events-helper.php:1700 app/view/box_repeat.php:4
426
  msgid "Monthly"
427
  msgstr ""
428
 
429
+ #: app/helper/class-ai1ec-events-helper.php:610
430
+ #: app/helper/class-ai1ec-events-helper.php:629
431
+ #: app/helper/class-ai1ec-events-helper.php:1712 app/view/box_repeat.php:5
432
  msgid "Yearly"
433
  msgstr ""
434
 
435
+ #: app/helper/class-ai1ec-events-helper.php:651
436
  msgid "day(s)"
437
  msgstr ""
438
 
439
+ #: app/helper/class-ai1ec-events-helper.php:680
440
  msgid "week(s)"
441
  msgstr ""
442
 
443
+ #: app/helper/class-ai1ec-events-helper.php:750
444
  msgid "month(s)"
445
  msgstr ""
446
 
447
+ #: app/helper/class-ai1ec-events-helper.php:773
448
  msgid "year(s)"
449
  msgstr ""
450
 
451
+ #: app/helper/class-ai1ec-events-helper.php:1360
452
  msgid "Never"
453
  msgstr ""
454
 
455
+ #: app/helper/class-ai1ec-events-helper.php:1361
456
  msgid "After"
457
  msgstr ""
458
 
459
+ #: app/helper/class-ai1ec-events-helper.php:1362 app/view/box_repeat.php:28
460
  msgid "On date"
461
  msgstr ""
462
 
463
+ #: app/helper/class-ai1ec-events-helper.php:1555
464
+ #: app/helper/class-ai1ec-events-helper.php:1564
465
+ #: app/helper/class-ai1ec-events-helper.php:1572
466
  msgctxt "Recurrence editor - weekly tab"
467
  msgid "on"
468
  msgstr ""
469
 
470
+ #: app/helper/class-ai1ec-events-helper.php:1560
471
+ #: app/helper/class-ai1ec-events-helper.php:1589
472
+ #: app/helper/class-ai1ec-events-helper.php:1627
473
  msgid "and"
474
  msgstr ""
475
 
476
+ #: app/helper/class-ai1ec-events-helper.php:1585
477
+ #: app/helper/class-ai1ec-events-helper.php:1592
478
+ #: app/helper/class-ai1ec-events-helper.php:1598
479
+ #: app/helper/class-ai1ec-events-helper.php:1609
480
  msgctxt "Recurrence editor - monthly tab"
481
  msgid "on"
482
  msgstr ""
483
 
484
+ #: app/helper/class-ai1ec-events-helper.php:1585
485
+ #: app/helper/class-ai1ec-events-helper.php:1592
486
+ #: app/helper/class-ai1ec-events-helper.php:1598
487
  msgid "of the month"
488
  msgstr ""
489
 
490
+ #: app/helper/class-ai1ec-events-helper.php:1622
491
+ #: app/helper/class-ai1ec-events-helper.php:1630
492
+ #: app/helper/class-ai1ec-events-helper.php:1637
493
  msgctxt "Recurrence editor - yearly tab"
494
  msgid "on"
495
  msgstr ""
496
 
497
+ #: app/helper/class-ai1ec-events-helper.php:1679
498
  msgid "Every other day"
499
  msgstr ""
500
 
501
+ #: app/helper/class-ai1ec-events-helper.php:1681
502
  msgid "Every %d days"
503
  msgstr ""
504
 
505
+ #: app/helper/class-ai1ec-events-helper.php:1691
506
  msgid "Every other week"
507
  msgstr ""
508
 
509
+ #: app/helper/class-ai1ec-events-helper.php:1693
510
  msgid "Every %d weeks"
511
  msgstr ""
512
 
513
+ #: app/helper/class-ai1ec-events-helper.php:1703
514
  msgid "Every other month"
515
  msgstr ""
516
 
517
+ #: app/helper/class-ai1ec-events-helper.php:1705
518
  msgid "Every %d months"
519
  msgstr ""
520
 
521
+ #: app/helper/class-ai1ec-events-helper.php:1715
522
  msgid "Every other year"
523
  msgstr ""
524
 
525
+ #: app/helper/class-ai1ec-events-helper.php:1717
526
  msgid "Every %d years"
527
  msgstr ""
528
 
529
+ #: app/helper/class-ai1ec-events-helper.php:1737
530
  msgid "until %s"
531
  msgstr ""
532
 
533
+ #: app/helper/class-ai1ec-events-helper.php:1740
534
  msgid "for %d occurrences"
535
  msgstr ""
536
 
537
+ #: app/helper/class-ai1ec-events-helper.php:1742
538
  msgid "forever"
539
  msgstr ""
540
 
541
+ #: app/helper/class-ai1ec-events-helper.php:1839
542
  msgid "times"
543
  msgstr ""
544
 
588
  msgid "Calendar"
589
  msgstr ""
590
 
591
+ #: app/model/class-ai1ec-event.php:496
592
  msgid " (all-day)"
593
  msgstr ""
594
 
692
  msgstr ""
693
 
694
  #: app/view/agenda.php:81 app/view/event-multi.php:45
695
+ #: app/view/event-single.php:57
696
  msgid "Categories:"
697
  msgstr ""
698
 
699
  #: app/view/agenda.php:87 app/view/event-multi.php:51
700
+ #: app/view/event-single.php:64
701
  msgid "Tags:"
702
  msgstr ""
703
 
 
 
 
 
704
  #: app/view/box_event_contact.php:1
705
  msgid "Organizer contact info"
706
  msgstr ""
1057
  msgid "Exclude"
1058
  msgstr ""
1059
 
1060
+ #: app/view/box_time_and_date.php:67
1061
+ msgid "Choose a rule for exclusion"
1062
+ msgstr ""
1063
+
1064
+ #: app/view/box_time_and_date.php:73
1065
  msgid "Exclude dates"
1066
  msgstr ""
1067
 
1068
+ #: app/view/box_time_and_date.php:80
1069
+ msgid "Select date range"
1070
+ msgstr ""
1071
+
1072
+ #: app/view/box_time_and_date.php:85
1073
+ msgid "Choose specific dates to exclude"
1074
+ msgstr ""
1075
+
1076
  #: app/view/calendar.php:35
1077
  msgid "+ Post Your Event"
1078
  msgstr ""
1120
  msgstr ""
1121
 
1122
  #: app/view/event-excerpt.php:4 app/view/event-multi.php:20
1123
+ #: app/view/event-single.php:25
1124
  msgid "Where:"
1125
  msgstr ""
1126
 
1144
  msgid "View Map »"
1145
  msgstr ""
1146
 
1147
+ #: app/view/event-multi.php:33 app/view/event-single.php:45
1148
  msgid "Cost:"
1149
  msgstr ""
1150
 
1151
+ #: app/view/event-multi.php:39 app/view/event-single.php:51
1152
  msgid "Contact:"
1153
  msgstr ""
1154
 
1166
  msgid "Back to Calendar »"
1167
  msgstr ""
1168
 
1169
+ #: app/view/event-single.php:21
1170
+ msgid "Excluding:"
1171
+ msgstr ""
1172
+
1173
+ #: app/view/event-single.php:32
1174
  msgid "Add this event to your favourite calendar program (iCal, Outlook, etc.)"
1175
  msgstr ""
1176
 
1177
+ #: app/view/event-single.php:33
1178
  msgid "✔ Add to Calendar"
1179
  msgstr ""
1180
 
1181
+ #: app/view/event-single.php:36
1182
  msgid "Add this event to your Google Calendar"
1183
  msgstr ""
1184
 
1185
+ #: app/view/event-single.php:38
1186
  msgid "Add to Google Calendar"
1187
  msgstr ""
1188
 
lib/global-functions.php ADDED
@@ -0,0 +1,58 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ //
3
+ // global-functions.php
4
+ // all-in-one-event-calendar
5
+ //
6
+ // Created by The Seed Studio on 2012-02-28.
7
+ //
8
+
9
+ /**
10
+ * url_get_contents function
11
+ *
12
+ * @param string $url URL
13
+ *
14
+ * @return string
15
+ **/
16
+ function url_get_contents( $url ) {
17
+ // holds the output
18
+ $output = "";
19
+
20
+ // If CURL is available, use it
21
+ if( function_exists( 'curl_init' ) ) {
22
+
23
+ // initialize and configure curl for a request
24
+ $c = curl_init();
25
+ curl_setopt( $c, CURLOPT_URL, $url );
26
+ curl_setopt( $c, CURLOPT_RETURNTRANSFER, true );
27
+ // set user agent to PHP/PHP version number
28
+ curl_setopt( $c, CURLOPT_USERAGENT, 'PHP/' . PHP_VERSION );
29
+ curl_setopt ($c, CURLOPT_ENCODING, '' );
30
+
31
+ // Add support for HTTPS
32
+ if( strstr( $url, 'https' ) !== FALSE ) {
33
+ curl_setopt( $c, CURLOPT_SSLVERSION, 3 );
34
+ curl_setopt( $c, CURLOPT_SSL_VERIFYPEER, false );
35
+ curl_setopt( $c, CURLOPT_SSL_VERIFYHOST, 2 );
36
+ }
37
+ curl_setopt( $c, CURLOPT_COOKIESESSION, true );
38
+ curl_setopt( $c, CURLOPT_HEADER, false );
39
+ if( ! ini_get( 'safe_mode' ) ) {
40
+ curl_setopt( $c, CURLOPT_FOLLOWLOCATION, true );
41
+ }
42
+ // get the contents of the url
43
+ $output = curl_exec( $c );
44
+
45
+ curl_close( $c );
46
+ } else {
47
+ // if CURL is unavailable, use file_get_contents
48
+ $output = file_get_contents( $url );
49
+ }
50
+
51
+ // check if data is utf-8
52
+ if( ! SG_iCal_Parser::_ValidUtf8( $output ) ) {
53
+ // Encode the data in utf-8
54
+ $output = utf8_encode( $output );
55
+ }
56
+
57
+ return $output;
58
+ }
lib/helpers/SG_iCal_Freq.php CHANGED
@@ -44,7 +44,7 @@ class SG_iCal_Freq {
44
  * @param $excluded array of int (timestamps), see EXDATE documentation
45
  * @param $added array of int (timestamps), see RDATE documentation
46
  */
47
- public function __construct( $rule, $start, $excluded=array(), $added=array()) {
48
  $this->start = $start;
49
  $this->excluded = array();
50
 
@@ -78,6 +78,8 @@ class SG_iCal_Freq {
78
 
79
  //set until, and cache
80
  if( isset($this->rules['count']) ) {
 
 
81
 
82
  $cache[$ts] = $ts = $this->start;
83
  for($n=1; $n < $this->rules['count']; $n++) {
44
  * @param $excluded array of int (timestamps), see EXDATE documentation
45
  * @param $added array of int (timestamps), see RDATE documentation
46
  */
47
+ public function __construct( $rule, $start, $excluded=array(), $added=array(), $exrule = false) {
48
  $this->start = $start;
49
  $this->excluded = array();
50
 
78
 
79
  //set until, and cache
80
  if( isset($this->rules['count']) ) {
81
+ if( $exrule )
82
+ $this->rules['count']++;
83
 
84
  $cache[$ts] = $ts = $this->start;
85
  for($n=1; $n < $this->rules['count']; $n++) {
lib/helpers/SG_iCal_Parser.php CHANGED
@@ -174,7 +174,7 @@ class SG_iCal_Parser {
174
  * @param string $data
175
  * @return bool
176
  */
177
- private static function _ValidUtf8( $data ) {
178
  $rx = '[\xC0-\xDF]([^\x80-\xBF]|$)';
179
  $rx .= '|[\xE0-\xEF].{0,1}([^\x80-\xBF]|$)';
180
  $rx .= '|[\xF0-\xF7].{0,2}([^\x80-\xBF]|$)';
174
  * @param string $data
175
  * @return bool
176
  */
177
+ public static function _ValidUtf8( $data ) {
178
  $rx = '[\xC0-\xDF]([^\x80-\xBF]|$)';
179
  $rx .= '|[\xE0-\xEF].{0,1}([^\x80-\xBF]|$)';
180
  $rx .= '|[\xF0-\xF7].{0,2}([^\x80-\xBF]|$)';
lib/iCalcreator-2.10.23/iCalcreator.class.php CHANGED
@@ -1616,7 +1616,7 @@ class vcalendar {
1616
  if( FALSE === ( $filename = $this->getConfig( 'url' )))
1617
  $filename = $this->getConfig( 'dirfile' );
1618
  /* READ FILE */
1619
- if( FALSE === ( $rows = file_get_contents( $filename )))
1620
  return FALSE; /* err 1 */
1621
  }
1622
  elseif( is_array( $unparsedtext ))
1616
  if( FALSE === ( $filename = $this->getConfig( 'url' )))
1617
  $filename = $this->getConfig( 'dirfile' );
1618
  /* READ FILE */
1619
+ if( FALSE === ( $rows = url_get_contents( $filename )))
1620
  return FALSE; /* err 1 */
1621
  }
1622
  elseif( is_array( $unparsedtext ))
lib/iCalcreator-2.10/iCalcreator.class.php CHANGED
@@ -1562,7 +1562,7 @@ class vcalendar {
1562
  if( FALSE === ( $filename = $this->getConfig( 'url' )))
1563
  $filename = $this->getConfig( 'dirfile' );
1564
  /* READ FILE */
1565
- if( FALSE === ( $rows = file_get_contents( $filename )))
1566
  return FALSE; /* err 1 */
1567
  }
1568
  elseif( is_array( $unparsedtext ))
1562
  if( FALSE === ( $filename = $this->getConfig( 'url' )))
1563
  $filename = $this->getConfig( 'dirfile' );
1564
  /* READ FILE */
1565
+ if( FALSE === ( $rows = url_get_contents( $filename )))
1566
  return FALSE; /* err 1 */
1567
  }
1568
  elseif( is_array( $unparsedtext ))
readme.txt CHANGED
@@ -4,7 +4,7 @@ Donate link: https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_i
4
  Tags: calendar, event, events, ics, ics calendar, ical-feed, ics feed, wordpress ics importer, wordpress ical importer, upcoming events, todo, notes, journal, freebusy, availability, web calendar, web events, webcal, google calendar, ical, iCalendar, all-in-one, ai1ec, google calendar sync, ical sync, events sync, holiday calendar, calendar 2011, events 2011, widget, events widget, upcoming events widget, calendar widget, agenda widget
5
  Requires at least: 3.1.3
6
  Tested up to: 3.3
7
- Stable tag: 1.3
8
 
9
  An event calendar system with month, week, agenda views, upcoming events widget, color-coded categories, recurrence, and import/export of .ics feeds.
10
 
@@ -83,6 +83,19 @@ http://www.youtube.com/watch?v=zZHpzfyukyU
83
  * Filter by post ids (separate ids by comma): **[ai1ec post_id="1, 2"]**
84
 
85
  == Changelog ==
 
 
 
 
 
 
 
 
 
 
 
 
 
86
  = Version 1.3 =
87
  * Added shortcodes support.[#36](http://trac.the-seed.ca/ticket/36) (Howto is under Frequently Asked Questions tab)
88
  * Added support to exclude events using [EXRULE](http://www.kanzaki.com/docs/ical/exrule.html)
4
  Tags: calendar, event, events, ics, ics calendar, ical-feed, ics feed, wordpress ics importer, wordpress ical importer, upcoming events, todo, notes, journal, freebusy, availability, web calendar, web events, webcal, google calendar, ical, iCalendar, all-in-one, ai1ec, google calendar sync, ical sync, events sync, holiday calendar, calendar 2011, events 2011, widget, events widget, upcoming events widget, calendar widget, agenda widget
5
  Requires at least: 3.1.3
6
  Tested up to: 3.3
7
+ Stable tag: 1.4
8
 
9
  An event calendar system with month, week, agenda views, upcoming events widget, color-coded categories, recurrence, and import/export of .ics feeds.
10
 
83
  * Filter by post ids (separate ids by comma): **[ai1ec post_id="1, 2"]**
84
 
85
  == Changelog ==
86
+ = Version 1.4 =
87
+ * Export ICS feeds with utf8 header
88
+ * Import/Download ICS feeds with CURL if available, otherwise keep the current method
89
+ * Better UTF8 support for imported events
90
+ * Use local version jquery tools instead of the CDN copy
91
+ * Improved system for catching errors and trying best to find a possible route to proceed without having to quit/fail
92
+ * Fixed various Notice level errors
93
+ * Fixed bug with recurrence/exception rules not properly being converted to GMT
94
+ * Added EXDATE support and EXDATE UI to allow selection of specific dates.
95
+ * Added filter by feed source on All events page
96
+ * Improved caching of stored events
97
+ * Fixed getOffset problem - notify me if it still happens for you
98
+
99
  = Version 1.3 =
100
  * Added shortcodes support.[#36](http://trac.the-seed.ca/ticket/36) (Howto is under Frequently Asked Questions tab)
101
  * Added support to exclude events using [EXRULE](http://www.kanzaki.com/docs/ical/exrule.html)