<?php
// Draw 站点屏蔽提示
$is_draw_site = (strtolower($_SERVER['HTTP_HOST'] ?? '') === 'draw.800bus.top') || (isset($_GET['site']) && $_GET['site'] === 'draw') || (($_SERVER['SERVER_PORT'] ?? '') === '8080');
if ($is_draw_site) {
    die('<!DOCTYPE html><html lang="zh-CN"><head><meta charset="UTF-8"><title>Draw 提示</title>
    <style>
        body { font-family: -apple-system, "PingFang SC", sans-serif; background: #f4f7f6; height: 100vh; margin: 0; display: flex; align-items: center; justify-content: center; }
        .box { background: #fff; padding: 40px 60px; border-radius: 8px; text-align: center; box-shadow: 0 2px 12px rgba(0,0,0,0.08); max-width: 480px; }
        h2 { color: #2563eb; margin: 0 0 12px 0; font-size: 20px; }
        p { color: #64748b; margin: 0 0 24px 0; font-size: 14px; }
        a { display: inline-block; padding: 10px 24px; background: #2563eb; color: #fff; text-decoration: none; border-radius: 4px; font-size: 14px; }
    </style></head><body class="has-fixed-nav">
    <div class="box">
        <h2>🚧 Draw下此功能待开发</h2>
        <p>该功能在 DRAW 子站暂未开放。</p>
        <a href="index.php">返回主页</a>
    </div>
    </body></html>');
}
/**
 * 800BUS - 档案浏览
 */
require_once __DIR__ . '/includes/config.php';
require_once __DIR__ . '/includes/media_helpers.php';
session_start();

$is_logged_in = isset($_SESSION['user_id']);
$user_data = null;
if ($is_logged_in) {
    $uid = $_SESSION['user_id'];
    $u_res = $conn->query("SELECT username, is_admin FROM users WHERE id = " . (int)$uid);
    $user_data = $u_res ? $u_res->fetch_assoc() : null;
}

$co_id = (int)($_GET['co'] ?? 0);
?>
<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <script>/* 暗色主题闪防 */(function(){try{var t=localStorage.getItem('theme');if(t==='dark'){document.documentElement.setAttribute('data-theme','dark')}else if(!t&&window.matchMedia&&window.matchMedia('(prefers-color-scheme:dark)').matches){document.documentElement.setAttribute('data-theme','dark')}}catch(e){}})();</script>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover">
    <meta name="robots" content="noindex, nofollow">
    <title>档案浏览 - 800BUS</title>
    <link rel="stylesheet" href="system/dark-theme.css">
    <link rel="stylesheet" href="/system/hm-theme.css">
    <script src="system/theme-toggle.js" defer></script>
    <style>
        :root{
            --ink:#111;--ink-soft:#333;--muted:#666;--mute:#999;
            --line:#e0e0e0;--line-strong:#bbb;
            --accent:#2563eb;--accent-hover:#1d4ed8;
            --gold:#8a6d00;--rose:#c02020;
            --surface:#fff;--bg:#f2f2f2;
        }
        *,*::before,*::after{margin:0;padding:0;box-sizing:border-box}
        html{scroll-behavior:smooth}
        body{
            font-family:"Inter","SF Pro Display","PingFang SC","Noto Sans SC",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;
            background-color:var(--bg);
            background-image:linear-gradient(rgba(255,255,255,0.92),rgba(255,255,255,0.92)),url('https://bg-img.800bus.cn');
            background-size:cover;background-position:center;background-attachment:fixed;
            color:var(--ink);
            line-height:1.5;
            -webkit-font-smoothing:antialiased;
            -moz-osx-font-smoothing:grayscale;
            min-height:100vh;
            overflow-x:hidden;
            display:flex;flex-direction:column;
        }
        a{color:inherit;text-decoration:none}

        /* NAV: loaded from system/header.php */

        /* ── NOTIFICATION ── */
        .noti-bell-wrap{position:relative;display:inline-flex;align-items:center;}
        .noti-bell-btn{
            background:none;border:none;cursor:pointer;
            font-size:16px;padding:6px;border-radius:3px;
            transition:background .15s;position:relative;line-height:1;
        }
        .noti-bell-btn:hover{background:rgba(0,0,0,0.05)}
        .noti-badge{
            position:absolute;top:2px;right:2px;
            background:var(--rose);
            color:#fff;font-size:10px;font-weight:700;
            min-width:16px;height:16px;padding:0 4px;
            border-radius:3px;display:flex;align-items:center;justify-content:center;
            line-height:1;
        }
        .noti-dropdown{
            display:none;position:absolute;top:calc(100% + 6px);right:0;
            width:360px;max-width:calc(100vw - 32px);
            background:var(--surface);
            border:1px solid var(--line);
            border-radius:4px;
            overflow:hidden;
        }
        .noti-dropdown.open{display:block;}
        .noti-dropdown-header{
            display:flex;justify-content:space-between;align-items:center;
            padding:12px 16px;border-bottom:1px solid var(--line);
        }
        .noti-dropdown-header > span{font-weight:700;font-size:13px;color:var(--ink)}
        .noti-dropdown-header button{
            background:none;border:none;color:var(--accent);
            font-size:12px;cursor:pointer;font-weight:600;
            padding:4px 8px;border-radius:3px;
            transition:background .15s;
        }
        .noti-dropdown-header button:hover{background:rgba(37,99,235,0.08)}
        .noti-list{max-height:min(400px, calc(100vh - 200px));overflow-y:auto;}
        .noti-item{
            padding:12px 16px;border-bottom:1px solid rgba(0,0,0,0.06);
            cursor:pointer;transition:background .15s;
            text-decoration:none;display:block;color:inherit;
        }
        .noti-item:hover{background:rgba(0,0,0,0.03);}
        .noti-item.unread{background:rgba(37,99,235,0.04);}
        .noti-item.unread:hover{background:rgba(37,99,235,0.08);}
        .noti-item .noti-title{font-size:13px;font-weight:600;color:var(--ink);margin-bottom:3px;}
        .noti-item .noti-content{font-size:12px;color:var(--muted);line-height:1.5;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;}
        .noti-item .noti-time{font-size:11px;color:var(--mute);margin-top:4px;}
        .noti-item .noti-dot{display:inline-block;width:6px;height:6px;border-radius:50%;background:var(--accent);margin-right:6px;flex-shrink:0;}
        .noti-type-badge{
            display:inline-block;padding:2px 6px;border-radius:2px;font-size:10px;font-weight:600;margin-right:4px;
        }
        .noti-type-approved{background:rgba(22,163,74,0.1);color:#16a34a;}
        .noti-type-rejected{background:rgba(220,38,38,0.08);color:#dc2626;}
        .noti-type-system{background:rgba(0,0,0,0.06);color:var(--muted);}
        .noti-type-reply{background:rgba(37,99,235,0.08);color:var(--accent);}
        .noti-dropdown-footer{
            padding:12px 16px;text-align:center;
            border-top:1px solid var(--line);
        }
        .noti-dropdown-footer a{color:var(--accent);text-decoration:none;font-size:13px;font-weight:600;}

        /* ── MAIN ── */
        .main-wrapper{flex:1}
        .main-container{
            max-width:1200px;
            margin:2rem auto;
            padding:0 32px;
        }

        .page-header{
            text-align:center;
            margin-bottom:2rem;
            padding:40px 0 20px;
        }
        .page-header h1{
            font-size:clamp(26px,4vw,32px);
            font-weight:700;
            line-height:1.2;
            letter-spacing:-0.02em;
            margin-bottom:6px;
            color:var(--ink);
        }
        .page-header p{
            color:var(--muted);
            font-size:14px;
        }

        /* ── BACK BTN ── */
        .back-btn{
            display:inline-flex;
            align-items:center;gap:4px;
            background:var(--surface);
            border:1px solid var(--line);
            padding:7px 14px;
            border-radius:3px;
            cursor:pointer;
            font-size:13px;font-weight:500;
            color:var(--muted);
            transition:background .15s,color .15s;
            margin-bottom:20px;
        }
        .back-btn:hover{
            background:rgba(0,0,0,0.04);
            color:var(--ink);
        }
        .back-btn.hidden{display:none}

        /* ── SEARCH ── */
        .search-bar-wrap{
            position:relative;
            max-width:500px;
            margin:0 auto 24px;
        }
        .search-bar{
            background:var(--surface);
            border:1px solid var(--line);
            padding:4px;
            border-radius:4px;
            display:flex;gap:4px;
            transition:border-color .15s;
        }
        .search-bar:focus-within{
            border-color:var(--accent);
        }
        .search-bar input{
            flex:1;border:none;
            padding:10px 14px;outline:none;
            font-size:14px;background:transparent;
            min-width:0;color:var(--ink);
            font-weight:400;
        }
        .search-bar input::placeholder{color:var(--mute);font-weight:400}

        /* ── QUICK SEARCH ── */
        #quickSearchResult{
            position:relative;
            max-width:500px;
            margin:0 auto;
        }
        .quickSearchResultWrap{
            background:var(--surface);
            border:1px solid var(--line);
            border-radius:4px;
            margin-top:4px;
            max-height:60vh;
            overflow-y:auto;
            display:none;
        }
        .quickSearchResultWrap.quickSearchShow{display:block}

        .region-item{
            padding:10px 16px;
            cursor:pointer;
            display:flex;
            align-items:center;
            justify-content:space-between;
            transition:background .15s;
            border-bottom:1px solid rgba(0,0,0,0.04);
        }
        .region-item:last-child{border-bottom:none}
        .region-item:hover{background:rgba(0,0,0,0.03)}

        .region-item-city{padding-left:40px}
        .region-item-company{padding-left:60px}

        .region-item .icon{
            color:var(--accent);
            font-size:13px;
            margin-right:6px;
        }
        .region-item .name{flex:1}
        .region-item .name h4{margin:0;font-size:14px;color:var(--ink)}
        .region-item .name p{margin:2px 0 0;font-size:12px;color:var(--mute)}
        .region-item .count{
            color:var(--mute);
            font-size:13px;
            white-space:nowrap;
        }
        .region-item mark{
            background:#fef08a;
            color:#92400e;
            padding:0 2px;
            border-radius:2px;
        }
        .quick-search-loading{text-align:center;padding:16px;color:var(--mute)}
        .quick-search-empty{text-align:center;padding:30px 16px;color:var(--mute)}
        .quick-search-section{
            font-size:12px;font-weight:600;
            padding:8px 16px 4px;
            color:var(--mute);
        }

        /* ── POST GRID ── */
        .post-grid{
            display:grid;
            grid-template-columns:repeat(auto-fill,minmax(260px,1fr));
            gap:14px;
        }
        .post-card{
            background:var(--surface);
            border-radius:3px;
            overflow:hidden;
            text-decoration:none;
            color:inherit;
            display:flex;
            flex-direction:column;
            border:1px solid var(--line);
            transition:border-color .15s;
        }
        .post-card:hover{
            border-color:var(--line-strong);
        }
        .post-card .photo-img{
            width:100%;
            aspect-ratio:16/10;
            object-fit:cover;
            background:#e8e8e8;
        }
        .post-content{padding:12px 14px 14px}
        .post-title{
            font-weight:600;
            font-size:13px;
            margin-bottom:4px;
            color:var(--ink);
            white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
        }
        .post-meta{
            font-size:11px;
            color:var(--mute);
            white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
        }
        .post-addr{
            font-size:12px;
            color:var(--muted);
            margin-top:4px;
        }
        .badge{
            background:rgba(0,0,0,0.04);
            color:var(--muted);
            padding:2px 8px;
            border-radius:2px;
            font-size:11px;
            font-weight:500;
        }

        /* ── LAZY IMG ── */
        .lazy-img{
            opacity:0;
            transition:opacity .4s ease;
        }
        .lazy-img.loaded{opacity:1}

        .hidden{display:none !important}

        /* ── EMPTY STATE ── */
        .empty-state{
            text-align:center;
            padding:60px 20px;
            color:var(--mute);
            grid-column:1/-1;
        }
        .empty-state .icon{font-size:48px;margin-bottom:16px;opacity:0.5}
        .empty-state p{font-size:15px}

        /* ── INFO BAR ── */
        .info-bar{
            background:var(--surface);
            border:1px solid var(--line);
            border-radius:3px;
            padding:16px 20px;
            margin-bottom:20px;
        }

        /* ── NEWS ITEM ── */
        .news-item{
            display:flex;gap:12px;padding:12px;
            background:var(--surface);
            border-radius:3px;
            text-decoration:none;color:inherit;
            transition:border-color .15s;
            border:1px solid var(--line);
        }
        .news-item:hover{border-color:var(--line-strong)}

        /* ── REGION ADMIN LINK ── */
        .region-admin-link{
            display:inline-flex;align-items:center;gap:8px;
            padding:8px 16px;
            background:var(--surface);
            border:1px solid var(--line);
            border-radius:3px;
            text-decoration:none;
            color:var(--ink);
            font-size:13px;font-weight:500;
            transition:background .15s,border-color .15s;
        }
        .region-admin-link:hover{
            background:rgba(0,0,0,0.03);
            border-color:var(--line-strong);
        }

        /* ── PAGINATION ── */
        .pagination-info{
            color:var(--muted);
            font-size:14px;
            margin-bottom:12px;
        }
        .pagination-btn{
            padding:8px 14px;
            background:var(--surface);
            border:1px solid var(--line);
            border-radius:3px;
            text-decoration:none;
            color:var(--muted);
            font-size:13px;font-weight:500;
            transition:background .15s,color .15s;
        }
        .pagination-btn:hover{
            background:rgba(0,0,0,0.04);
            color:var(--ink);
        }
        .pagination-btn.active{
            background:var(--ink);
            color:#fff;
            border-color:var(--ink);
        }
        .pagination-dots{
            padding:8px;
            color:var(--mute);
        }

        /* ── PHOTO GRID (company photos) ── */
        .photo-grid{
            display:grid;
            grid-template-columns:repeat(4,1fr);
            gap:14px;
        }
        .photo-card{
            background:var(--surface);
            border:1px solid var(--line);
            border-radius:3px;
            overflow:hidden;
            text-decoration:none;color:inherit;
            transition:border-color .15s;
            position:relative;
        }
        .photo-card:hover{border-color:var(--line-strong)}
        .photo-card .photo-img{
            width:100%;aspect-ratio:16/10;
            object-fit:cover;background:#e8e8e8;
        }
        .photo-card .photo-info{padding:12px 14px 14px}
        .photo-card .photo-brand{
            font-weight:600;font-size:13px;margin-bottom:4px;color:var(--ink);
            white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
        }
        .photo-card .photo-meta{
            font-size:11px;color:var(--mute);
            white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
        }

        /* ── STATS BAR ── */
        .stats-bar{
            background:var(--surface);
            border-radius:3px;
            padding:24px;
            margin-bottom:24px;
            border:1px solid var(--line);
            display:flex;
            justify-content:center;
            gap:32px;
            flex-wrap:wrap;
        }
        .stat-item{text-align:center;padding:12px 8px}
        .stat-value{
            font-size:26px;
            font-weight:700;
            margin-bottom:2px;
            letter-spacing:-0.03em;
            font-feature-settings:"tnum","ss01";
        }
        .stat-label{
            font-size:11px;
            color:var(--mute);
            font-weight:500;
            letter-spacing:0.03em;
        }
        .stat-item.blue .stat-value{color:var(--accent)}
        .stat-item.green .stat-value{color:#16a34a}

        /* ── BREADCRUMB ── */
        .breadcrumb{
            display:flex;
            align-items:center;gap:8px;
            margin-bottom:24px;
            font-size:13px;
            color:var(--muted);
        }
        .breadcrumb a{
            color:var(--accent);
            text-decoration:none;
            font-weight:500;
        }
        .breadcrumb a:hover{text-decoration:underline}
        .breadcrumb span{color:var(--mute)}

        /* ── FOOTER ── */
        footer{
            margin-top:64px;padding:40px 32px 24px;
            border-top:1px solid var(--line);
            background:var(--surface);
            text-align:center;
        }
        @media(max-width:768px){footer{padding:36px 20px 20px}}
        .footer-logo{
            font-size:16px;font-weight:700;color:var(--ink);
            margin-bottom:8px;letter-spacing:0.02em;
            display:inline-block;
        }
        .footer-logo::before{
            content:'';
            display:inline-block;width:8px;height:8px;
            border-radius:2px;background:var(--accent);
            margin-right:8px;vertical-align:middle;
        }
        footer p{color:var(--muted);font-size:12px;line-height:1.6;margin-bottom:6px}
        footer a{color:var(--ink);text-decoration:none;font-weight:500}
        footer a:hover{text-decoration:underline}
        .footer-links{
            display:flex;justify-content:center;flex-wrap:wrap;
            gap:6px 20px;margin:16px 0 20px;
            padding-bottom:20px;
            border-bottom:1px solid var(--line);
        }
        .footer-links a{font-size:12px;color:var(--muted);font-weight:500}
        .footer-links a:hover{color:var(--ink)}

        /* ── RESPONSIVE ── */
        @media(max-width:768px){
            .main-container{padding:0 20px;margin:1rem auto}
            .page-header{padding:30px 0 16px}
            .page-header h1{font-size:24px}
            .post-grid{grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:12px}
            .photo-grid{grid-template-columns:repeat(2,1fr);gap:10px}
            .stats-bar{gap:16px;padding:16px}
            .stat-value{font-size:22px}
        }
        @media(max-width:1024px){
            .photo-grid{grid-template-columns:repeat(3,1fr);gap:12px}
        }

        /* ══════════════════════════════════════════════════════
           摄影社区主题适配（配合 system/hm-theme.css）
           仅调整视觉：圆角 / 边框 / 底色 / 强调色，不改布局与业务
           ══════════════════════════════════════════════════════ */
        body{background-color:var(--bg-primary);background-image:none}
        .back-btn{background:var(--bg-card);border:1px solid var(--border-color);border-radius:var(--r-pill);color:var(--text-secondary)}
        .back-btn:hover{background:var(--accent-soft);color:var(--text-primary)}
        .search-bar{background:var(--bg-card);border:1px solid var(--border-color);border-radius:var(--r-pill)}
        .search-bar:focus-within{border-color:var(--accent-color)}
        .search-bar input{color:var(--text-primary)}
        .search-bar input::placeholder{color:var(--text-muted)}
        .quickSearchResultWrap{background:var(--bg-card);border:1px solid var(--border-color);border-radius:var(--r-card);box-shadow:var(--shadow-card)}
        .region-item{border-bottom-color:var(--border-color)}
        .region-item:hover{background:var(--accent-soft)}
        .region-item .name h4{color:var(--text-primary)}
        .region-item .name p{color:var(--text-muted)}
        .region-item .count{color:var(--text-muted)}
        .quick-search-section,.quick-search-loading,.quick-search-empty{color:var(--text-muted)}
        .post-card{background:var(--bg-card);border:1px solid var(--border-color);border-radius:var(--r-card);box-shadow:var(--shadow-card)}
        .post-card:hover{border-color:var(--accent-color)}
        .post-card .photo-img{background:var(--bg-secondary)}
        .post-title{color:var(--text-primary)}
        .post-meta,.post-addr{color:var(--text-secondary)}
        .badge{background:var(--accent-soft);color:var(--accent-color);border-radius:var(--r-pill)}
        .info-bar{background:var(--bg-card);border:1px solid var(--border-color);border-radius:var(--r-card);box-shadow:var(--shadow-card)}
        .news-item{background:var(--bg-card);border:1px solid var(--border-color);border-radius:var(--r-card)}
        .news-item:hover{border-color:var(--accent-color)}
        .region-admin-link{background:var(--bg-card);border:1px solid var(--border-color);border-radius:var(--r-pill);color:var(--text-primary)}
        .region-admin-link:hover{border-color:var(--accent-color);background:var(--bg-card)}
        .pagination-btn{background:var(--bg-card);border:1px solid var(--border-color);border-radius:var(--r-pill);color:var(--text-secondary)}
        .pagination-btn:hover{background:var(--accent-soft);color:var(--text-primary)}
        .pagination-btn.active{background:var(--accent-color);border-color:var(--accent-color);color:var(--accent-ink)}
        .pagination-dots{color:var(--text-muted)}
        .photo-card{background:var(--bg-card);border:1px solid var(--border-color);border-radius:var(--r-card);box-shadow:var(--shadow-card)}
        .photo-card:hover{border-color:var(--accent-color)}
        .photo-card .photo-img{background:var(--bg-secondary)}
        .photo-card .photo-brand{color:var(--text-primary)}
        .photo-card .photo-meta{color:var(--text-muted)}
        .stats-bar{background:var(--bg-card);border:1px solid var(--border-color);border-radius:var(--r-card);box-shadow:var(--shadow-card)}
        .stat-item.blue .stat-value{color:var(--accent-color)}
        .stat-label{color:var(--text-muted)}
        .breadcrumb{color:var(--text-secondary)}
        .breadcrumb a{color:var(--accent-color)}
        .breadcrumb span{color:var(--text-muted)}
        .empty-state{color:var(--text-muted)}
    </style>
    <script src="includes/lazyload.js" defer></script>
<?php require_once __DIR__ . '/system/head.php'; ?>
</head>
<body class="hm hm-page">

<?php $header_active = 'browse'; require_once __DIR__ . '/system/header.php'; ?>

<div class="main-wrapper">
<main class="main-container">
    <div class="page-header">
        <h1>档案浏览</h1>
        <p>按地区分类浏览全部巴士档案 · <a href="/region.php" style="color:var(--accent);font-weight:600;">切换到区域视图</a></p>
    </div>
    <button id="backBtn" class="back-btn hidden" onclick="goBack()">← 返回</button>
    <div id="quickSearchResult">
        <div class="search-bar-wrap">
            <div class="search-bar">
                <input type="text" id="quickSearchInput" placeholder="搜索省份、市县、公司..." autocomplete="off" oninput="handleQuickSearch(this.value)">
            </div>
        </div>
        <div class="quickSearchResultWrap" id="quickSearchResultWrap"></div>
    </div>
    <div id="selectionGrid" class="post-grid"></div>
    <div id="companyInfoBar" class="info-bar" style="display:none;">
        <div style="font-size:18px;font-weight:700;color:var(--ink);margin-bottom:4px;" id="companyInfoName"></div>
        <div style="font-size:13px;color:var(--muted);" id="companyInfoAddr"></div>
    </div>
    <div id="companyNews" class="info-bar" style="display:none;margin-bottom:24px;">
        <div style="font-size:16px;font-weight:700;color:var(--ink);margin-bottom:16px;display:flex;align-items:center;gap:8px;">
            📰 本地区资讯
            <span id="companyNewsCount" style="font-size:12px;font-weight:500;color:var(--mute);background:rgba(0,0,0,0.04);padding:2px 8px;border-radius:2px;"></span>
        </div>
        <div id="companyNewsList" style="display:flex;flex-direction:column;gap:12px;"></div>
        <div id="companyNewsEmpty" style="display:none;text-align:center;padding:20px;color:var(--mute);font-size:14px;">暂无相关资讯</div>
    </div>
    <div id="photoGrid" class="post-grid hidden"></div>
    <div id="paginationContainer" style="display:none;text-align:center;padding:24px 0;">
        <div id="paginationInfo" class="pagination-info"></div>
        <div id="paginationBtns" style="display:flex;justify-content:center;gap:8px;flex-wrap:wrap;"></div>
    </div>
    <div id="companyStats" style="display:none;text-align:center;margin-top:32px;padding:20px;color:var(--muted);font-size:14px;"></div>
    <div id="regionAdmins" style="display:none;max-width:960px;margin:24px auto 0;padding:0 16px;">
        <div class="info-bar">
            <div style="font-size:15px;font-weight:700;color:var(--ink);margin-bottom:12px;">👤 本区域管理员</div>
            <div id="regionAdminsList" style="display:flex;flex-wrap:wrap;gap:10px;"></div>
        </div>
    </div>
</main>
</div>

<?php require_once __DIR__ . '/system/footer.php'; ?>

<script>
<?php if($is_logged_in): ?>
(function(){
    var dropdown = document.getElementById('notiDropdown');
    var list = document.getElementById('notiList');
    var badge = document.getElementById('notiBadge');
    var wrap = document.getElementById('notiBellWrap');
    var loaded = false;

    window.toggleNotiDropdown = function() {
        if (!dropdown) return;
        var isOpen = dropdown.classList.contains('open');
        if (!isOpen && !loaded) {
            loadNotifications();
        }
        dropdown.classList.toggle('open');
    };

    document.addEventListener('click', function(e) {
        if (wrap && !wrap.contains(e.target)) {
            if (dropdown) dropdown.classList.remove('open');
        }
    });

    function escapeHtmlNoti(t) {
        var d = document.createElement('div');
        d.appendChild(document.createTextNode(t));
        return d.innerHTML;
    }

    function formatNotiTime(str) {
        if (!str) return '';
        var d = new Date(str.replace(' ', 'T') + (str.indexOf('+') === -1 && str.indexOf('Z') === -1 ? '+08:00' : ''));
        var now = Date.now();
        var diff = Math.floor((now - d.getTime()) / 1000);
        if (diff < 60) return '刚刚';
        if (diff < 3600) return Math.floor(diff / 60) + '分钟前';
        if (diff < 86400) return Math.floor(diff / 3600) + '小时前';
        if (diff < 604800) return Math.floor(diff / 86400) + '天前';
        return (d.getMonth() + 1) + '-' + d.getDate();
    }

    function getTypeBadge(type) {
        var map = {
            'comment_approved': ['通过', 'noti-type-approved'],
            'comment_rejected': ['拒绝', 'noti-type-rejected'],
            'system': ['系统', 'noti-type-system'],
            'reply': ['回复', 'noti-type-reply']
        };
        var info = map[type] || ['通知', 'noti-type-system'];
        return '<span class="noti-type-badge ' + info[1] + '">' + info[0] + '</span>';
    }

    function loadNotifications() {
        fetch('api/notifications.php?action=list&per_page=10')
        .then(function(r){ return r.json(); })
        .then(function(data) {
            if (!data.success || !data.data) {
                list.innerHTML = '<div style="padding:30px;text-align:center;color:var(--mute);font-size:13px;">暂无通知</div>';
                loaded = true;
                return;
            }
            var items = data.data.list;
            if (!items || items.length === 0) {
                list.innerHTML = '<div style="padding:40px;text-align:center;color:var(--mute);font-size:13px;">暂无通知</div>';
                loaded = true;
                return;
            }
            var html = '';
            items.forEach(function(n) {
                var unread = n.is_read == 0 ? ' unread' : '';
                var dot = n.is_read == 0 ? '<span class="noti-dot"></span>' : '';
                var link = n.link || '#';
                html += '<a class="noti-item' + unread + '" href="' + escapeHtmlNoti(link) + '" onclick="markNotiRead(' + n.id + ', this)">' +
                    '<div class="noti-title">' + dot + getTypeBadge(n.type) + escapeHtmlNoti(n.title) + '</div>' +
                    '<div class="noti-content">' + escapeHtmlNoti(n.content || '') + '</div>' +
                    '<div class="noti-time">' + formatNotiTime(n.created_at) + '</div>' +
                    '</a>';
            });
            list.innerHTML = html;
            loaded = true;
        })
        .catch(function() {
            list.innerHTML = '<div style="padding:30px;text-align:center;color:var(--mute);font-size:13px;">加载失败</div>';
            loaded = true;
        });
    }

    window.markNotiRead = function(id, el) {
        fetch('api/notifications.php', {
            method: 'POST',
            headers: {'Content-Type': 'application/x-www-form-urlencoded'},
            body: 'action=mark_read&id=' + id
        }).then(function() {
            if (el) el.classList.remove('unread');
            updateBadge(-1);
        });
    };

    window.markAllNotiRead = function() {
        fetch('api/notifications.php', {
            method: 'POST',
            headers: {'Content-Type': 'application/x-www-form-urlencoded'},
            body: 'action=mark_all_read'
        }).then(function() {
            document.querySelectorAll('.noti-item.unread').forEach(function(el) {
                el.classList.remove('unread');
            });
            if (badge) badge.remove();
        });
    };

    function updateBadge(delta) {
        if (!badge && delta > 0) {
            badge = document.createElement('span');
            badge.className = 'noti-badge';
            badge.id = 'notiBadge';
            var btn = document.querySelector('.noti-bell-btn');
            if (btn) btn.appendChild(badge);
        }
        if (badge) {
            var count = parseInt(badge.textContent) || 0;
            count = Math.max(0, count + delta);
            if (count === 0) {
                badge.remove();
                badge = null;
            } else {
                badge.textContent = count > 99 ? '99+' : count;
            }
        }
    }

    setInterval(function() {
        fetch('api/notifications.php?action=unread_count')
        .then(function(r){ return r.json(); })
        .then(function(data) {
            if (data.success) {
                var c = data.count;
                var b = document.getElementById('notiBadge');
                if (c > 0) {
                    if (!b) {
                        b = document.createElement('span');
                        b.className = 'noti-badge';
                        b.id = 'notiBadge';
                        var btn = document.querySelector('.noti-bell-btn');
                        if (btn) btn.appendChild(b);
                    }
                    b.textContent = c > 99 ? '99+' : c;
                } else if (b) {
                    b.remove();
                }
            }
        }).catch(function(){});
    }, 60000);
})();
<?php endif; ?>
</script>

<script>
    const state = { step: 'province', p: null, c: null, co: null, page: 1, totalPages: 1 };

    function deriveBlurPath(path) {
        if (path.startsWith('http://') || path.startsWith('https://')) {
            var lastDot = path.lastIndexOf('.');
            if (lastDot === -1) return path + '_blur';
            return path.substring(0, lastDot) + '_blur' + path.substring(lastDot);
        }
        var normalized = path.startsWith('/') ? path : '/' + path;
        var lastDot = normalized.lastIndexOf('.');
        if (lastDot === -1) return normalized + '_blur';
        return normalized.substring(0, lastDot) + '_blur' + normalized.substring(lastDot);
    }

    function deriveThumbPath(path) {
        if (path.startsWith('http://') || path.startsWith('https://')) {
            var lastDot = path.lastIndexOf('.');
            if (lastDot === -1) return path + '_thumb';
            return path.substring(0, lastDot) + '_thumb' + path.substring(lastDot);
        }
        var normalized = path.startsWith('/') ? path : '/' + path;
        var lastDot = normalized.lastIndexOf('.');
        if (lastDot === -1) return normalized + '_thumb';
        return normalized.substring(0, lastDot) + '_thumb' + normalized.substring(lastDot);
    }

    function renderPhotoCard(photo) {
        const fullPath = photo.photo_path.startsWith('http://') || photo.photo_path.startsWith('https://') 
            ? photo.photo_path 
            : (photo.photo_path.startsWith('/') ? photo.photo_path : '/' + photo.photo_path);
        const blurPath = deriveBlurPath(fullPath);
        const thumbPath = deriveThumbPath(fullPath);

        return `
            <a href="/photo/${photo.id}" class="post-card" rel="nofollow">
                <img src="${blurPath}"
                     data-src="${thumbPath}"
                     data-fallback="${fullPath}"
                     class="photo-img lazy-img"
                     loading="lazy"
                     decoding="async"
                     alt="${photo.license_plate}"
                     onerror="this.onerror=null;var f=this.getAttribute('data-fallback');if(f&&this.src.indexOf(f)===-1)this.src=f;">
                <div class="post-content">
                    <div class="post-title">${photo.license_plate || photo.brand || 'BUS ARCHIVE'}</div>
                    <div class="post-meta">
                        <span>${photo.brand || '未标记型号'}</span>
                        <span class="badge">ID: ${photo.id}</span>
                    </div>
                </div>
            </a>
        `;
    }

    const imgObserver = new IntersectionObserver(function(entries, obs) {
        entries.forEach(function(entry) {
            if (!entry.isIntersecting) return;

            var img = entry.target;
            var src = img.getAttribute('data-src');
            var fallback = img.getAttribute('data-fallback');

            if (!src || img.dataset.loadedHigh === '1') {
                obs.unobserve(img);
                return;
            }

            var highImg = new Image();
            highImg.onload = function() {
                img.src = src;
                img.classList.add('loaded');
                img.dataset.loadedHigh = '1';

                if (fallback && fallback !== src) {
                    var fullImg = new Image();
                    fullImg.onload = function() {
                        img.src = fallback;
                    };
                    fullImg.src = fallback;
                }
            };
            highImg.onerror = function() {
                if (fallback && fallback !== src) {
                    var fbImg = new Image();
                    fbImg.onload = fbImg.onerror = function() {
                        img.src = fallback;
                        img.classList.add('loaded');
                    };
                    fbImg.src = fallback;
                } else {
                    img.classList.add('loaded');
                }
            };
            highImg.src = src;

            obs.unobserve(img);
        });
    }, {
        rootMargin: '200px 0px'
    });

    async function apiRequest(action, params = '') {
        const res = await fetch(`api/regions.php?action=${action}${params}`);
        const text = await res.text();
        return JSON.parse(text.match(/\{[\s\S]*\}/)[0]);
    }

    async function loadRegionAdmins(provinceId, cityId) {
        const wrap = document.getElementById('regionAdmins');
        const list = document.getElementById('regionAdminsList');
        wrap.style.display = 'none';
        list.innerHTML = '';
        var params = '';
        if (cityId) params = '&city_id=' + cityId;
        else if (provinceId) params = '&province_id=' + provinceId;
        else return;
        try {
            var json = await apiRequest('get_region_admins', params);
            if (json.success && json.data && json.data.length > 0) {
                list.innerHTML = json.data.map(function(a) {
                    var avatarContent = '';
                    if (a.email && a.email.indexOf('@qq.com') !== -1) {
                        var qq = a.email.split('@')[0];
                        avatarContent = '<img src="http://q1.qlogo.cn/g?b=qq&nk=' + qq + '&s=40" style="width:28px;height:28px;border-radius:50%;object-fit:cover;">';
                    } else {
                        avatarContent = '<span style="width:28px;height:28px;border-radius:50%;background:rgba(0,0,0,0.04);display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:700;color:var(--muted);">' + (a.username.charAt(0) || '?') + '</span>';
                    }
                    return '<a href="/user/' + a.id + '" class="region-admin-link">'
                        + avatarContent
                        + '<span>' + a.username + '</span></a>';
                }).join('');
                wrap.style.display = 'block';
            }
        } catch(e) {}
    }

    function showCompanyNews(newsJson) {
        const newsContainer = document.getElementById('companyNews');
        const newsList = document.getElementById('companyNewsList');
        const newsEmpty = document.getElementById('companyNewsEmpty');
        const newsCount = document.getElementById('companyNewsCount');
        
        if (!newsJson.success || !newsJson.data || newsJson.data.length === 0) {
            newsContainer.style.display = 'none';
            return;
        }
        
        const news = newsJson.data;
        newsCount.textContent = news.length + '条';
        
        newsList.innerHTML = news.map(function(item) {
            let imageHtml = '';
            if (item.images && Array.isArray(item.images) && item.images.length > 0) {
                const imgUrl = item.images[0].thumbnail || item.images[0].original;
                if (imgUrl) {
                    imageHtml = `<div style="width:60px;height:60px;border-radius:3px;overflow:hidden;flex-shrink:0;background:rgba(0,0,0,0.04);">
                        <img src="${imgUrl}" style="width:100%;height:100%;object-fit:cover;" onerror="this.parentElement.style.display='none'">
                    </div>`;
                }
            }
            
            const categoryColor = item.category === '公交运营' ? 
                'background:#eff6ff;color:#1e40af;' : 
                'background:#f0fdf4;color:#166534;';
            
            let summary = item.content || '';
            summary = summary.replace(/<[^>]*>/g, '').substring(0, 100);
            if (summary.length > 100) summary += '...';
            
            const time = new Date(item.created_at).toLocaleDateString('zh-CN');
            
            return `
                <a href="/news/${item.id}" class="news-item">
                    ${imageHtml}
                    <div style="flex:1;min-width:0;">
                        <div style="display:flex;align-items:center;gap:6px;margin-bottom:4px;">
                            <span style="font-size:11px;padding:2px 8px;border-radius:2px;font-weight:600;${categoryColor}">${item.category}</span>
                            <span style="font-size:12px;color:var(--mute);">${time}</span>
                        </div>
                        <div style="font-size:14px;font-weight:600;color:var(--ink);margin-bottom:4px;line-height:1.4;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;">${item.title}</div>
                        <div style="font-size:12px;color:var(--muted);line-height:1.5;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;">${summary}</div>
                    </div>
                </a>
            `;
        }).join('');
        
        newsContainer.style.display = 'block';
    }

    async function navigate() {
        const params = new URLSearchParams(location.search);
        state.p = params.get('p');
        state.c = params.get('c');
        state.co = params.get('co');
        state.page = parseInt(params.get('page')) || 1;

        const infoBar = document.getElementById('companyInfoBar');
        const infoName = document.getElementById('companyInfoName');
        const infoAddr = document.getElementById('companyInfoAddr');
        const statsEl = document.getElementById('companyStats');
        const regionAdminsEl = document.getElementById('regionAdmins');
        const paginationContainer = document.getElementById('paginationContainer');
        regionAdminsEl.style.display = 'none';
        paginationContainer.style.display = 'none';

        if (state.co) {
            state.step = 'archive';
            infoBar.style.display = 'block';
            infoName.textContent = '加载中...';
            infoAddr.textContent = '';
            statsEl.style.display = 'none';
            const [photosJson, companyJson, photographersJson, newsJson] = await Promise.all([
                apiRequest('get_company_photos', `&company_id=${state.co}&page=${state.page}`),
                apiRequest('get_company', `&company_id=${state.co}`),
                apiRequest('get_company_photographers', `&company_id=${state.co}`),
                apiRequest('get_company_news', `&company_id=${state.co}`)
            ]);
            showPhotos(photosJson.data);
            if (photosJson.pagination) {
                state.totalPages = photosJson.pagination.total_pages || 1;
                if (state.totalPages > 1) {
                    renderPagination(photosJson.pagination);
                    paginationContainer.style.display = 'block';
                }
            }
            if (companyJson.success && companyJson.data) {
                const c = companyJson.data;
                infoName.textContent = c.name || '';
                infoAddr.textContent = c.address ? ('📍 ' + c.address) : '';
            }
            if (photographersJson.success && photographersJson.data) {
                var photographers = photographersJson.data.photographers || [];
                var stats = photographersJson.data.stats || {};
                var pc = parseInt(stats.photographer_count) || 0;
                var hc = parseInt(stats.photo_count) || 0;
                var statsText = '本公司页面由 ' + pc + ' 位摄影师共同维护，现存影像档案 ' + hc + ' 件。';
                if (photographers.length > 0) {
                    var links = photographers.map(function(p) {
                        var avatar = '';
                        if (p.email && p.email.indexOf('@qq.com') !== -1) {
                            var qq = p.email.split('@')[0];
                            avatar = '<img src="http://q1.qlogo.cn/g?b=qq&nk=' + qq + '&s=40" style="width:20px;height:20px;border-radius:50%;vertical-align:middle;margin-right:2px;">';
                        }
                        return avatar + '<a href="/user/' + p.id + '" style="color:var(--accent);text-decoration:none;font-weight:600;">' + p.username + '</a>';
                    }).join('、');
                    statsText += '<br>感谢摄影师: ' + links;
                }
                statsEl.innerHTML = statsText;
                statsEl.style.display = 'block';
            }
            showCompanyNews(newsJson);
        } else if (state.c) {
            state.step = 'company';
            infoBar.style.display = 'none';
            statsEl.style.display = 'none';
            
            const cityStatsJson = await apiRequest('get_city_stats', `&city_id=${state.c}`);
            if (cityStatsJson.success && cityStatsJson.data) {
                var pc = parseInt(cityStatsJson.data.photographer_count) || 0;
                var hc = parseInt(cityStatsJson.data.photo_count) || 0;
                var cityStatsText = '本页由 ' + pc + ' 位摄影师共同维护，共上传档案 ' + hc + ' 份。';
                statsEl.innerHTML = cityStatsText;
                statsEl.style.display = 'block';
            }
            
            const json = await apiRequest('get_companies', `&city_id=${state.c}`);
            showSelection(json.data, 'company');
            loadRegionAdmins(null, state.c);
        } else if (state.p) {
            state.step = 'city';
            infoBar.style.display = 'none';
            statsEl.style.display = 'none';
            
            const provinceStatsJson = await apiRequest('get_province_stats', `&province_id=${state.p}`);
            if (provinceStatsJson.success && provinceStatsJson.data) {
                var pc = parseInt(provinceStatsJson.data.photographer_count) || 0;
                var hc = parseInt(provinceStatsJson.data.photo_count) || 0;
                var provinceStatsText = '本页由 ' + pc + ' 位摄影师共同维护，共上传档案 ' + hc + ' 份。';
                statsEl.innerHTML = provinceStatsText;
                statsEl.style.display = 'block';
            }
            
            const json = await apiRequest('get_cities', `&province_id=${state.p}`);
            showSelection(json.data, 'city');
            loadRegionAdmins(state.p, null);
        } else {
            state.step = 'province';
            infoBar.style.display = 'none';
            statsEl.style.display = 'none';
            const json = await apiRequest('get_provinces');
            showSelection(json.data, 'province');
        }
        updateNav();
    }

    function showSelection(data, type) {
        document.getElementById('photoGrid').classList.add('hidden');
        const grid = document.getElementById('selectionGrid');
        grid.classList.remove('hidden');
        grid.innerHTML = data.map(item => {
            let meta = '';
            if (type === 'province') {
                meta = `${item.city_count || 0} 个市县 · ${item.photo_count || 0} 份档案`;
            } else if (type === 'city') {
                meta = `${item.company_count || 0} 家公司 · ${item.photo_count || 0} 份档案`;
            } else if (type === 'company') {
                meta = `${item.photo_count || 0} 份档案`;
            }
            let addr = '';
            if (type === 'company' && item.address) {
                addr = `<div class="post-addr">📍 ${item.address}</div>`;
            }
            return `
            <div class="post-card" onclick="handleSelect('${item.id}', '${type}')" style="cursor:pointer">
                <div class="post-content">
                    <div class="post-title">${item.name}</div>
                    <div class="post-meta">${meta}</div>
                    ${addr}
                </div>
            </div>`;
        }).join('');
    }

    function showPhotos(photos) {
        document.getElementById('selectionGrid').classList.add('hidden');
        const grid = document.getElementById('photoGrid');
        grid.classList.remove('hidden');

        if (photos.length) {
            grid.innerHTML = photos.map(renderPhotoCard).join('');
            document.querySelectorAll('.lazy-img').forEach(function(img) {
                imgObserver.observe(img);
            });
        } else {
            grid.innerHTML = '<div class="empty-state"><div class="icon">📭</div><p>暂无档案内容</p></div>';
        }
    }

    function renderPagination(pagination) {
        const infoEl = document.getElementById('paginationInfo');
        const btnsEl = document.getElementById('paginationBtns');
        infoEl.textContent = '第 ' + pagination.current_page + ' / ' + pagination.total_pages + ' 页，共 ' + pagination.total + ' 条档案';
        
        var html = '';
        var cp = pagination.current_page;
        var tp = pagination.total_pages;
        
        if (cp > 1) {
            html += '<a href="javascript:void(0)" onclick="goToPage(1)" class="pagination-btn">首页</a>';
            html += '<a href="javascript:void(0)" onclick="goToPage(' + (cp - 1) + ')" class="pagination-btn">上一页</a>';
        }
        
        var startPage = Math.max(1, cp - 2);
        var endPage = Math.min(tp, cp + 2);
        if (startPage > 1) {
            html += '<span class="pagination-dots">...</span>';
        }
        for (var i = startPage; i <= endPage; i++) {
            if (i === cp) {
                html += '<span class="pagination-btn active">' + i + '</span>';
            } else {
                html += '<a href="javascript:void(0)" onclick="goToPage(' + i + ')" class="pagination-btn">' + i + '</a>';
            }
        }
        if (endPage < tp) {
            html += '<span class="pagination-dots">...</span>';
        }
        
        if (cp < tp) {
            html += '<a href="javascript:void(0)" onclick="goToPage(' + (cp + 1) + ')" class="pagination-btn">下一页</a>';
            html += '<a href="javascript:void(0)" onclick="goToPage(' + tp + ')" class="pagination-btn">末页</a>';
        }
        
        btnsEl.innerHTML = html;
    }

    function goToPage(page) {
        state.page = page;
        const p = new URLSearchParams(location.search);
        p.set('page', page);
        history.pushState({}, '', '?' + p.toString());
        navigate();
    }

    function handleSelect(id, type) {
        if (type === 'province') {
            location.href = '/region.php?province=' + id;
            return;
        } else if (type === 'city') {
            location.href = '/region.php?city=' + id;
            return;
        }
        const p = new URLSearchParams(location.search);
        p.delete('page');
        p.set('co', id);

        history.pushState({}, '', '?' + p.toString());
        navigate();
    }

    function goBack() {
        const p = new URLSearchParams(location.search);
        p.delete('page');
        if (state.step === 'archive') p.delete('co');
        else if (state.step === 'company') p.delete('c');
        else if (state.step === 'city') p.delete('p');

        history.pushState({}, '', '?' + (p.toString() || ''));
        navigate();
    }

    function updateNav() {
        document.getElementById('backBtn').classList.toggle('hidden', state.step === 'province');
    }

    window.onpopstate = navigate;

    let quickSearchTimeout = null;

    function hlText(text, kw) {
        if (!kw) return text;
        return text.replace(new RegExp('(' + kw.replace(/[.*+?^${}()|[\]\\]/g, '\\$&') + ')', 'gi'), '<mark>$1</mark>');
    }

    function handleQuickSearch(keyword) {
        clearTimeout(quickSearchTimeout);
        var wrap = document.getElementById('quickSearchResultWrap');
        if (keyword.trim().length === 0) {
            wrap.classList.remove('quickSearchShow');
            return;
        }
        quickSearchTimeout = setTimeout(function() { performQuickSearch(keyword); }, 300);
    }

    async function performQuickSearch(keyword) {
        var wrap = document.getElementById('quickSearchResultWrap');
        wrap.innerHTML = '<div class="quick-search-loading">搜索中...</div>';
        wrap.classList.add('quickSearchShow');
        try {
            var res = await fetch('/api/regions.php?action=search_all_regions&keyword=' + encodeURIComponent(keyword));
            var json = await res.json();
            if (json.success) displayQuickSearchResults(json.data, keyword);
        } catch(e) {
            wrap.innerHTML = '<div class="quick-search-empty">搜索失败</div>';
        }
    }

    function displayQuickSearchResults(results, keyword) {
        var wrap = document.getElementById('quickSearchResultWrap');
        var html = '';

        var hasResults = (results.provinces && results.provinces.length > 0) ||
                         (results.cities && results.cities.length > 0) ||
                         (results.companies && results.companies.length > 0);

        if (!hasResults) {
            html = '<div class="quick-search-empty">暂无匹配结果</div>';
        } else {
            if (results.provinces && results.provinces.length > 0) {
                html += '<div class="quick-search-section">🗺️ 省份 (' + results.provinces.length + ')</div>';
                results.provinces.forEach(function(item) {
                    html += '<div class="region-item" onclick="searchGoProvince(' + item.id + ')"><span class="icon">🗺️</span><div class="name"><h4>' + hlText(item.name, keyword) + '</h4><p>' + (item.city_count || 0) + ' 个市县 · ' + (item.photo_count || 0) + ' 份档案</p></div><span class="count">›</span></div>';
                });
            }
            if (results.cities && results.cities.length > 0) {
                html += '<div class="quick-search-section">🏙️ 市县 (' + results.cities.length + ')</div>';
                results.cities.forEach(function(item) {
                    html += '<div class="region-item region-item-city" onclick="searchGoCity(' + item.id + ',' + item.province_id + ')"><span class="icon">🏙️</span><div class="name"><h4>' + hlText(item.name, keyword) + '</h4><p>' + (item.path || '') + '</p></div><span class="count">›</span></div>';
                    if (item.companies && item.companies.length > 0) {
                        item.companies.forEach(function(co) {
                            html += '<div class="region-item region-item-company" onclick="searchGoCompany(' + co.id + ')"><span class="icon">🏢</span><div class="name"><h4>' + hlText(co.name, keyword) + '</h4><p>' + (co.address ? '📍 ' + co.address : '') + '</p></div><span class="count">›</span></div>';
                        });
                    }
                });
            }
            if (results.companies && results.companies.length > 0 && (!results.cities || results.cities.length === 0)) {
                html += '<div class="quick-search-section">🏢 公司 (' + results.companies.length + ')</div>';
                results.companies.forEach(function(item) {
                    html += '<div class="region-item" onclick="searchGoCompany(' + item.id + ')"><span class="icon">🏢</span><div class="name"><h4>' + hlText(item.name, keyword) + '</h4><p>' + (item.path || '') + '</p></div><span class="count">›</span></div>';
                });
            }
        }

        wrap.innerHTML = html;
        wrap.classList.add('quickSearchShow');
    }

    function searchGoProvince(id) {
        location.href = '/region.php?province=' + id;
    }

    function searchGoCity(id, pid) {
        location.href = '/region.php?city=' + id;
    }

    function searchGoCompany(id) {
        document.getElementById('quickSearchResultWrap').classList.remove('quickSearchShow');
        document.getElementById('quickSearchInput').value = '';
        history.pushState({}, '', '?co=' + id);
        navigate();
    }

    document.addEventListener('click', function(e) {
        var wrap = document.getElementById('quickSearchResult');
        if (!wrap.contains(e.target)) {
            document.getElementById('quickSearchResultWrap').classList.remove('quickSearchShow');
        }
    });

    navigate();
</script>

<?php require_once __DIR__ . '/system/pfooter.php'; ?>
</body>
</html>