Index: official-wordpress-events.php
===================================================================
--- official-wordpress-events.php	(revision 1083)
+++ official-wordpress-events.php	(working copy)
@@ -26,6 +26,7 @@
 	 * Constructor
 	 */
 	public function __construct() {
+		add_action( 'wp_ajax_nopriv_infinite_scroll' ,  array( $this, 'infinite_scroll_func' ) );
 		add_shortcode( 'official_wordpress_events', array( $this, 'render_events' ) );
 	}
 
@@ -35,9 +36,8 @@
 	public function render_events() {
 		$events = $this->get_all_events();
 		
-		if ( $events ) {
+		if ( $events ) 
 			require_once( __DIR__ . '/template-events.php' );
-		}
 	}
 
 	/**
@@ -51,7 +51,30 @@
 		
 		return $events;
 	}
+	/**
+	 * Infinite Scroll functionality added
+	 */
+	public function infinite_scroll_func() {
+		$off =	$_POST[ 'off' ];
+		$off = $off + 1;
+		if ( $tempEvents = $this->get_meetup_events( $off ) ) {
+			usort( $tempEvents, array( $this, 'sort_events' ) );
+			foreach ( $tempEvents as $event ) : ?>
 
+				<li>
+					<a href="<?php echo esc_attr( esc_url( $event->url ) ) ?>"><?php echo esc_html( $event->title ) ?></a>
+					<br />'
+					<?php echo esc_html( date( "l, F jS | g:i a", (int) $event->start_timestamp ) ) ?>
+					<br />
+					<?php echo esc_html( $event->location ) ?> 
+				</li>
+
+			<?php endforeach;
+		}
+		
+		wp_die();
+	}
+
 	/**
 	 * Sort events based on start timestamp 
 	 * 
@@ -104,21 +127,21 @@
 
 	/**
 	 * Get WordPress meetups from the Meetup.com API
-	 *
+	 * @param $offset
 	 * @return array
 	 */
-	protected function get_meetup_events() {
+	protected function get_meetup_events( $offset = 0 ) {
 		$events = array();
-
 		if ( ! defined( 'MEETUP_API_KEY' ) || ! MEETUP_API_KEY || ! $groups = $this->get_meetup_group_ids() ) {
 			return $events;
 		}
-		
+
 		$response = $this->remote_get( sprintf(
-			'%s2/events?group_id=%s&time=0,1m&page=%d&key=%s',
+			'%s2/events?group_id=%s&time=0,1m&page=%d&offset=%d&key=%s',
 			self::MEETUP_API_BASE_URL,
 			implode( ',', $groups ),
 			self::POSTS_PER_PAGE,
+			$offset,
 			MEETUP_API_KEY
 		) );
 
@@ -229,7 +252,6 @@
 				}
 	
 				if ( $error ) {
-					$error = preg_replace( '/&key=[a-z0-9]+/i', '&key=[redacted]', $error );
 					trigger_error( sprintf( '%s error for %s: %s', __METHOD__, parse_url( site_url(), PHP_URL_HOST ), sanitize_text_field( $error ) ), E_USER_WARNING );
 	
 					if ( $to = apply_filters( 'owe_error_email_addresses', array() ) ) {
Index: template-events.php
===================================================================
--- template-events.php	(revision 1083)
+++ template-events.php	(working copy)
@@ -1,3 +1,32 @@
+<script>
+	var flag = 0;
+	var offset = 0;
+	var ajaxurl = "<?php echo admin_url('admin-ajax.php'); ?>";
+	function async_infinite_load() {
+		jQuery.post (
+			ajaxurl, 
+			{
+ 			       'action': 'infinite_scroll',
+				'off'  :  offset,
+			}, 
+			function( response ) {
+				jQuery("#ofe_events ul").append(response);
+				flag = 0;
+				offset = offset + 1;
+			}
+		);
+
+	}
+
+	jQuery(window).scroll( function() {
+		
+   		if( jQuery(window).scrollTop() + jQuery(window).height() > ( jQuery('#ofe_events').height() + jQuery('#ofe_events').offset().top -10 ) && !flag ) {	
+				flag = flag + 1;
+				async_infinite_load();
+   		}
+	} );
+
+</script>
 <div id="ofe_events">
 	<ul>
 		<?php foreach ( $events as $event ) : ?>
