function process_mailchimp_shortcode($atts)
{
    // Attributes
    extract(shortcode_atts(array('form' => '', 'submit' => 'Submit', 'title' => '0', 'custom_title' => '', 'description' => '0', 'custom_description' => '', 'ajax' => '', 'recaptcha' => '', 'recaptcha_lang' => '', 'recaptcha_type' => '', 'recaptcha_theme' => '', 'recaptcha_size' => '', 'recaptcha_data_callback' => '', 'recaptcha_expired_callback' => '', 'inline' => '0'), $atts, 'yikes-mailchimp'));
    // set globals
    global $form_submitted, $process_submission_response;
    // setup form submitted variable
    $form_submitted = isset($form_submitted) ? $form_submitted : 0;
    /* If the user hasn't authenticated yet, lets kill off */
    if (get_option('yikes-mc-api-validation', 'invalid_api_key') != 'valid_api_key') {
        return '<div class="invalid-api-key-error"><p>' . __("Whoops, you're not connected to MailChimp. You need to enter a valid MailChimp API key.", 'yikes-inc-easy-mailchimp-extender') . '</p></div>';
    }
    // if the user forgot to specify a form ID, lets kill of and warn them.
    if (!$form) {
        return __('Whoops, it looks like you forgot to specify a form to display.', 'yikes-inc-easy-mailchimp-extender');
    }
    global $wpdb;
    // return it as an array, so we can work with it to build our form below
    $form_results = $wpdb->get_results('SELECT * FROM ' . $wpdb->prefix . 'yikes_easy_mc_forms WHERE id = ' . $form . '', ARRAY_A);
    // confirm we have some results, or return an error
    if (!$form_results) {
        return __("Oh no...This form doesn't exist. Head back to the manage forms page and select a different form.", 'yikes-inc-easy-mailchimp-extender');
    }
    /*
     *	Check if the user wants to use reCAPTCHA Spam Prevention
     */
    if (get_option('yikes-mc-recaptcha-status', '') == '1') {
        // allow users to manually set recaptcha (instead of globally - recaptcha="1"/recaptcha="0" - but still needs to be globally enabled on the settings page)
        if (!isset($atts['recaptcha']) || isset($atts['recaptcha']) && $atts['recaptcha'] == '1') {
            // if either of the Private the Secret key is left blank, we should display an error back to the user
            if (get_option('yikes-mc-recaptcha-site-key', '') == '') {
                return __("Whoops! It looks like you enabled reCAPTCHA but forgot to enter the reCAPTCHA site key!", 'yikes-inc-easy-mailchimp-extender') . '<span class="edit-link yikes-easy-mc-edit-link"><a class="post-edit-link" href="' . esc_url(admin_url('admin.php?page=yikes-inc-easy-mailchimp-settings&section=recaptcha-settings')) . '" title="' . __('ReCaptcha Settings', 'yikes-inc-easy-mailchimp-extender') . '">' . __('Edit ReCaptcha Settings', 'yikes-inc-easy-mailchimp-extender') . '</a></span>';
            }
            if (get_option('yikes-mc-recaptcha-secret-key', '') == '') {
                return __("Whoops! It looks like you enabled reCAPTCHA but forgot to enter the reCAPTCHA secret key!", 'yikes-inc-easy-mailchimp-extender') . '<span class="edit-link yikes-easy-mc-edit-link"><a class="post-edit-link" href="' . esc_url(admin_url('admin.php?page=yikes-inc-easy-mailchimp-settings&section=recaptcha-settings')) . '" title="' . __('ReCaptcha Settings', 'yikes-inc-easy-mailchimp-extender') . '">' . __('Edit ReCaptcha Settings', 'yikes-inc-easy-mailchimp-extender') . '</a></span>';
            }
            if (!empty($atts['recaptcha_type'])) {
                echo $atts['recaptcha_type'];
            }
            // Store the site language (to load recaptcha in a specific language)
            $locale = get_locale();
            $locale_split = explode('_', $locale);
            // Setup reCaptcha parameters
            $lang = isset($locale_split) ? $locale_split[0] : $locale;
            $lang = isset($atts['recaptcha_lang']) ? $atts['recaptcha_lang'] : $locale_split[0];
            $type = isset($atts['recaptcha_type']) ? strtolower($atts['recaptcha_type']) : 'image';
            // setup recaptcha type
            $theme = isset($atts['recaptcha_theme']) ? strtolower($atts['recaptcha_theme']) : 'light';
            // setup recaptcha theme
            $size = isset($atts['recaptcha_size']) ? strtolower($atts['recaptcha_size']) : 'normal';
            // setup recaptcha size
            $data_callback = isset($atts['recaptcha_data_callback']) ? $atts['recaptcha_data_callback'] : false;
            // setup recaptcha size
            $expired_callback = isset($atts['recaptcha_expired_callback']) ? $atts['recaptcha_expired_callback'] : false;
            // setup recaptcha size
            // Pass the shortcode parameters through a filter
            $recaptcha_shortcode_params = apply_filters('yikes-mailchimp-recaptcha-parameters', array('language' => $lang, 'theme' => $theme, 'type' => $type, 'size' => $size, 'success_callback' => $data_callback, 'expired_callback' => $expired_callback), $form);
            // enqueue Google recaptcha JS
            wp_register_script('google-recaptcha-js', 'https://www.google.com/recaptcha/api.js?hl=' . $recaptcha_shortcode_params['language'] . '&onload=renderReCaptchaCallback&render=explicit', array('jquery'), 'all');
            wp_enqueue_script('google-recaptcha-js');
            $recaptcha_site_key = get_option('yikes-mc-recaptcha-site-key', '');
            $recaptcha_box = '<div name="g-recaptcha" class="g-recaptcha" data-sitekey="' . $recaptcha_site_key . '" data-theme="' . $recaptcha_shortcode_params['theme'] . '" data-type="' . $recaptcha_shortcode_params['type'] . '" data-size="' . $recaptcha_shortcode_params['size'] . '" data-callback="' . $recaptcha_shortcode_params['success_callback'] . '" data-expired-callback="' . $recaptcha_shortcode_params['expired_callback'] . '"></div>';
            ?>
			<script type="text/javascript">
				/* Script Callback to init. multiple recaptchas on a single page */
				function renderReCaptchaCallback() {
					var x = 1;
					jQuery( '.g-recaptcha' ).each( function() {
						jQuery( this ).attr( 'id', 'recaptcha-' + x );
						recaptcha_paramaters = {
							'sitekey' : '<?php 
            echo $recaptcha_site_key;
            ?>
',
							'lang' : '<?php 
            echo $lang;
            ?>
',
							'type' : '<?php 
            echo $type;
            ?>
',
							'theme' : '<?php 
            echo $theme;
            ?>
',
							'size' : '<?php 
            echo $size;
            ?>
',
							'data_callback' : '<?php 
            echo $data_callback;
            ?>
',
							'expired_callback' : '<?php 
            echo $expired_callback;
            ?>
'
						};
						grecaptcha.render( 'recaptcha-' + x, recaptcha_paramaters );
						x++;
					});
				}
			</script>
			<?php 
        }
    }
    // place our results into a seperate variable for easy looping
    $form_data = $form_results[0];
    // store our variables
    $form_id = (int) $form_data['id'];
    // form id (the id of the form in the database)
    /*
     *	Get the stored form settings
     * 	Helper function now in class-yikes-inc-easy-mailchimp-extender-public.php
     *	@since 6.0.3.4
     */
    $form_settings = Yikes_Inc_Easy_Mailchimp_Extender_Public::yikes_retrieve_form_settings($form_id);
    $additional_form_settings = isset($form_data['form_settings']) ? json_decode($form_data['form_settings'], true) : false;
    // store our options from the additional form settings array
    $form_classes = $additional_form_settings ? $additional_form_settings['yikes-easy-mc-form-class-names'] : '';
    $inline_form = $additional_form_settings ? $additional_form_settings['yikes-easy-mc-inline-form'] : '';
    $submit_button_type = $additional_form_settings ? $additional_form_settings['yikes-easy-mc-submit-button-type'] : 'text';
    $submit_button_text = $additional_form_settings && $additional_form_settings['yikes-easy-mc-submit-button-text'] != '' ? esc_attr($additional_form_settings['yikes-easy-mc-submit-button-text']) : __('Submit', 'yikes-inc-easy-mailchimp-extender');
    $submit_button_image = $additional_form_settings ? esc_url($additional_form_settings['yikes-easy-mc-submit-button-image']) : '';
    $submit_button_classes = $additional_form_settings ? ' ' . esc_attr($additional_form_settings['yikes-easy-mc-submit-button-classes']) : '';
    // scheuldes
    $form_schedule_state = $additional_form_settings ? $additional_form_settings['yikes-easy-mc-form-schedule'] : false;
    $form_schedule_start = $additional_form_settings ? $additional_form_settings['yikes-easy-mc-form-restriction-start'] : '';
    $form_schedule_end = $additional_form_settings ? $additional_form_settings['yikes-easy-mc-form-restriction-end'] : '';
    $form_pending_message = $additional_form_settings ? $additional_form_settings['yikes-easy-mc-form-restriction-pending-message'] : '';
    $form_expired_message = $additional_form_settings ? $additional_form_settings['yikes-easy-mc-form-restriction-expired-message'] : '';
    // register required
    $form_login_required = $additional_form_settings ? $additional_form_settings['yikes-easy-mc-form-login-required'] : false;
    $form_login_message = $additional_form_settings ? $additional_form_settings['yikes-easy-mc-form-restriction-login-message'] : '';
    // store number of fields
    $field_count = (int) count($form_settings['fields']);
    // loop over each field, if it's set to hidden -- subtract it from the field count
    // this throws off the layout for inline forms setup below
    foreach (json_decode($form_data['fields']) as $form_field) {
        if (isset($form_field->hide) && $form_field->hide == 1) {
            $field_count--;
        }
    }
    /**
     *	If login is required, abort
     *	@since 6.0.3.8
     */
    if ($form_login_required) {
        if (apply_filters('yikes-mailchimp-required-login-requirement', !is_user_logged_in())) {
            ob_start();
            ?>
					<div class="yikes-mailchimp-login-required yikes-mailchimp-form-<?php 
            echo $form_id;
            ?>
-login-required">
						<?php 
            echo apply_filters('yikes-mailchimp-frontend-content', $form_login_message);
            ?>
					</div>
				<?php 
            $output = str_replace('[login-form]', wp_login_form(), ob_get_clean());
            return $output;
        }
    }
    /**
     *	Check if schedule is set for this form
     *	@since 6.0.3.8
     */
    if ($form_schedule_state) {
        // store current date
        $current_date = strtotime(current_time('m/d/Y g:iA'));
        // the the current date is less than the form scheduled start date
        if ($current_date < $form_schedule_start) {
            echo apply_filters('yikes-mailchimp-frontend-content', $form_pending_message);
            return;
            // abort
        }
        // The current date is past or equal to the end date, aka form has now expired
        if ($current_date >= $form_schedule_end) {
            echo apply_filters('yikes-mailchimp-frontend-content', $form_expired_message);
            return;
            // abort
        }
    }
    // setup the submit button text
    // shortcode parameter takes precedence over option
    if (isset($atts['submit'])) {
        $submit = $atts['submit'];
    } else {
        $submit = $submit_button_text;
    }
    // used in yikes-mailchimp-redirect-url filter
    global $post;
    $page_data = $post;
    // Remove the post_password from this for security
    if (isset($page_data->post_password)) {
        unset($page_data->post_password);
    }
    // grab the last enqueued style, so we can use it as a dependency of our styles (for override)
    global $wp_styles;
    end($wp_styles->groups);
    $last_key = key($wp_styles->groups);
    /*	
     *	Check for the constant to prevent styles from loading
     *	to exclude styles from loading, add `define( 'YIKES_MAILCHIMP_EXCLUDE_STYLES', true );` to functions.php
     *	@since 6.0.3.8
     */
    if (!defined('YIKES_MAILCHIMP_EXCLUDE_STYLES')) {
        // enqueue the form styles
        wp_enqueue_style('yikes-inc-easy-mailchimp-public-styles', YIKES_MC_URL . 'public/css/yikes-inc-easy-mailchimp-extender-public.min.css', array($last_key));
    }
    /**
     *	Check for form inline parameter
     */
    $form_inline = isset($atts['inline']) && ($atts['inline'] == 1 || $atts['inline'] == 'true') ? true : false;
    // recheck from our form options
    if (!$form_inline) {
        $form_inline = isset($additional_form_settings['yikes-easy-mc-inline-form']) && $additional_form_settings['yikes-easy-mc-inline-form'] == 1 ? true : false;
    }
    if ($form_inline) {
        $field_width = (double) (100 / $field_count);
        $submit_button_width = (double) (20 / $field_count);
        /*
         *	Add inline styles after calculating the percentage etc.
         *	@since 6.0.3.8
         */
        $inline_label_css = "\r\n\t\t\t.yikes-easy-mc-form label.label-inline {\r\n\t\t\t\tfloat: left;\r\n\t\t\t\twidth: calc( {$field_width}% - {$submit_button_width}% );\r\n\t\t\t\tpadding-right: 10px;\r\n\t\t\t }\r\n\t\t";
        wp_add_inline_style('yikes-inc-easy-mailchimp-public-styles', $inline_label_css);
    }
    // custom action hook to enqueue scripts & styles wherever the shortcode is used
    do_action('yikes-mailchimp-shortcode-enqueue-scripts-styles', $form_id);
    // object buffer
    ob_start();
    ?>
	
	<section id="yikes-mailchimp-container-<?php 
    echo $form_id;
    ?>
" class="yikes-mailchimp-container yikes-mailchimp-container-<?php 
    echo $form_id;
    ?>
 <?php 
    echo apply_filters('yikes-mailchimp-form-container-class', '', $form_id);
    ?>
">
	<?php 
    /* If the current user is logged in, and an admin...lets display our 'Edit Form' link */
    if (is_user_logged_in()) {
        if (current_user_can(apply_filters('yikes-mailchimp-user-role-access', 'manage_options'))) {
            $edit_form_link = '<span class="edit-link">';
            $edit_form_link .= '<a class="post-edit-link" href="' . esc_url(admin_url('admin.php?page=yikes-mailchimp-edit-form&id=' . $form)) . '" title="' . __('Edit', 'yikes-inc-easy-mailchimp-extender') . ' ' . ucwords($form_settings['form_name']) . '">' . __('Edit Form', 'yikes-inc-easy-mailchimp-extender') . '</a>';
            $edit_form_link .= '</span>';
            $edit_form_link = apply_filters('yikes-mailchimp-front-end-form-action-links', $edit_form_link, $form, ucwords($form_settings['form_name']));
        } else {
            $edit_form_link = '';
        }
    }
    // ensure there is an 'email' field the user can fill out
    // or else MailChimp throws errors at you
    // extract our array keys
    if (isset($form_settings['fields']) && !empty($form_settings['fields'])) {
        $array_keys = array_keys($form_settings['fields']);
        // check for EMAIL in that array
        if (!in_array('EMAIL', $array_keys) && !in_array('email', $array_keys)) {
            return '<p>' . __("An email field is required for all MailChimp forms. Please add an email field to this form.", 'yikes-inc-easy-mailchimp-extender') . '</p><p>' . $edit_form_link . '</p>';
        }
    } else {
        $error = '<p>' . __("Whoops, it looks like you forgot to assign fields to this form.", 'yikes-inc-easy-mailchimp-extender') . '</p>';
        if (is_user_logged_in()) {
            if (current_user_can(apply_filters('yikes-mailchimp-user-role-access', 'manage_options'))) {
                return $error . $edit_form_link;
            }
        } else {
            return $error;
        }
    }
    /*
     *  pre-form action hooks
     *  check readme for usage examples
     */
    do_action('yikes-mailchimp-before-form', $form_id);
    /*
     *	Set a custom title using custom_title="lorem ipsum" parameter in the shortcode
     *	- This takes precedence over the title set
     */
    if (!empty($title) && $title == 1 && isset($atts['custom_title'])) {
        echo '<h3 class="yikes-mailchimp-form-title yikes-mailchimp-form-title-' . $form_id . '">' . apply_filters('yikes-mailchimp-form-title', apply_filters('the_title', $atts['custom_title']), $form_id) . '</h3>';
    } else {
        // display the form description if the user
        // has specified to do so
        if (!empty($title) && $title == 1) {
            echo '<h3 class="yikes-mailchimp-form-title yikes-mailchimp-form-title-' . $form_id . '">' . apply_filters('yikes-mailchimp-form-title', apply_filters('the_title', $form_settings['form_name']), $form_id) . '</h3>';
        }
    }
    /*
     *	Allow users to specify a custom description for this form, no html support
     *	@since 6.0.3.8
     */
    if (!empty($description) && $description == 1 && isset($atts['custom_description'])) {
        echo '<section class="yikes-mailchimp-form-description yikes-mailchimp-form-description-' . $form_id . '">' . apply_filters('yikes-mailchimp-frontend-content', apply_filters('yikes-mailchimp-form-description', $atts['custom_description'], $form_id)) . '</section>';
    } else {
        // display the form description if the user
        // has specified to do so
        if (!empty($description) && $description == 1) {
            echo '<section class="yikes-mailchimp-form-description yikes-mailchimp-form-description-' . $form_id . '">' . apply_filters('yikes-mailchimp-frontend-content', apply_filters('yikes-mailchimp-form-description', $form_settings['form_description'], $form_id)) . '</section>';
        }
    }
    // Check for AJAX
    if (!empty($atts['ajax']) && $atts['ajax'] == 1 || $form_settings['submission_settings']['ajax'] == 1) {
        // enqueue our ajax script
        wp_register_script('yikes-easy-mc-ajax', YIKES_MC_URL . 'public/js/yikes-mc-ajax-forms.js', array('jquery'), 'yikes-inc-easy-mailchimp-extender', false);
        wp_localize_script('yikes-easy-mc-ajax', 'object', array('ajax_url' => esc_url(admin_url('admin-ajax.php')), 'page_data' => $page_data, 'interest_group_checkbox_error' => apply_filters('yikes-mailchimp-interest-group-checkbox-error', __('This field is required.', 'yikes-inc-easy-mailchimp-extender'), $form_id)));
        wp_enqueue_script('yikes-easy-mc-ajax');
    }
    /*
     *	If a form was submitted, and the response was returned
     *	let's display it back to the user
     *	@since 6.0.3.4
     */
    echo $process_submission_response;
    // render the form!
    ?>
			<form id="<?php 
    echo sanitize_title($form_settings['form_name']);
    ?>
-<?php 
    echo $form_id;
    ?>
" class="yikes-easy-mc-form yikes-easy-mc-form-<?php 
    echo $form_id . ' ';
    if ($form_inline) {
        echo 'yikes-mailchimp-form-inline ';
    }
    echo ' ' . apply_filters('yikes-mailchimp-form-class', $form_classes, $form_id);
    if (!empty($_POST) && $form_submitted == 1 && $form_settings['submission_settings']['hide_form_post_signup'] == 1) {
        echo ' yikes-easy-mc-display-none';
    }
    ?>
" action="" method="POST" data-attr-form-id="<?php 
    echo $form_id;
    ?>
">
							
				<?php 
    foreach ($form_settings['fields'] as $field) {
        // input array
        $field_array = array();
        // label array
        $label_array = array();
        // label classes array
        $label_class_array = array();
        if ($field['additional-classes'] != '') {
            // split custom classes at spaces
            $custom_classes = explode(' ', $field['additional-classes']);
            // check our custom class array for field-left/field-right
            // if it's set we need to assign it to our label and remove it from the field classes
            // input half left
            if (in_array('field-left-half', $custom_classes)) {
                // $label_array['class'] = 'class="field-left-half"';
                $label_class_array[] = 'field-left-half';
                $key = array_search('field-left-half', $custom_classes);
                unset($custom_classes[$key]);
            }
            // input half right
            if (in_array('field-right-half', $custom_classes)) {
                // $label_array['class'] = 'class="field-right-half"';
                $label_class_array[] = 'field-right-half';
                $key = array_search('field-right-half', $custom_classes);
                unset($custom_classes[$key]);
            }
            // input thirds (1/3 width, floated left)
            if (in_array('field-third', $custom_classes)) {
                // $label_array['class'] = 'class="field-third"';
                $label_class_array[] = 'field-third';
                $key = array_search('field-third', $custom_classes);
                unset($custom_classes[$key]);
            }
            // 2 column radio
            if (in_array('option-2-col', $custom_classes)) {
                // $label_array['class'] = 'class="option-2-col"';
                $label_class_array[] = 'option-2-col';
                $key = array_search('option-2-col', $custom_classes);
                unset($custom_classes[$key]);
            }
            // 3 column radio
            if (in_array('option-3-col', $custom_classes)) {
                // $label_array['class'] = 'class="option-3-col"';
                $label_class_array[] = 'option-3-col';
                $key = array_search('option-3-col', $custom_classes);
                unset($custom_classes[$key]);
            }
            // 4 column radio
            if (in_array('option-4-col', $custom_classes)) {
                // $label_array['class'] = 'class="option-4-col"';
                $label_class_array[] = 'option-4-col';
                $key = array_search('option-4-col', $custom_classes);
                unset($custom_classes[$key]);
            }
            // inline radio & checkboxes etc
            if (in_array('option-inline', $custom_classes)) {
                // $label_array['class'] = 'class="option-inline"';
                $label_class_array[] = 'option-inline';
                $key = array_search('option-inline', $custom_classes);
                unset($custom_classes[$key]);
            }
        } else {
            $custom_classes = array();
        }
        // if the form is set to inline, add the inline class to our labels
        // since @6.0.3.8
        if ($form_inline) {
            $label_class_array[] = 'label-inline';
        }
        if (isset($field['hide-label'])) {
            if ($field['hide-label'] == 1) {
                $custom_classes[] = 'field-no-label';
            }
        }
        /* Store tag variable based on field type */
        if (isset($field['merge'])) {
            $tag = 'merge';
        } else {
            $tag = 'group_id';
        }
        // build up our array
        $field_array['id'] = 'id="yikes-easy-mc-form-' . $form_id . '-' . esc_attr($field[$tag]) . '" ';
        $field_array['name'] = 'name="' . esc_attr($field[$tag]) . '" ';
        $field_array['placeholder'] = isset($field['placeholder']) ? 'placeholder="' . esc_attr(stripslashes($field['placeholder'])) . '" ' : '';
        $field_array['classes'] = 'class="yikes-easy-mc-' . $field['type'] . ' ' . esc_attr(trim(implode(' ', $custom_classes))) . '" ';
        // email must always be required and visible
        if ($field['type'] == 'email') {
            $field_array['required'] = 'required="required"';
            $label_array['visible'] = '';
            // $label_array['required'] = 'class="' . $field['merge'] . '-label yikes-mailchimp-field-required"';
            $label_class_array[] = $field['merge'] . '-label';
            $label_class_array[] = 'yikes-mailchimp-field-required';
        } else {
            if ($tag == 'merge') {
                $field_array['required'] = isset($field['require']) ? 'required="required"' : '';
                $label_array['visible'] = isset($field['hide']) ? 'style="display:none;"' : '';
                // $label_array['required'] = isset( $field['require'] ) ? 'class="' . $field['merge'] . '-label yikes-mailchimp-field-required"' : 'class="' . $field['merge'] . '-label"';
                $label_class_array[] = isset($field['require']) ? $field['merge'] . '-label yikes-mailchimp-field-required' : $field['merge'] . '-label';
            } else {
                $field_array['required'] = isset($field['require']) ? 'required="required"' : '';
                $label_array['visible'] = isset($field['hide']) ? 'style="display:none;"' : '';
                // $label_array['required'] = isset( $field['require'] ) ? 'class="' . $field['group_id'] . '-label yikes-mailchimp-field-required"' : 'class="' . $field['group_id'] . '-label"';
                $label_class_array[] = isset($field['require']) ? $field['group_id'] . '-label yikes-mailchimp-field-required' : $field['group_id'] . '-label';
            }
        }
        // if both hide label and hide field are checked, we gotta hide the field!
        if (isset($field['hide']) && $field['hide'] == 1) {
            if (isset($field['hide-label']) && $field['hide-label'] == 1) {
                $field_array['visible'] = 'style="display:none;"';
            }
        }
        $label_array['classes'] = 'class="' . implode(' ', $label_class_array) . '"';
        // filter the field array data
        $field_array = apply_filters('yikes-mailchimp-field-data', $field_array, $field, $form_id);
        /* Loop Over Standard Fields (aka merge variables) */
        if (isset($field['merge'])) {
            // loop over our fields by Type
            switch ($field['type']) {
                default:
                case 'email':
                case 'text':
                case 'number':
                    // pass our default value through our filter to parse dynamic data by tag (used solely for 'text' type)
                    $default_value = esc_attr(apply_filters('yikes-mailchimp-process-default-tag', $field['default']));
                    ?>
									<label for="<?php 
                    echo $field['merge'];
                    ?>
" <?php 
                    echo implode(' ', $label_array);
                    ?>
>
										
										<!-- dictate label visibility -->
										<?php 
                    if (!isset($field['hide-label'])) {
                        ?>
											<span class="<?php 
                        echo esc_attr($field['merge']) . '-label';
                        ?>
">
												<?php 
                        if (!isset($field['hide-label'])) {
                            echo apply_filters('yikes-mailchimp-' . $field['merge'] . '-label', esc_attr(stripslashes($field['label'])), $form_id);
                        }
                        ?>
											</span>
										<?php 
                    }
                    ?>
								
										<input <?php 
                    echo implode(' ', $field_array);
                    if ($field['type'] != 'email' && $field['type'] != 'number') {
                        ?>
 type="text" <?php 
                    } else {
                        if ($field['type'] == 'email') {
                            ?>
 type="email" <?php 
                        } else {
                            ?>
 type="number" <?php 
                        }
                    }
                    ?>
 value="<?php 
                    if (isset($_POST[$field['merge']]) && $form_submitted != 1) {
                        echo $_POST[$field['merge']];
                    } else {
                        echo esc_attr($default_value);
                    }
                    ?>
">
										
										<!-- description -->
										<?php 
                    if (isset($field['description'])) {
                        ?>
<p class="form-field-description"><small><?php 
                        echo apply_filters('yikes-mailchimp-' . $field['merge'] . '-description', esc_attr(stripslashes($field['description'])), $form_id);
                        ?>
</small></p><?php 
                    }
                    ?>
			
									</label>
									<?php 
                    break;
                case 'url':
                case 'imageurl':
                    $default_value = $field['default'];
                    ?>
									
									<script type="text/javascript">
										function properlyFormatURLField( e ) {
											var url_value = jQuery( e ).val();
											if( url_value.indexOf("http://") == '-1' ) {
												jQuery( e ).val( 'http://' + url_value );
											}
										}
									</script>
									
									<label for="<?php 
                    echo $field['merge'];
                    ?>
" <?php 
                    echo implode(' ', $label_array);
                    ?>
>
										
										<!-- dictate label visibility -->
										<?php 
                    if (!isset($field['hide-label'])) {
                        ?>
											<span class="<?php 
                        echo esc_attr($field['merge']) . '-label';
                        ?>
">
												<?php 
                        echo apply_filters('yikes-mailchimp-' . $field['merge'] . '-label', esc_attr(stripslashes($field['label'])));
                        ?>
											</span>
										<?php 
                    }
                    ?>
										
										<input <?php 
                    echo implode(' ', $field_array);
                    ?>
 type="url" <?php 
                    if ($field['type'] == 'url') {
                        ?>
 title="<?php 
                        _e('Please enter a valid URL to the website.', 'yikes-inc-easy-mailchimp-extender');
                        ?>
" <?php 
                    } else {
                        ?>
 title="<?php 
                        _e('Please enter a valid URL to the image.', 'yikes-inc-easy-mailchimp-extender');
                        ?>
" <?php 
                    }
                    ?>
 value="<?php 
                    if (isset($_POST[$field['merge']]) && $form_submitted != 1) {
                        echo $_POST[$field['merge']];
                    } else {
                        echo esc_attr($default_value);
                    }
                    ?>
" onblur="properlyFormatURLField(this);return false;">
										
										<!-- description -->
										<?php 
                    if (isset($field['description'])) {
                        ?>
<p class="form-field-description"><small><?php 
                        echo apply_filters('yikes-mailchimp-' . $field['merge'] . '-description', esc_attr(stripslashes($field['description'])), $form_id);
                        ?>
</small></p><?php 
                    }
                    ?>
									
									</label>
									<?php 
                    break;
                case 'phone':
                    $default_value = $field['default'];
                    $phone_format = $field['phone_format'];
                    ?>
									<script type="text/javascript">
										/* Replace incorrect values and format it correctly for MailChimp API */
										function formatUSPhoneNumber( e ) {
											var phone_number = e.value;
											var new_phone_number = phone_number.trim().replace( '(' , '' ).replace( ')', '-' ).replace(/(\d\d\d)(\d\d\d)(\d\d\d\d)/, "$1-$2-$3");
											jQuery( '.<?php 
                    echo "yikes-easy-mc-" . $field['type'];
                    ?>
' ).val( new_phone_number );
										}
									</script>

									<label for="<?php 
                    echo $field['merge'];
                    ?>
" <?php 
                    echo implode(' ', $label_array);
                    ?>
>
										
										<!-- dictate label visibility -->
										<?php 
                    if (!isset($field['hide-label'])) {
                        ?>
											<span class="<?php 
                        echo esc_attr($field['merge']) . '-label';
                        ?>
">
												<?php 
                        echo apply_filters('yikes-mailchimp-' . $field['merge'] . '-label', esc_attr(stripslashes($field['label'])));
                        ?>
											</span>
										<?php 
                    }
                    ?>
										
										<input <?php 
                    echo implode(' ', $field_array);
                    ?>
 type="text" <?php 
                    if ($phone_format != 'US') {
                        ?>
  title="<?php 
                        _e('International Phone number (eg: #-###-###-####)', 'yikes-inc-easy-mailchimp-extender');
                        ?>
" pattern="<?php 
                        echo apply_filters('yikes-mailchimp-international-phone-pattern', '[0-9]{1,}');
                        ?>
" <?php 
                    } else {
                        ?>
 title="<?php 
                        _e('US Phone Number (###) ### - ####', 'yikes-inc-easy-mailchimp-extender');
                        ?>
" pattern="<?php 
                        echo apply_filters('yikes-mailchimp-us-phone-pattern', '^(\\([0-9]{3}\\)|[0-9]{3}-)[0-9]{3}-[0-9]{4}$');
                        ?>
" onblur="formatUSPhoneNumber(this);"<?php 
                    }
                    ?>
 value="<?php 
                    if (isset($_POST[$field['merge']]) && $form_submitted != 1) {
                        echo $_POST[$field['merge']];
                    } else {
                        echo esc_attr($default_value);
                    }
                    ?>
">
										
										<!-- description -->
										<?php 
                    if (isset($field['description'])) {
                        ?>
<p class="form-field-description"><small><?php 
                        echo apply_filters('yikes-mailchimp-' . $field['merge'] . '-description', stripslashes($field['description']), $form_id);
                        ?>
</small></p><?php 
                    }
                    ?>
										
									</label>
									<?php 
                    break;
                case 'zip':
                    $default_value = $field['default'];
                    ?>
									<label for="<?php 
                    echo $field['merge'];
                    ?>
" <?php 
                    echo implode(' ', $label_array);
                    ?>
>
									
									<!-- dictate label visibility -->
									<?php 
                    if (!isset($field['hide-label'])) {
                        ?>
										<span class="<?php 
                        echo esc_attr($field['merge']) . '-label';
                        ?>
">
											<?php 
                        echo apply_filters('yikes-mailchimp-' . $field['merge'] . '-label', esc_attr(stripslashes($field['label'])));
                        ?>
										</span>
									<?php 
                    }
                    ?>
									
									<input <?php 
                    echo implode(' ', $field_array);
                    ?>
 type="text" pattern="\d{5,5}(-\d{4,4})?" title="<?php 
                    _e('5 digit zip code, numbers only', 'yikes-inc-easy-mailchimp-extender');
                    ?>
" value="<?php 
                    if (isset($_POST[$field['merge']]) && $form_submitted != 1) {
                        echo $_POST[$field['merge']];
                    } else {
                        echo esc_attr($default_value);
                    }
                    ?>
">
									
									<!-- description -->
									<?php 
                    if (isset($field['description'])) {
                        ?>
<p class="form-field-description"><small><?php 
                        echo apply_filters('yikes-mailchimp-' . $field['merge'] . '-description', esc_attr(stripslashes($field['description'])), $form_id);
                        ?>
</small></p><?php 
                    }
                    ?>

									</label>
									<?php 
                    break;
                case 'address':
                    // required fields
                    $required_fields = array('addr1' => 'address', 'addr2' => 'address 2', 'city' => 'city', 'state' => 'state', 'zip' => 'zip', 'country' => 'country');
                    // store number for looping
                    $x = 1;
                    foreach ($required_fields as $type => $label) {
                        // set the field names for the addrress fields
                        $field_array['name'] = 'name="' . $field[$tag] . '[' . $type . ']' . '"';
                        // reset the label classes for left-half/right-half for addresses
                        if (isset($label_array['class'])) {
                            if ($x % 2 == 0) {
                                $label_array['class'] = str_replace('field-left-half', 'field-right-half', $label_array['class']);
                            } else {
                                $label_array['class'] = str_replace('field-right-half', 'field-left-half', $label_array['class']);
                            }
                        }
                        switch ($type) {
                            default:
                            case 'addr1':
                            case 'addr2':
                            case 'city':
                                ?>
											<label for="<?php 
                                echo $field['merge'];
                                ?>
" <?php 
                                echo implode(' ', $label_array);
                                ?>
>
													
												<!-- dictate label visibility -->
												<?php 
                                if (!isset($field['hide-label'])) {
                                    ?>
													<span class="<?php 
                                    echo esc_attr($field['merge']) . '-label';
                                    ?>
">
														<?php 
                                    echo ucwords(apply_filters('yikes-mailchimp-address-' . $type . '-label', esc_attr($label)));
                                    ?>
													</span>
												<?php 
                                }
                                ?>
										
											
												<input <?php 
                                echo implode(' ', $field_array);
                                ?>
 type="text"  value="<?php 
                                if (isset($_POST[$field['merge']]) && $form_submitted != 1) {
                                    echo $_POST[$field['merge']];
                                }
                                ?>
">

											</label>
											<?php 
                                break;
                            case 'state':
                                ?>
											<label for="<?php 
                                echo $field['merge'];
                                ?>
" <?php 
                                echo implode(' ', $label_array);
                                ?>
 data-attr-name="state-dropdown">
											
												<!-- dictate label visibility -->
												<?php 
                                if (!isset($field['hide-label'])) {
                                    ?>
													<span class="<?php 
                                    echo esc_attr($field['merge']) . '-label';
                                    ?>
">
														<?php 
                                    echo ucwords(apply_filters('yikes-mailchimp-address-' . $type . '-label', esc_attr($label)));
                                    ?>
													</span>
												<?php 
                                }
                                ?>
												
												<select <?php 
                                echo implode(' ', $field_array);
                                ?>
>
													<?php 
                                include YIKES_MC_PATH . 'public/partials/shortcodes/templates/state-dropdown.php';
                                ?>
												</select>


											</label>
											<?php 
                                break;
                            case 'zip':
                                ?>
											<label for="<?php 
                                echo $field['merge'];
                                ?>
" <?php 
                                echo implode(' ', $label_array);
                                ?>
 data-attr-name="zip-input">
													
												<?php 
                                if (!isset($field['hide-label'])) {
                                    ?>
													<span class="<?php 
                                    echo esc_attr($field['merge']) . '-label';
                                    ?>
">
														<?php 
                                    echo ucwords(apply_filters('yikes-mailchimp-address-' . $type . '-label', esc_attr($label)));
                                    ?>
													</span>
												<?php 
                                }
                                ?>
												
												<input <?php 
                                echo implode(' ', $field_array);
                                ?>
 type="text" pattern="\d{5,5}(-\d{4,4})?" title="<?php 
                                _e('5 digit zip code, numbers only', 'yikes-inc-easy-mailchimp-extender');
                                ?>
" value="<?php 
                                if (isset($_POST[$field['merge']]) && $form_submitted != 1) {
                                    echo $_POST[$field['merge']];
                                } else {
                                    echo esc_attr($default_value);
                                }
                                ?>
">
					
											</label>
											<?php 
                                break;
                            case 'country':
                                ?>
											
											<script type="text/javascript">
												function checkCountry( e ) {
													var country_value = jQuery( e ).val();
													if( country_value != 'US' ) {
														// fade out the non-US fields
														jQuery( e ).parents( '.yikes-mailchimp-container' ).find( jQuery( 'label[data-attr-name="state-dropdown"]' ) ).fadeOut();
														jQuery( e ).parents( '.yikes-mailchimp-container' ).find( jQuery( 'label[data-attr-name="zip-input"]' ) ).fadeOut();
													} else {
														jQuery( e ).parents( '.yikes-mailchimp-container' ).find( jQuery( 'label[data-attr-name="state-dropdown"]' ) ).fadeIn();
														jQuery( e ).parents( '.yikes-mailchimp-container' ).find( jQuery( 'label[data-attr-name="zip-input"]' ) ).fadeIn();
													}
												}
											</script>
											
											<label for="<?php 
                                echo $field['merge'];
                                ?>
" <?php 
                                echo implode(' ', $label_array);
                                ?>
>
												
												<!-- dictate label visibility -->
												<?php 
                                if (!isset($field['hide-label'])) {
                                    ?>
													<span class="<?php 
                                    echo esc_attr($field['merge']) . '-label';
                                    ?>
">
														<?php 
                                    echo ucwords(apply_filters('yikes-mailchimp-address-' . $type . '-label', esc_attr($label)));
                                    ?>
													</span>
												<?php 
                                }
                                ?>
												
												<select <?php 
                                echo implode(' ', $field_array);
                                ?>
 onchange="checkCountry(this);return false;">
													<?php 
                                include YIKES_MC_PATH . 'public/partials/shortcodes/templates/country-dropdown.php';
                                ?>
												</select>
											</label>
											<?php 
                        }
                        $x++;
                    }
                    // description
                    if (isset($field['description']) && trim($field['description']) != '') {
                        ?>
<p class="form-field-description"><small><?php 
                        echo apply_filters('yikes-mailchimp-' . $field['merge'] . '-description', esc_attr(trim(stripslashes($field['description']))), $form_id);
                        ?>
</small></p><?php 
                    }
                    break;
                case 'date':
                case 'birthday':
                    // bootstrap datepicker requirements
                    wp_enqueue_script('bootstrap-hover-dropdown', YIKES_MC_URL . 'public/js/bootstrap-hover-dropdown.min.js', array('jquery'));
                    wp_enqueue_script('bootstrap-datepicker-script', YIKES_MC_URL . 'public/js/bootstrap-datepicker.min.js', array('jquery', 'bootstrap-hover-dropdown'));
                    wp_enqueue_style('bootstrap-datepicker-styles', YIKES_MC_URL . 'public/css/bootstrap-datepicker3.standalone.min.css');
                    wp_enqueue_style('override-datepicker-styles', YIKES_MC_URL . 'public/css/yikes-inc-easy-mailchimp-datepicker-styles.css', array('bootstrap-datepicker-styles'));
                    switch ($field['type']) {
                        default:
                        case 'date':
                            $date_format = isset($field['date_format']) ? $field['date_format'] : 'mm/dd/yy';
                            break;
                        case 'birthday':
                            $date_format = isset($field['date_format']) ? $field['date_format'] : 'mm/dd';
                            break;
                    }
                    // initialize the datepicker
                    ?>
									<style>
										.datepicker-dropdown {
											width: 20%;
											padding: .85em .5em !important;
										}
										<?php 
                    if (wp_is_mobile()) {
                        ?>
												.datepicker-dropdown {
													margin-top: 0px;
												}
												<?php 
                    }
                    // isntantiate our admin class to localize our calendar data
                    global $wp_locale;
                    $admin_class = new Yikes_Inc_Easy_Mailchimp_Forms_Admin('', '');
                    $month_names = $admin_class->yikes_jQuery_datepicker_strip_array_indices($wp_locale->month);
                    $month_names_short = $admin_class->yikes_jQuery_datepicker_strip_array_indices($wp_locale->month_abbrev);
                    $day_names = $admin_class->yikes_jQuery_datepicker_strip_array_indices($wp_locale->weekday);
                    $day_names_short = $admin_class->yikes_jQuery_datepicker_strip_array_indices($wp_locale->weekday_abbrev);
                    $day_names_min = $admin_class->yikes_jQuery_datepicker_strip_array_indices($wp_locale->weekday_initial);
                    $date_format = $admin_class->yikes_jQuery_datepicker_date_format_php_to_js($date_format);
                    $first_day = get_option('start_of_week');
                    $isRTL = $wp_locale->is_rtl();
                    ?>
									</style>
									<script type="text/javascript">
										jQuery(document).ready(function() {
											jQuery.fn.datepicker.dates['en'] = {
												months: <?php 
                    echo json_encode($admin_class->yikes_jQuery_datepicker_strip_array_indices($wp_locale->month));
                    ?>
,
												monthsShort: <?php 
                    echo json_encode($month_names_short);
                    ?>
,
												days: <?php 
                    echo json_encode($day_names);
                    ?>
,
												daysShort: <?php 
                    echo json_encode($day_names_short);
                    ?>
,
												daysMin: <?php 
                    echo json_encode($day_names_min);
                    ?>
,
												dateFormat: <?php 
                    echo json_encode($date_format);
                    ?>
,
												firstDay: <?php 
                    echo json_encode($first_day);
                    ?>
,
												format: <?php 
                    echo json_encode($date_format);
                    ?>
,
												isRTL: 0,			
												showButtonPanel: true,
												numberOfMonths: 1,
												today: '<?php 
                    _e('Today', 'yikes-inc-easy-mailchimp-extender');
                    ?>
'
											};
											jQuery('input[data-attr-type="<?php 
                    echo $field['type'];
                    ?>
"]').datepicker().on( 'show', function( e ) {
												var date_picker_height = jQuery('input[data-attr-type="<?php 
                    echo $field['type'];
                    ?>
"]').css( 'height' );
												date_picker_height = parseInt( date_picker_height.replace( 'px', '' ) ) + parseInt( 15 ) + 'px';
												var date_picker_width = jQuery('input[data-attr-type="<?php 
                    echo $field['type'];
                    ?>
"]').css( 'width' ).replace( 'px', '' );
												if( date_picker_width > 500 ) {
													date_picker_width = 500;
												}
												jQuery( '.datepicker-dropdown' ).css( 'margin-top', date_picker_height  ).css( 'width', date_picker_width + 'px' );
											});
										});
									</script>	
								<?php 
                    $default_value = isset($field_default) ? esc_attr($field['default']) : '';
                    // store empty number for looping
                    $x = 0;
                    ?>
									<label for="<?php 
                    echo esc_attr($field['merge']);
                    ?>
" <?php 
                    echo implode(' ', $label_array);
                    ?>
>
										
										<!-- dictate label visibility -->
										<?php 
                    if (!isset($field['hide-label'])) {
                        ?>
											<span class="<?php 
                        echo esc_attr($field['merge']) . '-label';
                        ?>
">
												<?php 
                        echo apply_filters('yikes-mailchimp-' . $field['merge'] . '-label', esc_attr(stripslashes($field['label'])));
                        ?>
											</span>
										<?php 
                    }
                    ?>
									
										<input <?php 
                    echo implode(' ', $field_array);
                    ?>
 type="text" <?php 
                    if ($field['type'] == 'date') {
                        ?>
 data-attr-type="date" <?php 
                    } else {
                        ?>
 data-attr-type="birthday" <?php 
                    }
                    ?>
 value="<?php 
                    if (isset($_POST[$field['merge']]) && $form_submitted != 1) {
                        echo $_POST[$field['merge']];
                    } else {
                        echo esc_attr($default_value);
                    }
                    ?>
">
										
										<!-- description -->
										<?php 
                    if (isset($field['description']) && trim($field['description']) != '') {
                        ?>
											<p class="form-field-description">
												<small>
													<?php 
                        echo apply_filters('yikes-mailchimp-' . $field['merge'] . '-description', esc_attr(trim(stripslashes($field['description']))), $form_id);
                        ?>
												</small>
											</p>
										<?php 
                    }
                    ?>
										
									</label>
									<?php 
                    break;
                case 'dropdown':
                    $default_value = $field['default_choice'];
                    // store empty number for looping
                    $x = 0;
                    // hidden labels
                    ?>
									<label for="<?php 
                    echo esc_attr($field['merge']);
                    ?>
" <?php 
                    echo implode(' ', $label_array);
                    ?>
>
										<!-- dictate label visibility -->
										<?php 
                    if (!isset($field['hide-label'])) {
                        ?>
											<span class="<?php 
                        echo esc_attr($field['merge']) . '-label';
                        ?>
">
												<?php 
                        echo apply_filters('yikes-mailchimp-' . $field['merge'] . '-label', esc_attr(stripslashes($field['label'])));
                        ?>
											</span>
										<?php 
                    }
                    ?>
										
										<select <?php 
                    echo implode(' ', $field_array);
                    ?>
>
											<?php 
                    // decode for looping
                    $choices = json_decode(stripslashes($field['choices']), true);
                    foreach ($choices as $choice) {
                        ?>
<option value="<?php 
                        echo $choice;
                        ?>
" <?php 
                        selected($default_value, $x);
                        ?>
><?php 
                        echo esc_attr(stripslashes($choice));
                        ?>
</option><?php 
                        $x++;
                    }
                    ?>
										</select>
									
										<!-- description -->
										<?php 
                    if (isset($field['description']) && trim($field['description']) != '') {
                        ?>
											<p class="form-field-description">
												<small>
													<?php 
                        echo apply_filters('yikes-mailchimp-' . $field['merge'] . '-description', esc_attr(trim(stripslashes($field['description']))), $form_id);
                        ?>
												</small>
											</p>
										<?php 
                    }
                    ?>
									
									</label>
									<?php 
                    break;
                case 'radio':
                case 'checkbox':
                    // remove the ID (as to not assign the same ID to every radio button)
                    unset($field_array['id']);
                    $choices = json_decode(stripslashes($field['choices']), true);
                    // assign a default choice
                    $default_value = isset($field['default_choice']) && $field['default_choice'] != '' ? $field['default_choice'] : $choices[0];
                    // if the form was submit, but failed, let's reset the post data
                    if (isset($_POST[$field['merge']]) && $form_submitted != 1) {
                        $default_value = $_POST[$field['merge']];
                    }
                    $count = count($choices);
                    $i = 1;
                    $x = 0;
                    // hidden labels
                    ?>
									<label for="<?php 
                    echo esc_attr($field['merge']);
                    ?>
" <?php 
                    echo implode(' ', $label_array);
                    ?>
>
										
										<!-- dictate label visibility -->
										<?php 
                    if (!isset($field['hide-label'])) {
                        ?>
											<span class="<?php 
                        echo esc_attr($field['merge']) . '-label';
                        ?>
 checkbox-parent-label">
												<?php 
                        echo apply_filters('yikes-mailchimp-' . $field['merge'] . '-label', esc_attr(stripslashes($field['label'])));
                        ?>
											</span>
										<?php 
                    }
                    foreach ($choices as $choice) {
                        ?>
											<label for="<?php 
                        echo esc_attr($field['merge']) . '-' . $i;
                        ?>
" class="yikes-easy-mc-checkbox-label <?php 
                        echo implode(' ', $custom_classes);
                        if ($i === $count) {
                            ?>
 last-selection<?php 
                        }
                        ?>
" <?php 
                        if ($i == 1) {
                            echo $field_array['required'];
                        }
                        ?>
>
												<input type="<?php 
                        echo esc_attr($field['type']);
                        ?>
" name="<?php 
                        echo $field['merge'];
                        ?>
" id="<?php 
                        echo $field['merge'] . '-' . $i;
                        ?>
" <?php 
                        checked($default_value, $choice);
                        ?>
 value="<?php 
                        echo esc_attr($choice);
                        ?>
">
												<span class="<?php 
                        echo esc_attr($field['merge']) . '-label';
                        ?>
"><?php 
                        echo stripslashes($choice);
                        ?>
</span>
											</label>
											<?php 
                        $i++;
                        $x++;
                    }
                    // description
                    if (isset($field['description']) && trim($field['description']) != '') {
                        ?>
											<p class="form-field-description">
												<small>
													<?php 
                        echo apply_filters('yikes-mailchimp-' . $field['merge'] . '-description', esc_attr(trim(stripslashes($field['description']))), $form_id);
                        ?>
												</small>
											</p>
										<?php 
                    }
                    ?>
									
									</label>
									<?php 
                    break;
            }
        } else {
            // loop over interest groups
            // store default choice
            $default_choice = isset($field['default_choice']) && !empty($field['default_choice']) ? is_array($field['default_choice']) ? $field['default_choice'] : $field['default_choice'] : (isset($field['default_choice']) ? $field['default_choice'] : '');
            // if the form was submit, but failed, let's reset the post data
            if (isset($_POST[$field['group_id']]) && $form_submitted != 1) {
                $default_choice = $_POST[$field['group_id']];
            }
            // get our groups
            $groups = isset($field['groups']) && !empty($field['groups']) ? json_decode(stripslashes_deep($field['groups']), true) : array();
            $count = count($groups);
            if ($field['type'] == 'checkboxes') {
                $type = 'checkbox';
            } else {
                if ($field['type'] == 'radio') {
                    $type = 'radio';
                }
            }
            // loop over the interest group field types
            switch ($field['type']) {
                case 'checkboxes':
                case 'radio':
                    $i = 0;
                    // used to select our checkboxes/radios
                    $x = 1;
                    // used to find the last item of our array
                    ?>
									<label for="<?php 
                    echo esc_attr($field['group_id']);
                    ?>
" <?php 
                    echo implode(' ', $label_array);
                    ?>
>
										<?php 
                    if (!isset($field['hide-label'])) {
                        ?>
											<!-- dictate label visibility -->
											<span class="<?php 
                        echo esc_attr($field['group_id']) . '-label';
                        ?>
 checkbox-parent-label">
												<?php 
                        echo apply_filters('yikes-mailchimp-' . $field['group_id'] . '-label', esc_attr(stripslashes($field['label'])));
                        ?>
											</span>
									<?php 
                    }
                    // Display Submission Errors
                    if (!empty($missing_required_checkbox_interest_groups)) {
                        if (in_array($field['group_id'], $missing_required_checkbox_interest_groups)) {
                            ?>
													<p class="yikes-mailchimp-required-interest-group-error">
														<?php 
                            echo apply_filters('yikes-mailchimp-interest-group-checkbox-error', __('This field is required.', 'yikes-inc-easy-mailchimp-extender'), $form_id);
                            ?>
													</p>
												<?php 
                        }
                    }
                    foreach ($groups as $group) {
                        if ($field['type'] == 'checkboxes') {
                            /* Setup the defaults for this field - varies if the field was previously submitted */
                            if (isset($_POST[$field['group_id']]) && $form_submitted != 1) {
                                $default_choice = $_POST[$field['group_id']];
                            } elseif (!isset($_POST['yikes-mailchimp-honeypot']) && $form_submitted != 1 || isset($_POST['yikes-mailchimp-honeypot']) && $form_submitted == 1) {
                                $default_choice = isset($field['default_choice']) && !empty($field['default_choice']) ? is_array($field['default_choice']) ? $field['default_choice'] : $field['default_choice'] : array();
                            }
                        }
                        ?>
											<label for="<?php 
                        echo $field['group_id'] . '-' . $i;
                        ?>
" class="yikes-easy-mc-checkbox-label <?php 
                        echo implode(' ', $custom_classes);
                        if ($x === $count) {
                            ?>
last-selection<?php 
                        }
                        ?>
">
												<input <?php 
                        if (isset($field['require']) && $field['require'] == 1) {
                            ?>
 class="yikes-interest-group-required" <?php 
                        }
                        ?>
 type="<?php 
                        echo $type;
                        ?>
" name="<?php 
                        echo $field['group_id'];
                        ?>
[]" id="<?php 
                        echo $field['group_id'] . '-' . $i;
                        ?>
" <?php 
                        if ($field['type'] == 'checkboxes') {
                            if (isset($_POST['yikes-mailchimp-honeypot']) && $form_submitted == 1 && in_array($i, $default_choice) || !isset($_POST['yikes-mailchimp-honeypot']) && $form_submitted != 1 && in_array($i, $default_choice) || $form_submitted != 1 && isset($_POST[$field['group_id']]) && in_array(esc_attr($group['name']), $default_choice)) {
                                echo 'checked="checked"';
                            }
                        } else {
                            checked(isset($default_choice) && is_array($default_choice) ? $default_choice[0] : $default_choice, $i);
                        }
                        ?>
 value="<?php 
                        echo esc_attr($group['name']);
                        ?>
">
												<?php 
                        echo esc_attr(stripslashes(str_replace('~', '\'', $group['name'])));
                        ?>
											</label>
											<?php 
                        $i++;
                        $x++;
                    }
                    // description
                    if (isset($field['description']) && trim($field['description']) != '') {
                        ?>
											<p class="form-field-description">
												<small>
													<?php 
                        echo apply_filters('yikes-mailchimp-' . $field['group_id'] . '-description', esc_attr(trim(stripslashes($field['description']))), $form_id);
                        ?>
												</small>
											</p>
										<?php 
                    }
                    ?>
										
									</label>
									<?php 
                    break;
                case 'dropdown':
                    ?>
	
									<label for="<?php 
                    echo esc_attr($field['group_id']);
                    ?>
" <?php 
                    echo implode(' ', $label_array);
                    ?>
>
										<!-- dictate label visibility -->
										<?php 
                    if (!isset($field['hide-label'])) {
                        ?>
											<span class="<?php 
                        echo esc_attr($field['group_id']) . '-label';
                        ?>
">
												<?php 
                        echo apply_filters('yikes-mailchimp-' . $field['group_id'] . '-label', esc_attr(stripslashes($field['label'])));
                        ?>
											</span>
										<?php 
                    }
                    ?>
									
										<select <?php 
                    echo implode(' ', $field_array);
                    ?>
>
											<?php 
                    $i = 0;
                    foreach ($groups as $group) {
                        ?>
<option <?php 
                        selected($i, $default_choice);
                        ?>
 value="<?php 
                        echo $group['name'];
                        ?>
"><?php 
                        echo esc_attr(stripslashes($group['name']));
                        ?>
</option><?php 
                        $i++;
                    }
                    ?>
										</select>
										
										<?php 
                    if (isset($field['description']) && trim($field['description']) != '') {
                        ?>
											<p class="form-field-description">
												<small>
													<?php 
                        echo apply_filters('yikes-mailchimp-' . $field['group_id'] . '-description', esc_attr(trim(stripslashes($field['description']))), $form_id);
                        ?>
												</small>
											</p>
										<?php 
                    }
                    ?>
								

									</label><?php 
                    break;
                case 'hidden':
                    $i = 0;
                    // used to select our checkboxes/radios
                    $x = 1;
                    // used to find the last item of our array
                    ?>
									
									<label for="<?php 
                    echo esc_attr($field['group_id']);
                    ?>
" <?php 
                    echo implode(' ', $label_array);
                    ?>
>
										
										<!-- dictate label visibility -->
										<?php 
                    if (!isset($field['hide-label'])) {
                        ?>
											<span class="<?php 
                        echo esc_attr($field['group_id']) . '-label';
                        ?>
 checkbox-parent-label" style="display:none;">
												<?php 
                        echo apply_filters('yikes-mailchimp-' . $field['group_id'] . '-label', esc_attr(stripslashes($field['label'])));
                        ?>
											</span>
										<?php 
                    }
                    foreach ($groups as $group) {
                        ?>
											<label for="<?php 
                        echo $field['group_id'] . '-' . $i;
                        ?>
" class="yikes-easy-mc-checkbox-label <?php 
                        echo implode(' ', $custom_classes);
                        if ($x === $count) {
                            ?>
last-selection<?php 
                        }
                        ?>
" style="display:none;">
												<input type="radio" name="<?php 
                        echo $field['group_id'];
                        ?>
[]" id="<?php 
                        echo $field['group_id'] . '-' . $i;
                        ?>
" <?php 
                        if ($field['type'] == 'checkboxes') {
                            if (in_array($i, $default_choice)) {
                                echo 'checked="checked"';
                            }
                        } else {
                            checked(isset($default_choice) && is_array($default_choice) ? $default_choice[0] : $default_choice, $i);
                        }
                        ?>
 value="<?php 
                        echo esc_attr($group['name']);
                        ?>
">
												<?php 
                        echo esc_attr(stripslashes(str_replace('~', '\'', $group['name'])));
                        ?>
											</label>
											<?php 
                        $i++;
                        $x++;
                    }
                    // description
                    if (isset($field['description']) && trim($field['description']) != '') {
                        ?>
											<p class="form-field-description">
												<small>
													<?php 
                        echo apply_filters('yikes-mailchimp-' . $field['group_id'] . '-description', esc_attr(trim(stripslashes($field['description']))), $form_id);
                        ?>
												</small>
											</p>
										<?php 
                    }
                    ?>
</label><?php 
                    break;
            }
        }
        // end interest groups
    }
    do_action('yikes-mailchimp-additional-form-fields', $form_data);
    /* if we've enabled reCaptcha protection */
    if (isset($recaptcha_box)) {
        echo $recaptcha_box;
    }
    if (is_user_logged_in()) {
        if (current_user_can(apply_filters('yikes-mailchimp-user-role-access', 'manage_options'))) {
            $admin_class = ' admin-logged-in';
        }
    } else {
        $admin_class = '';
    }
    ?>
				
				<!-- Honepot Trap -->
				<input type="hidden" name="yikes-mailchimp-honeypot" id="yikes-mailchimp-honeypot" value="">
				
				<!-- List ID -->
				<input type="hidden" name="yikes-mailchimp-associated-list-id" id="yikes-mailchimp-associated-list-id" value="<?php 
    echo $form_settings['list_id'];
    ?>
">
				
				<!-- Form that is being submitted! Used to display error/success messages above the correct form -->
				<input type="hidden" name="yikes-mailchimp-submitted-form" id="yikes-mailchimp-submitted-form" value="<?php 
    echo $form_id;
    ?>
">
				
				<!-- Submit Button -->
				<?php 
    if ($form_inline) {
        echo '<label class="empty-form-inline-label submit-button-inline-label"><span class="empty-label">&nbsp;</span>';
    }
    // display the image or text based button
    if ($submit_button_type == 'text') {
        echo apply_filters('yikes-mailchimp-form-submit-button', '<button type="submit" class="' . apply_filters('yikes-mailchimp-form-submit-button-classes', 'yikes-easy-mc-submit-button yikes-easy-mc-submit-button-' . esc_attr($form_data['id']) . ' btn btn-primary' . $submit_button_classes . $admin_class, $form_data['id']) . '">' . apply_filters('yikes-mailchimp-form-submit-button-text', esc_attr(stripslashes($submit)), $form_data['id']) . '</button>', $form_data['id']);
    } else {
        echo apply_filters('yikes-mailchimp-form-submit-button', '<input type="image" alt="' . apply_filters('yikes-mailchimp-form-submit-button-text', esc_attr(stripslashes($submit)), $form_data['id']) . '" src="' . $submit_button_image . '" class="' . apply_filters('yikes-mailchimp-form-submit-button-classes', 'yikes-easy-mc-submit-button yikes-easy-mc-submit-button-image yikes-easy-mc-submit-button-' . esc_attr($form_data['id']) . ' btn btn-primary' . $submit_button_classes . $admin_class, $form_data['id']) . '">', $form_data['id']);
    }
    if ($form_inline) {
        echo '</label>';
    }
    ?>
				<!-- Nonce Security Check -->
				<?php 
    wp_nonce_field('yikes_easy_mc_form_submit', 'yikes_easy_mc_new_subscriber');
    ?>
			
			</form>
			<!-- MailChimp Form generated using Easy Forms for MailChimp v<?php 
    echo YIKES_MC_VERSION;
    ?>
 by YIKES, Inc. (https://wordpress.org/plugins/yikes-inc-easy-mailchimp-extender/) -->
			
		<?php 
    /* If the current user is logged in, and an admin...lets display our 'Edit Form' link */
    if (is_user_logged_in()) {
        if (current_user_can(apply_filters('yikes-mailchimp-user-role-access', 'manage_options'))) {
            echo $edit_form_link;
        }
    }
    /*
     *  post-form action hooks
     *  check readme for usage examples
     */
    do_action('yikes-mailchimp-after-form', $form_id);
    /*
     *	Update the impressions count
     *	for non-admins
     */
    if (!current_user_can('manage_options')) {
        $form_data['impressions']++;
        $wpdb->update($wpdb->prefix . 'yikes_easy_mc_forms', array('impressions' => $form_data['impressions']), array('ID' => $form), array('%d'), array('%d'));
    }
    ?>
	</section>
	<?php 
    return ob_get_clean();
}
 /**
  * Register all of the hooks related to the admin area functionality
  * of the plugin.
  *
  * @since    1.0.0
  * @access   private
  */
 private function define_admin_hooks()
 {
     $plugin_admin = new Yikes_Inc_Easy_Mailchimp_Forms_Admin($this->get_yikes_inc_easy_mailchimp_extender(), $this->get_version(), $this->form_interface);
     $plugin_admin->hooks();
     $this->loader->add_action('admin_enqueue_scripts', $plugin_admin, 'enqueue_styles');
     $this->loader->add_action('admin_enqueue_scripts', $plugin_admin, 'enqueue_scripts');
 }