<?php
defined('ABSPATH') || exit;

/**
 * R-LLM SEO Assets
 */
add_action('admin_enqueue_scripts', function ($hook) {
	$page = filter_input(INPUT_GET, 'page', FILTER_SANITIZE_SPECIAL_CHARS);
	$page = is_string($page) ? sanitize_key(wp_unslash($page)) : '';

	if ($page === '') {
		return;
	}

	$allowed_pages = [
		'r-llm-seo',
		'r-llm-seo-settings',
	];

	if (function_exists('r_llm_seo_features')) {
		foreach (r_llm_seo_features() as $f) {
			if (!empty($f['menu_slug'])) {
				$allowed_pages[] = sanitize_key((string) $f['menu_slug']);
			}
		}
	}

	if (!in_array($page, $allowed_pages, true)) {
		return;
	}

	if (!defined('R_LLM_SEO_PLUGIN_FILE') || !R_LLM_SEO_PLUGIN_FILE) {
		return;
	}

	$plugin_file = R_LLM_SEO_PLUGIN_FILE;
	$plugin_url  = plugin_dir_url($plugin_file);
	$ver         = defined('R_LLM_SEO_VERSION') ? (string) R_LLM_SEO_VERSION : '';

	add_thickbox();

	$common_css_rel = 'assets/css/style.css';
	$common_js_rel  = 'assets/js/script.js';

	$common_css_path = plugin_dir_path($plugin_file) . $common_css_rel;
	$common_js_path  = plugin_dir_path($plugin_file) . $common_js_rel;

	$common_css_ver = $ver !== '' ? $ver : (is_file($common_css_path) ? (string) filemtime($common_css_path) : null);
	$common_js_ver  = $ver !== '' ? $ver : (is_file($common_js_path) ? (string) filemtime($common_js_path) : null);

	wp_enqueue_style(
		'r-llm-seo-style',
		$plugin_url . $common_css_rel,
		[],
		$common_css_ver
	);

	wp_enqueue_script(
		'r-llm-seo-script',
		$plugin_url . $common_js_rel,
		['jquery'],
		$common_js_ver,
		true
	);

	$localized = [
		'nonce'   => wp_create_nonce('llm_seo_nonce'),
		'ajaxurl' => admin_url('admin-ajax.php'),
	];

	if ($page === 'r-llm-seo-f01') {
		$localized['i18n'] = [
			'processing'                  => esc_html__('処理中...', 'r-llm-seo'),
			'analyzing'                   => esc_html__('分析中...', 'r-llm-seo'),
			'retrying'                    => esc_html__('再試行中...', 'r-llm-seo'),
			'analysis'                    => esc_html__('分析', 'r-llm-seo'),
			'waiting_due_to_congestion'   => esc_html__('混雑のため待機中', 'r-llm-seo'),
			'failed_skip_next'            => esc_html__('失敗（次へ進みます）', 'r-llm-seo'),
			'no_pending_posts'            => esc_html__('現在、未分析の投稿はありません。', 'r-llm-seo'),
			/* translators: %d: number of posts to analyze */
			'bulk_confirm'                => esc_html__('未分析の %d 件を分析します。混雑状況に応じて間隔を調整しながら実行します。よろしいですか？', 'r-llm-seo'),
			'bulk_complete'               => esc_html__('一括分析が完了しました。', 'r-llm-seo'),
			'apply_confirm'               => esc_html__('以下のAI提案タイトルを投稿へ適用します。よろしいですか？', 'r-llm-seo'),
			'delete_confirm'              => esc_html__('この投稿の分析データを消去します。よろしいですか？', 'r-llm-seo'),
			'bulk_delete_confirm'         => esc_html__('すべての投稿の分析結果を一括消去します。この操作は取り消せません。本当によろしいですか？※投稿データに影響はありません。', 'r-llm-seo'),
			'bulk_delete_complete'        => esc_html__('一括消去しました。', 'r-llm-seo'),
			'generic_error'               => esc_html__('処理に失敗しました。時間をおいて再度お試しください。', 'r-llm-seo'),
			'daily_quota_exceeded'        => esc_html__('本日のトークン上限に達しました。翌日以降に再実行してください。', 'r-llm-seo'),
			'contract_unavailable'        => esc_html__('契約状態により利用できません。マイページからご確認ください。', 'r-llm-seo'),
			'invalid_key'                 => esc_html__('APIキーまたはサイトURLが正しくありません。設定をご確認ください。', 'r-llm-seo'),
			'feature_not_allowed'         => esc_html__('このプランでは利用できない機能です。プランをご確認ください。', 'r-llm-seo'),
			'ai_busy'                     => esc_html__('AI処理が混み合っています。数秒待ってからもう一度お試しください。', 'r-llm-seo'),
			'ai_timeout'                  => esc_html__('AIの応答がタイムアウトしました。文章を少し短くして再度お試しください。', 'r-llm-seo'),
			'ai_server_unstable'          => esc_html__('AIサーバーが不安定です。少し待ってからもう一度お試しください。', 'r-llm-seo'),
			'duplicate_request'           => esc_html__('処理中です。少し待ってから再度お試しください。', 'r-llm-seo'),
			'title_empty'                 => esc_html__('タイトルが空です。', 'r-llm-seo'),
		];
	}

	if ($page === 'r-llm-seo-f02') {
		$localized['i18n'] = [
			'ajax_error'         => esc_html__('処理に失敗しました。', 'r-llm-seo'),
			'title_empty'        => esc_html__('タイトルが空です。', 'r-llm-seo'),
			'confirm_delete'     => esc_html__('このタイトル案を削除します。よろしいですか？', 'r-llm-seo'),
			'confirm_delete_all' => esc_html__('保存済みのタイトル案をすべて削除します。よろしいですか？', 'r-llm-seo'),
			'empty_default'      => esc_html__('まだタイトル案がありません。キーワードを入れて「タイトル案生成」を押してください。', 'r-llm-seo'),
			'empty_fav'          => esc_html__('お気に入りのタイトル案がありません。', 'r-llm-seo'),
			'keyword_required'   => esc_html__('キーワードを1つ以上追加してください。', 'r-llm-seo'),
			'generating'         => esc_html__('生成中...', 'r-llm-seo'),
			'generate_button'    => esc_html__('タイトル案生成', 'r-llm-seo'),
		];
	}

	if ($page === 'r-llm-seo-f03') {
		$localized['i18n'] = [
			'processing'                  => esc_html__('処理中...', 'r-llm-seo'),
			'analyzing'                   => esc_html__('分析中...', 'r-llm-seo'),
			'analysis'                    => esc_html__('分析', 'r-llm-seo'),
			'waiting_due_to_congestion'   => esc_html__('混雑のため待機中', 'r-llm-seo'),
			'failed_skip_next'            => esc_html__('失敗（次へ進みます）', 'r-llm-seo'),
			'no_pending_posts'            => esc_html__('未分析の投稿はありません。', 'r-llm-seo'),
			/* translators: %d: number of posts to analyze */
			'bulk_confirm'                => esc_html__('未分析の %d 件を順番に分析します。よろしいですか？', 'r-llm-seo'),
			'bulk_complete'               => esc_html__('一括分析が完了しました。', 'r-llm-seo'),
			'apply_confirm'               => esc_html__('このディスクリプションを適用しますか？', 'r-llm-seo'),
			'delete_confirm'              => esc_html__('この投稿の分析データを消去します。よろしいですか？', 'r-llm-seo'),
			'bulk_delete_confirm'         => esc_html__('すべての投稿の分析結果を一括消去します。この操作は取り消せません。本当によろしいですか？※投稿データに影響はありません。', 'r-llm-seo'),
			'bulk_delete_complete'        => esc_html__('一括消去しました。', 'r-llm-seo'),
			'generic_error'               => esc_html__('処理に失敗しました。時間をおいて再度お試しください。', 'r-llm-seo'),
			'daily_quota_exceeded'        => esc_html__('本日のトークン上限に達しました。翌日以降に再実行してください。', 'r-llm-seo'),
			'contract_unavailable'        => esc_html__('契約状態により利用できません。マイページからご確認ください。', 'r-llm-seo'),
			'invalid_key'                 => esc_html__('APIキーまたはサイトURLが正しくありません。設定をご確認ください。', 'r-llm-seo'),
			'feature_not_allowed'         => esc_html__('このプランでは利用できない機能です。プランをご確認ください。', 'r-llm-seo'),
			'ai_busy'                     => esc_html__('AI処理が混み合っています。少し待ってからもう一度お試しください。', 'r-llm-seo'),
			'ai_timeout'                  => esc_html__('AIの応答がタイムアウトしました。文章を少し短くして再度お試しください。', 'r-llm-seo'),
			'ai_server_unstable'          => esc_html__('AIサーバーが不安定です。少し待ってからもう一度お試しください。', 'r-llm-seo'),
			'duplicate_request'           => esc_html__('処理中です。少し待ってから再度お試しください。', 'r-llm-seo'),
			'description_empty'           => esc_html__('ディスクリプションが空です。', 'r-llm-seo'),
		];
	}

	wp_localize_script('r-llm-seo-script', 'r_llm_seo_vars', $localized);

	if ($page === 'r-llm-seo-settings') {
		$settings_css = '
			#r-llm-seo-settings .rllm-pagehead{max-width:860px;margin:18px 0 10px}
			#r-llm-seo-settings .rllm-title{font-size:22px;line-height:1.2;margin:0;font-weight:700}
			#r-llm-seo-settings .rllm-sub{font-weight:500;color:#6b7280;font-size:14px;margin-left:8px}
			#r-llm-seo-settings .rllm-lead{margin:6px 0 0;color:#6b7280}
			#r-llm-seo-settings .rllm-stack{max-width:860px;display:flex;flex-direction:column;gap:14px;margin-top:14px}
			#r-llm-seo-settings .rllm-card{background:#fff;border:1px solid #e5e7eb;border-radius:12px;box-shadow:0 1px 1px rgba(0,0,0,.04)}
			#r-llm-seo-settings .rllm-cardhead{padding:14px 16px;border-bottom:1px solid #eef2f7}
			#r-llm-seo-settings .rllm-h2{margin:0;font-size:16px;font-weight:700}
			#r-llm-seo-settings .rllm-body{padding:14px 16px;display:flex;flex-direction:column;gap:14px}
			#r-llm-seo-settings .rllm-field{display:grid;grid-template-columns:180px 1fr;gap:12px;align-items:flex-start}
			#r-llm-seo-settings .rllm-label{font-weight:600;margin-top:6px}
			#r-llm-seo-settings .rllm-control{min-width:0}
			#r-llm-seo-settings .rllm-input,#r-llm-seo-settings .rllm-select{width:100%;border:1px solid #d1d5db;border-radius:10px;padding:8px 10px;background:#fff;box-shadow:inset 0 1px 2px rgba(0,0,0,.04)}
			#r-llm-seo-settings .rllm-input:focus,#r-llm-seo-settings .rllm-select:focus{outline:none;border-color:#2563eb;box-shadow:0 0 0 3px rgba(37,99,235,.15)}
			#r-llm-seo-settings .rllm-input.is-readonly{background:#f3f4f6;color:#374151}
			#r-llm-seo-settings .rllm-help{margin:6px 0 0;color:#6b7280;font-size:12px;line-height:1.5}
			#r-llm-seo-settings .rllm-code{background:#f3f4f6;border:1px solid #e5e7eb;border-radius:8px;padding:2px 6px;font-size:12px;color:#374151;margin-left:8px}
			#r-llm-seo-settings .rllm-checkgrid{display:flex;flex-direction:column;gap:8px}
			#r-llm-seo-settings .rllm-check{display:flex;gap:10px;align-items:flex-start}
			#r-llm-seo-settings .rllm-check input{margin-top:2px}
			#r-llm-seo-settings .rllm-checktext{display:flex;align-items:center;flex-wrap:wrap;gap:0}
			#r-llm-seo-settings .rllm-checklabel{font-weight:600}
			#r-llm-seo-settings .rllm-actions{max-width:860px}
			#r-llm-seo-settings .rllm-btn{border-radius:10px;padding:9px 14px;font-weight:600;border:1px solid transparent;cursor:pointer}
			#r-llm-seo-settings .rllm-btn-primary{background:#2563eb;color:#fff}
			#r-llm-seo-settings .rllm-btn-primary:hover{background:#1d4ed8}
			#r-llm-seo-settings #desc-custom-key-wrap.is-hidden{display:none}
			@media (max-width:782px){#r-llm-seo-settings .rllm-field{grid-template-columns:1fr}#r-llm-seo-settings .rllm-label{margin-top:0}}
		';
		wp_add_inline_style('r-llm-seo-style', $settings_css);

		$settings_js = '
			jQuery(function($){
				$("#r_llm_seo_desc_target").on("change", function(){
					var isCustom = $(this).val() === "custom";
					$("#desc-custom-key-wrap").toggleClass("is-hidden", !isCustom);
				});
			});
		';
		wp_add_inline_script('r-llm-seo-script', $settings_js);
	}

	if ($page === 'r-llm-seo') {
		$dashboard_css_rel  = 'assets/css/dashboard.css';
		$dashboard_js_rel   = 'assets/js/dashboard.js';

		$dashboard_css_path = plugin_dir_path($plugin_file) . $dashboard_css_rel;
		$dashboard_js_path  = plugin_dir_path($plugin_file) . $dashboard_js_rel;

		$dashboard_css_ver  = $ver !== '' ? $ver : (is_file($dashboard_css_path) ? (string) filemtime($dashboard_css_path) : null);
		$dashboard_js_ver   = $ver !== '' ? $ver : (is_file($dashboard_js_path) ? (string) filemtime($dashboard_js_path) : null);

		wp_enqueue_style(
			'r-llm-seo-dashboard-style',
			$plugin_url . $dashboard_css_rel,
			['r-llm-seo-style'],
			$dashboard_css_ver
		);

		wp_enqueue_script(
			'r-llm-seo-dashboard-script',
			$plugin_url . $dashboard_js_rel,
			['jquery', 'r-llm-seo-script'],
			$dashboard_js_ver,
			true
		);
	}

	if ($page === 'r-llm-seo-f01') {
		$f01_css_rel = 'includes/features/F01/assets/css/style.css';
		$f01_js_rel  = 'includes/features/F01/assets/js/script.js';

		$f01_css_path = plugin_dir_path($plugin_file) . $f01_css_rel;
		$f01_js_path  = plugin_dir_path($plugin_file) . $f01_js_rel;

		$f01_css_ver = $ver !== '' ? $ver : (is_file($f01_css_path) ? (string) filemtime($f01_css_path) : null);
		$f01_js_ver  = $ver !== '' ? $ver : (is_file($f01_js_path) ? (string) filemtime($f01_js_path) : null);

		wp_enqueue_style('r-llm-seo-f01-style', $plugin_url . $f01_css_rel, ['r-llm-seo-style'], $f01_css_ver);
		wp_enqueue_script('r-llm-seo-f01-script', $plugin_url . $f01_js_rel, ['jquery', 'r-llm-seo-script'], $f01_js_ver, true);
	}

	if ($page === 'r-llm-seo-f02') {
		$f02_css_rel = 'includes/features/F02/assets/css/style.css';
		$f02_js_rel  = 'includes/features/F02/assets/js/script.js';

		$f02_css_path = plugin_dir_path($plugin_file) . $f02_css_rel;
		$f02_js_path  = plugin_dir_path($plugin_file) . $f02_js_rel;

		$f02_css_ver = $ver !== '' ? $ver : (is_file($f02_css_path) ? (string) filemtime($f02_css_path) : null);
		$f02_js_ver  = $ver !== '' ? $ver : (is_file($f02_js_path) ? (string) filemtime($f02_js_path) : null);

		wp_enqueue_style('r-llm-seo-f02-style', $plugin_url . $f02_css_rel, ['r-llm-seo-style'], $f02_css_ver);
		wp_enqueue_script('r-llm-seo-f02-script', $plugin_url . $f02_js_rel, ['jquery', 'r-llm-seo-script'], $f02_js_ver, true);
	}

	if ($page === 'r-llm-seo-f03') {
		$f03_css_rel = 'includes/features/F03/assets/css/style.css';
		$f03_js_rel  = 'includes/features/F03/assets/js/script.js';

		$f03_css_path = plugin_dir_path($plugin_file) . $f03_css_rel;
		$f03_js_path  = plugin_dir_path($plugin_file) . $f03_js_rel;

		$f03_css_ver = $ver !== '' ? $ver : (is_file($f03_css_path) ? (string) filemtime($f03_css_path) : null);
		$f03_js_ver  = $ver !== '' ? $ver : (is_file($f03_js_path) ? (string) filemtime($f03_js_path) : null);

		wp_enqueue_style('r-llm-seo-f03-style', $plugin_url . $f03_css_rel, ['r-llm-seo-style'], $f03_css_ver);
		wp_enqueue_script('r-llm-seo-f03-script', $plugin_url . $f03_js_rel, ['jquery', 'r-llm-seo-script'], $f03_js_ver, true);
	}
});