- /admin: password-protected admin login (8-hour session cookie) - /admin/dashboard: full inquiries table + announcement management - Announcements: create promos with title, body, optional CTA button, optional expiry date; toggle active/inactive; delete - Homepage: queries active non-expired announcement from D1 and renders a dismissible orange banner (localStorage persists per-announcement) - D1 migration 004_announcements.sql: announcements table + index Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
1034 lines
72 KiB
JavaScript
1034 lines
72 KiB
JavaScript
const CSS = `
|
||
*{box-sizing:border-box;margin:0;padding:0}
|
||
body{font-family:'Segoe UI',Arial,sans-serif;color:#1a2744;background:#f8faff}
|
||
a{color:#1a5bb8;text-decoration:none}
|
||
a:hover{text-decoration:underline}
|
||
|
||
/* NAV */
|
||
nav{background:#fff;box-shadow:0 2px 8px rgba(0,0,0,.08);position:sticky;top:0;z-index:100}
|
||
.nav-inner{max-width:1200px;margin:0 auto;padding:0 24px;display:flex;align-items:center;justify-content:space-between;height:68px}
|
||
.nav-logo{display:flex;align-items:center;gap:10px}
|
||
.nav-logo span{color:#1a5bb8}
|
||
.nav-links{display:flex;gap:28px;align-items:center;list-style:none}
|
||
.nav-links a{font-size:.95rem;color:#1a2744;font-weight:500}
|
||
.nav-links a:hover{color:#1a5bb8;text-decoration:none}
|
||
.nav-cta{background:#1a5bb8;color:#fff!important;padding:9px 22px;border-radius:6px;font-weight:600!important}
|
||
.nav-cta:hover{background:#154fa0;text-decoration:none!important}
|
||
.nav-user{display:flex;align-items:center;gap:16px;font-size:.9rem}
|
||
|
||
/* HERO */
|
||
.hero{background:linear-gradient(135deg,#1a2744 0%,#1a5bb8 100%);color:#fff;padding:80px 24px;text-align:center}
|
||
.hero h1{font-size:2.8rem;font-weight:800;margin-bottom:16px;line-height:1.2}
|
||
.hero p{font-size:1.2rem;opacity:.9;max-width:600px;margin:0 auto 32px}
|
||
.hero-btns{display:flex;gap:16px;justify-content:center;flex-wrap:wrap}
|
||
.btn{display:inline-block;padding:13px 30px;border-radius:8px;font-weight:700;font-size:1rem;cursor:pointer;border:none;transition:.2s}
|
||
.btn-white{background:#fff;color:#1a5bb8}
|
||
.btn-white:hover{background:#e8f0fe;text-decoration:none}
|
||
.btn-outline{border:2px solid #fff;color:#fff;background:transparent}
|
||
.btn-outline:hover{background:rgba(255,255,255,.12);text-decoration:none}
|
||
.btn-primary{background:#1a5bb8;color:#fff}
|
||
.btn-primary:hover{background:#154fa0;text-decoration:none}
|
||
.btn-success{background:#16a34a;color:#fff}
|
||
.btn-success:hover{background:#15803d;text-decoration:none}
|
||
|
||
/* SECTIONS */
|
||
section{padding:64px 24px}
|
||
.container{max-width:1200px;margin:0 auto}
|
||
.section-title{font-size:2rem;font-weight:700;text-align:center;margin-bottom:12px;color:#1a2744}
|
||
.section-sub{text-align:center;color:#64748b;font-size:1.05rem;margin-bottom:48px}
|
||
|
||
/* SERVICES GRID */
|
||
.services-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:24px}
|
||
.service-card{background:#fff;border-radius:12px;padding:28px;box-shadow:0 2px 12px rgba(0,0,0,.06);transition:.2s;border:1px solid #e8f0fe}
|
||
.service-card:hover{transform:translateY(-3px);box-shadow:0 8px 24px rgba(26,91,184,.12)}
|
||
.service-icon{font-size:2rem;margin-bottom:12px}
|
||
.service-card h3{font-size:1.1rem;font-weight:700;margin-bottom:8px;color:#1a2744}
|
||
.service-card p{font-size:.9rem;color:#64748b;line-height:1.6}
|
||
.service-link{display:inline-block;margin-top:14px;font-size:.9rem;font-weight:600;color:#1a5bb8}
|
||
|
||
/* STATS */
|
||
.stats-bar{background:#1a5bb8;color:#fff;padding:40px 24px}
|
||
.stats-inner{max-width:1200px;margin:0 auto;display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:24px;text-align:center}
|
||
.stat-num{font-size:2.2rem;font-weight:800}
|
||
.stat-label{font-size:.9rem;opacity:.85;margin-top:4px}
|
||
|
||
/* WHY US */
|
||
.why-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:20px}
|
||
.why-card{background:#fff;border-radius:10px;padding:24px;border-left:4px solid #1a5bb8;box-shadow:0 2px 8px rgba(0,0,0,.05)}
|
||
.why-card h4{font-weight:700;margin-bottom:8px;color:#1a2744}
|
||
.why-card p{font-size:.9rem;color:#64748b}
|
||
|
||
/* TESTIMONIALS */
|
||
.testi-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:24px}
|
||
.testi-card{background:#fff;border-radius:12px;padding:28px;box-shadow:0 2px 12px rgba(0,0,0,.06)}
|
||
.stars{color:#f59e0b;font-size:1.1rem;margin-bottom:12px}
|
||
.testi-text{color:#374151;font-style:italic;line-height:1.7;margin-bottom:16px}
|
||
.testi-name{font-weight:700;color:#1a2744}
|
||
|
||
/* FORMS */
|
||
.form-card{background:#fff;border-radius:16px;padding:40px;max-width:520px;margin:0 auto;box-shadow:0 4px 24px rgba(0,0,0,.08)}
|
||
.form-card h2{font-size:1.6rem;font-weight:700;margin-bottom:8px;text-align:center}
|
||
.form-card .sub{text-align:center;color:#64748b;margin-bottom:28px;font-size:.95rem}
|
||
.form-group{margin-bottom:18px}
|
||
.form-group label{display:block;font-weight:600;font-size:.9rem;margin-bottom:6px;color:#1a2744}
|
||
.form-group input,.form-group select,.form-group textarea{width:100%;padding:11px 14px;border:1.5px solid #d1d9e8;border-radius:8px;font-size:.95rem;transition:.2s;background:#fafbff}
|
||
.form-group input:focus,.form-group select:focus,.form-group textarea:focus{outline:none;border-color:#1a5bb8;background:#fff}
|
||
.form-group textarea{resize:vertical;min-height:100px}
|
||
.form-row{display:grid;grid-template-columns:1fr 1fr;gap:16px}
|
||
.form-submit{width:100%;padding:13px;background:#1a5bb8;color:#fff;border:none;border-radius:8px;font-size:1rem;font-weight:700;cursor:pointer;transition:.2s;margin-top:8px}
|
||
.form-submit:hover{background:#154fa0}
|
||
.form-footer{text-align:center;margin-top:20px;font-size:.9rem;color:#64748b}
|
||
.alert{padding:12px 16px;border-radius:8px;margin-bottom:18px;font-size:.9rem}
|
||
.alert-success{background:#dcfce7;color:#16a34a;border:1px solid #bbf7d0}
|
||
.alert-error{background:#fee2e2;color:#dc2626;border:1px solid #fecaca}
|
||
.alert-info{background:#dbeafe;color:#1d4ed8;border:1px solid #bfdbfe}
|
||
|
||
/* COURSE SEARCH */
|
||
.search-bar{background:#fff;border-radius:12px;padding:28px;box-shadow:0 2px 12px rgba(0,0,0,.06);margin-bottom:32px}
|
||
.search-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:16px;align-items:end}
|
||
.search-grid .btn{padding:11px 24px;font-size:.95rem}
|
||
.results-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px}
|
||
.results-count{font-size:.95rem;color:#64748b}
|
||
.course-card{background:#fff;border-radius:10px;padding:22px;box-shadow:0 2px 8px rgba(0,0,0,.05);margin-bottom:16px;border:1px solid #e8f0fe;display:flex;justify-content:space-between;align-items:flex-start;gap:16px;flex-wrap:wrap}
|
||
.course-info h3{font-size:1.05rem;font-weight:700;color:#1a2744;margin-bottom:6px}
|
||
.course-meta{display:flex;gap:12px;flex-wrap:wrap;margin-top:8px}
|
||
.badge{display:inline-block;padding:3px 10px;border-radius:20px;font-size:.8rem;font-weight:600}
|
||
.badge-blue{background:#dbeafe;color:#1d4ed8}
|
||
.badge-green{background:#dcfce7;color:#166534}
|
||
.badge-gray{background:#f3f4f6;color:#374151}
|
||
.course-actions{display:flex;flex-direction:column;gap:8px;min-width:160px}
|
||
.btn-sm{padding:8px 16px;font-size:.85rem;border-radius:6px}
|
||
|
||
/* DASHBOARD */
|
||
.dash-grid{display:grid;grid-template-columns:240px 1fr;gap:28px;align-items:start}
|
||
.dash-sidebar{background:#fff;border-radius:12px;padding:24px;box-shadow:0 2px 8px rgba(0,0,0,.05)}
|
||
.dash-user{text-align:center;margin-bottom:24px;padding-bottom:20px;border-bottom:1px solid #e8f0fe}
|
||
.dash-avatar{width:64px;height:64px;background:#1a5bb8;border-radius:50%;display:flex;align-items:center;justify-content:center;color:#fff;font-size:1.6rem;font-weight:700;margin:0 auto 12px}
|
||
.dash-nav{list-style:none}
|
||
.dash-nav li{margin-bottom:4px}
|
||
.dash-nav a{display:block;padding:10px 14px;border-radius:8px;font-size:.95rem;color:#374151;font-weight:500;transition:.15s}
|
||
.dash-nav a:hover,.dash-nav a.active{background:#dbeafe;color:#1a5bb8;text-decoration:none}
|
||
.dash-main{display:flex;flex-direction:column;gap:24px}
|
||
.dash-card{background:#fff;border-radius:12px;padding:28px;box-shadow:0 2px 8px rgba(0,0,0,.05)}
|
||
.dash-card h3{font-size:1.1rem;font-weight:700;margin-bottom:18px;color:#1a2744;padding-bottom:12px;border-bottom:1px solid #e8f0fe}
|
||
.inquiry-row{padding:14px 0;border-bottom:1px solid #f1f5f9;display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:8px}
|
||
.inquiry-row:last-child{border-bottom:none}
|
||
.inquiry-info{font-size:.9rem;color:#374151}
|
||
.inquiry-date{font-size:.8rem;color:#94a3b8}
|
||
|
||
/* FOOTER */
|
||
footer{background:#1a2744;color:#cbd5e1;padding:48px 24px 24px}
|
||
.footer-inner{max-width:1200px;margin:0 auto}
|
||
.footer-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:32px;margin-bottom:40px}
|
||
.footer-col h4{color:#fff;font-weight:700;margin-bottom:16px}
|
||
.footer-col ul{list-style:none}
|
||
.footer-col ul li{margin-bottom:8px}
|
||
.footer-col ul li a{color:#94a3b8;font-size:.9rem}
|
||
.footer-col ul li a:hover{color:#fff;text-decoration:none}
|
||
.footer-contact{font-size:.9rem;line-height:1.8;color:#94a3b8}
|
||
.footer-bottom{border-top:1px solid #2d3d5a;padding-top:20px;text-align:center;font-size:.85rem;color:#64748b}
|
||
|
||
/* KONPARE WIDGET */
|
||
.widget-wrap{background:#fff;border-radius:12px;box-shadow:0 2px 16px rgba(0,0,0,.1);overflow:hidden;position:relative}
|
||
.widget-wrap iframe{width:100%;border:none;height:820px;display:block}
|
||
.widget-fs-btn{position:absolute;top:10px;right:10px;z-index:10;background:rgba(0,0,0,.55);color:#fff;border:none;border-radius:6px;padding:6px 12px;font-size:.8rem;font-weight:600;cursor:pointer;display:flex;align-items:center;gap:6px;backdrop-filter:blur(4px);transition:.2s}
|
||
.widget-fs-btn:hover{background:rgba(0,0,0,.75)}
|
||
/* Fullscreen overlay mode */
|
||
.widget-overlay{display:none;position:fixed;inset:0;z-index:9999;background:#000;flex-direction:column}
|
||
.widget-overlay.active{display:flex}
|
||
.widget-overlay iframe{flex:1;width:100%;border:none}
|
||
.widget-overlay-bar{background:#1a2744;padding:10px 16px;display:flex;align-items:center;justify-content:space-between;flex-shrink:0}
|
||
.widget-overlay-bar span{color:#fff;font-weight:600;font-size:.9rem}
|
||
.widget-overlay-close{background:#dc2626;color:#fff;border:none;border-radius:6px;padding:6px 14px;font-size:.85rem;font-weight:700;cursor:pointer}
|
||
/* Native fullscreen styles */
|
||
#konpare-frame:fullscreen{width:100vw;height:100vh}
|
||
#konpare-frame:-webkit-full-screen{width:100vw;height:100vh}
|
||
|
||
@media(max-width:768px){
|
||
.hero h1{font-size:1.9rem}
|
||
.nav-links{display:none}
|
||
.dash-grid{grid-template-columns:1fr}
|
||
.form-row{grid-template-columns:1fr}
|
||
.course-card{flex-direction:column}
|
||
.course-actions{flex-direction:row;min-width:auto}
|
||
}
|
||
`;
|
||
|
||
const BASE_URL = 'https://careersgateway.com.au';
|
||
const DEFAULT_IMAGE = 'https://careersgateway.com.au/wp-content/uploads/2025/06/pexels-photo-1236421-1236421-scaled.jpg';
|
||
const SITE_NAME = 'Careers Gateway Australia';
|
||
|
||
function announcementBanner(ann) {
|
||
if (!ann) return '';
|
||
return `
|
||
<div id="cg-ann" style="background:linear-gradient(90deg,#ff6b00,#e63900);color:#fff;padding:0;overflow:hidden;position:relative;z-index:99">
|
||
<div style="max-width:1200px;margin:0 auto;padding:14px 24px;display:flex;align-items:center;gap:16px;flex-wrap:wrap">
|
||
<span style="font-size:1.3rem">🎉</span>
|
||
<div style="flex:1;min-width:200px">
|
||
<strong style="font-size:1rem">${esc(ann.title)}</strong>
|
||
<span style="margin-left:10px;font-size:.9rem;opacity:.92">${esc(ann.body)}</span>
|
||
</div>
|
||
${ann.cta_label && ann.cta_url ? `<a href="${esc(ann.cta_url)}" style="background:#fff;color:#e63900;font-weight:700;padding:8px 20px;border-radius:6px;font-size:.9rem;white-space:nowrap;text-decoration:none" onmouseover="this.style.background='#fff3ee'" onmouseout="this.style.background='#fff'">${esc(ann.cta_label)}</a>` : ''}
|
||
<button onclick="dismissAnn(${ann.id})" aria-label="Dismiss" style="background:rgba(255,255,255,.25);border:none;color:#fff;width:28px;height:28px;border-radius:50%;font-size:1.1rem;cursor:pointer;display:flex;align-items:center;justify-content:center;flex-shrink:0;line-height:1">×</button>
|
||
</div>
|
||
</div>
|
||
<script>
|
||
(function(){
|
||
var k='cg-ann-dismissed-${ann.id}';
|
||
if(localStorage.getItem(k)){document.getElementById('cg-ann').style.display='none';}
|
||
})();
|
||
function dismissAnn(id){
|
||
localStorage.setItem('cg-ann-dismissed-'+id,'1');
|
||
var el=document.getElementById('cg-ann');
|
||
if(el){el.style.transition='max-height .3s,opacity .3s';el.style.maxHeight='0';el.style.opacity='0';setTimeout(function(){el.style.display='none';},350);}
|
||
}
|
||
</script>`;
|
||
}
|
||
|
||
function layout(title, body, user = null, extraHead = '', meta = {}, announcement = null) {
|
||
const fullTitle = `${title} — ${SITE_NAME}`;
|
||
const description = meta.description || 'Your trusted partner for education, migration, recruitment, and career services in Australia. Search CRICOS courses, get expert visa advice, and more.';
|
||
const image = meta.image || DEFAULT_IMAGE;
|
||
const url = meta.url ? `${BASE_URL}${meta.url}` : BASE_URL;
|
||
const type = meta.type || 'website';
|
||
|
||
const navUser = user
|
||
? `<div class="nav-user"><span>Hi, <strong>${esc(user.full_name.split(' ')[0])}</strong></span><a href="/dashboard" class="btn btn-primary btn-sm" style="padding:7px 16px;font-size:.85rem">Dashboard</a><a href="/logout" style="font-size:.85rem;color:#64748b">Logout</a></div>`
|
||
: `<div class="nav-user"><a href="/login">Login</a><a href="/register" class="btn btn-primary btn-sm" style="padding:7px 16px;font-size:.85rem">Register</a></div>`;
|
||
return `<!DOCTYPE html>
|
||
<html lang="en">
|
||
<head>
|
||
<meta charset="UTF-8"><meta name="viewport" content="width=device-width,initial-scale=1">
|
||
<title>${esc(fullTitle)}</title>
|
||
<meta name="description" content="${esc(description)}">
|
||
<link rel="canonical" href="${esc(url)}">
|
||
|
||
<!-- Open Graph -->
|
||
<meta property="og:type" content="${esc(type)}">
|
||
<meta property="og:site_name" content="${esc(SITE_NAME)}">
|
||
<meta property="og:title" content="${esc(fullTitle)}">
|
||
<meta property="og:description" content="${esc(description)}">
|
||
<meta property="og:image" content="${esc(image)}">
|
||
<meta property="og:image:width" content="1200">
|
||
<meta property="og:image:height" content="630">
|
||
<meta property="og:url" content="${esc(url)}">
|
||
<meta property="og:locale" content="en_AU">
|
||
|
||
<!-- Twitter Card -->
|
||
<meta name="twitter:card" content="summary_large_image">
|
||
<meta name="twitter:title" content="${esc(fullTitle)}">
|
||
<meta name="twitter:description" content="${esc(description)}">
|
||
<meta name="twitter:image" content="${esc(image)}">
|
||
<meta name="twitter:site" content="@careersgateway">
|
||
|
||
<link rel="icon" type="image/png" sizes="32x32" href="https://careersgateway.com.au/wp-content/uploads/2025/06/cropped-Screenshot-2025-06-15-at-1.59.23_PM-300x159-removebg-preview-32x32.png">
|
||
<link rel="apple-touch-icon" sizes="180x180" href="https://careersgateway.com.au/wp-content/uploads/2025/06/cropped-Screenshot-2025-06-15-at-1.59.23_PM-300x159-removebg-preview-180x180.png">
|
||
<style>${CSS}</style>
|
||
${extraHead}
|
||
</head>
|
||
<body>
|
||
<nav>
|
||
<div class="nav-inner">
|
||
<a href="/" class="nav-logo"><img src="https://careersgateway.com.au/wp-content/uploads/2025/06/cropped-Screenshot-2025-06-15-at-1.59.23_PM-300x159-removebg-preview-192x192.png" alt="Careers Gateway" style="height:44px;width:auto;display:block"></a>
|
||
<ul class="nav-links">
|
||
<li><a href="/">Home</a></li>
|
||
<li><a href="/courses">Find Courses</a></li>
|
||
<li><a href="/services">Services</a></li>
|
||
<li><a href="/health-insurance">Health Insurance</a></li>
|
||
<li><a href="/contact">Contact</a></li>
|
||
<li><a href="/courses" class="nav-cta">Search CRICOS</a></li>
|
||
</ul>
|
||
<div style="display:flex;align-items:center;gap:12px">
|
||
<a href="https://www.instagram.com/careersgatewayaus/" target="_blank" rel="noopener" aria-label="Instagram" style="display:flex;align-items:center;color:#1a2744;transition:.15s" onmouseover="this.style.color='#E1306C'" onmouseout="this.style.color='#1a2744'">
|
||
<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="currentColor"><path d="M12 2.163c3.204 0 3.584.012 4.85.07 3.252.148 4.771 1.691 4.919 4.919.058 1.265.069 1.645.069 4.849 0 3.205-.012 3.584-.069 4.849-.149 3.225-1.664 4.771-4.919 4.919-1.266.058-1.644.07-4.85.07-3.204 0-3.584-.012-4.849-.07-3.26-.149-4.771-1.699-4.919-4.92-.058-1.265-.07-1.644-.07-4.849 0-3.204.013-3.583.07-4.849.149-3.227 1.664-4.771 4.919-4.919 1.266-.057 1.645-.069 4.849-.069zM12 0C8.741 0 8.333.014 7.053.072 2.695.272.273 2.69.073 7.052.014 8.333 0 8.741 0 12c0 3.259.014 3.668.072 4.948.2 4.358 2.618 6.78 6.98 6.98C8.333 23.986 8.741 24 12 24c3.259 0 3.668-.014 4.948-.072 4.354-.2 6.782-2.618 6.979-6.98.059-1.28.073-1.689.073-4.948 0-3.259-.014-3.667-.072-4.947-.196-4.354-2.617-6.78-6.979-6.98C15.668.014 15.259 0 12 0zm0 5.838a6.162 6.162 0 100 12.324 6.162 6.162 0 000-12.324zM12 16a4 4 0 110-8 4 4 0 010 8zm6.406-11.845a1.44 1.44 0 100 2.881 1.44 1.44 0 000-2.881z"/></svg>
|
||
</a>
|
||
<a href="https://www.facebook.com/profile.php?id=61576746571629" target="_blank" rel="noopener" aria-label="Facebook" style="display:flex;align-items:center;color:#1a2744;transition:.15s" onmouseover="this.style.color='#1877F2'" onmouseout="this.style.color='#1a2744'">
|
||
<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="currentColor"><path d="M24 12.073C24 5.41 18.627 0 12 0S0 5.41 0 12.073C0 18.1 4.388 23.094 10.125 24v-8.437H7.078v-3.49h3.047v-2.66c0-3.025 1.792-4.697 4.533-4.697 1.312 0 2.686.236 2.686.236v2.97h-1.513c-1.491 0-1.956.93-1.956 1.886v2.265h3.328l-.532 3.49h-2.796V24C19.612 23.094 24 18.1 24 12.073z"/></svg>
|
||
</a>
|
||
${navUser}
|
||
</div>
|
||
</div>
|
||
</nav>
|
||
${announcementBanner(announcement)}
|
||
${body}
|
||
<!-- WhatsApp floating button -->
|
||
<a href="https://wa.me/61405580047?text=Hi%20Careers%20Gateway%2C%20I%27d%20like%20to%20enquire%20about%20your%20services."
|
||
target="_blank" rel="noopener"
|
||
aria-label="Chat on WhatsApp"
|
||
style="position:fixed;bottom:24px;right:24px;z-index:999;width:58px;height:58px;background:#25D366;border-radius:50%;display:flex;align-items:center;justify-content:center;box-shadow:0 4px 16px rgba(37,211,102,.45);transition:.2s"
|
||
onmouseover="this.style.transform='scale(1.1)'" onmouseout="this.style.transform='scale(1)'">
|
||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="30" height="30" fill="#fff">
|
||
<path d="M17.472 14.382c-.297-.149-1.758-.867-2.03-.967-.273-.099-.471-.148-.67.15-.197.297-.767.966-.94 1.164-.173.199-.347.223-.644.075-.297-.15-1.255-.463-2.39-1.475-.883-.788-1.48-1.761-1.653-2.059-.173-.297-.018-.458.13-.606.134-.133.298-.347.446-.52.149-.174.198-.298.298-.497.099-.198.05-.371-.025-.52-.075-.149-.669-1.612-.916-2.207-.242-.579-.487-.5-.669-.51-.173-.008-.371-.01-.57-.01-.198 0-.52.074-.792.372-.272.297-1.04 1.016-1.04 2.479 0 1.462 1.065 2.875 1.213 3.074.149.198 2.096 3.2 5.077 4.487.709.306 1.262.489 1.694.625.712.227 1.36.195 1.871.118.571-.085 1.758-.719 2.006-1.413.248-.694.248-1.289.173-1.413-.074-.124-.272-.198-.57-.347m-5.421 7.403h-.004a9.87 9.87 0 01-5.031-1.378l-.361-.214-3.741.982.998-3.648-.235-.374a9.86 9.86 0 01-1.51-5.26c.001-5.45 4.436-9.884 9.888-9.884 2.64 0 5.122 1.03 6.988 2.898a9.825 9.825 0 012.893 6.994c-.003 5.45-4.437 9.884-9.885 9.884m8.413-18.297A11.815 11.815 0 0012.05 0C5.495 0 .16 5.335.157 11.892c0 2.096.547 4.142 1.588 5.945L.057 24l6.305-1.654a11.882 11.882 0 005.683 1.448h.005c6.554 0 11.89-5.335 11.893-11.893a11.821 11.821 0 00-3.48-8.413z"/>
|
||
</svg>
|
||
</a>
|
||
<footer>
|
||
<div class="footer-inner">
|
||
<div class="footer-grid">
|
||
<div class="footer-col">
|
||
<img src="https://careersgateway.com.au/wp-content/uploads/2025/06/cropped-Screenshot-2025-06-15-at-1.59.23_PM-300x159-removebg-preview-192x192.png" alt="Careers Gateway" style="height:40px;width:auto;margin-bottom:14px;filter:brightness(0) invert(1)"><br>
|
||
<p class="footer-contact">Your trusted partner for education, migration, and career services in Australia.<br><br>
|
||
📍 Sydney, NSW<br>📞 <a href="tel:+61283850414" style="color:#94a3b8">+61 2 8385 0414</a><br>📱 <a href="tel:+61405580047" style="color:#94a3b8">+61 405 580 047</a><br>✉️ contact@careersgateway.com.au</p>
|
||
<div style="display:flex;gap:14px;margin-top:16px">
|
||
<a href="https://www.instagram.com/careersgatewayaus/" target="_blank" rel="noopener" aria-label="Instagram"
|
||
style="width:36px;height:36px;background:#E1306C;border-radius:8px;display:flex;align-items:center;justify-content:center;transition:.15s"
|
||
onmouseover="this.style.opacity='.8'" onmouseout="this.style.opacity='1'">
|
||
<svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="#fff"><path d="M12 2.163c3.204 0 3.584.012 4.85.07 3.252.148 4.771 1.691 4.919 4.919.058 1.265.069 1.645.069 4.849 0 3.205-.012 3.584-.069 4.849-.149 3.225-1.664 4.771-4.919 4.919-1.266.058-1.644.07-4.85.07-3.204 0-3.584-.012-4.849-.07-3.26-.149-4.771-1.699-4.919-4.92-.058-1.265-.07-1.644-.07-4.849 0-3.204.013-3.583.07-4.849.149-3.227 1.664-4.771 4.919-4.919 1.266-.057 1.645-.069 4.849-.069zM12 0C8.741 0 8.333.014 7.053.072 2.695.272.273 2.69.073 7.052.014 8.333 0 8.741 0 12c0 3.259.014 3.668.072 4.948.2 4.358 2.618 6.78 6.98 6.98C8.333 23.986 8.741 24 12 24c3.259 0 3.668-.014 4.948-.072 4.354-.2 6.782-2.618 6.979-6.98.059-1.28.073-1.689.073-4.948 0-3.259-.014-3.667-.072-4.947-.196-4.354-2.617-6.78-6.979-6.98C15.668.014 15.259 0 12 0zm0 5.838a6.162 6.162 0 100 12.324 6.162 6.162 0 000-12.324zM12 16a4 4 0 110-8 4 4 0 010 8zm6.406-11.845a1.44 1.44 0 100 2.881 1.44 1.44 0 000-2.881z"/></svg>
|
||
</a>
|
||
<a href="https://www.facebook.com/profile.php?id=61576746571629" target="_blank" rel="noopener" aria-label="Facebook"
|
||
style="width:36px;height:36px;background:#1877F2;border-radius:8px;display:flex;align-items:center;justify-content:center;transition:.15s"
|
||
onmouseover="this.style.opacity='.8'" onmouseout="this.style.opacity='1'">
|
||
<svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="#fff"><path d="M24 12.073C24 5.41 18.627 0 12 0S0 5.41 0 12.073C0 18.1 4.388 23.094 10.125 24v-8.437H7.078v-3.49h3.047v-2.66c0-3.025 1.792-4.697 4.533-4.697 1.312 0 2.686.236 2.686.236v2.97h-1.513c-1.491 0-1.956.93-1.956 1.886v2.265h3.328l-.532 3.49h-2.796V24C19.612 23.094 24 18.1 24 12.073z"/></svg>
|
||
</a>
|
||
<a href="https://wa.me/61405580047" target="_blank" rel="noopener" aria-label="WhatsApp"
|
||
style="width:36px;height:36px;background:#25D366;border-radius:8px;display:flex;align-items:center;justify-content:center;transition:.15s"
|
||
onmouseover="this.style.opacity='.8'" onmouseout="this.style.opacity='1'">
|
||
<svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="#fff"><path d="M17.472 14.382c-.297-.149-1.758-.867-2.03-.967-.273-.099-.471-.148-.67.15-.197.297-.767.966-.94 1.164-.173.199-.347.223-.644.075-.297-.15-1.255-.463-2.39-1.475-.883-.788-1.48-1.761-1.653-2.059-.173-.297-.018-.458.13-.606.134-.133.298-.347.446-.52.149-.174.198-.298.298-.497.099-.198.05-.371-.025-.52-.075-.149-.669-1.612-.916-2.207-.242-.579-.487-.5-.669-.51-.173-.008-.371-.01-.57-.01-.198 0-.52.074-.792.372-.272.297-1.04 1.016-1.04 2.479 0 1.462 1.065 2.875 1.213 3.074.149.198 2.096 3.2 5.077 4.487.709.306 1.262.489 1.694.625.712.227 1.36.195 1.871.118.571-.085 1.758-.719 2.006-1.413.248-.694.248-1.289.173-1.413-.074-.124-.272-.198-.57-.347m-5.421 7.403h-.004a9.87 9.87 0 01-5.031-1.378l-.361-.214-3.741.982.998-3.648-.235-.374a9.86 9.86 0 01-1.51-5.26c.001-5.45 4.436-9.884 9.888-9.884 2.64 0 5.122 1.03 6.988 2.898a9.825 9.825 0 012.893 6.994c-.003 5.45-4.437 9.884-9.885 9.884m8.413-18.297A11.815 11.815 0 0012.05 0C5.495 0 .16 5.335.157 11.892c0 2.096.547 4.142 1.588 5.945L.057 24l6.305-1.654a11.882 11.882 0 005.683 1.448h.005c6.554 0 11.89-5.335 11.893-11.893a11.821 11.821 0 00-3.48-8.413z"/></svg>
|
||
</a>
|
||
</div>
|
||
</div>
|
||
<div class="footer-col">
|
||
<h4>Services</h4>
|
||
<ul>
|
||
<li><a href="/services/education">Education & Visa</a></li>
|
||
<li><a href="/services/migration">Migration Services</a></li>
|
||
<li><a href="/services/recruitment">Recruitment & Labour Hire</a></li>
|
||
<li><a href="/services/rpl">RPL Assessment</a></li>
|
||
<li><a href="/services/skills">Skills Assessment</a></li>
|
||
<li><a href="/health-insurance">OSHC/OVHC Insurance</a></li>
|
||
</ul>
|
||
</div>
|
||
<div class="footer-col">
|
||
<h4>Quick Links</h4>
|
||
<ul>
|
||
<li><a href="/courses">CRICOS Course Search</a></li>
|
||
<li><a href="/register">Create Account</a></li>
|
||
<li><a href="/contact">Book Consultation</a></li>
|
||
<li><a href="https://careersgateway.com.au">Main Website</a></li>
|
||
</ul>
|
||
</div>
|
||
</div>
|
||
<div class="footer-bottom">
|
||
© ${new Date().getFullYear()} Careers Gateway Australia. All rights reserved. |
|
||
<a href="https://careersgateway.com.au" style="color:#94a3b8">careersgateway.com.au</a>
|
||
</div>
|
||
</div>
|
||
</footer>
|
||
</body></html>`;
|
||
}
|
||
|
||
function esc(str) {
|
||
return String(str || '').replace(/&/g,'&').replace(/</g,'<').replace(/>/g,'>').replace(/"/g,'"');
|
||
}
|
||
|
||
function homePage(user, announcement = null) {
|
||
return layout('Your Gateway to Success', `
|
||
<div class="hero" style="padding:0;overflow:hidden">
|
||
<div class="container" style="display:grid;grid-template-columns:1fr 420px;align-items:center;min-height:480px;padding:0 24px;gap:0">
|
||
<div style="padding:64px 0 64px">
|
||
<h1 style="font-size:2.8rem;font-weight:800;line-height:1.2;margin-bottom:16px">Your Gateway to<br>Success in Australia 🇦🇺</h1>
|
||
<p style="font-size:1.15rem;opacity:.9;max-width:520px;margin-bottom:32px;line-height:1.7">Guiding individuals and businesses through education, migration, and career pathways with certified, multilingual professionals.</p>
|
||
<div class="hero-btns" style="justify-content:flex-start">
|
||
<a href="/courses" class="btn btn-white">🔍 Search CRICOS Courses</a>
|
||
<a href="/contact" class="btn btn-outline">Book Free Consultation</a>
|
||
</div>
|
||
</div>
|
||
<div style="align-self:stretch;overflow:hidden;display:flex;align-items:flex-end;justify-content:center">
|
||
<img src="https://careersgateway.com.au/wp-content/uploads/2025/06/image-removebg-preview.png" alt="Careers Gateway consultant" style="height:420px;width:auto;object-fit:contain;display:block;margin-bottom:0">
|
||
</div>
|
||
</div>
|
||
<style>@media(max-width:768px){.hero .container{grid-template-columns:1fr!important;text-align:center}.hero .container>div:last-child{display:none!important}.hero-btns{justify-content:center!important}}</style>
|
||
</div>
|
||
|
||
<div class="stats-bar">
|
||
<div class="stats-inner">
|
||
<div><div class="stat-num">5,000+</div><div class="stat-label">Clients Helped</div></div>
|
||
<div><div class="stat-num">98%</div><div class="stat-label">Success Rate</div></div>
|
||
<div><div class="stat-num">15+</div><div class="stat-label">Years Experience</div></div>
|
||
<div><div class="stat-num">1,500+</div><div class="stat-label">CRICOS Institutions</div></div>
|
||
</div>
|
||
</div>
|
||
|
||
<section style="background:#fff">
|
||
<div class="container">
|
||
<h2 class="section-title">Our Services</h2>
|
||
<p class="section-sub">Comprehensive support for every stage of your Australian journey</p>
|
||
<div class="services-grid">
|
||
${[
|
||
['🎓','Education & Visa Services','Expert guidance on student visas, course selection, and institution enrolment through CRICOS-registered providers.','/services/education','https://careersgateway.com.au/wp-content/uploads/2025/06/pexels-photo-1236421-1236421-752x1024.jpg'],
|
||
['🌏','Migration Services','Skilled migration, family visas, employer nominations, and permanent residency pathways.','/services/migration','https://careersgateway.com.au/wp-content/uploads/elementor/thumbs/Migration-future-australia-r7jqyjculu61ydzz94zwmky24oekes2taopx24hd3c.png'],
|
||
['💼','Recruitment & Labour Hire','Connecting skilled professionals with Australian employers. RPL-recognised workforce solutions.','/services/recruitment','https://careersgateway.com.au/wp-content/uploads/2025/07/mentor-3512369_1280.jpg'],
|
||
['📋','RPL Assessment','Recognition of Prior Learning for tradespeople, nurses, engineers, and other professionals.','/services/rpl','https://careersgateway.com.au/wp-content/uploads/elementor/thumbs/RPL-r8449cmkno5if890q65m2xlkoc0jqxjasoh58up5zc.png'],
|
||
['✅','Skills Assessment','Formal skills assessments for visa and registration purposes across multiple industry bodies.','/services/skills','https://careersgateway.com.au/wp-content/uploads/elementor/thumbs/PR-Australia-r7jqpvafkuauvul9ve3rmrp0wr4pf9nxfs4pq9c2h4.png'],
|
||
['🏥','Health Insurance (OSHC/OVHC)','Compare and buy Overseas Student Health Cover and Overseas Visitor Health Cover instantly.','/health-insurance','https://careersgateway.com.au/wp-content/uploads/elementor/thumbs/pexels-photo-7163956-7163956-scaled-r7fvhsbi458lc1m0wz89g7f03sdjg52qxlmabibvpc.jpg'],
|
||
['💰','Easy Tax Return','Simple, fast Australian tax returns for international students and working holiday visa holders.','/services/tax','https://careersgateway.com.au/wp-content/uploads/2025/06/pexels-photo-1236421-1236421-220x300.jpg'],
|
||
['❤️','Aged Care Services','Placement and support services for aged care pathways and qualifications.','/services/aged-care','https://careersgateway.com.au/wp-content/uploads/2025/06/pixlr-image-generator-6852721300106a49ef49034b-300x300.jpg'],
|
||
].map(([icon,title,desc,link,img]) => `
|
||
<div class="service-card" style="padding:0;overflow:hidden">
|
||
<div style="height:160px;overflow:hidden;background:#e8f0fe">
|
||
<img src="${img}" alt="${title}" style="width:100%;height:100%;object-fit:cover;display:block" loading="lazy">
|
||
</div>
|
||
<div style="padding:22px">
|
||
<div class="service-icon">${icon}</div>
|
||
<h3>${title}</h3>
|
||
<p>${desc}</p>
|
||
<a href="${link}" class="service-link">Learn more →</a>
|
||
</div>
|
||
</div>
|
||
`).join('')}
|
||
</div>
|
||
</div>
|
||
</section>
|
||
|
||
<section style="background:#f0f6ff">
|
||
<div class="container">
|
||
<h2 class="section-title">Find Your Course</h2>
|
||
<p class="section-sub">Search thousands of CRICOS-registered courses from Australian institutions</p>
|
||
<form action="/courses" method="GET" style="background:#fff;border-radius:12px;padding:32px;box-shadow:0 2px 12px rgba(0,0,0,.06);max-width:800px;margin:0 auto">
|
||
<div class="search-grid">
|
||
<div class="form-group" style="margin:0">
|
||
<label>Course Name</label>
|
||
<input type="text" name="courseName" placeholder="e.g. Bachelor of Nursing">
|
||
</div>
|
||
<div class="form-group" style="margin:0">
|
||
<label>State</label>
|
||
<select name="state">
|
||
<option value="">All States</option>
|
||
<option>NSW</option><option>VIC</option><option>QLD</option>
|
||
<option>WA</option><option>SA</option><option>TAS</option>
|
||
<option>ACT</option><option>NT</option>
|
||
</select>
|
||
</div>
|
||
<div class="form-group" style="margin:0">
|
||
<label>Course Level</label>
|
||
<select name="courseLevel">
|
||
<option value="">All Levels</option>
|
||
<option value="1">Bachelor Degree</option>
|
||
<option value="2">Master Degree</option>
|
||
<option value="3">Doctoral Degree</option>
|
||
<option value="4">Diploma</option>
|
||
<option value="5">Certificate</option>
|
||
<option value="6">Advanced Diploma</option>
|
||
<option value="7">Graduate Certificate</option>
|
||
<option value="8">Graduate Diploma</option>
|
||
</select>
|
||
</div>
|
||
<div style="display:flex;align-items:flex-end">
|
||
<button type="submit" class="btn btn-primary" style="width:100%;padding:11px">🔍 Search</button>
|
||
</div>
|
||
</div>
|
||
</form>
|
||
</div>
|
||
</section>
|
||
|
||
<section>
|
||
<div class="container">
|
||
<h2 class="section-title">Why Choose Us?</h2>
|
||
<p class="section-sub">Five reasons thousands trust Careers Gateway</p>
|
||
<div class="why-grid">
|
||
${[
|
||
['🏅','MARA Registered Agents','All migration advice from registered MARA agents — fully compliant and trustworthy.'],
|
||
['🌐','Multilingual Support','We speak your language. Services available in English, Hindi, Nepali, and more.'],
|
||
['🔄','End-to-End Service','From course selection to visa lodgement to arrival — one team, the whole journey.'],
|
||
['📊','Proven Track Record','98% success rate across thousands of student and migration visa applications.'],
|
||
['💡','Transparent Pricing','No hidden fees. Clear, upfront pricing with written agreements for all services.'],
|
||
].map(([icon,title,desc]) => `
|
||
<div class="why-card">
|
||
<h4>${icon} ${title}</h4>
|
||
<p>${desc}</p>
|
||
</div>
|
||
`).join('')}
|
||
</div>
|
||
</div>
|
||
</section>
|
||
|
||
<section style="background:#f0f6ff">
|
||
<div class="container">
|
||
<div style="display:grid;grid-template-columns:340px 1fr;gap:48px;align-items:center">
|
||
<div>
|
||
<img src="https://careersgateway.com.au/wp-content/uploads/elementor/thumbs/career-bijendra-sir-r7juads0rjdgs6e5oqchau1e6jow26qbi4k3ky7bwy.jpg" alt="Bijendra Shrestha — CEO, Careers Gateway" style="width:100%;border-radius:16px;box-shadow:0 8px 32px rgba(26,91,184,.15);display:block">
|
||
</div>
|
||
<div>
|
||
<div style="color:#1a5bb8;font-weight:700;font-size:.9rem;text-transform:uppercase;letter-spacing:1px;margin-bottom:12px">Message from Our CEO</div>
|
||
<h2 style="font-size:1.8rem;font-weight:800;color:#1a2744;margin-bottom:16px;line-height:1.3">Committed to Your<br>Australian Success</h2>
|
||
<p style="color:#374151;line-height:1.8;font-size:1rem;margin-bottom:12px">"At Careers Gateway, we believe every person deserves honest, expert guidance on their Australian journey — whether that's finding the right course, securing a visa, or building a career."</p>
|
||
<p style="color:#374151;line-height:1.8;font-size:1rem;margin-bottom:24px">"Our team of certified professionals is multilingual, experienced, and genuinely invested in your success. We don't just process paperwork — we walk the journey with you."</p>
|
||
<div style="font-weight:700;color:#1a2744">Bijendra Shrestha</div>
|
||
<div style="color:#64748b;font-size:.9rem">CEO & Founder, Careers Gateway Australia</div>
|
||
</div>
|
||
</div>
|
||
<style>@media(max-width:768px){.ceo-grid{grid-template-columns:1fr!important}}</style>
|
||
</div>
|
||
</section>
|
||
|
||
<section style="background:#fff">
|
||
<div class="container">
|
||
<h2 class="section-title">What Our Clients Say</h2>
|
||
<p class="section-sub">Real stories from real people</p>
|
||
<div class="testi-grid">
|
||
${[
|
||
['Priya S.','Sydney','Careers Gateway made my student visa process so easy. They found me the perfect nursing course and handled everything. Couldn\'t recommend them more highly!','https://careersgateway.com.au/wp-content/uploads/2025/06/d2b9123d-49a5-4e9e-b39d-b2ab74381797-150x150.jpeg'],
|
||
['Raj M.','Melbourne','From RPL assessment to skills recognition — the team was professional and quick. I got my qualification recognised within 3 months.','https://careersgateway.com.au/wp-content/uploads/2025/06/fb1ff635-d713-4dff-8262-995ea063c13d-150x150.jpeg'],
|
||
['Anita K.','Brisbane','The migration team helped my whole family get permanent residency. They were patient, thorough, and available whenever we needed them.','https://careersgateway.com.au/wp-content/uploads/2025/06/pixlr-image-generator-6852721300106a49ef49034b-300x300.jpg'],
|
||
].map(([name,city,text,photo]) => `
|
||
<div class="testi-card">
|
||
<div style="display:flex;align-items:center;gap:12px;margin-bottom:14px">
|
||
<img src="${photo}" alt="${name}" style="width:48px;height:48px;border-radius:50%;object-fit:cover">
|
||
<div>
|
||
<div class="testi-name">${name}</div>
|
||
<div style="color:#94a3b8;font-size:.85rem">${city}</div>
|
||
</div>
|
||
</div>
|
||
<div class="stars">★★★★★</div>
|
||
<p class="testi-text">"${text}"</p>
|
||
</div>
|
||
`).join('')}
|
||
</div>
|
||
</div>
|
||
</section>
|
||
|
||
<section style="background:#f8faff">
|
||
<div class="container">
|
||
<h2 class="section-title">Latest News & Insights</h2>
|
||
<p class="section-sub">Stay informed about Australian migration, education, and career developments</p>
|
||
<div style="display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:24px">
|
||
${[
|
||
['How RPL Can Fast-Track Your PR Path','Recognition of Prior Learning is one of the fastest routes to Australian permanent residency for skilled tradespeople.','/services/rpl','https://careersgateway.com.au/wp-content/uploads/2025/07/RPL.png'],
|
||
['Australian Migration Rules Mid-2025','Key changes to skilled migration, student visas, and employer nominations you need to know about.','/services/migration','https://careersgateway.com.au/wp-content/uploads/elementor/thumbs/PR-Australia-r7jqpvafkuauvul9ve3rmrp0wr4pf9nxfs4pq9c2h4.png'],
|
||
['Scholarships for International Students','2025 scholarship opportunities at Australian universities for international students.','/courses','https://careersgateway.com.au/wp-content/uploads/elementor/thumbs/mentor-3512369_1280-r843m5xw2sew1hxg45cwks8966alvphnlx5z352rgo.jpg'],
|
||
['Beware of Migration Scams','How to identify dodgy migration agents and protect yourself from visa fraud in Australia.','/contact','https://careersgateway.com.au/wp-content/uploads/elementor/thumbs/compressed_fraud_image_under_2mb-r7jridq6vxbz216bdpsd9kodliliwqutcwixsf25qg.jpg'],
|
||
['Future of Australian Migration','What changes are coming to Australian migration policy over the next 5 years.','/services/migration','https://careersgateway.com.au/wp-content/uploads/elementor/thumbs/Migration-future-australia-r7jqyjculu61ydzz94zwmky24oekes2taopx24hd3c.png'],
|
||
['Navigating PR Pathways','Your complete guide to Australian permanent residency — pathways, timelines, and requirements.','/services/migration','https://careersgateway.com.au/wp-content/uploads/elementor/thumbs/PR-Australia-r7jqpvafkuauvul9ve3rmrp0wr4pf9nxfs4pq9c2h4.png'],
|
||
].map(([title,excerpt,link,img]) => `
|
||
<a href="${link}" style="text-decoration:none;color:inherit">
|
||
<div style="background:#fff;border-radius:12px;overflow:hidden;box-shadow:0 2px 8px rgba(0,0,0,.06);transition:.2s;height:100%" onmouseover="this.style.transform='translateY(-3px)';this.style.boxShadow='0 8px 24px rgba(26,91,184,.12)'" onmouseout="this.style.transform='';this.style.boxShadow='0 2px 8px rgba(0,0,0,.06)'">
|
||
<div style="height:160px;overflow:hidden;background:#e8f0fe">
|
||
<img src="${img}" alt="${title}" style="width:100%;height:100%;object-fit:cover;display:block" loading="lazy">
|
||
</div>
|
||
<div style="padding:18px">
|
||
<h4 style="font-weight:700;font-size:.95rem;color:#1a2744;margin-bottom:8px;line-height:1.4">${title}</h4>
|
||
<p style="font-size:.85rem;color:#64748b;line-height:1.6">${excerpt}</p>
|
||
<div style="margin-top:12px;font-size:.85rem;font-weight:600;color:#1a5bb8">Read more →</div>
|
||
</div>
|
||
</div>
|
||
</a>
|
||
`).join('')}
|
||
</div>
|
||
</div>
|
||
</section>
|
||
|
||
<section style="background:linear-gradient(135deg,#1a2744,#1a5bb8);color:#fff;text-align:center">
|
||
<div class="container">
|
||
<h2 style="font-size:2rem;font-weight:800;margin-bottom:12px">Ready to Start Your Journey?</h2>
|
||
<p style="opacity:.9;margin-bottom:32px;font-size:1.1rem">Book a free consultation with our experts today</p>
|
||
<div style="display:flex;gap:16px;justify-content:center;flex-wrap:wrap">
|
||
<a href="/register" class="btn btn-white">Create Free Account</a>
|
||
<a href="/contact" class="btn btn-outline">Book Consultation</a>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
`, user, '', { url: '/', description: 'Careers Gateway Australia — your trusted partner for education, migration, recruitment, RPL, and visa services. Search 26,000+ CRICOS courses and book a free consultation.', image: 'https://careersgateway.com.au/wp-content/uploads/2025/06/pexels-photo-1236421-1236421-scaled.jpg' }, announcement);
|
||
}
|
||
|
||
function coursesPage(user, results, params, fromCache, error, savedCode = '') {
|
||
const hasSearch = Object.values(params).some(v => v);
|
||
const stateOptions = ['NSW','VIC','QLD','WA','SA','TAS','ACT','NT'];
|
||
const levelOptions = [['1','Bachelor Degree'],['2','Master Degree'],['3','Doctoral Degree'],['4','Diploma'],['5','Certificate'],['6','Advanced Diploma'],['7','Graduate Certificate'],['8','Graduate Diploma']];
|
||
|
||
// Build the back URL (current search) so save redirects back here
|
||
const backUrl = '/courses?' + Object.entries(params).filter(([,v])=>v).map(([k,v])=>`${k}=${encodeURIComponent(v)}`).join('&');
|
||
|
||
const courseMeta = { url: '/courses', description: 'Search 26,000+ CRICOS-registered courses from Australian universities and colleges. Filter by state, level, and field of study. Free account required to view results.', image: 'https://careersgateway.com.au/wp-content/uploads/2025/06/pexels-photo-1236421-1236421-scaled.jpg' };
|
||
return layout('CRICOS Course Search', `
|
||
<section style="background:linear-gradient(135deg,#1a2744,#1a5bb8);padding:40px 24px;color:#fff;text-align:center">
|
||
<div class="container">
|
||
<h1 style="font-size:2rem;font-weight:800;margin-bottom:8px">🔍 CRICOS Course Search</h1>
|
||
<p style="opacity:.9">Search thousands of courses from CRICOS-registered Australian institutions</p>
|
||
</div>
|
||
</section>
|
||
<section>
|
||
<div class="container">
|
||
${savedCode ? `
|
||
<div style="background:#dcfce7;border:1px solid #bbf7d0;border-radius:10px;padding:14px 18px;margin-bottom:20px;display:flex;align-items:center;gap:12px">
|
||
<span style="font-size:1.3rem">✅</span>
|
||
<div>
|
||
<strong style="color:#166534">Course saved to your dashboard!</strong>
|
||
<span style="color:#166534;font-size:.9rem;margin-left:8px">View all saved courses in your <a href="/dashboard" style="color:#15803d;font-weight:700">dashboard</a>.</span>
|
||
</div>
|
||
</div>` : ''}
|
||
<form action="/courses" method="GET" class="search-bar">
|
||
<div class="search-grid">
|
||
<div class="form-group" style="margin:0">
|
||
<label>Course Name</label>
|
||
<input type="text" name="courseName" placeholder="e.g. Bachelor of Nursing" value="${esc(params.courseName||'')}">
|
||
</div>
|
||
<div class="form-group" style="margin:0">
|
||
<label>CRICOS Code</label>
|
||
<input type="text" name="cricosCode" placeholder="e.g. 093765C" value="${esc(params.cricosCode||'')}">
|
||
</div>
|
||
<div class="form-group" style="margin:0">
|
||
<label>State</label>
|
||
<select name="state">
|
||
<option value="">All States</option>
|
||
${stateOptions.map(s => `<option value="${s}"${params.state===s?' selected':''}>${s}</option>`).join('')}
|
||
</select>
|
||
</div>
|
||
<div class="form-group" style="margin:0">
|
||
<label>Course Level</label>
|
||
<select name="courseLevel">
|
||
<option value="">All Levels</option>
|
||
${levelOptions.map(([v,l]) => `<option value="${v}"${params.courseLevel===v?' selected':''}>${l}</option>`).join('')}
|
||
</select>
|
||
</div>
|
||
<div style="display:flex;align-items:flex-end;gap:8px">
|
||
<button type="submit" class="btn btn-primary" style="flex:1;padding:11px">🔍 Search</button>
|
||
<a href="/courses" class="btn" style="padding:11px 14px;background:#f1f5f9;color:#374151">Clear</a>
|
||
</div>
|
||
</div>
|
||
</form>
|
||
|
||
${!hasSearch ? `
|
||
<div style="text-align:center;padding:60px 20px;color:#64748b">
|
||
<div style="font-size:3rem;margin-bottom:16px">🎓</div>
|
||
<h3 style="font-size:1.3rem;margin-bottom:8px;color:#1a2744">Search CRICOS-Registered Courses</h3>
|
||
<p>Enter a course name, state, or level above to find courses from Australian institutions</p>
|
||
</div>
|
||
` : error ? `
|
||
<div class="alert alert-error">Unable to fetch CRICOS data right now. Please try again shortly.</div>
|
||
` : results.length === 0 ? `
|
||
<div style="text-align:center;padding:60px 20px;color:#64748b">
|
||
<div style="font-size:3rem;margin-bottom:16px">🔎</div>
|
||
<h3 style="font-size:1.3rem;margin-bottom:8px;color:#1a2744">No courses found</h3>
|
||
<p>Try broadening your search — use fewer keywords or remove filters</p>
|
||
</div>
|
||
` : `
|
||
${!user ? `
|
||
<div class="results-header">
|
||
<div class="results-count"><strong>${results.length}</strong> courses found</div>
|
||
</div>
|
||
<div style="position:relative">
|
||
${results.slice(0,3).map(c => `
|
||
<div class="course-card" style="filter:blur(5px);user-select:none;pointer-events:none">
|
||
<div class="course-info">
|
||
<h3>${esc(c.courseName || 'Course')}</h3>
|
||
<div style="color:#64748b;font-size:.9rem;margin-bottom:6px">${esc(c.provider || '')}</div>
|
||
<div class="course-meta">
|
||
${c.cricosCode ? `<span class="badge badge-blue">CRICOS: ${esc(c.cricosCode)}</span>` : ''}
|
||
${c.level ? `<span class="badge badge-gray">${esc(c.level)}</span>` : ''}
|
||
${(c.city || c.state) ? `<span class="badge badge-gray">📍 ${esc([c.city,c.state].filter(Boolean).join(', '))}</span>` : ''}
|
||
${c.durationWeeks ? `<span class="badge badge-gray">⏱ ${esc(String(c.durationWeeks))} weeks</span>` : ''}
|
||
${c.tuitionFee ? `<span class="badge badge-green">💰 ${esc(c.tuitionFee)}</span>` : ''}
|
||
</div>
|
||
</div>
|
||
<div class="course-actions">
|
||
<span class="btn btn-primary btn-sm">Book Consultation</span>
|
||
</div>
|
||
</div>
|
||
`).join('')}
|
||
<div style="position:absolute;inset:0;display:flex;align-items:center;justify-content:center;background:linear-gradient(to bottom,rgba(248,250,255,0) 0%,rgba(248,250,255,.92) 30%,rgba(248,250,255,1) 100%)">
|
||
<div style="text-align:center;padding:32px;max-width:480px">
|
||
<div style="font-size:2.5rem;margin-bottom:12px">🔓</div>
|
||
<h3 style="font-size:1.4rem;font-weight:800;color:#1a2744;margin-bottom:10px">Create a free account to view all ${results.length} courses</h3>
|
||
<p style="color:#64748b;margin-bottom:24px;line-height:1.6">Register in 30 seconds to access full course details, save favourites, and book consultations with our expert advisors.</p>
|
||
<div style="display:flex;gap:12px;justify-content:center;flex-wrap:wrap">
|
||
<a href="/register?redirect=/courses%3F${encodeURIComponent(Object.entries(params).filter(([,v])=>v).map(([k,v])=>k+'='+encodeURIComponent(v)).join('&'))}" class="btn btn-primary" style="padding:12px 28px">Create Free Account</a>
|
||
<a href="/login?redirect=/courses%3F${encodeURIComponent(Object.entries(params).filter(([,v])=>v).map(([k,v])=>k+'='+encodeURIComponent(v)).join('&'))}" class="btn" style="padding:12px 28px;background:#fff;color:#1a5bb8;border:2px solid #1a5bb8">Login</a>
|
||
</div>
|
||
<div style="margin-top:16px;font-size:.85rem;color:#94a3b8">Free forever · No credit card required</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
` : `
|
||
<div class="results-header">
|
||
<div class="results-count"><strong>${results.length}</strong> courses found ${fromCache ? '<span style="color:#94a3b8;font-size:.8rem">(cached)</span>' : ''}</div>
|
||
</div>
|
||
${results.map(c => `
|
||
<div class="course-card">
|
||
<div class="course-info">
|
||
<h3>${esc(c.courseName || 'Course')}</h3>
|
||
<div style="color:#64748b;font-size:.9rem;margin-bottom:6px">${esc(c.provider || '')}</div>
|
||
<div class="course-meta">
|
||
${c.cricosCode ? `<span class="badge badge-blue">CRICOS: ${esc(c.cricosCode)}</span>` : ''}
|
||
${c.level ? `<span class="badge badge-gray">${esc(c.level)}</span>` : ''}
|
||
${(c.city || c.state) ? `<span class="badge badge-gray">📍 ${esc([c.city,c.state].filter(Boolean).join(', '))}</span>` : ''}
|
||
${c.durationWeeks ? `<span class="badge badge-gray">⏱ ${esc(String(c.durationWeeks))} weeks</span>` : ''}
|
||
${c.tuitionFee ? `<span class="badge badge-green">💰 ${esc(c.tuitionFee)}</span>` : ''}
|
||
${c.vetCode ? `<span class="badge badge-gray">VET: ${esc(c.vetCode)}</span>` : ''}
|
||
</div>
|
||
</div>
|
||
<div class="course-actions">
|
||
<a href="/contact?course=${encodeURIComponent(c.courseName||'')}&code=${encodeURIComponent(c.cricosCode||'')}&provider=${encodeURIComponent(c.provider||'')}" class="btn btn-primary btn-sm">Book Consultation</a>
|
||
${c.cricosCode === savedCode
|
||
? `<span class="btn btn-sm" style="background:#dcfce7;color:#166534;text-align:center;cursor:default">✅ Saved</span>`
|
||
: `<a href="/dashboard/save?code=${encodeURIComponent(c.cricosCode||'')}&name=${encodeURIComponent(c.courseName||'')}&provider=${encodeURIComponent(c.provider||'')}&back=${encodeURIComponent(backUrl)}" class="btn btn-sm" style="background:#f0f6ff;color:#1a5bb8;text-align:center">💾 Save</a>`
|
||
}
|
||
</div>
|
||
</div>
|
||
`).join('')}
|
||
`}
|
||
`}
|
||
|
||
<div style="margin-top:32px;padding:20px;background:#f0f6ff;border-radius:10px;text-align:center">
|
||
<p style="color:#1a2744;font-weight:600;margin-bottom:8px">Need help choosing the right course?</p>
|
||
<p style="color:#64748b;font-size:.9rem;margin-bottom:14px">Our education advisors speak your language and know the Australian system inside out</p>
|
||
<a href="/contact" class="btn btn-primary">Book Free Consultation</a>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
`, user, '', courseMeta);
|
||
}
|
||
|
||
function registerPage(error, values = {}) {
|
||
return layout('Create Account', `
|
||
<section style="padding:60px 24px;background:#f0f6ff;min-height:80vh">
|
||
<div class="form-card">
|
||
<h2>Create Your Account</h2>
|
||
<p class="sub">Track courses, save inquiries, and get personalised support</p>
|
||
${error ? `<div class="alert alert-error">${esc(error)}</div>` : ''}
|
||
<form method="POST" action="/register">
|
||
<div class="form-row">
|
||
<div class="form-group">
|
||
<label>Full Name *</label>
|
||
<input type="text" name="full_name" required placeholder="Your full name" value="${esc(values.full_name||'')}">
|
||
</div>
|
||
<div class="form-group">
|
||
<label>Phone *</label>
|
||
<input type="tel" name="phone" required placeholder="+61 4XX XXX XXX" value="${esc(values.phone||'')}">
|
||
</div>
|
||
</div>
|
||
<div class="form-group">
|
||
<label>Email Address *</label>
|
||
<input type="email" name="email" required placeholder="you@example.com" value="${esc(values.email||'')}">
|
||
</div>
|
||
<div class="form-group">
|
||
<label>Password *</label>
|
||
<input type="password" name="password" required placeholder="Minimum 8 characters" minlength="8">
|
||
</div>
|
||
<div class="form-group">
|
||
<label>Confirm Password *</label>
|
||
<input type="password" name="confirm_password" required placeholder="Repeat your password">
|
||
</div>
|
||
<button type="submit" class="form-submit">Create Account</button>
|
||
</form>
|
||
<div class="form-footer">Already have an account? <a href="/login">Login here</a></div>
|
||
</div>
|
||
</section>
|
||
`, null, '', { url: '/register', description: 'Create a free Careers Gateway account to access CRICOS course search, save favourites, and book consultations with our expert advisors.' });
|
||
}
|
||
|
||
function loginPage(error, redirect = '') {
|
||
return layout('Login', `
|
||
<section style="padding:60px 24px;background:#f0f6ff;min-height:80vh">
|
||
<div class="form-card">
|
||
<h2>Welcome Back</h2>
|
||
<p class="sub">Login to your Careers Gateway account</p>
|
||
${error ? `<div class="alert alert-error">${esc(error)}</div>` : ''}
|
||
<form method="POST" action="/login">
|
||
<input type="hidden" name="redirect" value="${esc(redirect)}">
|
||
<div class="form-group">
|
||
<label>Email Address</label>
|
||
<input type="email" name="email" required placeholder="you@example.com" autofocus>
|
||
</div>
|
||
<div class="form-group">
|
||
<label>Password</label>
|
||
<input type="password" name="password" required placeholder="Your password">
|
||
</div>
|
||
<button type="submit" class="form-submit">Login</button>
|
||
</form>
|
||
<div class="form-footer">Don't have an account? <a href="/register">Register free</a></div>
|
||
</div>
|
||
</section>
|
||
`, null, '', { url: '/login', description: 'Login to your Careers Gateway account to access CRICOS course search, saved courses, and your consultation history.' });
|
||
}
|
||
|
||
function dashboardPage(user, inquiries) {
|
||
const initials = user.full_name.split(' ').map(w => w[0]).join('').toUpperCase().slice(0,2);
|
||
return layout('Dashboard', `
|
||
<section style="padding:40px 24px;min-height:80vh">
|
||
<div class="container">
|
||
<div class="dash-grid">
|
||
<div class="dash-sidebar">
|
||
<div class="dash-user">
|
||
<div class="dash-avatar">${esc(initials)}</div>
|
||
<div style="font-weight:700;color:#1a2744">${esc(user.full_name)}</div>
|
||
<div style="font-size:.85rem;color:#94a3b8;margin-top:4px">${esc(user.email)}</div>
|
||
</div>
|
||
<ul class="dash-nav">
|
||
<li><a href="/dashboard" class="active">📊 Overview</a></li>
|
||
<li><a href="/courses">🔍 Search Courses</a></li>
|
||
<li><a href="/contact">📝 New Inquiry</a></li>
|
||
<li><a href="/health-insurance">🏥 Health Insurance</a></li>
|
||
<li><a href="/dashboard/profile">👤 My Profile</a></li>
|
||
<li><a href="/logout" style="color:#dc2626">🚪 Logout</a></li>
|
||
</ul>
|
||
</div>
|
||
<div class="dash-main">
|
||
<div class="dash-card">
|
||
<h3>Welcome back, ${esc(user.full_name.split(' ')[0])}! 👋</h3>
|
||
<div style="display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:16px">
|
||
<div style="background:#f0f6ff;border-radius:8px;padding:16px;text-align:center">
|
||
<div style="font-size:1.8rem;font-weight:700;color:#1a5bb8">${inquiries.length}</div>
|
||
<div style="font-size:.85rem;color:#64748b;margin-top:4px">Inquiries</div>
|
||
</div>
|
||
<div style="background:#f0fdf4;border-radius:8px;padding:16px;text-align:center">
|
||
<div style="font-size:1.8rem;font-weight:700;color:#16a34a">${inquiries.filter(i=>i.kondesk_sent).length}</div>
|
||
<div style="font-size:.85rem;color:#64748b;margin-top:4px">Processed</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="dash-card">
|
||
<h3>My Inquiries</h3>
|
||
${inquiries.length === 0 ? `
|
||
<div style="text-align:center;padding:30px 0;color:#94a3b8">
|
||
<div style="font-size:2rem;margin-bottom:10px">📋</div>
|
||
<p>No inquiries yet. <a href="/contact">Book a consultation</a> or <a href="/courses">search courses</a>.</p>
|
||
</div>
|
||
` : inquiries.map(i => `
|
||
<div class="inquiry-row">
|
||
<div>
|
||
<div class="inquiry-info"><strong>${esc(i.service||'General Inquiry')}</strong>${i.cricos_course_name ? ` — ${esc(i.cricos_course_name)}` : ''}</div>
|
||
${i.cricos_provider ? `<div style="font-size:.85rem;color:#64748b">${esc(i.cricos_provider)}</div>` : ''}
|
||
<div class="inquiry-date">${new Date(i.created_at).toLocaleDateString('en-AU',{day:'numeric',month:'short',year:'numeric'})}</div>
|
||
</div>
|
||
<span class="badge ${i.kondesk_sent ? 'badge-green' : 'badge-gray'}">${i.kondesk_sent ? '✓ Processing' : 'Received'}</span>
|
||
</div>
|
||
`).join('')}
|
||
</div>
|
||
<div class="dash-card">
|
||
<h3>Quick Actions</h3>
|
||
<div style="display:flex;gap:12px;flex-wrap:wrap">
|
||
<a href="/courses" class="btn btn-primary btn-sm">🔍 Find Courses</a>
|
||
<a href="/contact" class="btn btn-sm" style="background:#f0f6ff;color:#1a5bb8">📝 Book Consultation</a>
|
||
<a href="/health-insurance" class="btn btn-sm" style="background:#f0fdf4;color:#16a34a">🏥 OSHC Insurance</a>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
`, user, '', { url: '/dashboard', description: 'Your Careers Gateway dashboard — manage course inquiries, saved courses, and your profile.' });
|
||
}
|
||
|
||
function contactPage(user, params = {}, success = false, error = '') {
|
||
const services = ['Education & Visa Services','Migration Services','Recruitment & Labour Hire','RPL Assessment','Skills Assessment','Health Insurance (OSHC/OVHC)','Easy Tax Return','Aged Care Services','Course Inquiry','General Inquiry'];
|
||
return layout('Contact & Book Consultation', `
|
||
<section style="background:linear-gradient(135deg,#1a2744,#1a5bb8);padding:40px 24px;color:#fff;text-align:center">
|
||
<div class="container">
|
||
<h1 style="font-size:2rem;font-weight:800;margin-bottom:8px">Book a Free Consultation</h1>
|
||
<p style="opacity:.9">Our team will get back to you within 24 hours</p>
|
||
</div>
|
||
</section>
|
||
<section style="padding:48px 24px">
|
||
<div class="container" style="max-width:900px">
|
||
<div style="display:grid;grid-template-columns:1fr 340px;gap:32px;align-items:start" class="contact-layout">
|
||
<div class="form-card" style="max-width:none">
|
||
<h2 style="text-align:left">Send Us a Message</h2>
|
||
<p class="sub" style="text-align:left">Fill in your details and we'll be in touch soon</p>
|
||
${success ? '<div class="alert alert-success">✅ Your inquiry has been submitted! Our team will contact you within 24 hours.</div>' : ''}
|
||
${error ? `<div class="alert alert-error">${esc(error)}</div>` : ''}
|
||
${params.course ? `<div class="alert alert-info">🎓 <strong>${esc(params.course)}</strong>${params.code ? ` (CRICOS: ${esc(params.code)})` : ''} — ${esc(params.provider||'')}</div>` : ''}
|
||
<form method="POST" action="/contact">
|
||
<input type="hidden" name="cricos_course" value="${esc(params.course||'')}">
|
||
<input type="hidden" name="cricos_code" value="${esc(params.code||'')}">
|
||
<input type="hidden" name="cricos_provider" value="${esc(params.provider||'')}">
|
||
<div class="form-row">
|
||
<div class="form-group">
|
||
<label>Full Name *</label>
|
||
<input type="text" name="full_name" required placeholder="Your full name" value="${esc(user?.full_name||'')}">
|
||
</div>
|
||
<div class="form-group">
|
||
<label>Phone</label>
|
||
<input type="tel" name="phone" placeholder="+61 4XX XXX XXX" value="${esc(user?.phone||'')}">
|
||
</div>
|
||
</div>
|
||
<div class="form-group">
|
||
<label>Email *</label>
|
||
<input type="email" name="email" required placeholder="you@example.com" value="${esc(user?.email||'')}">
|
||
</div>
|
||
<div class="form-group">
|
||
<label>Service Interested In</label>
|
||
<select name="service">
|
||
${services.map(s => `<option value="${s}"${(params.course && s==='Course Inquiry')||(!params.course && s==='General Inquiry')?' selected':''}>${s}</option>`).join('')}
|
||
</select>
|
||
</div>
|
||
<div class="form-group">
|
||
<label>Message</label>
|
||
<textarea name="message" placeholder="Tell us about your situation and what you're looking to achieve in Australia..."></textarea>
|
||
</div>
|
||
<button type="submit" class="form-submit">Send Inquiry →</button>
|
||
</form>
|
||
</div>
|
||
<div>
|
||
<div style="background:#fff;border-radius:12px;padding:24px;box-shadow:0 2px 8px rgba(0,0,0,.05);margin-bottom:20px">
|
||
<h4 style="font-weight:700;margin-bottom:16px;color:#1a2744">📞 Contact Details</h4>
|
||
<div style="font-size:.9rem;line-height:2;color:#374151">
|
||
<div>📍 Sydney, NSW, Australia</div>
|
||
<div>📞 <a href="tel:+61283850414">+61 2 8385 0414</a></div>
|
||
<div>📱 <a href="tel:+61405580047">+61 405 580 047</a></div>
|
||
<div>✉️ <a href="mailto:contact@careersgateway.com.au">contact@careersgateway.com.au</a></div>
|
||
<div>🕐 Mon–Fri: 9am–6pm AEST</div>
|
||
</div>
|
||
</div>
|
||
<div style="background:#f0f6ff;border-radius:12px;padding:20px">
|
||
<h4 style="font-weight:700;margin-bottom:10px;color:#1a2744">✅ What Happens Next</h4>
|
||
<ol style="padding-left:18px;font-size:.9rem;color:#374151;line-height:2">
|
||
<li>We receive your inquiry</li>
|
||
<li>A specialist is assigned</li>
|
||
<li>You're contacted within 24h</li>
|
||
<li>Free initial consultation</li>
|
||
</ol>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
<style>.contact-layout{grid-template-columns:1fr 340px}@media(max-width:768px){.contact-layout{grid-template-columns:1fr}}</style>
|
||
`, user, '', { url: '/contact', description: 'Book a free consultation with Careers Gateway. Our certified experts can help with education, visa, migration, RPL, and skills assessment in Australia.', image: 'https://careersgateway.com.au/wp-content/uploads/elementor/thumbs/career-bijendra-sir-r7juads0rjdgs6e5oqchau1e6jow26qbi4k3ky7bwy.jpg' });
|
||
}
|
||
|
||
function healthInsurancePage(user, konpareKey) {
|
||
return layout('Health Insurance — OSHC & OVHC', `
|
||
<div style="background:linear-gradient(135deg,#064e3b,#059669);padding:48px 24px;color:#fff;overflow:hidden;position:relative">
|
||
<div style="position:absolute;right:0;top:0;bottom:0;width:400px;overflow:hidden;opacity:.25">
|
||
<img src="https://careersgateway.com.au/wp-content/uploads/elementor/thumbs/pexels-photo-7163956-7163956-scaled-r7fvhsbi458lc1m0wz89g7f03sdjg52qxlmabibvpc.jpg" style="width:100%;height:100%;object-fit:cover" alt="">
|
||
</div>
|
||
<div class="container" style="position:relative;text-align:center">
|
||
<h1 style="font-size:2rem;font-weight:800;margin-bottom:8px">🏥 Health Insurance for Students & Visitors</h1>
|
||
<p style="opacity:.9">Compare and buy OSHC & OVHC policies instantly through our Konpare-powered portal</p>
|
||
</div>
|
||
</div>
|
||
<section>
|
||
<div class="container">
|
||
<div style="display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:20px;margin-bottom:40px">
|
||
${[
|
||
['🏥','OSHC','Overseas Student Health Cover','Required for all international student visa holders in Australia'],
|
||
['🌏','OVHC','Overseas Visitors Health Cover','For visitors, working holiday makers, and sponsored workers'],
|
||
['💊','Cover Includes','Hospital, GP, Prescriptions','Plus emergency ambulance in most policies'],
|
||
['⚡','Instant','Online Purchase','Get your certificate of insurance immediately'],
|
||
].map(([icon,short,title,desc]) => `
|
||
<div style="background:#fff;border-radius:10px;padding:20px;box-shadow:0 2px 8px rgba(0,0,0,.05);border-top:3px solid #059669">
|
||
<div style="font-size:1.5rem;margin-bottom:8px">${icon}</div>
|
||
<div style="font-size:.75rem;font-weight:700;color:#059669;text-transform:uppercase;letter-spacing:.5px">${short}</div>
|
||
<h4 style="font-weight:700;margin:6px 0;color:#1a2744">${title}</h4>
|
||
<p style="font-size:.85rem;color:#64748b">${desc}</p>
|
||
</div>
|
||
`).join('')}
|
||
</div>
|
||
|
||
<div style="display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:12px;margin-bottom:16px">
|
||
<h2 style="font-size:1.5rem;font-weight:700;color:#1a2744;margin:0">Compare & Buy Now</h2>
|
||
<div style="display:flex;gap:10px;align-items:center">
|
||
<span style="font-size:.85rem;color:#64748b">Having trouble? Try</span>
|
||
<a href="https://cga.konpare.online/" target="_blank" rel="noopener"
|
||
style="font-size:.85rem;font-weight:600;color:#059669;border:1px solid #059669;padding:5px 12px;border-radius:6px;text-decoration:none">
|
||
Open in new tab ↗
|
||
</a>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="widget-wrap">
|
||
<button class="widget-fs-btn" onclick="openWidgetFullscreen()" title="Fullscreen">
|
||
<svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><path d="M8 3H5a2 2 0 00-2 2v3m18 0V5a2 2 0 00-2-2h-3m0 18h3a2 2 0 002-2v-3M3 16v3a2 2 0 002 2h3"/></svg>
|
||
Fullscreen
|
||
</button>
|
||
<iframe
|
||
id="konpare-frame"
|
||
src="https://cga.konpare.online/"
|
||
title="OSHC OVHC Health Insurance Comparison"
|
||
allow="payment; fullscreen"
|
||
allowfullscreen
|
||
loading="lazy">
|
||
</iframe>
|
||
</div>
|
||
|
||
<div style="margin-top:16px;padding:16px 20px;background:#f0fdf4;border-radius:10px;display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:10px">
|
||
<p style="color:#166534;font-size:.88rem;margin:0">🔒 Secure payments powered by Konpare. Policies from all major Australian health insurers.</p>
|
||
<button onclick="openWidgetFullscreen()" style="background:#059669;color:#fff;border:none;border-radius:6px;padding:8px 16px;font-size:.85rem;font-weight:700;cursor:pointer;white-space:nowrap">
|
||
⛶ Full Screen
|
||
</button>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
|
||
<!-- Fullscreen overlay -->
|
||
<div class="widget-overlay" id="widget-overlay">
|
||
<div class="widget-overlay-bar">
|
||
<span>🏥 Konpare — OSHC & OVHC Health Insurance</span>
|
||
<button class="widget-overlay-close" onclick="closeWidgetFullscreen()">✕ Close Fullscreen</button>
|
||
</div>
|
||
<iframe src="https://cga.konpare.online/" title="OSHC OVHC" allow="payment" allowfullscreen></iframe>
|
||
</div>
|
||
|
||
<script>
|
||
function openWidgetFullscreen() {
|
||
const frame = document.getElementById('konpare-frame');
|
||
// Try native fullscreen first
|
||
const req = frame.requestFullscreen || frame.webkitRequestFullscreen || frame.mozRequestFullScreen;
|
||
if (req) {
|
||
req.call(frame).catch(() => showOverlay());
|
||
} else {
|
||
showOverlay();
|
||
}
|
||
}
|
||
function showOverlay() {
|
||
const overlay = document.getElementById('widget-overlay');
|
||
overlay.classList.add('active');
|
||
document.body.style.overflow = 'hidden';
|
||
}
|
||
function closeWidgetFullscreen() {
|
||
document.getElementById('widget-overlay').classList.remove('active');
|
||
document.body.style.overflow = '';
|
||
}
|
||
// Close overlay on Escape
|
||
document.addEventListener('keydown', e => { if (e.key === 'Escape') closeWidgetFullscreen(); });
|
||
// Exit native fullscreen handler
|
||
document.addEventListener('fullscreenchange', () => {
|
||
if (!document.fullscreenElement) document.body.style.overflow = '';
|
||
});
|
||
</script>
|
||
`, user, '', { url: '/health-insurance', description: 'Compare and buy OSHC and OVHC health insurance for international students and visitors in Australia. Powered by Konpare — instant online purchase.', image: 'https://careersgateway.com.au/wp-content/uploads/elementor/thumbs/pexels-photo-7163956-7163956-scaled-r7fvhsbi458lc1m0wz89g7f03sdjg52qxlmabibvpc.jpg' });
|
||
}
|
||
|
||
function servicesPage(user, service) {
|
||
const pages = {
|
||
education: { title: 'Education & Visa Services', icon: '🎓', desc: 'We help international students find and enrol in CRICOS-registered courses at Australian universities, TAFE colleges, and private providers. Our education counsellors assess your academic background, career goals, and visa eligibility to recommend the best pathway for you.', items: ['CRICOS course selection and application','Student visa (subclass 500) lodgement','Enrolment support and CoE assistance','Pre-departure briefings','Airport pickup and arrival support'] },
|
||
migration: { title: 'Migration Services', icon: '🌏', desc: 'Our MARA-registered migration agents provide expert advice on all Australian visa subclasses. From skilled migration to family reunification, we handle your case end-to-end.', items: ['Skilled Independent (189, 190, 491)','Employer Nomination Scheme (186, 187)','Family visas (309, 100, 820, 801)','Partner and spouse visas','Bridging and tourist visas'] },
|
||
recruitment: { title: 'Recruitment & Labour Hire', icon: '💼', desc: 'We connect skilled professionals with Australian employers across healthcare, construction, IT, and hospitality sectors.', items: ['Job placement for skilled migrants','Labour hire for construction and agriculture','Healthcare and nursing recruitment','Resume and interview preparation','Work rights advice'] },
|
||
rpl: { title: 'RPL Assessment', icon: '📋', desc: 'Recognition of Prior Learning (RPL) lets you convert your overseas work experience into Australian qualifications without re-studying.', items: ['Trade qualifications (Certificate III/IV)','Healthcare and nursing qualifications','Engineering and IT assessments','Portfolio preparation support','Fast-track pathways available'] },
|
||
skills: { title: 'Skills Assessment', icon: '✅', desc: 'Formal skills assessments required for skilled migration visas, assessed by bodies such as Engineers Australia, TRA, VETASSESS, ANMAC, and more.', items: ['Engineers Australia','Trades Recognition Australia (TRA)','VETASSESS (professional occupations)','ANMAC (nursing and midwifery)','AIM, CPAA, CPA Australia'] },
|
||
tax: { title: 'Easy Tax Return', icon: '💰', desc: 'Quick, affordable Australian tax returns for international students and working holiday visa holders.', items: ['Tax file number (TFN) applications','Annual tax return lodgement','Working holiday tax refunds','HECS/HELP debt queries','Superannuation withdrawals on departure'] },
|
||
'aged-care': { title: 'Aged Care Services', icon: '❤️', desc: 'Pathways into Australia\'s growing aged care sector, including qualification recognition and job placement.', items: ['Certificate III in Individual Support','AHPRA registration assistance','Job placement in aged care facilities','Visa pathways for aged care workers','Ongoing compliance support'] },
|
||
};
|
||
const page = pages[service];
|
||
if (!page) return null;
|
||
return layout(page.title, `
|
||
<section style="background:linear-gradient(135deg,#1a2744,#1a5bb8);padding:48px 24px;color:#fff;text-align:center">
|
||
<div class="container">
|
||
<div style="font-size:3rem;margin-bottom:12px">${page.icon}</div>
|
||
<h1 style="font-size:2rem;font-weight:800;margin-bottom:8px">${page.title}</h1>
|
||
</div>
|
||
</section>
|
||
<section>
|
||
<div class="container" style="max-width:900px">
|
||
<div style="display:grid;grid-template-columns:1fr 320px;gap:32px;align-items:start">
|
||
<div>
|
||
<p style="font-size:1.05rem;color:#374151;line-height:1.8;margin-bottom:28px">${page.desc}</p>
|
||
<h3 style="font-size:1.15rem;font-weight:700;margin-bottom:16px;color:#1a2744">What's Included</h3>
|
||
<ul style="list-style:none;display:flex;flex-direction:column;gap:10px">
|
||
${page.items.map(item => `<li style="display:flex;align-items:flex-start;gap:10px;font-size:.95rem;color:#374151"><span style="color:#1a5bb8;font-weight:700;margin-top:1px">✓</span>${item}</li>`).join('')}
|
||
</ul>
|
||
</div>
|
||
<div>
|
||
<div class="form-card" style="max-width:none;padding:28px">
|
||
<h3 style="font-size:1.1rem;font-weight:700;margin-bottom:16px;text-align:center">Get Started Today</h3>
|
||
<p style="font-size:.9rem;color:#64748b;text-align:center;margin-bottom:20px">Book a free initial consultation with one of our ${page.title} specialists</p>
|
||
<a href="/contact?service=${encodeURIComponent(page.title)}" class="btn btn-primary" style="display:block;text-align:center;padding:13px">Book Free Consultation</a>
|
||
<div style="text-align:center;margin-top:16px;font-size:.85rem;color:#94a3b8">No obligation · Response within 24h</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
`, user, '', { url: `/services/${service}`, description: page.desc, image: DEFAULT_IMAGE });
|
||
}
|
||
|
||
export { layout, esc, homePage, coursesPage, registerPage, loginPage, dashboardPage, contactPage, healthInsurancePage, servicesPage };
|