<?php
/**
 * Eisai theme helper functions.
 */

if ( ! function_exists( 'eisai_get_social_icon_id' ) ) {
    /**
     * Get icon attribute by menu item url passed to this function.
     *
     * @param string $url Menu item url.
     * @return string $id Uikit svg icon identifier.
     */
    function eisai_get_social_icon_id( $url ) {

        $ids = array(
            'facebook.com'      => 'icon: eisai-facebook; ratio: .55',
            'm.me'              => 'icon: eisai-facebook; ratio: .55',
            'twitter.com'       => 'twitter',
            'whatsapp.com'      => 'whatsapp',
            'wa.me'             => 'whatsapp',
            'youtube.com'       => 'youtube',
            'dribbble.com'      => 'dribbble',
            'github.com'        => 'github',
            'flickr.com'        => 'flickr',
            'behance.net'       => 'behance',
            'foursquare.com'    => 'foursquare',
            'google.com'        => 'google',
            'plus.google.com'   => 'google-plus',
            'instagram.com'     => 'instagram',
            'linkedin.com'      => 'linkedin',
            'pinterest.com'     => 'pinterest',
            'soundcloud.com'    => 'soundcloud',
            'tripadvisor.com'   => 'tripadvisor',
            'tumblr.com'        => 'tumblr',
            'vimeo.com'         => 'vimeo',
            'youtube'           => 'youtube',
            'wordpress.org'     => 'wordpress',
            'xing.com'          => 'xing',
            'yelp.com'          => 'yelp',
            't.me'              => 'icon: eisai-telegram; ratio: .6',
            'vk.com'            => 'icon: eisai-vk; ratio: .8',
            'odnoklassniki.ru'  => 'icon: eisai-odnoklassniki; ratio: .6',
        );

        foreach ( $ids as $site => $uikit_icon_id ) {
            if ( strpos( $url, $site ) ) {
                return $uikit_icon_id;
            }
        }

        return '';
    }
}

if ( ! function_exists( 'eisai_number_is_odd' ) ) {
    /**
     * Helper function to determine if a given number is odd or even.
     *
     * @param integer $number Whole number.
     * @return boolean $is_odd Returns true if $number is an odd number.
     */
    function eisai_number_is_odd( $number ) {
        // Determine if number is odd or even.
        // (https://www.php.net/manual/en/internals2.opcodes.mod.php)
        $is_odd = ( $number & 1 );

        return $is_odd;
    }
}

if ( ! function_exists( 'eisai_get_animation_delay' ) ) {
    /**
     * Helper class to generate animation delay class.
     *
     * @param integer $counter Look into content-loop.php to see where this counter comes from.
     * @return string $delay Returns delay in ms, which will be used in CSS classname.
     */
    function eisai_get_animation_delay( $counter ) {
        $delay = ( eisai_number_is_odd( $counter ) ) ? 300 : 600;

        return $delay;
    }
}

if ( ! function_exists( 'eisai_generate_css' ) ) {
	/**
	 * Generate CSS. This function I took from TwentyTwenty WordPress theme.
	 *
	 * @param string $selector The CSS selector.
	 * @param string $style The CSS style.
	 * @param string $value The CSS value.
	 * @param string $prefix The CSS prefix.
	 * @param string $suffix The CSS suffix.
	 * @param bool   $echo Echo the styles.
	 */
	function eisai_generate_css( $selector, $style, $value, $prefix = '', $suffix = '', $echo = true ) {

		$return = '';

		/*
		 * Bail early if we have no $selector elements or properties and $value.
		 */
		if ( ! $value || ! $selector ) {

			return;
		}

		$return = sprintf( '%s { %s: %s; }', $selector, $style, $prefix . $value . $suffix );

		if ( $echo ) {

			echo $return; //phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped

		}

		return $return;

	}
}

if ( ! function_exists( 'eisai_adjust_color_brightness' ) ) {
    /**
     * Adjust a hex color brightness.
     * Allows to create hover styles for custom link colors.
     *
     * @param  strong  $hex   hex color e.g. #111111.
     * @param  integer $steps factor by which to brighten/darken ranging from -255 (darken) to 255 (brighten).
     * @return string  brightened/darkened hex color
     */
    function eisai_adjust_color_brightness( $hex, $steps ) {
    	// Steps should be between -255 and 255. Negative = darker, positive = lighter.
    	$steps = max( -255, min( 255, $steps ) );

    	// Format the hex color string.
    	$hex = str_replace( '#', '', $hex );

    	if ( 3 === strlen( $hex ) ) {
    		$hex = str_repeat( substr( $hex, 0, 1 ), 2 ) . str_repeat( substr( $hex, 1, 1 ), 2 ) . str_repeat( substr( $hex, 2, 1 ), 2 );
    	}

    	// Get decimal values.
    	$r = hexdec( substr( $hex, 0, 2 ) );
    	$g = hexdec( substr( $hex, 2, 2 ) );
    	$b = hexdec( substr( $hex, 4, 2 ) );

    	// Adjust number of steps and keep it inside 0 to 255.
    	$r = max( 0, min( 255, $r + $steps ) );
    	$g = max( 0, min( 255, $g + $steps ) );
    	$b = max( 0, min( 255, $b + $steps ) );

    	$r_hex = str_pad( dechex( $r ), 2, '0', STR_PAD_LEFT );
    	$g_hex = str_pad( dechex( $g ), 2, '0', STR_PAD_LEFT );
    	$b_hex = str_pad( dechex( $b ), 2, '0', STR_PAD_LEFT );

    	return '#' . $r_hex . $g_hex . $b_hex;
    }
}
