<?php
/**
 * Vacation Rental Booking Theme Customizer
 * @package Vacation Rental Booking
 */

/** Sanitize Functions. **/
	require get_template_directory() . '/inc/customizer/default.php';

if (!function_exists('vacation_rental_booking_customize_register')) :

function vacation_rental_booking_customize_register( $wp_customize ) {

	require get_template_directory() . '/inc/customizer/custom-classes.php';
	require get_template_directory() . '/inc/customizer/sanitize.php';
	require get_template_directory() . '/inc/customizer/header-button.php';
	require get_template_directory() . '/inc/customizer/typography.php';
	require get_template_directory() . '/inc/customizer/social-media.php';
	require get_template_directory() . '/inc/customizer/custom-addon.php';
	require get_template_directory() . '/inc/customizer/colors.php';
	require get_template_directory() . '/inc/customizer/global-color-setting.php';
	require get_template_directory() . '/inc/customizer/post.php';
	require get_template_directory() . '/inc/customizer/footer.php';
	require get_template_directory() . '/inc/customizer/layout-setting.php';
	require get_template_directory() . '/inc/customizer/homepage-content.php';
	require get_template_directory() . '/inc/customizer/additional-woocommerce.php';
	require get_template_directory() . '/inc/customizer/404-page-settings.php';
	require get_template_directory() . '/inc/customizer/nothing-found-page-settings.php';

	$wp_customize->get_setting( 'blogname' )->transport         = 'postMessage';
	$wp_customize->get_setting( 'blogdescription' )->transport  = 'postMessage';
	$wp_customize->get_setting( 'header_textcolor' )->transport = 'postMessage';
	$wp_customize->get_section( 'colors' )->panel = 'theme_colors_panel';
	$wp_customize->get_section( 'colors' )->title = esc_html__('Color Options','vacation-rental-booking');
	$wp_customize->get_section( 'title_tagline' )->panel = 'theme_general_settings';
	$wp_customize->get_section( 'header_image' )->panel = 'theme_general_settings';
	$wp_customize->get_section( 'background_image' )->panel = 'theme_general_settings';

	if ( isset( $wp_customize->selective_refresh ) ) {
		
		$wp_customize->selective_refresh->add_partial( 'blogname', array(
			'selector'        => '.header-titles .custom-logo-name',
			'render_callback' => 'vacation_rental_booking_customize_partial_blogname',
		) );

		$wp_customize->selective_refresh->add_partial( 'blogdescription', array(
			'selector'        => '.site-description',
			'render_callback' => 'vacation_rental_booking_customize_partial_blogdescription',
		) );

	}

	$wp_customize->add_panel( 'theme_general_settings',
		array(
			'title'      => esc_html__( 'General Settings', 'vacation-rental-booking' ),
			'priority'   => 10,
			'capability' => 'edit_theme_options',
		)
	);

	$wp_customize->add_panel( 'theme_colors_panel',
		array(
			'title'      => esc_html__( 'Color Settings', 'vacation-rental-booking' ),
			'priority'   => 15,
			'capability' => 'edit_theme_options',
		)
	);

	// Theme Options Panel.
	$wp_customize->add_panel( 'theme_footer_option_panel',
		array(
			'title'      => esc_html__( 'Footer Settings', 'vacation-rental-booking' ),
			'priority'   => 150,
			'capability' => 'edit_theme_options',
		)
	);

	// Template Options
	$wp_customize->add_panel( 'vacation_rental_booking_theme_home_pannel',
		array(
			'title'      => esc_html__( 'Frontpage Settings', 'vacation-rental-booking' ),
			'priority'   => 4,
			'capability' => 'edit_theme_options',
		)
	);

	// Theme Addons Panel.
	$wp_customize->add_panel( 'vacation_rental_booking_theme_addons_panel',
		array(
			'title'      => esc_html__( 'Theme Addons', 'vacation-rental-booking' ),
			'priority'   => 5,
			'capability' => 'edit_theme_options',
		)
	);
	
	// Theme Options Panel.
	$wp_customize->add_panel( 'vacation_rental_booking_theme_option_panel',
		array(
			'title'      => esc_html__( 'Theme Options', 'vacation-rental-booking' ),
			'priority'   => 5,
			'capability' => 'edit_theme_options',
		)
	);
	$wp_customize->add_setting('vacation_rental_booking_logo_width_range',
	    array(
	        'default'           => $vacation_rental_booking_default['vacation_rental_booking_logo_width_range'],
	        'capability'        => 'edit_theme_options',
	        'sanitize_callback' => 'vacation_rental_booking_sanitize_number_range',
	    )
	);
	$wp_customize->add_control('vacation_rental_booking_logo_width_range',
	    array(
	        'label'       => esc_html__('Logo width', 'vacation-rental-booking'),
	        'description'       => esc_html__( 'Specify the range for logo size with a minimum of 200px and a maximum of 700px, in increments of 20px.', 'vacation-rental-booking' ),
	        'section'     => 'title_tagline',
	        'type'        => 'range',
	        'input_attrs' => array(
	           'min'   => 100,
	           'max'   => 700,
	           'step'   => 20,
        	),
	    )
	);

	// Register custom section types.
	$wp_customize->register_section_type( 'Vacation_Rental_Booking_Customize_Section_Upsell' );

	// Register sections.
	$wp_customize->add_section(
		new Vacation_Rental_Booking_Customize_Section_Upsell(
			$wp_customize,
			'theme_upsell',
			array(
				'title'    => esc_html__( 'Vacation Rental Booking', 'vacation-rental-booking' ),
				'pro_text' => esc_html__( 'Upgrade To Pro', 'vacation-rental-booking' ),
				'pro_url'  => esc_url('https://www.omegathemes.com/products/vacation-rental-wordpress-theme'),
				'priority'  => 1,
			)
		)
	);

	// Register second custom section (Buy Bundle)
	$wp_customize->add_section(
		new Vacation_Rental_Booking_Customize_Section_Upsell(
			$wp_customize,
			'theme_upsell_bundle',
			array(
				'title'    => esc_html__( 'Buy WP Theme Bundle', 'vacation-rental-booking' ),
				'pro_text' => esc_html__( 'Get Bundle', 'vacation-rental-booking' ),
				'pro_url'  => esc_url( 'https://www.omegathemes.com/products/wp-theme-bundle' ),
				'priority' => 2,
			)
		)
	);
}

endif;
add_action( 'customize_register', 'vacation_rental_booking_customize_register' );

/**
 * Customizer Enqueue scripts and styles.
 */

if (!function_exists('vacation_rental_booking_customizer_scripts')) :

    function vacation_rental_booking_customizer_scripts(){
    	
    	wp_enqueue_script('jquery-ui-button');
    	wp_enqueue_style('vacation-rental-booking-customizer', get_template_directory_uri() . '/lib/custom/css/customizer.css');
        wp_enqueue_script('vacation-rental-booking-customizer', get_template_directory_uri() . '/lib/custom/js/customizer.js', array('jquery','customize-controls'), '', 1);

        $ajax_nonce = wp_create_nonce('vacation_rental_booking_ajax_nonce');
        wp_localize_script( 
		    'vacation-rental-booking-customizer',
		    'vacation_rental_booking_customizer',
		    array(
		        'ajax_url'   => esc_url( admin_url( 'admin-ajax.php' ) ),
		        'ajax_nonce' => $ajax_nonce,
		     )
		);
    }

endif;

add_action('customize_controls_enqueue_scripts', 'vacation_rental_booking_customizer_scripts');
add_action('customize_controls_init', 'vacation_rental_booking_customizer_scripts');

function vacation_rental_booking_customize_preview_js() {
	wp_enqueue_script( 'vacation-rental-booking-customizer-preview', get_template_directory_uri() . '/lib/custom/js/customizer-preview.js', array( 'customize-preview' ), '', true );
}
add_action( 'customize_preview_init', 'vacation_rental_booking_customize_preview_js' );

if (!function_exists('vacation_rental_booking_customize_partial_blogname')) :
	function vacation_rental_booking_customize_partial_blogname() {
		bloginfo( 'name' );
	}
endif;

if (!function_exists('vacation_rental_booking_customize_partial_blogdescription')) :
	function vacation_rental_booking_customize_partial_blogdescription() {
		bloginfo( 'description' );
	}
endif;