<?php
$is_user_logged_in = is_user_logged_in();
$booked_current_user = $is_user_logged_in ? wp_get_current_user() : false;

$guest_booking = get_option( 'booked_booking_type', 'registered' ) === 'guest';
$new_appointment_default = get_option('booked_new_appointment_default','draft');

$customer_type = 'current';
if ( ! $is_user_logged_in ) {
	$customer_type = 'new';

	if ( $guest_booking ) {
		$customer_type = 'guest';
	}
}

// check the limit
$reached_limit = false;
$will_reached_limit = false;
$appointment_limit = get_option( 'booked_appointment_limit' );
if ( $is_user_logged_in && $appointment_limit ) {
	$upcoming_user_appointments = booked_user_appointments( $booked_current_user->ID, true );
	$reached_limit = $upcoming_user_appointments >= $appointment_limit;

	// check the reached limit when there are more than one appointment to book
	// in some cases the limit might be reached after booking too many appointments at a time
	if ( $total_appts > 1 ) {
		$will_reached_limit = ( $upcoming_user_appointments + $total_appts ) >= $appointment_limit;
	}
}
?>

<?php // Not logged in and guest booking is disabled ?>
<?php if ( ! $is_user_logged_in && ! $guest_booking ): ?>

	<form name="customerChoices" action="" id="customerChoices" class="bookedClearFix"<?php echo ( !get_option('users_can_register') ? ' style="display:none;"' : '' ); ?>>

		<?php if ( get_option('users_can_register') ): ?>
			<div class="field">
				<span class="checkbox-radio-block">
					<input data-condition="customer_choice" type="radio" name="customer_choice[]" id="customer_new" value="new" checked="checked">
					<label for="customer_new"><?php esc_html_e('New customer','booked'); ?></label>
				</span>
			</div>
		<?php endif; ?>

		<div class="field">
			<span class="checkbox-radio-block">
				<input data-condition="customer_choice" type="radio" name="customer_choice[]" id="customer_current" value="current"<?php echo ( !get_option('users_can_register') ? ' checked="checked"' : '' ); ?>>
				<label for="customer_current"><?php esc_html_e('Current customer','booked'); ?></label>
			</span>
		</div>
	</form>

	<div class="condition-block customer_choice<?php echo ( !get_option('users_can_register') && !is_user_logged_in() ? ' default' : '' ); ?>" id="condition-current">

		<?php
		$tmp_bookings = $bookings;
		$first_booking = array_shift( $tmp_bookings );
		$first_booking = ! empty($first_booking) ? $first_booking[0] : array( 'date' => '', 'title' => '', 'timeslot' => '', 'calendar_id' => '' );
		?>
		<form id="ajaxlogin" action="" method="post" data-date="<?php echo $first_booking['date']; ?>" data-title="<?php echo $first_booking['title']; ?>" data-timeslot="<?php echo $first_booking['timeslot']; ?>" data-calendar-id="<?php echo $first_booking['calendar_id']; ?>">
			<div class="cf-block">

				<?php include(QUICKCAL_AJAX_INCLUDES_DIR . 'front/appointment-form/form-fields-login.php'); ?>

				<input type="hidden" name="action" value="booked_ajax_login">
				<?php wp_nonce_field( 'ajax_login_nonce', 'security' ); ?>

				<div class="field">
					<p class="status"></p>
				</div>

				<?php if ( !is_multisite() ): ?>
				<a href="#" class="booked-forgot-password"><?php esc_html_e( 'I forgot my password.', 'booked' ); ?></a>
				<?php endif; ?>

			</div>

			<div class="field">
				<input name="submit" type="submit" class="button button-primary" value="<?php esc_html_e('Sign in', 'booked') ?>">
				<button class="cancel button"><?php esc_html_e('Cancel','booked'); ?></button>
			</div>
		</form>

		<?php if ( !is_multisite() ): ?>
			<form id="ajaxforgot" action="" method="post">
				<div class="cf-block" style="margin:0 0 5px;">

					<?php include(QUICKCAL_AJAX_INCLUDES_DIR . 'front/appointment-form/form-fields-forgot.php'); ?>

					<input type="hidden" name="action" value="booked_ajax_forgot">
					<?php wp_nonce_field( 'ajax_forgot_nonce', 'security' ); ?>

					<div class="field">
						<p class="status"></p>
					</div>

				</div>

				<div class="field">
					<input name="submit_forgot" type="submit" class="button button-primary" value="<?php esc_html_e('Reset Password', 'booked') ?>">
					<button class="booked-forgot-goback button"><?php esc_html_e('Go Back','booked'); ?></button>
				</div>
			</form>
		<?php endif; ?>

	</div>

<?php endif ?>

<?php // The booking form ?>
<div class="condition-block customer_choice<?php echo ( $guest_booking || get_option('users_can_register') && !is_user_logged_in() || is_user_logged_in() ? ' default' : '' ); ?>" id="condition-new">
	<form action="" method="post" id="newAppointmentForm">
		<input type="hidden" name="customer_type" value="<?php echo $customer_type; ?>" />
		<input type="hidden" name="action" value="booked_add_appt" />

		<?php if ( $is_user_logged_in ): ?>
			<input type="hidden" name="user_id" value="<?php echo $booked_current_user->ID; ?>" />
		<?php endif ?>

		<?php
		$error_message = '';

		// User limit reached
		if ( $reached_limit ) {
			$error_message = sprintf(_n("Sorry, but you've hit the appointment limit. Each user may only book %d appointment at a time.","Sorry, but you've hit the appointment limit. Each user may only book %d appointments at a time.", $appointment_limit, "booked" ), $appointment_limit);
		}

		// User limit not reached yet, however, the limit will be exceeded when booking the next appointments
		if ( $will_reached_limit && ! $reached_limit ) {
			$error_message = sprintf(esc_html__("Sorry, but you're about to book more appointments than you are allowed to book at a time. Each user may only book %d appointments at a time.", "booked" ), $appointment_limit);
		}

		// Print the error message, if any
		if ( $error_message ) {
			echo wpautop( $error_message );
		}

		// If there aren't any errors, and the user is logged in
		if ( $is_user_logged_in && ! $error_message ) {
			$msg = sprintf( _n( 'You are about to request an appointment for %s.', 'You are about to request appointments for %s.', $total_appts, 'booked' ), '<em>' . quickcal_get_name( $booked_current_user->ID ) . '</em>' ) . ' ' . _n( 'Please review and confirm that you would like to request the following appointment:', 'Please review and confirm that you would like to request the following appointments:', $total_appts, 'booked' );
			echo wpautop( $msg );
		}

		// If there aren't any errors, and the user isn't logged in
		if ( ! $is_user_logged_in && ! $error_message ) {
			$msg = _n( 'Please confirm that you would like to request the following appointment:', 'Please confirm that you would like to request the following appointments:', $total_appts, 'booked' );
			echo wpautop( $msg );
		}

		// If no errors, list the bookings
		if ( ! $error_message ) {
			// list calendars and their appointments
			include( QUICKCAL_AJAX_INCLUDES_DIR . 'front/appointment-form/bookings.php' );
		}

		if ( ! $is_user_logged_in && ! $error_message && class_exists('ReallySimpleCaptcha') ) : ?>
			<?php
			$rsc_url = WP_PLUGIN_URL . '/really-simple-captcha/';
			$captcha = new ReallySimpleCaptcha();
			$captcha->bg = array(245,245,245);
			$captcha->fg = array(150,150,150);
			$captcha_word = $captcha->generate_random_word(); //generate a random string with letters
			$captcha_prefix = mt_rand(); //random number
			$captcha_image = $captcha->generate_image($captcha_prefix, $captcha_word); //generate the image file. it returns the file name
			$captcha_file = rtrim(get_bloginfo('wpurl'), '/') . '/wp-content/plugins/really-simple-captcha/tmp/' . $captcha_image; //construct the absolute URL of the captcha image
			?>
			<p class="captcha">
				<label for="captcha_code"><?php esc_html_e('Please enter the following text:','booked'); ?></label>
				<img class="captcha-image" src="<?php echo $rsc_url ?>tmp/<?php echo $captcha_image ?>">
			</p>

			<div class="field">
				<input type="text" name="captcha_code" class="textfield large" value="" tabindex="104" />
				<input type="hidden" name="captcha_word" value="<?php echo $captcha_word; ?>" />
			</div>

			<br>
		<?php endif; ?>

		<div class="field">
			<p class="status"></p>
		</div>

		<div class="field">
			<?php if ( $error_message ): ?>
				<button class="cancel button"><?php esc_html_e('Okay','booked'); ?></button>
			<?php else: ?>
				<input type="submit" id="submit-request-appointment" class="button button-primary" value="<?php echo ( $new_appointment_default == 'draft' ? esc_html( _n( 'Request Appointment', 'Request Appointments', $total_appts, 'booked' ) ) : esc_html( _n( 'Book Appointment', 'Book Appointments', $total_appts, 'booked' ) ) ); ?>">
				<button class="cancel button"><?php esc_html_e('Cancel','booked'); ?></button>
			<?php endif; ?>
		</div>
	</form>
</div>
