1<!doctype html> 2<html lang="en" style="overflow-x: hidden;"> 3 4<head> 5 <!-- Google Tag Manager --> 6
6<script async>
vendor: 485 bytes, lines 6-13
6(function (w, d, s, l, i) { 7 w[l] = w[l] || []; w[l].push({ 8 'gtm.start': 9 new Date().getTime(), event: 'gtm.js' 10 }); var f = d.getElementsByTagName(s)[0], 11 j = d.createElement(s), dl = l != 'dataLayer' ? '&l=' + l : ''; j.async = true; j.src = 12 'https://www.googletagmanager.com/gtm.js?id=' + i + dl; f.parentNode.insertBefore(j, f); 13 })(window, document, 'script', 'dataLayer', '
13GTM-TDM5BNXQ
vendor: 3 bytes, line 13
13');
13</script>
vendor: 76 bytes, lines 13-15
13 14 15 <script async src="https://www.googletagmanager.com/gtag/js?id=
15AW-18159733249
vendor: 13 bytes, line 15
15"></script>
16<script> 17
vendor: 138 bytes, lines 17-21
17window.dataLayer = window.dataLayer || []; 18 function gtag(){dataLayer.push(arguments);} 19 gtag('js', new Date()); 20 21 gtag('config', '
21AW-18159733249
vendor: 5 bytes, line 21
21');
22</script>
22 23 24 <!-- End Google Tag Manager --> 25 <meta charset="utf-8"> 26 <meta name="viewport" content="width=device-width, initial-scale=1"> 27 <meta name="title" content="AI Face Recognition HRMS Attendance Software | Attendify"> 28 29 <meta name="description" 30 content="Automate employee attendance with 31Attendify's AI-powered walk-through 32facial recognition. No fingerprint devices, 33no RFID cards â just seamless, 34touchless entry with full HRMS and 35payroll integration" /> 36 <meta name="keywords" 37 content="AI face recognition for events, Event access control using AI, Guest verification system, VIP access management, Touchless event entry,Conference visitor management,Live event analytics,Secure event identity system"> 38 39 <meta name="author" content="Attendify"> 40 <meta name="generator" content="HubSpot"> 41 <meta property="og:type" content="website"> 42 <meta property="og:site_name" content="Attendify"> 43 <meta property="og:url" content="https://attendify.ai/hrms.php" /> 44 <meta property="og:title" content="AI Face Recognition HRMS Attendance Software | Attendify"> 45 <meta property="og:description" 46 content="Automate employee attendance with 47Attendify's AI-powered walk-through 48facial recognition. No fingerprint devices, 49no RFID cards â just seamless, 50touchless entry with full HRMS and 51payroll integration"> 52 <meta property="og:image" content="https://attendify.ai/assets/og-image.jpg"> 53 <meta property="og:locale" content="en_IN"> 54 55 <title>AI Face Recognition HRMS Attendance Software | Attendify</title> 56 57
57<script type="application/ld+json"> 58 { 59 "@context": "https://schema.org", 60 "@type": "BreadcrumbList", 61 "itemListElement": [ 62 { 63 "@type": "ListItem", 64 "position": 1, 65 "name": "Home", 66 "item": "https://attendify.ai/" 67 }, 68 { 69 "@type": "ListItem", 70 "position": 2, 71 "name": "HRMS Attendance", 72 "item": "https://attendify.ai/hrms.php" 73 } 74 ] 75 } 76 </script>
76 77 78 79 <link rel="preload" 80 href="https://fonts.googleapis.com/css2?family=Montserrat:wght@500;600;700&family=Open+Sans&display=swap" 81 as="style" onload="this.rel='stylesheet'"> 82 <link rel="preload" href="css/bootstrap.min.css" as="style" onload="this.rel='stylesheet'"> 83 84 <link rel="canonical" href="https://attendify.ai/hrms.php"> 85 86 <link rel="preload" href="css/styles.css" as="style" onload="this.rel='stylesheet'"> 87 <link rel="preload" href="images/logo_meta.webp" as="image" type="image/png"> 88 <link href="images/logo_meta.webp" rel="icon"> 89 <link href="images/logo_meta.webp" rel="apple-touch-icon"> 90 91 92 <link rel="preload" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.10.0/css/all.min.css" as="style" 93 onload="this.rel='stylesheet'"> 94 95 <link rel="preload" href="https://cdn.jsdelivr.net/npm/flatpickr/dist/flatpickr.min.css" as="style" onload="this.onload=null;this.rel='stylesheet'"> 96 97 98 <!--
vendor: 64 bytes, line 98
98 <script async src="https://www.googletagmanager.com/gtag/js?id=
98G-R2WB41BTJD
vendor: 21 bytes, lines 98-99
98"></script> 99
99<script> 100
vendor: 166 bytes, lines 100-103
100window.dataLayer = window.dataLayer || []; 101 function gtag(){dataLayer.push(arguments);} 102 gtag('js', new Date()); 103 gtag('config', '
103G-R2WB41BTJD
vendor: 13 bytes, lines 103-104
103'); 104
104</script>
104 --> 105 106 <meta name="google-site-verification" content="tTEBuAgVFIUNQPCWGoFIcoESAg_qdiYTS9HQN_zhHOY" /> 107</head> 108 109<style> 110 body{ 111 font-family: var(--body-font-family) !important; 112 } 113 114 h1 { 115 font-weight: 100 ! important; 116 font-size: 2.3rem; 117 } 118 119 h2 { 120 font-weight: 100 ! important; 121 font-size: 2.2rem; 122 } 123 p { 124 font-size:19px !important; 125 font-weight:100 !important; 126 } 127 ul li { 128 font-weight:100 !important; 129 } 130 131 .section-padding { 132 padding-top: 5px !important; 133 padding-bottom: 40px; 134 margin-top: -65px !important; 135 } 136 @media screen and (max-width: 992px) { 137 .mobile_gif { 138 margin: auto !important; 139 } 140} 141</style> 142 143 144<!-- Cards Hovering --> 145<style> 146 .solution-card { 147 background: #fff; 148 padding: 30px 30px; 149 border-radius: 20px; 150 height: 100%; 151 border: 1px solid #eee; 152 transition: all 0.4s cubic-bezier(0.165, 0.84, 0.44, 1); 153 position: relative; 154 overflow: hidden; 155 } 156 157 .solution-card:hover { 158 transform: translateY(-10px); 159 box-shadow: 0 20px 40px rgba(0,0,0,0.05); 160 border-color: #0dcaf0; 161 } 162 163 .card-icon { 164 width: 60px; 165 height: 60px; 166 background: #f8f9fa; 167 color: #0dcaf0; 168 display: flex; 169 align-items: center; 170 justify-content: center; 171 border-radius: 15px; 172 font-size: 1.5rem; 173 margin-bottom: 1px; 174 transition: 0.3s; 175 } 176 177 .solution-card:hover .card-icon { 178 background: #0dcaf0; 179 color: #fff; 180 } 181 182 .solution-card h4 { 183 font-weight: 700; 184 font-size: 1.25rem; 185 margin-bottom: 15px; 186 } 187 188 .feature-tags { 189 font-size: 0.75rem; 190 font-weight: 700; 191 text-transform: uppercase; 192 color: #0dcaf0; 193 letter-spacing: 1px; 194 margin-bottom: 15px; 195 } 196 197 .benefit-text { 198 color: #666; 199 font-size: 18px !important; 200 line-height: 1.6; 201 text-align:justify; 202 } 203 204 .border-dashed { 205 border: 2px dashed #ddd; 206 background: transparent; 207 } 208 209 /* Active State for key sector */ 210 .active-accent { 211 border-top: 5px solid #0dcaf0; 212 } 213</style> 214 215 216 217<body id="top"> 218 219 <!-- Google Tag Manager (noscript) --> 220 <noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-TDM5BNXQ" title="Google Tag Manager" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript><!-- End Google Tag Manager (noscript) --> 221 <noscript><link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/flatpickr/dist/flatpickr.min.css"></noscript> 222 223 224 <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/flatpickr/dist/flatpickr.min.css"> 225 226<style> 227 body{ 228 font-family: var(--body-font-family) !important; 229 } 230 ul li { 231 font-weight:100 !important; 232 } 233 .modal { 234 display: none; 235 position: fixed; 236 z-index: 1000; 237 left: 50%; 238 top: 50%; 239 transform: translate(-50%, -50%); 240 background-color: rgba(0, 0, 0, 0.5); 241 width: 100%; 242 max-width: 100%; 243 height: auto; 244 /* background-color: white; */ 245 padding: 20px; 246 /* border-radius: 8px; */ 247 /* box-shadow: 0px 4px 10px rgba(0, 0, 0, 0.2); */ 248 } 249 250 body.modal-open { 251 overflow: hidden; 252 } 253 254 .modal-content { 255 background-color: white; 256 margin: 15% auto; 257 padding: 20px; 258 border: 1px solid #888; 259 width: 80%; 260 max-width: 600px; 261 } 262 263 .close { 264 color: #aaa; 265 float: right; 266 font-size: 28px; 267 font-weight: bold; 268 } 269 270 .close:hover, 271 .close:focus { 272 color: black; 273 text-decoration: none; 274 cursor: pointer; 275 } 276 277 /* Modal input styling */ 278 279 .modal input, 280 .modal textarea { 281 width: 100%; 282 padding: 6px; 283 margin: 4px 0; 284 border: 1px solid #ccc; 285 border-radius: 5px; 286 } 287 288 @media screen and (max-width: 768px) { 289 .navbar-expand-lg .navbar-nav .nav-link { 290 margin:2px 0px !important; 291 padding:2px !important; 292 293 } 294 } 295 296 @media screen and (max-width: 990px) { 297 .navHeader { 298 display:flex !important; 299 justify-content: space-between; 300 width: 100%; 301 padding-left: 0px !important; 302 margin-left: 10px !important; 303 } 304 .navbar-toggler{ 305 padding: 5px; 306 margin-top: 10px; 307 } 308 } 309 310 .nav-item{ 311 font-weight:200 !important; 312 } 313/* Ensure the main navbar is the reference point for the absolute dropdown */ 314.navbar { 315 position: relative !important; 316} 317 318 .navbar-expand-lg .navbar-nav .nav-link { 319 font-size:1rem !important; 320 } 321 322#product-nav-new { 323 position: absolute; 324 width: 100vw !important; /* Spans 100% of the browser window width */ 325 left: 0 !important; 326 right: 0 !important; 327 top: 15%; /* Sits exactly at the bottom of the navbar */ 328 background-color: #fff; 329 box-shadow: 0 1rem 3rem rgba(0,0,0,0.175) !important; 330 padding: 20px 0; 331 z-index: 5; 332 border-top: 1px solid #eee; 333} 334 335 336#product-nav { 337 position: absolute; 338 width: 100vw !important; /* Spans 100% of the browser window width */ 339 left: 0 !important; 340 right: 0 !important; 341 top: 15%; /* Sits exactly at the bottom of the navbar */ 342 background-color: #fff; 343 box-shadow: 0 1rem 3rem rgba(0,0,0,0.175) !important; 344 padding: 12px 0; 345 z-index: 5; 346 border-top: 1px solid #eee; 347} 348 349/* Sidebar styling to match the screenshot */ 350.product-sidebar-item { 351 padding: 12px 20px; 352 border-bottom: 1px solid #f8f9fa; 353 transition: 0.3s; 354 display: block; 355 text-decoration: none; 356 color: #333; 357} 358 359.product-sidebar-item.active { 360 color: #dc3545 !important; /* Red highlight */ 361 font-weight: bold; 362 background-color: #f8f9fa; 363} 364 365.product-sidebar-item:hover { 366 background-color: #f8f9fa; 367 color: #dc3545; 368} 369 370 .btn-orange{ 371 background-color: #fd680dd4 !important; 372 } 373 374 375@media (max-width: 991px) { 376 #product-nav-new { 377 position: static !important; /* Move it into the normal flow */ 378 width: 100% !important; 379 box-shadow: none !important; 380 border-top: 1px solid #eee; 381 padding: 90px 0; 382 } 383 384 #product-nav-new .col-md-4 { 385 border-end: none !important; /* Remove borders on mobile */ 386 margin-bottom: 20px; 387 padding-left: 5px !important; 388 padding-right: 5px !important; 389 } 390 391 #product-nav-new .d-flex { 392 flex-direction: column; /* Stack image and text on very small screens */ 393 align-items: flex-start; 394 } 395 396 #product-nav-new img { 397 margin-bottom: 10px; 398 width: 160px !important; /* Smaller images for mobile */ 399 height: auto !important; 400 } 401 #product-nav-new p { 402 margin-left: 0px !important; 403 } 404 .classroomImg{ 405 width:150px !important; 406 } 407} 408 409 @media (max-width: 612px) { 410 .gatesense, .campuses { 411 width:50%; 412 } 413 } 414 415 416</style> 417<nav class="navbar navbar-expand-lg"> 418 <div class=" navHeader px-3 ms-3 mb-2"> 419 <a class="navbar-brand" href="https://attendify.ai/"> 420 <svg version="1.1" viewBox="0 0 2048 606" width="160" height="auto" xmlns="http://www.w3.org/2000/svg"> 421 <path transform="translate(232,65)" d="m0 0 79 1 9 19 14 31 16 36 9 19 2 6-11 5-20 8-32 16-3-1-24-56v-2h-2l-1 5-15 35-23 54-13 30-2 5 13-10 14-11 20-14 19-12 26-15 27-13 19-8 21-8 36-10 34-7 24-3 18-1h37l25 2 23 4v1h-21l-27 1-24 3-32 7-30 10-19 8-19 9-22 12-17 11-18 12-11 8-13 10-11 9-13 11-15 14-7 7-8 7-17 17-7 8-16 17-12 14-8 10-10 12-21 28-10 14-14 20-14 22-16 26h-83l5-12 16-36 16-35 14-31 26-58 16-35 27-60 19-42 27-60 15-33 13-29z" fill="#EA860D"/> 422 <path transform="translate(528,197)" d="m0 0 2 1-5 2-17 4-24 9-24 12-18 12-13 10-11 9-15 15 2 6 21 42 18 40 15 33 27 60 16 35 4 9-1 3h-81l-3-3-17-39-15-35-26-60-13-35-2-3-9 10-11 14-9 11-12 17-8 11-13 20-16 27-9 16-12 22-13 26-1 1h-74l-2-1 2-6 8-15 12-20 12-19 13-19 9-12 14-19
42211-13 11-14 7-7 9-11 36-36 11-9 15-13 9-7 13-10 18-12 20-12 23-12 16-8 31-12 24-7 31-6z" fill="#A5282E"/> 423 <path transform="translate(1148,253)" d="m0 0h23l11 1 7 4 7 9 13 23 28 50 26 46 14 25 6 10 1 1 1-163 4-5 10-1h12l10 2 2 3 1 7v181l-2 12-5 9-8 5-6 1h-27l-8-2-5-3v-2l-3-1-9-14-15-27-13-23-14-24-14-26-10-17-15-27-2-3-1 163-4 5-2 1h-28l-5-5v-192l3-12 6-7 6-3z" fill="#434142"/> 424 <path transform="translate(1373,254)" d="m0 0h111l15 3 11 5 11 8 7 8 7 14 5 19 2 19v69l-3 22-5 16-7 12-9 10-11 7-15 5-16 2h-99l-9-3-7-5-5-10v-183l3-7 6-7zm23 39-1 7v133h83l10-3 5-3 6-10 3-13v-80l-3-15-6-9-8-5-8-2z" fill="#454344"/> 425 <path transform="translate(1014,342)" d="m0 0h74l4 2 2 4v29l-3 4-5 1h-118v22l3 10 2 5 4 2 12 3 101 1 5 4 1 29-1 11h-2v2l-2 1h-112l-13-3-12-5-9-7-7-10-5-12-3-11-2-16v-48l4-8 8-7 4-2z" fill="#444243"/> 426 <path transform="translate(1849,254)" d="m0 0h37l4 4 11 20 12 22 13 24 12 22 9 16v2h2l2-5 12-23 10-18 12-22 10-18 11-20 4-4h36l2 2v7l-13 24-15 26-13 23-14 25-14 24-11 20-1 63-3 4-6 1h-24l-5-3-2-9v-56l-13-23-10-18-13-23-10-18-9-16-12-21-12-22-1-7z" fill="#A5282E"/> 427 <path transform="translate(707,254)" d="m0 0h183l4 3 1 5v27l-5 4h-71v174l-2 4-10 2h-21l-5-3-2-5v-172h-70l-5-3-1-4v-26l3-5z" fill="#434142"/> 428 <path transform="translate(483,254)" d="m0 0h184l3 3 1 4v24l-2 7-4 1h-70v174l-5 5-8 1h-15l-8-1-3-3-1-5v-171h-70l-4-2-2-5v-26l3-5z" fill="#434142"/> 429 <path transform="translate(1664,343)" d="m0 0h144l4 4 1 7v20l-3 7-1 1h-123v85l-3 5-2 1h-29l-5-5-1-2v-72l1-36 6-9 8-5z" fill="#A5272D"/> 430 <path transform="translate(1578,254)" d="m0 0h32l3 3 1 3v207l-3 5-2 1h-29l-5-5-1-3v-204l2-5z" fill="#A5272D"/> 431 <path transform="translate(932,253)" d="m0 0h158l5 5 1 23-1 8-3 3-5 1h-133l-22-1-4-4v-30z" fill="#444243"/> 432 <path transform="translate(1650,254)" d="m0 0h160l3 3 1 3v28l-1 3-4 2h-157l-5-4-1-3v-26l3-5z" fill="#A5272D"/> 433 <path transform="translate(379,97)" d="m0 0h45l3 4v41l-2 4-2 1h-43l-3-3-1-3v-40z" fill="#A62B31"/> 434 <path transform="translate(403,36)" d="m0 0h32l1 2v30l-1 2h-32l-2-6v-22z" fill="#EA8811"/> 435 <path transform="translate(452,87)" d="m0 0h30l2 2v31l-1 1h-32l-2-4v-22l2-7z" fill="#EA8810"/> 436 <path transform="translate(44,549)" d="m0 0h23l3 5v6 4l-1 9-2 2h-23l-1-25zm5 5v6h14l1-5-1-1zm0 11v5h15v-5z" fill="#474546"/> 437 <path transform="translate(461,549)" d="m0 0h22l3 2 1 3v8l-4 3-5 1 4 3 5 1v5h-8l-9-9-4-1v10h-5zm6 5-1 5 1 1h14l1-5-3-1z" fill="#A72F35"/> 438 <path transform="translate(313,549)" d="m0 0h22v6h-21l1 4 18 1 2 2v11l-3 2h-23v-5h21v-5h-17l-3-2-1-3v-7z" fill="#A83238"/> 439 <path transform="translate(389,549)" d="m0 0h22v5l-20 1-1 5h21v5h-21v5h21v5h-23l-3-3v-19z" fill="#A62B31"/> 440 <path transform="translate(161,549)" d="m0 0h22l1 5h-21v6h21l-1 5h-20v5h21v5h-24l-2-2v-22z" fill="#EB9124"/> 441 <path transform="translate(502,549)" d="m0 0h19l4 3av23h-5v-10h-16v10h-5v-23zm3 5-1 1v5h16v-5l-5-1z" fill="#A72F35"/> 442 <path transform="translate(82,549)" d="m0 0h5v11h15v-10l1-1h5v23l-2 3h-24v-5l20-1 1-4h-18l-3-3z" fill="#4D4B4D"/> 443 <path transform="translate(234,549)" d="m0 0 5 1v10h15v-11h5v26h-5v-10h-15v10h-5l-1-1v-24z" fill="#EB8E1E"/> 444 <path transform="translate(272,549)" d="m0 0 5 1v10l5-3 7-7 2-1h6l1 5-8 3-4 4 2 4 4 4 6 2-1 4h-7l-10-9-3-1v10h-5l-1-25z" fill="#A42D33"/> 445 <path transform="translate(348,549)" d="m0 0 5 1v9l15 1v-11h5l1 1v12l-1 13h-5v-10h-16v10h-5v-25z" fill="#A63238"/> 446 <path transform="translate(199,549)" d="m0 0h22v5l-20 1-1 15h21v5h-24l-2-6v-16z" fill="#EA8F22"/> 447 <path transform="translate(463,53)" d="m0 0h16l1 1v16h-17z" fill="#A5272D"/> 448 <path transform="translate(423,549)" d="m0 0h26v5h-10v21h-5v-20l-11-1z" fill="#AB3A40"/> 449 <path transform="translate(120,549)" d="m0 0h25v5h-10v21h-5v-21h-11z" fill="#EB9226"/> 450 </svg> 451 <!-- <img src="images/Attendify_newlogo.png" style="width:100%;height:50px;filter:drop-shadow(10px 8px 6px #fffefec4);" alt="new blog images" > --> 452 </a> 453 <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNav" aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation">
454 <span class="navbar-toggler-icon"></span> 455 </button> 456 </div> 457 <div class="container d-flex justify-content-end" style="margin-right:15px;"> 458 <div class="row"> 459 460 <div class="col-12 py-3"> 461 <div class="collapse navbar-collapse" id="navbarNav"> 462 <ul class="navbar-nav "> 463 <!-- <li class="nav-item px-1 dropdown"> 464 <a class="nav-link py-4" href="workforce.php">Workforce</a> 465 </li> --> 466 <!-- <li class="nav-item px-1 dropdown" onmouseenter="showMenu('product-nav-new')" 467 onmouseleave="hideMenu('product-nav-new')"> 468 <a class="nav-link py-2" onclick="toggleProductNav(event)" href="#">AI Attendance <i class="bi bi-chevron-down" ></i></a> 469 </li> --> 470 <li class="nav-item px-1 dropdown"> 471 <a class="nav-link py-2" 472 href="javascript:void(0)" 473 onclick="toggleProductNav(event)"> 474 AI Attendance <i class="bi bi-chevron-down"></i> 475 </a> 476 </li> 477 478 479 <li class="nav-item px-1 dropdown"> 480 <a class="nav-link" href="aisecurity.php">AI Security</a> 481 </li> 482 <li class="nav-item px-1 dropdown"> 483 <a class="nav-link py-2" href="blog.php">Blogs</a> 484 </li> 485 <li class="nav-item px-1"> 486 <a class="nav-link py-2" href="index.php#contact-form">Contact</a> 487 </li> 488 <li class="nav-item"> 489 <button class="btn btn-orange nav-link mt-0 py-2 mx-0 "> 490 <a href="https://hrms.attendify.ai/index.php/register/" target="_blank" style="color:#fff">Get started</a> 491 </button> 492 </li> 493 <li class="nav-item"> 494 <button class="btn btn-orange nav-link mt-0 py-2 mx-3 "> 495 <a href="https://hrms.attendify.ai/" target="_blank" style="color:#fff">Login</a> 496 </button> 497 </li> 498 </ul> 499 </div> 500 </div> 501 </div> 502 </div> 503 </nav> 504 505 <div id="successAlert" class="alert alert-success d-none" style="position: fixed; top: 20px; right: 20px; z-index: 9999;"></div> 506 <div id="errorAlert" class="alert alert-danger d-none" role="alert"></div> 507 508 509 <div id="product-nav-new" style="display: none;" onmouseenter="showMenu('product-nav-new')" onmouseleave="hideMenu('product-nav-new')"> 510 <div class="container-fluid px-5"> 511 <div class="row py-4"> 512 <div class="col-md-4 px-4 border-end"> 513 <a href="hrms.php" class="text-dark"> 514 <div class="text-start"> 515 <h5 class="">HRMS Attendance</h5> 516 <div class="d-flex"> 517 <img src="images/Attendify_HRMS.webp" style="width: 120px; height: 115px; object-fit: contain;" class="mb-0 "> 518 <p class="ms-3 mb-0 text-muted fs-6 " style="text-align: justify;"> 519 Enterprise-grade facial recognition enables seamless employee attendance with walkthrough entry, offline edge processing, and secure data control.
520 <span class="text-danger text-decoration-none fs-6">Know more â</span> 521 </p> 522 </div> 523 </div> 524 </a> 525 </div> 526 527 <div class="col-md-4 px-4"> 528 <a href="classroom.php" class="text-dark"> 529 <div class="text-start"> 530 <h5 class="">Classroom Attendance</h5> 531 <div class="d-flex"> 532 <img src="images/classroom.jpeg" style="width: 120px; height: 110px; object-fit: cover;" class="mt-1"> 533 <p class="mx-3 mb-0 text-muted fs-6 " style="text-align: justify;"> 534 Advanced AI-based facial verification automates student attendance during live sessions, delivering accurate records and real-time monitoring.<br/> 535 <span class="text-danger text-decoration-none fs-6">Know more â</span> 536 </p> 537 </div> 538 </div> 539 </a> 540 </div> 541 542 <div class="col-md-4 px-4 border-end"> 543 <a href="fusion.php" class="text-dark"> 544 <div class="text-start"> 545 <h5 class="">Exam Attendance</h5> 546 <div class="d-flex "> 547 <img src="images/Attendify_Fusion.webp" style="width: 120px; height: 120px; object-fit: contain;" class="mb-0" > 548 <p class="ms-3 mb-0 text-muted fs-6 " style="text-align: justify;"> 549 Advanced AI-powered face verification ensures accurate candidate identification, prevents impersonation, and maintains tamper-proof records.<br/> 550 <span class="text-danger text-decoration-none fs-6 ">Know more â</span> 551 </p> 552 </div> 553 </div> 554 </a> 555 </div> 556 557 </div> 558 </div> 559 </div> 560 561 <div id="product-nav" style="display: none;" onmouseenter="showMenu('product-nav')" onmouseleave="hideMenu('product-nav')"> 562 <div class="container-fluid px-5"> 563 <div class="row py-4"> 564 565 <div class="col-md-6 px-4 border-end"> 566 <a href="campuses.php" class="text-dark"> 567 <div class="text-start d-flex"> 568 <img src="images/campses.jpeg" style="width: 275px; height: 190px; object-fit: contain;" class=""> 569 <div class="mt-3"> 570 <h5 class="ms-3">Campus Security</h5> 571 <p class="ms-3 text-muted fs-6 " style="text-align: justify; "> 572 Safe Campuses. Smarter Attendance. 573 Automated student and staff attendance, visitor tracking, and real-time risk 574 alerts designed specifically for large educational environments. 575 <span class="text-danger text-decoration-none fs-6">Know more â</span> 576 </p> 577 </div> 578 </div> 579 </a> 580 </div> 581 <div class="col-md-6 px-4 "> 582 <a href="gatesense.php" class="text-dark"> 583 <div class="text-start d-flex"> 584 <img src="images/GateSense.jpg" style="width: 275px; height: 190px; object-fit: contain;" class=" "> 585 <div class="mt-3"> 586 <h5 class="ms-3">GateSense Security</h5> 587 <p class="ms-3 text-muted fs-6" style="text-align: justify;"> 588 AI-powered entry control and visitor management for apartments, hostels, and PGs with automated staff tracking and real-time access monitoring ensuring secure and smart residential operations.
589 <span class="text-danger text-decoration-none fs-6">Know more â</span> 590 </p> 591 </div> 592 </div> 593 </a> 594 </div> 595 596 597 </div> 598 </div> 599 </div> 600
601<script defer> 602 603 let navTimeout; 604 605function showMenu(menuId) { 606 clearTimeout(navTimeout); 607 // Hide all other menus first 608 document.getElementById("product-nav-new").style.display = "none"; 609 document.getElementById("product-nav").style.display = "none"; 610 // Show the targeted one 611 document.getElementById(menuId).style.display = "block"; 612} 613 614function hideMenu(menuId) { 615 navTimeout = setTimeout(() => { 616 document.getElementById(menuId).style.display = "none"; 617 }, 200); // fs-6 delay so user can move mouse into the menu 618} 619 620 // Toggle the main menu 621 622function toggleProductNav(event) { 623 if (event) { 624 event.preventDefault(); 625 event.stopPropagation(); // Prevents click from bubbling up 626 } 627 628 var nav = document.getElementById("product-nav-new"); 629 630 // Toggle the 'show' class instead of manual display styles 631 nav.classList.toggle("active-menu"); 632 633 // Fallback for manual display if not using classes 634 if (nav.classList.contains("active-menu")) { 635 nav.style.display = "block"; 636 } else { 637 nav.style.display = "none"; 638 } 639} 640 641 642function toggleProductNavbar(event) { 643 if (event) event.preventDefault(); 644 var nav = document.getElementById("product-nav"); 645 nav.style.display = (nav.style.display === "none" || nav.style.display === "") ? "block" : "none"; 646} 647 648</script>
648 649 <style> 650 .navbar-expand-lg .navbar-nav .nav-link { 651 border-radius: 5px !important; 652 /* margin: 10px; */ 653 padding: 10px; 654 color: black !important; 655 } 656 657 #schedule-meeting-btn{ 658 margin-top: 15px !important; 659 color: #fff !important; 660 } 661 </style> 662
662<script src="https://cdn.jsdelivr.net/npm/flatpickr"></script>
662 663 <style> 664 /* Modal styling */ 665 /* .modal { 666 display: none; 667 position: fixed; 668 z-index: 1; 669 left: 0; 670 top: 0; 671 width: 100%; 672 height: 100%; 673 overflow: auto; 674 background-color: rgba(0,0,0,0.5); 675 } */ 676 .modal { 677 display: none; 678 position: fixed; 679 z-index: 1000; 680 left: 50% !important; 681 top: 50% !important; 682 transform: translate(-50%, -50%); 683 background-color: rgba(0, 0, 0, 0.5); 684 width: 100%; 685 max-width: 100%; 686 height: auto; 687 /* background-color: white; */ 688 padding: 20px; 689 /* border-radius: 8px; */ 690 /* box-shadow: 0px 4px 10px rgba(0, 0, 0, 0.2); */ 691 } 692 693 body.modal-open { 694 overflow: hidden; 695 } 696
697 .modal-content { 698 background-color: white; 699 /* margin: 15% auto; */ 700 padding: 20px; 701 border: 1px solid #888; 702 width: 80%; 703 max-width: 600px; 704 } 705 706 707 .close { 708 color: #aaa; 709 float: right; 710 font-size: 28px; 711 font-weight: bold; 712 } 713 714 .close:hover, 715 .close:focus { 716 color: black; 717 text-decoration: none; 718 cursor: pointer; 719 } 720 721 /* Modal input styling */ 722 .modal input, 723 .modal textarea { 724 width: 100%; 725 padding: 6px; 726 margin: 4px 0; 727 border: 1px solid #ccc; 728 border-radius: 5px; 729 } 730 731 /* Button styling */ 732 /* #schedule-meeting-btn { 733 display: block; 734 margin: 50px auto; 735 padding: 15px 30px; 736 font-size: 18px; 737 background-color: #007BFF; 738 color: white; 739 border: none; 740 cursor: pointer; 741 } */ 742 743 #schedule-meeting-btn:hover { 744 /* background-color: #0056b3; */ 745 } 746 747 label { 748 color: black; 749 } 750 751 .listType { 752 list-style-type: circle; 753 font-size: large 754 } 755 @media screen and (max-width: 768px) { 756 .corpo { 757 display: flex !important; 758 flex-direction: column-reverse !important; 759 } 760 } 761 762 763 .ideal-box { 764 background: #ffffff; 765 padding: 30px 20px; 766 border-radius: 15px; 767 transition: all 0.4s ease; 768 border-bottom: 4px solid transparent; 769 height: 100%; 770 box-shadow: 0 5px 15px rgba(0,0,0,0.05); 771 } 772 773 .ideal-icon { 774 font-size: 2rem; 775 color: #4350c9; /* Jeevarakshak Green */ 776 margin-bottom: 15px; 777 transition: transform 0.3s ease; 778 } 779 780 .ideal-box h6 { 781 font-size: 0.95rem; 782 font-weight: 700; 783 color: #333; 784 margin-bottom: 0; 785 } 786 787 /* Hover Effects */ 788 .ideal-box:hover { 789 transform: translateY(-10px); 790 border-bottom: 4px solid #4350c9; 791 box-shadow: 0 15px 30px rgba(16, 185, 129, 0.15); 792 } 793 794 .ideal-box:hover .ideal-icon { 795 transform: scale(1.2); 796 } 797 798 .ls-1 { letter-spacing: 1.5px; } 799 800 /* Modern Primary Button */ 801 .btn-modern-primary { 802 background: #fd680de3; 803 color: white; 804 padding: 14px 35px; 805 border-radius: 50px; 806 text-decoration: none; 807 font-weight: 500; 808 box-shadow: 0 10px 20px rgba(13, 110, 253, 0.15); 809 transition: all 0.3s ease; 810 border: none; 811 } 812 813 .btn-modern-primary:hover { 814 background: #0b5ed7; 815 transform: translateY(-3px); 816 box-shadow: 0 15px 30px rgba(13, 110, 253, 0.25); 817 color: white; 818 } 819 820 /* Soft Badge Items */ 821 .badge-item { 822 background: #fff; 823 border: 1px solid #eef2f7; 824 padding: 8px 16px; 825 border-radius: 8px; 826 font-size: 0.9rem; 827 color: #5d6d7e; 828 box-shadow: 0 4px 6px rgba(0,0,0,0.02); 829 } 830 831 /* Tech Grid Background */ 832 .tech-grid-bg { 833 position: absolute; 834 top: 0; left: 0; width: 100%; height: 100%; 835 background-image: radial-gradient(rgba(13, 110, 253, 0.05) 1px, transparent 1px); 836 background-size: 40px 40px; 837 z-index: 0; 838 } 839 840 841 @keyframes scrollWheel { 842 0% { opacity: 1; top: 8px; } 843 100% { opacity: 0; top: 25px; } 844 } 845 846 .hero-section { 847 position: relative; 848 overflow: hidden; 849 padding-top: 0px; 850 padding-bottom: 16px; 851 height: 90vh; 852 border-radius: 1% 1% 88% 88%; 853 /* background: linear-gradient(135deg, #a8b6d8 0%, #dabbbb 100%); */ 854 background: linear-gradient(135deg, #ffffff 0%, #d9e4f5 100%); 855 } 856 </style> 857 858<div id="successAlert" class="alert alert-success d-none" style="position: fixed; top: 20px; right: 20px; z-index: 9999;"></div> 859<div id="errorAlert" class="alert alert-danger d-none" role="alert"></div> 860 861 862 863 <section class="hero-section position-relative overflow-hidden"> 864 865 <div class="tech-grid-bg"></div> 866 867 <div class="container py-lg-5"> 868 <div class="row align-items-center"> 869 <div class="col-lg-9 col-12 mx-auto text-center mainHome py-4 mt-5 animate-on-scroll"> 870 871 <h1 class=" fw-light mb-3" style="color: #2c3e50; line-height: 1.2;"> 872 <!-- AI-Powered <span class=" " style="color:#3778c8">Attendance & Visitor</span> Management --> 873 All-in-One AI Workplace Platform 874 </h1> 875 <p >One intelligent solution for complete workplace management.</p> 876 877 <p class=" mb-4 text-dark" > 878 AI-powered walk-through facial recognition for employee attendance, powerful HRMS and payroll management, GPS-enabled mobile selfie attendance for remote teams, and secure visitor management everything your workplace needs in one smart platform. 879 </p> 880 881 <div class="d-flex flex-wrap justify-content-center gap-3 mb-5"> 882 <div class="badge-item"><i class="fas fa-check-circle me-2 text-success"></i>Every entry is verified</div> 883 <div class="badge-item"><i class="fas fa-check-circle me-2 text-success"></i>Every presence recorded</div> 884 <div class="badge-item"><i class="fas fa-check-circle me-2 text-success"></i>Zero Cloud Dependency</div> 885 </div> 886 887 <div class="d-flex justify-content-center"> 888 <button id="schedule-meeting-btn" class="btn-modern-primary"> 889 Book a Demo <i class="fas fa-arrow-right ms-2"></i> 890 </button> 891 </div> 892 </div> 893 </div> 894 </div> 895 </section> 896 897 <div class="container mt-3 pt-5"> 898 899 <!-- Video Section --> 900 <section class="py-5 bg-light"> 901 <div class="container"> 902 <div class="text-center mb-4"> 903 <h2 class="fw-normal"> See <span class="text-primary">Attendify.ai</span> in Action </h2> 904 <p class="text-muted"> Watch how AI-powered walk-through attendance works in real time. </p> 905 </div> 906 907 <div class="row justify-content-center"> 908 <div class="col-lg-10"> 909 <div class="ratio ratio-16x9 shadow rounded overflow-hidden">
910 <video autoplay muted loop playsinline controls preload="metadata" poster="images/video-thumbnail.jpg"> 911 <source src="https://attendify.ai/videos/AttendifyFinalVideoDraft.mp4" type="video/mp4"> 912 Your browser does not support the video tag. 913 </video> 914 </div> 915 916 <div class="text-center mt-3"> 917 <a href="https://youtu.be/ASQB7SEQe_Q?si=b2_HpnbabUoI7UFU" target="_blank" class="btn btn-danger"> 918 <i class="bi bi-youtube"></i> Watch on YouTube 919 </a> 920 </div> 921 </div> 922 </div> 923 </div> 924 </section> 925 926 <section class="site-headerr d-flex flex-column justify-content-left my-3" > 927 <div class="container " > 928 <h2 class=" mb-4 animate-on-scroll text-center">AI-Powered <span class="text-primary">Walk-Through</span> Attendance</h2> 929 <div class="row"> 930 <div class="col-lg-6 col-12"> 931 <img src="images/secrure-workforce.jpeg" fetchpriority="high" 932 style=" width: 100%; height:100%; border-radius:16px;" alt="Real-time attendance monitoring" 933 class="img-fluid align-items-start animate-left-to-right"> 934 </div> 935 <div class="col-lg-6 col-12" > 936 <p class=" mb-3 animate-on-scroll" style="font-size:18px"><a href="https://attendify.ai/" class="text-primary">Attendify.ai</a> uses advanced AI-powered 937 facial recognition cameras to automatically record employee attendance in real time. Employees simply walk through the designated entry point while the AI camera 938 verifies their identity and automatically logs their attendance with no manual interaction required.</p> 939 <ul class="listType animate-on-scroll"> 940 <li>100% contactless attendance system.</li> 941 <li>No fingerprint devices required</li> 942 <li>No RFID Cards</li> 943 <li>No manual registers or paperwork</li> 944 <li>Prevents proxy punching</li> 945 <li>Only verified employees can mark attendance</li> 946 </ul> 947 <p class="animate-on-scroll mb-0" style="font-size:18px">With a centralized dashboard for monitoring and reports.</p> 948 <p class="mb-3 animate-on-scroll" style="font-size:18px"><a href="https://attendify.ai/" class="text-primary">Attendify.ai</a> makes attendance management faster, smarter, and more efficient for modern workplaces.</p> 949 </div> 950 951 </div> 952 </div> 953 </section> 954 955 956 <style> 957 @keyframes slideInFromLeft { 958 0% { 959 transform: translateX(-100%); 960 opacity: 0; 961 } 962 963 100% { 964 transform: translateX(0); 965 opacity: 1; 966 } 967 } 968 969 .animate-left-to-right { 970 animation: slideInFromLeft 2s ease-in-out; 971 } 972 973 @keyframes slideInFromRight { 974 0% { 975 transform: translateX(100%); 976 opacity: 0; 977 } 978 979 100% { 980 transform: translateX(0); 981 opacity: 1; 982 } 983 } 984 985 .animate-right-to-left { 986 animation: slideInFromRight 2s ease-in-out; 987 } 988 989 @keyframes slideInFromLeft { 990 0% { 991 transform: translateX(-100%); 992 opacity: 0; 993 } 994 995 100% { 996 transform: translateX(0); 997 opacity: 1;
998 } 999 } 1000 1001 .animate-left-to-right { 1002 animation: slideInFromLeft 1s ease-in-out; 1003 } 1004 1005 .button-90 { 1006 animation: slideInFromRight 1s ease-in-out; 1007 } 1008 </style> 1009 1010 1011 <section class="my-5 pt-3" hidden> 1012 <div class="container"> 1013 <div class="row align-items-center corpo"> 1014 <div class="col-lg-6 col-12 d-flex justify-content-center"> 1015 <img src="images/meet_attend.webp" loading="lazy" 1016 style=" width: 98%; height:auto; border-radius:16px;" alt="Biometric attendance with AI" 1017 class="mobile_gif"> 1018 </div> 1019 1020 <div class="col-lg-6 col-12"> 1021 <h2 class="" > 1022 Workforce Time Intelligence 1023 </h2> 1024 <p class="mb-2">Verified entry automatically generates accurate attendance records. 1025 </p> 1026 <ul class="listType"> 1027 <li>First-in & last-out tracking</li> 1028 <li>Late arrival & absentee visibility</li> 1029 <li>Shift-based access control</li> 1030 <li>Leave alignment with attendance</li> 1031 <li>Payroll-ready reports</li> 1032 <li>HRMS / ERP integration support</li> 1033 </ul> 1034 <p>Attendance is no longer manual â it is validated through secure identity authentication.</p> 1035 </div> 1036 </div> 1037 </div> 1038 </section> 1039 1040 1041 <style> 1042 .size-card { 1043 padding: 20px; 1044 height: 275px; 1045 } 1046 1047 1048 .size-card { 1049 box-shadow: 0 .5rem 1rem rgba(0, 0, 0, .15) !important; 1050 } 1051 1052 .size-card:hover { 1053 transform: translateY(-10px); 1054 1055 } 1056 </style> 1057 1058 <style> 1059 .card { 1060 min-height: 314px; 1061 transition: transform 0.3s, box-shadow 0.3s; 1062 } 1063 1064 .card:hover { 1065 transform: scale(1.05); 1066 box-shadow: 0 10px 20px rgba(0, 0, 0, 0.3); 1067 } 1068 1069 .card img { 1070 height: 200px; 1071 object-fit: cover; 1072 } 1073 1074 .fade-in { 1075 animation: fadeIn 2s; 1076 } 1077 1078 .card-text { 1079 overflow: hidden; 1080 min-height: 120px; 1081 transition: max-height 0.3s ease-in-out; 1082 } 1083 1084 .card-title { 1085 font-size: 22px; 1086 } 1087 1088 h6 { 1089 font-family: 'Calibri'; 1090 font-style: italic; 1091 color: rgba(138, 81, 19, 0.96); 1092 } 1093 1094 .read-more { 1095 cursor: pointer; 1096 color: #007bff; 1097 font-weight: bold; 1098 } 1099 1100 .expanded { 1101 max-height: 500px; 1102 } 1103 1104 .d-none { 1105 display: none; 1106 } 1107 1108 ul li::marker { 1109 color: #b3732a; 1110 font-size: 25px; 1111 font-weight: bold; 1112 } 1113 1114 @media(max-width: 768px) { 1115 .outcome-columns { 1116 display: flex !important; 1117 flex-direction: column !important; 1118 } 1119 } 1120 1121 1122 .card-titleround { 1123 font-weight:normal; 1124 font-size: 19px; 1125 padding: 15px; 1126 text-align: center; 1127 color: #3b3a3a; 1128 } 1129 1130 .card-img-top { 1131 height: 150px; 1132 } 1133 1134 .card-industry { 1135 position: relative; 1136 width: 180px; 1137 height: 165px; 1138 background-color: #ffffff; 1139 display: flex; 1140 flex-direction: column; 1141 justify-content: center; 1142 padding: 12px; 1143 gap: 12px; 1144 border: 0px solid #c7c9c9; 1145 border-radius: 8px; 1146 cursor: pointer; 1147 color: white; 1148 } 1149 1150 .card-industry::before { 1151 content: ''; 1152 position: absolute; 1153 inset: 0; 1154 left: -10px; 1155 margin: auto; 1156 border-radius: 10px; 1157 background: linear-gradient(359deg, #61d2a6 0%, #cbe4e2 100%); 1158 z-index: -10; 1159 pointer-events: none; 1160 /* transition: all 0.6s cubic-bezier(0.175, 0.885, 0.32, 1.275); */ 1161 /* transform: rotate(0deg) scaleX(1) scaleY(1); */ 1162 transition: transform 0.3s ease; /* Faster, smoother transition */ 1163 transform: rotate(0deg) scale(1); /* Reset state */ 1164 } 1165 1166 1167 1168 .card-industry::after { 1169 content: ""; 1170 z-index: -1; 1171 position: relative; 1172 inset: 0; 1173 1174 background: linear-gradient(-45deg, #f8f6f5 0%, #f1f1f1 100%); 1175 transform: translate3d(0, 0, 0) scale(0.95); 1176 filter: blur(20px); 1177 } 1178 1179 .card-industry:hover::after { 1180 filter: blur(30px); 1181 } 1182 1183 1184 .card-industry::before, 1185 .card-industry::after { 1186 position: absolute; 1187 width: 110%; 1188 height: 110%; 1189 border-radius: 10px; 1190 } 1191 .col-md-3-test { 1192 flex: 0 0 auto; 1193 width: 22.666667% !important; 1194 } 1195 1196 .card-industry:hover::before { 1197 transform: rotate(-20deg) scale(1.1); 1198 /* modest scale */ 1199 } 1200 1201 1202 1203 @keyframes shake { 1204 0% { transform: translateX(0); } 1205 25% { transform: translateX(-4px); } 1206 50% { transform: translateX(4px); } 1207 75% { transform: translateX(-4px); } 1208 100% { transform: translateX(0); } 1209 } 1210 1211 @media (max-width: 786px) { 1212 .card-industry { 1213 /* margin: 0px 50px; */ 1214 width: 225px; 1215 } 1216 1217 .card-problem { 1218 margin: 0px 30px; 1219 } 1220 1221 .industry-h2 { 1222 text-align: center; 1223 } 1224 .col-md-2 { 1225 flex: 0 0 auto; 1226 width: 17.666667% !important; 1227 } 1228 } 1229 1230 .bg-split-accent { 1231 position: absolute; 1232 top: 114px; 1233 bottom: 0px; 1234 left: 0; 1235 width: 43%; 1236 height: 75%; 1237 background-color: #ddebf9; 1238 z-index: -1; 1239 border-radius: 0 100px; 1240 } 1241 1242 /* Problem Item Styling */ 1243 .p-item { 1244 display: flex; 1245 align-items: center; 1246 padding: 8px 15px; 1247 border-bottom: 1px solid #ddebf9; 1248 transition: 0.3s;
1249 } 1250 .p-item:hover { transform: translateX(10px); border-bottom-color: #dc3545; } 1251 1252 .p-number { 1253 font-weight: 800; 1254 color: #247db8; 1255 font-size: 0.9rem; 1256 margin-right: 20px; 1257 opacity: 0.5; 1258 } 1259 .p-text { font-weight: 500; color: #333; } 1260 1261 /* Statement Box (Dark Card) */ 1262 .statement-box { 1263 min-height: 400px; 1264 display: flex; 1265 flex-direction: column; 1266 justify-content: center; 1267 overflow: hidden; 1268 } 1269 1270 .tracking-widest { letter-spacing: 3px; font-size: 0.75rem; } 1271 1272 .quote-icon { 1273 font-size: 3rem; 1274 /* opacity: 0.1; */ 1275 position: absolute; 1276 top: 30px; 1277 right: 40px; 1278 } 1279 1280 .tech-grid { 1281 position: absolute; 1282 bottom: -6px; 1283 right: -12px; 1284 width: 150px; 1285 height: 150px; 1286 background-image: radial-gradient(#dc35453b 2px, transparent 2px); 1287 background-size: 20px 20px; 1288 } 1289 1290 .rounded-5 { border-radius: 2.5rem !important; } 1291 1292 .p-item:hover { transform: translateX(10px); border-bottom-color: #35a7dc; } 1293 1294 1295 @keyframes slideInFromRight { 1296 0% { 1297 transform: translateX(100%); 1298 opacity: 0; 1299 } 1300 1301 100% { 1302 transform: translateX(0); 1303 opacity: 1; 1304 } 1305 } 1306 1307 .animate-right-to-left { 1308 animation: slideInFromRight 1s ease-in-out; 1309 } 1310 1311 @media screen and (max-width: 430px) { 1312 .hero-section { 1313 height:100% !important; 1314 padding-top: 55px !important; 1315 } 1316 .col-md-3-test { 1317 flex: 0 0 auto; 1318 width: 50.666667% !important; 1319 padding-left:20%; 1320 } 1321 1322 .col-md-3-test h6{ 1323 text-align: center !important; 1324 } 1325 1326 } 1327 1328 1329 @media screen and (min-width:431px) and (max-width: 768px) { 1330 .hero-section { 1331 height:100% !important; 1332 padding-top: 55px !important 1333 } 1334 .col-md-3-test { 1335 flex: 0 0 auto; 1336 width: 47.666667% !important; 1337 } 1338 1339 } 1340 1341 @media screen and (min-width: 769px) { 1342 .hero-section { 1343 height:100% !important; 1344 } 1345 } 1346 1347 </style> 1348 </head> 1349 1350 <body> 1351 1352 1353 <section class="py-5 mt-5 overflow-hidden position-relative"> 1354 <h2 class=" mb-3 animate-on-scroll">From Attendance to Payroll 1355 <span class="" style="color:#247db8">One Integrated Platform</span> 1356 </h2> 1357 <div class="bg-split-accent d-none d-lg-block"></div> 1358 <div class="container py-lg-4"> 1359 <div class="row align-items-center"> 1360 1361 <div class="col-lg-5" data-aos="zoom-in"> 1362 <div class=" p-3 "> 1363 <div class=""> 1364 <p class=" mb-2 animate-on-scroll" >A complete platform from employee onboarding to payroll processing all in one unified system.</p> 1365 <div class="problem-items "> 1366 <div class="p-item animate-on-scroll" data-aos="fade-left" data-aos-delay="100"> 1367 <span class="p-number">01</span> 1368 <span class="p-text">Employee Management & Profile Control</span> 1369 </div> 1370 <div class="p-item animate-on-scroll" data-aos="fade-left" data-aos-delay="200"> 1371 <span class="p-number">02</span> 1372 <span class="p-text">Leave Management & Approval Workflow</span> 1373 </div> 1374 <div class="p-item animate-on-scroll" data-aos="fade-left" data-aos-delay="300">
1375 <span class="p-number">03</span> 1376 <span class="p-text">Shift Management & Scheduling</span> 1377 </div> 1378 <div class="p-item animate-on-scroll" data-aos="fade-left" data-aos-delay="400"> 1379 <span class="p-number">04</span> 1380 <span class="p-text">Payroll Integration & Salary Automation</span> 1381 </div> 1382 <div class="p-item animate-on-scroll" data-aos="fade-left" data-aos-delay="500"> 1383 <span class="p-number">05</span> 1384 <span class="p-text">Mobile Access & Self-Service Portal</span> 1385 </div> 1386 <div class="p-item animate-on-scroll" data-aos="fade-left" data-aos-delay="600"> 1387 <span class="p-number">06</span> 1388 <span class="p-text">GPS Attendance & Location Tracking</span> 1389 </div> 1390 <div class="p-item animate-on-scroll" data-aos="fade-left" data-aos-delay="700"> 1391 <span class="p-number">07</span> 1392 <span class="p-text">Real-Time Notifications & Alerts</span> 1393 </div> 1394 </div> 1395 </div> 1396 </div> 1397 </div> 1398 <div class="col-lg-7 mb-5 mb-lg-0 px-3" data-aos="fade-up"> 1399 <img src="images/attendify_image.png" alt="Workforce Attendance" loading="lazy" class="animate-right-to-left"/> 1400 1401 </div> 1402 1403 1404 </div> 1405 </div> 1406 </section> 1407 1408 1409 <section class="py-5 mt-5 border-top border-bottom bg-light" > 1410 <div class="container"> 1411 <h2 class="text-center fw-light mb-3">Visitor Management <span class="text-secondary"></span></h2> 1412 <p class="text-center " >AI-Powered Visitor Identification: Recognize. Approve. Welcome.</p> 1413 <p class="text-center mb-4">Every external visitor or unknown individual is treated under structured Visitor Management</p> 1414 <div class="row g-0"> 1415 <div class="col-md-4 px-3 py-0 border-end animate-on-scroll" > 1416 <h6 class=" mb-4 text-primary">When a Visitor Arrives</h6> 1417 <div class="feature-item animate-on-scroll d-flex"> 1418 <span class="d-block text-primary fw-bold mt-1 me-3">01</span> 1419 <p class="">Visitor identity is captured instantly through AI facial recognition</p> 1420 </div> 1421 <div class="feature-item animate-on-scroll d-flex"> 1422 <span class="d-block text-primary fw-bold mt-1 me-3">02</span> 1423 <p class="">Host approval is requested digitally</p> 1424 </div> 1425 <div class="feature-item animate-on-scroll d-flex"> 1426 <span class="d-block text-primary fw-bold mt-1 me-3">03</span> 1427 <p class="">Access is granted or denied based on approval</p> 1428 </div> 1429 <div class="feature-item animate-on-scroll d-flex"> 1430 <span class="d-block text-primary fw-bold mt-1 me-3">04</span> 1431 <p class="">Entry is time-stamped and securely recorded</p> 1432 </div> 1433 1434 </div> 1435 1436 <div class="col-md-4 px-3 border-end py-0 animate-on-scroll"> 1437 <h6 class=" mb-4 text-success ">Pre-Approved (Whitelisted) Visitors</h6> 1438 1439 <div class="feature-item animate-on-scroll d-flex"> 1440 <span class="d-block text-success fw-bold mt-1 me-3">01</span> 1441 <p class="">System recognizes the pre-approved visitor</p> 1442 </div> 1443 <div class="feature-item animate-on-scroll d-flex">
1444 <span class="d-block text-success fw-bold mt-1 me-3">02</span> 1445 <p class="">Access period is validated automatically</p> 1446 </div> 1447 <div class="feature-item animate-on-scroll d-flex"> 1448 <span class="d-block text-success fw-bold mt-1 me-3">03</span> 1449 <p class="">Entry is allowed during the approved duration</p> 1450 </div> 1451 <div class="feature-item animate-on-scroll d-flex"> 1452 <span class="d-block text-success fw-bold mt-1 me-3">04</span> 1453 <p class="">Visit details are securely logged</p> 1454 </div> 1455 <p class="fs-6">For vendors, maintenance teams, or project staff requiring access for multiple days.</p> 1456 1457 </div> 1458 <div class="col-md-4 px-3 py-0 animate-on-scroll"> 1459 <h6 class=" mb-4 text-danger ">Restricted or Blacklisted Individuals</h6> 1460 1461 <div class="feature-item animate-on-scroll d-flex"> 1462 <span class="d-block text-danger fw-bold mt-1 me-3">01</span> 1463 <p class="">System detects the individual immediately</p> 1464 </div> 1465 <div class="feature-item animate-on-scroll d-flex"> 1466 <span class="d-block text-danger fw-bold mt-1 me-3">02</span> 1467 <p class="">Security teams receive instant alerts</p> 1468 </div> 1469 <div class="feature-item animate-on-scroll d-flex"> 1470 <span class="d-block text-danger fw-bold mt-1 me-3">03</span> 1471 <p class="">Security personnel stop the individual immediately</p> 1472 </div> 1473 <div class="feature-item animate-on-scroll d-flex"> 1474 <span class="d-block text-danger fw-bold mt-1 me-3">04</span> 1475 <p class="">Incident is recorded for security monitoring</p> 1476 </div> 1477 <p class="fs-6">Ensures unauthorized individuals cannot access the premises.</p> 1478 1479 </div> 1480 </div> 1481 </div> 1482</section> 1483 1484 <div class="container mt-5 pt-4" hidden> 1485 <section> 1486 <h2 class="mb-3">Integrated Visitor Management </h2> 1487 <p class=" mb-4">Attendify HR strengthens perimeter control by ensuring every external entry is verified and authorized.</p> 1488 <div class="row mb-4"> 1489 <div class="col-md-4 mb-4"> 1490 <div class="card"> 1491 <img src="images/ai_facial.png" loading="lazy" class="card-img-top " 1492 alt="Proxy attendance prevention AI"> 1493 <div class="card-body"> 1494 <h6 class="card-title text-center">Facial identity is captured automatically</h6> 1495 1496 </div> 1497 </div> 1498 </div> 1499 1500 <div class="col-md-4 mb-4"> 1501 <div class="card"> 1502 <img src="images/instant.png" loading="lazy" class="card-img-top " 1503 alt="Secure AI attendance platform"> 1504 <div class="card-body"> 1505 <h6 class="card-title text-center">Status is classified (guest, contractor, VIP, restricted)</h6> 1506 1507 </div> 1508 </div> 1509 </div> 1510 <div class="col-md-4 mb-4"> 1511 <div class="card"> 1512 <img src="images/Quick.png" loading="lazy" class="card-img-top " 1513 alt="Contactless check-in system"> 1514 <div class="card-body"> 1515 <h6 class="card-title text-center">Digital approval is sent to the concerned authority</h6> 1516 1517 </div> 1518 </div> 1519 </div> 1520 1521 <div class="col-md-4 mb-4"> 1522 <div class="card"> 1523 <img src="images/Anytime-Access.png" loading="lazy" class="card-img-top" 1524 alt="Real-time attendance monitoring"> 1525 <div class="card-body"> 1526 <h6 class="card-title text-center">Access is granted or declined electronically </h6> 1527 1528 </div> 1529 </div> 1530 </div> 1531 1532 1533 <div class="col-md-4 mb-4"> 1534 <div class="card"> 1535 <img src="images/center_cloud.png" loading="lazy" class="card-img-top" 1536 alt="Real-time attendance monitoring"> 1537 <div class="card-body"> 1538 <h6 class="card-title text-center">Visit logs are securely recorded </h6> 1539 1540 </div> 1541 </div> 1542 </div> 1543 <p class="mb-3">Returning visitors are recognized instantly, reducing repeated registration effort.</p> 1544 1545 </div> 1546 </section> 1547 1548 <section class="py-5" hidden> 1549 <div class="container"> 1550 <h2 class=" mb-4">Smart Controls Include:</h2> 1551 <div class="row"> 1552 <div class="col-lg-8"> 1553 <ul class="list-unstyled"> 1554 <li class="mb-3 d-flex align-items-start"> 1555 <i class="fas fa-check-circle text-primary mt-1 me-3"></i>
1556 <span>Priority entry for pre-approved guests</span> 1557 </li> 1558 <li class="mb-3 d-flex align-items-start"> 1559 <i class="fas fa-check-circle text-primary mt-1 me-3"></i> 1560 <span>Temporary whitelisting for contractors</span> 1561 </li> 1562 <li class="mb-3 d-flex align-items-start"> 1563 <i class="fas fa-check-circle text-primary mt-1 me-3"></i> 1564 <span>Automatic blacklist detection with instant alerts</span> 1565 </li> 1566 <li class="mb-3 d-flex align-items-start"> 1567 <i class="fas fa-check-circle text-primary mt-1 me-3"></i> 1568 <span>Complete audit trail for compliance</span> 1569 </li> 1570 </ul> 1571 <p>Every visit is structured, authorized, and traceable</p> 1572 </div> 1573 </div> 1574 </div> 1575 </section> 1576 1577 1578 </div> 1579 1580 <div class="container mt-5 pt-5" > 1581 <section> 1582 <h2 class="mb-4 industry-h2 animate-on-scroll">Real-Time <span class="text-success">Monitoring & Compliance</span></h2><br> 1583 <div class="row gap-3 card-medias" > 1584 <div class="col-md-3-test mb-5"> 1585 <div class="card-industry animate-on-scroll"> 1586 1587 <div class=" "> 1588 <h5 class="card-titleround">Live dashboard visibility </h5> 1589 </div> 1590 </div> 1591 </div> 1592 <div class="col-md-3-test mb-5 "> 1593 <div class="card-industry animate-on-scroll"> 1594 1595 <div class=""> 1596 <h5 class="card-titleround">Multi-branch centralized control </h5> 1597 </div> 1598 </div> 1599 </div> 1600 <div class="col-md-3-test mb-5 "> 1601 <div class="card-industry animate-on-scroll"> 1602 1603 <div class=""> 1604 <h5 class="card-titleround">Complete access audit trail </h5> 1605 </div> 1606 </div> 1607 </div> 1608 <div class="col-md-3-test mb-5 "> 1609 <div class="card-industry animate-on-scroll"> 1610 1611 <div class=""> 1612 <h5 class="card-titleround mb-1">Payroll-ready attendance reports</h5> 1613 </div> 1614 </div> 1615 </div> 1616 <div class="col-md-3-test mb-5 "> 1617 <div class="card-industry animate-on-scroll"> 1618 1619 <div class=""> 1620 <h5 class="card-titleround">On-premise secure deployment </h5> 1621 1622 </div> 1623 </div> 1624 </div> 1625 <div class="col-md-3-test mb-5 "> 1626 <div class="card-industry animate-on-scroll"> 1627 1628 <div class=""> 1629 <h5 class="card-titleround">Encrypted data storage </h5> 1630 </div> 1631 </div> 1632 </div> 1633 <div class="col-md-3-test mb-5 "> 1634 <div class="card-industry animate-on-scroll"> 1635 1636 <div class=""> 1637 <h5 class="card-titleround">DPDP Act aligned framework</h5> 1638 </div> 1639 </div> 1640 </div> 1641 <div class="col-md-3-test mb-5 "> 1642 <h6 class="my-4 animate-on-scroll">Your workforce and visitor data remain protected within your infrastru
1642cture.</h6> 1643 1644 </div> 1645 1646 </div> 1647 </section> 1648 </div> 1649 1650 <!-- Cards Hovering --> 1651 <section class="py-5 bg-light" id="solutions-sectors" hidden> 1652 <div class="container"> 1653 <div class="text-center mb-5" data-aos="fade-up"> 1654 <h2 class="animate-on-scroll "><span class="text-info">Industries </span> We Serve</h2> 1655 </div> 1656 1657 <div class="row g-4"> 1658 <div class="col-lg-4 col-md-6" data-aos="fade-up" data-aos-delay="100"> 1659 <div class="solution-card active-accent"> 1660 <div class="d-flex"> 1661 <p class="card-icon"><i class="fas fa-building"></i></p> 1662 <h4 class="ms-3 mt-3">Corporate Offices <p class="feature-tags mt-2 mb-0">(IT Parks & IT Campuses)</p></h4> 1663 </div> 1664 <p class="benefit-text text-justify">AI-powered walk-through attendance uses group facial recognition to streamline peak-hour entry. </p> 1665 </div> 1666 </div> 1667 1668 <div class="col-lg-4 col-md-6" data-aos="fade-up" data-aos-delay="300"> 1669 <div class="solution-card active-accent"> 1670 <div class="d-flex"> 1671 <!-- <p class="card-icon"><i class="fas fa-industry"></i></p> --> 1672 <p class="card-icon"><i class="fas fa-laptop-code"></i></p> 1673 <h4 class="ms-3 mt-3 mb-1">Manufacturing & Industries</h4> 1674 </div> 1675 <p class="feature-tags"></p> 1676 <p class="benefit-text">Accurate shift tracking, zero proxy attendance, and reliable performance during high-footfall operations.</p> 1677 </div> 1678 </div> 1679 1680 <div class="col-lg-4 col-md-6" data-aos="fade-up" data-aos-delay="200"> 1681 <div class="solution-card active-accent"> 1682 <div class="d-flex"> 1683 <p class="card-icon"><i class="fas fa-hospital"></i></p> 1684 <h4 class="ms-3 mt-3 mb-1">Healthcare & Hospitals</h4> 1685 </div> 1686 <p class="feature-tags"></p> 1687 <p class="benefit-text">Precise shift tracking with secure access control and automated staff attendance for payroll accuracy.</p> 1688 </div> 1689 </div> 1690 1691 <!-- <div class="col-lg-4 col-md-6" data-aos="fade-up" data-aos-delay="400"> 1692 <div class="solution-card"> 1693 <div class="card-icon"><i class="fas fa-hospital-user"></i></div> 1694 <h4>Hospitals & Healthcare</h4> 1695 <p class="feature-tags">Ward Access ⢠Visitor Verification</p> 1696 <p class="benefit-text">Secured sensitive areas with minimal disruption and accurate staff logs.</p> 1697 </div> 1698 </div> 1699 1700 <div class="col-lg-4 col-md-6" data-aos="fade-up" data-aos-delay="500"> 1701 <div class="solution-card"> 1702 <div class="card-icon"><i class="fas fa-university"></i></div> 1703 <h4>Educational</h4> 1704 <p class="feature-tags">Student/Faculty Automation ⢠Visitor Tracking</p> 1705 <p class="benefit-text">Transparent attendance and reduced manual work for a safer campus.</p> 1706 </div> 1707 </div> 1708 1709 <div class="col-lg-4 col-md-6" data-aos="fade-up" data-aos-delay="600"> 1710 <div class="solution-card d-flex align-items-center justify-content-center border-dashed"> 1711 <div class="text-center"> 1712 <p class="mb-2">Need a custom fix?</p> 1713 <a href="contact.php" class="btn btn-sm btn-outline-dark rounded-pill">Talk to an Expert</a> 1714 </div> 1715 </div> 1716 </div> --> 1717 </div> 1718 </div> 1719</section> 1720 1721 <div class="mt-5 text-center"> 1722 <h3 class="animate-right-to-left text-dark">"Walk In. <span class="text-success">Get Verified.</span> Attendance Recorded."</h3> 1723 <div class="d-flex mt-5 justify-content-center p-4 rounded-4 shadow-sm border"> 1724 <h5 class="mt-2">Discover How Attendify Simplifies Attendance with AI Automation â </h5> 1725 <button id="brochure-download-btn" class="btn btn-primary px-4 py-2"> Download Brochure</button> 1726 </div> 1727 1728 </div> 1729 <style> 1730/* Base Modal Styling */ 1731#brochureModalCustom { 1732 display: none; 1733 position: fixed; 1734 z-index: 9999; 1735 left: 0; 1736 top: 0; 1737 width: 100%; 1738 height: 100%; 1739 background-color: rgba(0,0,0,0.6); 1740} 1741 1742#brochureModalCustom .modal-content { 1743 background-color: #fefefe; 1744 margin: 10% auto; 1745 padding: 25px; 1746 border-radius: 12px; 1747 width: 90%; 1748 max-width: 450px; 1749 box-shadow: 0 5px 15px rgba(0,0,0,0.3); 1750} 1751 1752#brochureModalCustom input, 1753#brochureModalCustom select { 1754 width: 100%; 1755 padding: 10px; 1756 margin: 5px 0; 1757 display: inline-block; 1758 border: 1px solid #ccc; 1759 border-radius: 5px; 1760 box-sizing: border-box; 1761} 1762</style> 1763 <section class=" text-center py-5" hidden> 1764 <div class="container"> 1765 <h5 class=" fw-bold text-uppercase mb-3 mt-3 animate-on-scroll" style="letter-spacing: 3px;">Ideal For</h5> 1766 1767 <div class="row g-4 justify-content-center"> 1768 <div class="col-lg-2 col-md-4 col-sm-6"> 1769 <div class="ideal-box animate-on-scroll"> 1770 <div class="ideal-icon"> 1771 <i class="fas fa-building"></i> 1772 </div> 1773 <h6 class="fs-5" class="fs-5">Corporate Offices</h6> 1774 </div> 1775 </div> 1776 1777 <div class="col-lg-2 col-md-4 col-sm-6"> 1778 <div class="ideal-box animate-on-scroll"> 1779 <div class="ideal-icon"> 1780 <i class="fas fa-laptop-code"></i> 1781 </div> 1782 <h6 class="fs-5">Industrial facilities</h6> 1783 </div> 1784 </div> 1785 1786 <div class="col-lg-2 col-md-4 col-sm-6"> 1787 <div class="ideal-box animate-on-scroll"> 1788 <div class="ideal-icon"> 1789 <i class="fas fa-microchip"></i> 1790 </div> 1791 <h6 class="fs-5">Multi-branch enterprises</h6> 1792 </div> 1793 </div> 1794 1795 <div class="col-lg-2 col-md-4 col-sm-6"> 1796 <div class="ideal-box animate-on-scroll"> 1797 <div class="ideal-icon"> 1798 <i class="fas fa-headset"></i> 1799 </div> 1800 <h6 class="fs-5">Healthcare institutions</h6> 1801 </div> 1802 </div> 1803 1804 <div class="col-lg-2 col-md-4 col-sm-6"> 1805 <div class="ideal-box animate-on-scroll"> 1806 <div class="ideal-icon"> 1807 <i class="fas fa-flask"></i> 1808 </div> 1809 <h6 class="fs-5">Large administrative campuses</h6> 1810 </div> 1811 </div> 1812 <p>From 50 to 10,000+ individuals scalable without operational disruption</p> 1813 </div> 1814 1815 1816 <div class="mt-5"> 1817 <h3 class="animate-right-to-left text-dark">"Smarter <span class="text-info">Attendance</span>"</h3> 1818 <h3 class="animate-left-to-right text-dark">"<span class="text-info">Stronger</span> Access Control"</h3> 1819 <!-- <h2 class="display-7 fw-bold text-dark">"Build a Smarter, Safer Workplace"</h2> --> 1820 </div> 1821 </div> 1822 </section> 1823 1824 1825 1826 <div class="container my-5 py-5" hidden> 1827 <div class="row"> 1828 <section class=""> 1829 <div class="container"> 1830 <div class="row align-items-center"> 1831 <h2 class="text-black text-center">Benefits That Elevate Every Event </h2> 1832 <div class="col-lg-6 col-12 d-flex justify-content-center"> 1833 <img src="images/benifit.png" loading="lazy" style=" width: 150%; height:auto;" 1834 alt="Biometric attendance with AI" class="mobile_gif"> 1835 </div> 1836 <div class="col-lg-6 col-12"> 1837 1838 <div style="display: flex; align-items: center;"> 1839 <img src="images/prestige.png" loading="lazy" alt="Biometric attendance with AI" 1840 style="width: 50px !important; border-radius: 50%; margin-right: 10px;"> 1841 <div> 1842 <h6 class="mb-0 mt-2">Premium Guest Welcome</h6> 1843 <p class="mb-2">A sleek, touchless check-in creates an impressive first 1844 impression and sets a high standard for the entire event. </p> 1845 </div> 1846 </div> 1847 <div style="display: flex; align-items: center;"> 1848 <img src="images/saving.png" loading="lazy" alt="Biometric attendance with AI" 1849 style="width: 50px !important; border-radius: 50%; margin-right: 10px;"> 1850 <div> 1851 <h6 class="mb-0 mt-2">Time Saved</h6> 1852 <p class="mb-2">AI-driven verification processes attendees within seconds, 1853 cutting down long queues and making check-ins effortless.</p> 1854 </div> 1855 </div> 1856 1857 <div style="display: flex; align-items: center;"> 1858 <img src="images/real-time.png" loading="lazy" alt="Image corporate" 1859 style="width: 50px !important; border-radius: 50%; margin-right: 10px;"> 1860 <div> 1861 <h6 class="mb-0 mt-2">Real-Time Control</h6> 1862 <p class="mb-2"> 1863 rganizers can monitor attendance live, access instant insights, and 1864 manage multiple locations seamlessly through a centralized dashboard. 1865 </p> 1866 </div> 1867 </div> 1868 <div style="display: flex; align-items: center;"> 1869 <img src="images/scalability.png" loading="lazy" alt="Image corporate" 1870 style="width: 50px !important; border-radius: 50%; margin-right: 10px;"> 1871 <div> 1872 <h6 class="mb-0 mt-2">Scalable & Future-Proof</h6> 1873 <p class="mb-2">
1874 Built to support events of any sizewhether hybrid, in-person, or 1875 globalensuring flexibility and readiness for future demands. 1876 </p> 1877 </div> 1878 </div> 1879 <div style="display: flex; align-items: center;"> 1880 <img src="images/satisfaction.png" loading="lazy" alt="Image corporate" 1881 style="width: 50px !important; border-radius: 50%; margin-right: 10px;"> 1882 <div> 1883 <h6 class="mb-0 mt-2">Memorable Experience</h6> 1884 <p class="mb-2"> 1885 A smooth, VIP-style entry creates a professional and welcoming 1886 atmosphere, leaving a lasting impression on every guest. 1887 </p> 1888 </div> 1889 </div> 1890 </div> 1891 </div> 1892 </div> 1893 </section> 1894 </div> 1895 </div> 1896 1897 <div class="row" hidden> 1898 <div class="text-center mb-4"> 1899 <h1>Why Organizers Choose Modern Event Check-Ins</h1><br /> 1900 </div> 1901 <section class="faq-section section-padding"> 1902 <div class="container"> 1903 <div class="row"> 1904 <div class="col-lg-6 col-12"> 1905 <h2 class="mb-4"> 1906 </h2> 1907 </div> 1908 <div class="clearfix"></div> 1909 1910 <div class="col-lg-6 col-12"> 1911 <div class="accordion"> 1912 <div class="accordion-item"> 1913 <!-- <h4 class="accordion-header" id="headingOne"> 1914 Photo Capture 1915 </h4> 1916 <br> 1917 </div> 1918 <div class="accordion-item"> 1919 <p> 1920 Efficiently capture high-resolution images of students during exams. Our application guarantees that each photo is clear and accurately linked to the corresponding student record, thereby improving verification precision and enhancing exam monitoring efficiency. 1921 1922 </p> --> 1923 <ul style="list-style-type:circle;"> 1924 <li> 1925 <h6 class="mb-0">Lightning-Fast Check-Ins</h6> 1926 <p>Guests verified in <b>under three secondsno</b> queues, no delays. 1927 </p> 1928 </li> 1929 <li> 1930 <h6 class="mb-0">Enterprise-Grade Security</h6> 1931 <p>AI facial recognition and <b>role-based access</b> keep every entry 1932 point secure.</p> 1933 </li> 1934 <li> 1935 <h6 class="mb-0">Real-Time Oversight</h6> 1936 <p><b>Live dashboards</b> and instant sync give you total control across 1937 all venues.</p> 1938 </li> 1939 <li> 1940 <h6 class="mb-0">VIP-Level Guest Experience</h6> 1941 <p>Personalized welcomes and <b>touchless entry</b> make attendees feel 1942 valued from the start.</p> 1943 </li> 1944 </ul> 1945 1946 </div> 1947 </div> 1948 </div> 1949 <div class="col-lg-6 col-12 text-center"> 1950 <img src="images/y-organization.png" loading="lazy" 1951 style=" width: 100%; height:auto; border-radius:4px;" alt="Think" 1952 class="mobile_gif m-5 "> 1953 </div> 1954 </div> 1955 </div> 1956 </section> 1957 </div> 1958 1959 <br /><br /> 1960 <div class="row"> 1961 1962 <section class="faq-section section-padding" hidden> 1963 <div class="container"> 1964 <div class="row"> 1965 <div class="col-lg-6 col-12"> 1966 <h2 class="mb-4"> 1967 </h2> 1968 </div> 1969 <div class="clearfix"></div> 1970 1971 <div class="col-lg-12 col-12"> 1972 <div class="accordion" id="accordionExample"> 1973 <div class="accordion-item"> 1974 <h4 class="accordion-header mb-3 text-center" id="headingOne">Outcomes That 1975 Matter </h4> 1976 </div> 1977 1978 <div class="accordion-item d-flex flex-row justify-content-between outcome-columns" 1979 style="font-size: 13px;"> 1980 <div class="d-flex flex-column align-items-center"><img 1981 src="images/reduction.png" loading="lazy" 1982 style="width:15%; height:auto;" alt="Reduction Time" class=" mb-2 "> 1983 <div class="px-4"> 1984 <p class="text-center"><b>Faster Entry</b></p> 1985 <p>Achieve up to 90% reduction in queue times, ensuring smooth and 1986 efficient check-ins.</p> 1987 </div> 1988 </div> 1989 <div class="d-flex flex-column align-items-center"><img 1990 src="images/verification.png" loading="lazy" 1991 style="width:21%; height:auto;" alt="Verification" class=" mb-1"> 1992 <div class="px-4"> 1993 <p class="text-center"><b>Accurate Verification</b></p> 1994 <p>100% verified entries, ensuring secure access for all attendees.</p> 1995 </div> 1996 </div> 1997 <div class="d-flex flex-column align-items-center"><img src="images/sync.png" 1998 loading="lazy" style="width:18%; height:auto;" alt="Instant Sync" 1999 class=" "> 2000 <div class="px-4"> 2001 <p class="text-center"><b>Flawless Multi-Venue Management</b></p> 2002 <p>Smooth coordination across multiple entry points for hassle-free 2003 event operations.</p> 2004 </div> 2005 </div> 2006 </div> 2007 </div> 2008 </div> 2009 2010 </div> 2011 2012 </div> 2013 </div> 2014 </section> 2015 2016 2017 2018 </div> 2019 2020
2020<script> 2021 document.addEventListener('DOMContentLoaded', function () { 2022 const readMoreLinks = document.querySelectorAll('.read-more'); 2023 2024 readMoreLinks.forEach(link => { 2025 link.addEventListener('click', function () { 2026 // Collapse all cards before expanding the current one 2027 readMoreLinks.forEach(otherLink => { 2028 if (otherLink !== this) { 2029 const otherExpandedText = otherLink.previousElementSibling; 2030 otherExpandedText.classList.add('d-none'); 2031 otherLink.textContent = 'Read more...'; 2032 } 2033 }); 2034 2035 // Toggle the current card 2036 const expandedText = this.previousElementSibling; 2037 expandedText.classList.toggle('d-none'); 2038 this.textContent = expandedText.classList.contains('d-none') ? 'Read more...' : 'Read less...'; 2039 }); 2040 }); 2041 }); 2042 </script>
2042 2043 2044 2045 2046</div> 2047 2048 2049 2050<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/[email protected]/font/bootstrap-icons.css"> 2051 2052<style> 2053 :root { 2054 --footer-bg: #0a0b10; 2055 --accent-color: #c68213; /* Matching your theme gold/orange */ 2056 --text-muted: rgba(255, 255, 255, 0.7); 2057 } 2058 2059 .footer-section { 2060 background: linear-gradient(rgba(10, 11, 16, 0.8), rgba(10, 11, 16, 0.95)), url('images/footer.webp'); 2061 background-repeat: no-repeat; 2062 background-size: cover; 2063 background-position: center; 2064 color: #fff; 2065 font-family: 'Inter', sans-serif; 2066 } 2067 2068 .footer-logo { 2069 max-width: 200px; 2070 height: auto; 2071 margin-bottom: 1.5rem; 2072 } 2073 2074 .footer-heads { 2075 color: #fff; 2076 font-weight: 600; 2077 font-size: 1.1rem; 2078 text-transform: uppercase; 2079 letter-spacing: 1px; 2080 margin-bottom: 1.5rem; 2081 position: relative; 2082 } 2083 2084 /* Subtle underline for headings */ 2085 .footer-heads::after { 2086 content: ''; 2087 position: absolute; 2088 left: 0; 2089 bottom: -8px; 2090 width: 30px; 2091 height: 2px; 2092 background-color: var(--accent-color); 2093 } 2094 2095 .anchor-text { 2096 color: var(--text-muted); 2097 text-decoration: none; 2098 font-size: 14px; 2099 transition: all 0.3s ease; 2100 display: inline-block; 2101 } 2102 2103 .anchor-text:hover { 2104 color: var(--accent-color); 2105 transform: translateX(5px); 2106 } 2107 2108 .footer-links { 2109 margin-bottom: 10px; 2110 list-style: none; 2111 } 2112 2113 .footer-links i { 2114 font-size: 10px; 2115 margin-right: 8px; 2116 color: var(--accent-color); 2117 } 2118 2119 .socialLinks { 2120 background: rgba(255, 255, 255, 0.05); 2121 color: #fff; 2122 width: 38px; 2123 height: 38px; 2124 display: flex; 2125 align-items: center; 2126 justify-content: center; 2127 border-radius: 8px; 2128 margin-right: 10px; 2129 font-size: 18px; 2130 transition: all 0.3s ease; 2131 border: 1px solid rgba(255, 255, 255, 0.1); 2132 } 2133 2134 .socialLinks:hover { 2135 background: var(--accent-color); 2136 color: #fff; 2137 transform: translateY(-3px); 2138 border-color: var(--accent-color); 2139 } 2140 2141 .footer-bottom { 2142 border-top: 1px solid rgba(255, 255, 255, 0.08); 2143 padding: 20px 0; 2144 margin-top: 3rem; 2145 } 2146 2147 .footer-about-text { 2148 font-size: 14px; 2149 line-height: 1.6; 2150 color: var(--text-muted); 2151 } 2152 2153 @media (max-width: 768px) { 2154 .footer-heads { margin-top: 2rem; } 2155 } 2156 2157 #cookieConsentBanner { 2158 position: fixed; 2159 bottom: 0; 2160 left: 0; 2161 right: 0; 2162 z-index: 99999; 2163 background: #fff; 2164 box-shadow: 0 -4px 24px rgba(0,0,0,0.12); 2165 padding: 18px 70px; 2166 display: none; 2167 align-items: center; 2168 justify-content: space-between; 2169 gap: 20px; 2170 flex-wrap: wrap; 2171 font-family: inherit; 2172 border-top: 1px solid #e5e7eb; 2173 } 2174 #cookieConsentBanner.show { display: flex; } 2175 #cookieConsentBanner .cc-text { 2176 flex: 1; 2177 min-width: 260px; 2178 font-size: 14px; 2179 line-height: 1.5; 2180 color: #333; 2181 margin: 0; 2182 } 2183 #cookieConsentBanner .cc-text a { 2184 color: #0d6efd; 2185 text-decoration: underline; 2186 } 2187 #cookieConsentBanner .cc-actions { 2188 display: flex; 2189 gap: 10px; 2190 flex-shrink: 0; 2191 } 2192 #cookieConsentBanner button { 2193 border: none; 2194 border-radius: 6px; 2195 padding: 10px 20px; 2196 font-size: 14px; 2197 font-weight: 600; 2198 cursor: pointer; 2199 white-space: nowrap; 2200 } 2201 #cookieAccept { 2202 background: #0d6efd; 2203 color: #fff; 2204 } 2205 #cookieAccept:hover { background: #0b5ed7; } 2206 #cookieReject { 2207 background: #f1f2f6; 2208 color: #333; 2209 } 2210 #cookieReject:hover { background: #e5e7eb; } 2211 2212 @media (max-width: 576px) { 2213 #cookieConsentBanner { flex-direction: column; align-items: stretch; text-align: center; } 2214 #cookieConsentBanner .cc-actions { justify-content: center; } 2215 } 2216</style> 2217 2218<footer class="footer-section pt-5"> 2219 <div class="container"> 2220 <div class="row gy-4"> 2221 2222 <div class="col-lg-4 col-md-12"> 2223 <a href="https://attendify.ai/" aria-label="Link to Our Attendify Home Page "> 2224 <img src="images/AttendifyLogos.png" alt="Attendify Logo" class="footer-logo" loading="lazy"> 2225 </a> 2226 <h5 class="fw-bold mb-3" style="color:#fff">Recognize. Track. Simplify.</h5> 2227 <p class="footer-about-text pe-lg-5"> 2228 Experience smarter attendance with AI-powered face recognition. Attendify doesnât just record time, it understands presence. 2229 </p> 2230 2231 </div> 2232 2233 <div class="col-lg-3 col-md-4 col-6"> 2234 <h4 class="footer-heads">Solutions</h4> 2235 <ul class="p-0"> 2236 <li class="footer-links"><i class="bi bi-chevron-right"></i><a class="anchor-text" href="hrms.php">HRMS Attendance</a></li> 2237 <li class="footer-links"><i class="bi bi-chevron-right"></i><a class="anchor-text" href="classroom.php">Classroom Attendance</a></li> 2238 <li class="footer-links"><i class="bi bi-chevron-right"></i><a class="anchor-text" href="fusion.php">Exam Attendance</a></li> 2239 <li class="footer-links"><i class="bi bi-chevron-right"></i><a class="anchor-text" href="aisecurity.php">AI Security</a></li> 2240 <!-- <li class="footer-links"><i class="bi bi-chevron-right"></i>
2240<a class="anchor-text" href="campuses.php">Campus Security</a></li> 2241 <li class="footer-links"><i class="bi bi-chevron-right"></i><a class="anchor-text" href="gatesense.php">Gate Security</a></li> --> 2242 </ul> 2243 </div> 2244 2245 <div class="col-lg-2 col-md-4 col-6"> 2246 <h4 class="footer-heads">Quick Links</h4> 2247 <ul class="p-0"> 2248 <li class="footer-links"><i class="bi bi-chevron-right"></i><a class="anchor-text" href="https://attendify.ai/">Home</a></li> 2249 <li class="footer-links"><i class="bi bi-chevron-right"></i><a class="anchor-text" href="blog.php">Blogs</a></li> 2250 <li class="footer-links"><i class="bi bi-chevron-right"></i><a class="anchor-text" href="terms.php">Terms of Service</a></li> 2251 <li class="footer-links"><i class="bi bi-chevron-right"></i><a class="anchor-text" href="privacy.php">Privacy Policy</a></li> 2252 </ul> 2253 </div> 2254 2255 <div class="col-lg-3 col-md-4 col-12"> 2256 <h4 class="footer-heads">Stay Updated</h4> 2257 <p class="footer-about-text mb-4"> 2258 Get the latest insights on AI security and workforce trends. 2259 </p> 2260 <a href="index.php#contact-form" class="btn btn-outline-light btn-sm px-4 py-2" style="border-radius: 8px; border-color: var(--accent-color); color: var(--accent-color);"> 2261 Contact Us 2262 </a> 2263 <div class="social-links d-flex mt-4"> 2264 <a class="socialLinks" href="https://www.instagram.com/techkshetra.info/" rel="noopener" target="_blank" aria-label="Instagram"><i class="bi bi-instagram"></i></a> 2265 <a class="socialLinks" href="https://www.facebook.com/techkshetrainfo/" rel="noopener" target="_blank" aria-label="Facebook"><i class="bi bi-facebook"></i></a> 2266 <a class="socialLinks" href="https://www.youtube.com/@techkshetra" rel="noopener" target="_blank" aria-label="Youtube"><i class="bi bi-youtube"></i></a> 2267 <a class="socialLinks" href="https://www.linkedin.com/company/techkshetra-info-solutions-pvt-ltd/" rel="noopener" target="_blank" aria-label="Linkedin"><i class="bi bi-linkedin"></i></a> 2268 </div> 2269 </div> 2270 2271 </div> 2272 2273 <div class="footer-bottom text-center"> 2274 <div class="row align-items-center"> 2275 <div class="col-md-12"> 2276 <p class="mb-0 footer-about-text"> 2277 © 2026 <a href="https://techkshetrainfo.com/home/" aria-label="Link to Our Home Page" class="text-white text-decoration-none fw-bold">Techkshetra Info Solutions Pvt Ltd.</a> All Rights Reserved. 2278 </p> 2279 </div> 2280 </div> 2281 </div> 2282 </div> 2283 2284 <!-- Cookie Consent Banner --> 2285 2286 2287<div id="cookieConsentBanner"> 2288 <p class="cc-text"> 2289 We use cookies to improve your browsing experience, analyze site traffic, and personalize content. 2290 By clicking "Accept", you consent to our use of cookies. You can withdraw consent anytime. 2291 <a href="/privacy.php" target="_blank" rel="noopener">Read our Cookie Policy</a>. 2292 </p> 2293 <div class="cc-actions"> 2294 <button id="cookieReject" type="button">Reject</button> 2295 <button id="cookieAccept" type="button">Accept</button> 2296 </div> 2297</div> 2298 2299<div id="cookieSettingsReopen" title="Cookie preferences"> 2300 <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="#333" stroke-width="2"> 2301 <circle cx="12" cy="12" r="10"></circle> 2302 <circle cx="8.5" cy="8.5" r="1"></circle> 2303 <circle cx="15.5" cy="8.5" r="1"></circle> 2304 <circle cx="8.5" cy="15.5" r="1"></circle> 2305 <circle cx="15.5" cy="15.5" r="1"></circle> 2306 </svg> 2307</div> 2308 2309 2310 2311<div id="cookieConsentBanner"> 2312 <p class="cc-text"> 2313 We use cookies to improve your browsing experience, analyze site traffic, and personalize content. 2314 By clicking "Accept", you consent to our use of cookies. You can withdraw consent anytime. 2315 <a href="/privacy.php" target="_blank" rel="noopener">Read our Cookie Policy</a>.
2316 </p> 2317 <div class="cc-actions"> 2318 <button id="cookieReject" type="button">Reject</button> 2319 <button id="cookieAccept" type="button">Accept</button> 2320 </div> 2321</div> 2322
2323<script> 2324(function () { 2325 const CONSENT_KEY = "cookie_consent_status"; // "accepted" | "rejected" 2326 const banner = document.getElementById("cookieConsentBanner"); 2327 const acceptBtn = document.getElementById("cookieAccept"); 2328 const rejectBtn = document.getElementById("cookieReject"); 2329 2330 function getConsent() { 2331 return localStorage.getItem(CONSENT_KEY); 2332 } 2333 2334 function setConsent(value) { 2335 localStorage.setItem(CONSENT_KEY, value); 2336 // Also mirror to a cookie so it's readable server-side (e.g. PHP) if needed 2337 document.cookie = `${CONSENT_KEY}=${value};path=/;max-age=${60 * 60 * 24 * 180};SameSite=Lax`; 2338 } 2339 2340 function applyConsent(value) { 2341 if (value === "accepted") { 2342 loadNonEssentialScripts(); // e.g. analytics â see below 2343 window.dispatchEvent(new CustomEvent("cookieConsentAccepted")); 2344 } else if (value === "rejected") { 2345 window.dispatchEvent(new CustomEvent("cookieConsentRejected")); 2346 // optionally clear any non-essential cookies already set 2347 } 2348 } 2349 2350 function showBanner() { 2351 banner.classList.add("show"); 2352 } 2353 2354 function hideBanner() { 2355 banner.classList.remove("show"); 2356 } 2357 2358 // On load: show banner only if no decision has been made yet. 2359 // Once a decision exists, the banner (and any icon) stays hidden permanently. 2360 const existing = getConsent(); 2361 if (existing) { 2362 applyConsent(existing); 2363 } else { 2364 showBanner(); 2365 } 2366 2367 acceptBtn.addEventListener("click", function () { 2368 setConsent("accepted"); 2369 applyConsent("accepted"); 2370 hideBanner(); 2371 }); 2372 2373 rejectBtn.addEventListener("click", function () { 2374 setConsent("rejected"); 2375 applyConsent("rejected"); 2376 hideBanner(); 2377 }); 2378 2379 // Plug in any non-essential scripts here (Google Analytics, ads pixels, chat 2380 // widgets, etc.) â this function only runs after the user clicks Accept. 2381 function loadNonEssentialScripts() { 2382 // Example: 2383 // const gaScript = document.createElement("script"); 2384 // gaScript.src = "https://www.googletagmanager.com/gtag/js?id=YOUR_GA_ID"; 2385 // gaScript.async = true; 2386 // document.head.appendChild(gaScript); 2387 } 2388})(); 2389</script>
2389 2390 2391</footer> 2392 2393 2394<div id="myModal" class="modal"> 2395 <div class="modal-content"> 2396 <div style="display: flex; justify-content: space-between; align-items: center;"> 2397 <h4 style="margin: 0;">Reserve Your Demo Slot</h4> 2398 <span class="close" style="cursor: pointer; font-size: 24px;">×</span> 2399 </div> 2400 2401 <form id="details-form"> 2402 <div class="mb-2"> 2403 <input type="text" id="datetime-picker" aria-label="Select Date & Time" class="mb-0" placeholder="Select Date & Time" required /> 2404 <input type="hidden" id="datetime" aria-label="Selected Date and Time" name="datetime" /> 2405 <small class="text-danger error-msg"></small> 2406 </div> 2407 2408 <div class="d-flex"> 2409 <div class="mb-2 col-md-6 me-1"> 2410 <label for="name">Name <small 2411 class="text-danger">*</small></label> 2412 <input type="text" id="name" name="name" aria-label="Enter your name" class="my-0" placeholder="Enter name" required> 2413 <small class="text-danger error-msg"></small> 2414 </div> 2415 <div class="mb-2 col-md-6"> 2416 <label for="email">Email <small 2417 class="text-danger">*</small></label> 2418 <input type="email" id="email" name="email" aria-label="Enter your email" class="my-0" placeholder="Enter email" required> 2419 <small class="text-danger error-msg"></small> 2420 </div> 2421 </div> 2422 <div class="d-flex"> 2423 <div class="mb-2 col-md-6 me-1"> 2424 <label for="phone">Phone <small 2425 class="text-danger">*</small></label> 2426 <input type="text" id="phone" name="phone" aria-label="Enter your phone number" class="my-0" placeholder="Enter phone" required> 2427 <small class="text-danger error-msg"></small> 2428 </div> 2429 <div class="mb-2 col-md-6"> 2430 <label class="form-label mb-0 ">Select Product <small class="text-danger">*</small></label> 2431 <div class="input-group"> 2432 <select class="form-select" id="product_id" aria-label="Select product" name="product_id" > 2433 <option value="" selected>Select</option> 2434 <option value="5" >Attendify HR</option> 2435 <option value="20" >Attendify Classroom</option> 2436 <option value="4" >Exam Attendance</option> 2437 <option value="22" >Gatesense Security</option> 2438 </select> 2439 </div> 2440 <small class="text-danger error-msg"></small> 2441 </div> 2442 </div> 2443 <div class="mb-2"> 2444 <label for="address">Address <small 2445 class="text-danger">*</small></label> 2446 <input type="text" id="address" name="address" aria-label="Enter your address" class="my-0" placeholder="Enter address" required> 2447 <small class="text-danger error-msg"></small> 2448 </div> 2449 <div class="mb-2"> 2450 <label for="query">Query<small 2451 class="text-danger">*</small></label> 2452 <textarea id="query" name="query" class="my-0" aria-label="Enter your query" placeholder="Enter query" required></textarea> 2453 <small class="text-danger error-msg"></small> 2454 </div> 2455 <div style="text-align: right;"> 2456 <button type="submit" style="white-space: nowrap; border-radius: 25px; background: #c68213; color: white; padding: 10px 20px; border: none; cursor: pointer;"> Submit</button> 2457 </div> 2458 </form> 2459 </div> 2460</div> 2461 2462 2463 2464<div id="brochureModalCustom" class="modal"> 2465 <div class="modal-content"> 2466 <div style="display: flex; justify-content: space-between; align-items: center; border-bottom: 1px solid #eee; padding-bottom: 10px; margin-bottom: 15px;"> 2467 <h4 style="margin: 0; color: #333;">Get Your Free Brochure</h4>
2468 <span class="close-brochure" style="cursor: pointer; font-size: 28px; font-weight: bold; color: #888;">×</span> 2469 </div> 2470 2471 <form id="brochure-form-custom"> 2472 <div class="mb-2"> 2473 <label for="b-name">Full Name <small class="text-danger">*</small></label> 2474 <input type="text" id="b-name" name="name" class="my-0" aria-label="Enter Full Name" placeholder="Enter your name" required> 2475 <small class="text-danger error-msg"></small> 2476 </div> 2477 2478 <div class="mb-2"> 2479 <label for="b-email">Email Address <small class="text-danger">*</small></label> 2480 <input type="email" id="b-email" name="email" class="my-0" aria-label="Enter Email" placeholder="[email protected]" required> 2481 <small class="text-danger error-msg"></small> 2482 </div> 2483 2484 <div class="mb-2"> 2485 <label for="b-phone">Phone Number <small class="text-danger">*</small></label> 2486 <div style="display: flex; gap: 5px;"> 2487 <select id="b-country-code" name="country_id" aria-label="Country Name style="width: 150px; padding: 8px; border-radius: 5px; border: 1px solid #ccc;" required> 2488 <option value="">Loading...</option> 2489 </select> 2490 2491 <input type="tel" id="b-phone" name="phone" aria-label="Enter Phone Number" style="flex: 1; padding: 8px; border-radius: 5px; border: 1px solid #ccc;" placeholder="Mobile number" required> 2492 </div> 2493 <input type="hidden" id="b-country-name-hidden" aria-label="Enter Country" Name name="country_name"> 2494 <small class="text-danger error-msg"></small> 2495 </div> 2496 2497 <div style="text-align: right; margin-top: 15px;"> 2498 <button type="submit" id="b-submit-btn" style="white-space: nowrap; border-radius: 25px; background: #c68213; color: white; padding: 10px 25px; border: none; cursor: pointer; font-weight: bold;"> 2499 Submit 2500 </button> 2501 </div> 2502 </form> 2503 </div> 2504</div> 2505 2506 2507
2508<script defer> 2509 document.addEventListener('DOMContentLoaded', function () { 2510 var modal = document.getElementById('modal'); 2511 var closeBtn = document.querySelector('.close-btn'); 2512 2513 // Function to set a cookie 2514 function setCookie(name, value, days) { 2515 var expires = ""; 2516 if (days) { 2517 var date = new Date(); 2518 date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000)); 2519 expires = "; expires=" + date.toUTCString(); 2520 } 2521 document.cookie = name + "=" + (value || "") + expires + "; path=/"; 2522 } 2523 2524 // Function to get a cookie by name 2525 function getCookie(name) { 2526 var nameEQ = name + "="; 2527 var ca = document.cookie.split(';'); 2528 for (var i = 0; i < ca.length; i++) { 2529 var c = ca[i]; 2530 while (c.charAt(0) == ' ') c = c.substring(1, c.length); 2531 if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length, c.length); 2532 } 2533 return null; 2534 } 2535 2536 if (window.innerWidth > 600) { 2537 if (!getCookie('modalShown')) { 2538 modal.style.display = 'flex'; 2539 document.body.style.overflow = 'hidden'; 2540 setCookie('modalShown', 'true', 30); 2541 } 2542 } 2543 2544 if (closeBtn) { 2545 closeBtn.addEventListener('click', function () { 2546 modal.style.display = 'none'; 2547 document.body.style.overflow = ''; 2548 }); 2549 } 2550 window.addEventListener('click', function (event) { 2551 if (event.target === modal) { 2552 modal.style.display = 'none'; 2553 document.body.style.overflow = ''; // Restore scrolling 2554 } 2555 }); 2556 2557 // Ensure mobile compatibility with touch events 2558 window.addEventListener('touchstart', function (event) { 2559 if (event.target === modal) { 2560 modal.style.display = 'none'; 2561 document.body.style.overflow = ''; // Restore scrolling 2562 } 2563 }); 2564 }); 2565</script>
2565 2566
2567<script defer> 2568 document.addEventListener("DOMContentLoaded", function() { 2569 2570 const SERVER_TIME = new Date("2026-10-07T21:14:49"); 2571 2572 const modal = document.getElementById("myModal"); 2573 const btn = document.getElementById("schedule-meeting-btn"); 2574 const span = document.getElementsByClassName("close")[0]; 2575 2576 const timeOffset = SERVER_TIME.getTime() - new Date().getTime(); 2577 2578 function getServerTime() { 2579 // Return the current actual time based on the initial server sync 2580 return new Date(new Date().getTime() + timeOffset); 2581 } 2582 2583 function handleTimeRestriction(selectedDate, instance) { 2584 const now = getServerTime(); // Use our server-synced time 2585 2586 // Check if the selected date is today (according to server) 2587 if (selectedDate.toDateString() === now.toDateString()) { 2588 const minHour = now.getHours(); 2589 const minMin = now.getMinutes(); 2590 instance.set("minTime", `${minHour}:${minMin}`); 2591 } else { 2592 instance.set("minTime", "00:00"); 2593 } 2594 } 2595 const now = getServerTime(); 2596 2597 if (btn) { 2598 btn.onclick = function () { 2599 modal.style.display = "block"; 2600 flatpickr("#datetime-picker", { 2601 enableTime: true, 2602 dateFormat: "Y-m-d H:i", 2603 minDate: now, 2604 defaultDate: now, 2605 2606 // 1. Force 'today' highlight to match server, not system 2607 onDayCreate: function(dObj, dStr, fp, dayElem) { 2608 if (dayElem.dateObj.toDateString() === now.toDateString()) { 2609 dayElem.classList.add("server-today"); 2610 } else { 2611 dayElem.classList.remove("today"); 2612 } 2613 }, 2614 2615 2616 // 2. Set time restriction immediately on load 2617 onReady: function(selectedDates, dateStr, instance) { 2618 // If the default date is today, restrict hours 2619 const currentHour = now.getHours() + ":" + now.getMinutes(); 2620 instance.set("minTime", currentHour); 2621 }, 2622 2623 onChange: function(selectedDates, dateTimeStr, instance) { 2624 if (selectedDates.length > 0) { 2625 const selected = selectedDates[0]; 2626 const serverNow = getServerTime(); // Use your server-sync function 2627 2628 // 1. Check if the selected date is Today (Server-side) 2629 if (selected.toDateString() === serverNow.toDateString()) { 2630 2631 // Set the minimum allowed time for today 2632 const minHour = serverNow.getHours(); 2633 const minMin = serverNow.getMinutes(); 2634 instance.set("minTime", `${minHour}:${minMin}`); 2635 2636 // 2. FORCE VALIDATION: If the user managed to select a past time, 2637 // reset their selection to the current server time. 2638 if (selected.getTime() < serverNow.getTime()) { 2639 instance.setDate(serverNow, true); 2640 return; // Stop execution to let setDate trigger a clean update 2641 } 2642 } else { 2643 // 3. For future dates, allow all hours (00:00) 2644 instance.set("minTime", "00:00"); 2645 } 2646 2647 // Sync with your hidden input 2648 const hiddenInput = document.getElementById('datetime'); 2649 if (hiddenInput) hiddenInput.value = instance.input.value; 2650 } 2651 } 2652 }); 2653 2654 } 2655 } 2656 2657 if (span) span.onclick = () => modal.style.display = "none"; 2658 window.onclick = (event) => { if (event.target == modal) modal.style.display = "none"; } 2659 2660 // FIXED: The "Null-Safe" Error Helper 2661 function showError(input, message) { 2662 if (!input) return; 2663 2664 input.classList.add("is-invalid"); 2665 2666 // Look for the parent wrapper 2667 const container = input.closest('.mb-2'); 2668 2669 if (container) { 2670 const errorEl = container.querySelector(".error-msg"); 2671 if (errorEl) { 2672 errorEl.textContent = message; 2673 errorEl.style.display = "block"; // Ensure it's visible 2674 } 2675 } else { 2676 // Fallback: If no container, just alert or log so the app doesn't crash 2677 console.error("Could not find .mb-2 container for:", input); 2678 alert(message); 2679 } 2680} 2681 2682 // Safe Error Clearing 2683 document.querySelectorAll("input, textarea").forEach(input => { 2684 input.addEventListener("input", function() { 2685 this.classList.remove("is-invalid"); 2686 const container = this.closest('.mb-2'); 2687 if (container) { 2688 const errorEl = container.querySelector(".error-msg"); 2689 if (errorEl) errorEl.textContent = ""; 2690 } 2691 }); 2692 }); 2693 2694 const detailsForm = document.getElementById("details-form"); 2695 if (detailsForm) { 2696 detailsForm.addEventListener("submit", function (e) { 2697 e.preventDefault(); 2698 let isValid = true; 2699 2700 2701 // IMPORTANT: Search for inputs ONLY inside THIS form 2702 const dt = this.querySelector("#datetime-picker"); 2703 const nm = this.querySelector("#name"); 2704 const em = this.querySelector("#email"); 2705 const ph = this.querySelector("#phone"); 2706 const ad = this.querySelector("#address"); 2707 const qr = this.querySelector("#query"); 2708 const product = this.querySelector("#product_id"); 2709 2710 // Clear previous errors safely 2711 this.querySelectorAll(".error-msg").forEach(el => el.textContent = ""); 2712 this.querySelectorAll("input, textarea").forEach(el => el.classList.remove("is-invalid")); 2713 2714 // Validations with existence checks 2715 if (dt && !dt.value.trim()) { showError(dt, "Select date & time"); isValid = false; } 2716 if (nm && !/^[A-Za-z ]{3,}
2716$/.test(nm.value.trim())) { showError(nm, "Name must be letters & spaces with Min 3 Chars"); isValid = false; } 2717 if (em && !/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(em.value.trim())) { showError(em, "Please enter a valid email address"); isValid = false; } 2718 if (ph && !/^[6-9]\d{9}$/.test(ph.value.trim())) { showError(ph, "Enter a valid 10-digit mobile number (starting with 6, 7, 8, or 9)."); isValid = false; } 2719 if (ad && ad.value.trim().length < 5) { showError(ad, "Address must be min 5 chars"); isValid = false; } 2720 if (qr && qr.value.trim().length < 10) { showError(qr, "Query must be at least 10 chars"); isValid = false; } 2721 2722 if (product && product.value === "") { 2723 showError(product, "Please select a product"); 2724 isValid = false; 2725 } 2726 2727 if (!isValid) return; 2728 2729 const submitBtn = this.querySelector('button[type="submit"]'); 2730 if (submitBtn) submitBtn.disabled = true; 2731 2732 // 1. CLOSE MODAL IMMEDIATELY 2733 modal.style.display = "none"; 2734 2735 const alertBox = document.getElementById('successAlert'); 2736 if (alertBox) { 2737 alertBox.textContent = "Processing your request..."; 2738 alertBox.classList.remove('d-none', 'alert-success'); 2739 alertBox.classList.add('alert-info'); // Use a neutral color 2740 } 2741 2742 const formData = new FormData(this); 2743 fetch('https://techkshetrainfo.com/attendance_web/index.php/Meetings/create_meeting', { 2744 method: 'POST', 2745 body: formData 2746 }) 2747 .then(res => res.json()) 2748 .then(data => { 2749 if (data.status === 'success' || data.status === 1) { 2750 if (alertBox) { 2751 alertBox.classList.remove('alert-info'); 2752 alertBox.classList.add('alert-success'); 2753 } 2754 showSuccess(data.message || "Meeting Scheduled!"); 2755 detailsForm.reset(); 2756 } else { 2757 // 2. RE-OPEN IF FAILED 2758 modal.style.display = "block"; 2759 alert(data.message || "Submission failed"); 2760 } 2761 }) 2762 .catch(() => { 2763 modal.style.display = "block"; 2764 alert("Something went wrong. Try again."); 2765 }) 2766 .finally(() => { if (submitBtn) submitBtn.disabled = false; }); 2767 2768 }); 2769 } 2770 2771 function showSuccess(message) { 2772 const alertBox = document.getElementById('successAlert'); 2773 if (alertBox) { 2774 alertBox.textContent = message; 2775 alertBox.classList.remove('d-none'); 2776 setTimeout(() => { alertBox.classList.add('d-none'); }, 4000); 2777 } else { 2778 alert(message); 2779 } 2780 } 2781}); 2782 2783 2784 function resetToIndia() { 2785 const countrySelect = document.getElementById("country-code"); 2786 const countryNameHidden = document.getElementById("country-name-hidden"); 2787 2788 if (!countrySelect || !countryNameHidden) return; 2789 2790 const options = countrySelect.options; 2791 for (let i = 0; i < options.length; i++) { 2792 if (options[i].getAttribute('data-name')?.toLowerCase() === "india") { 2793 options[i].selected = true; 2794 countryNameHidden.value = options[i].getAttribute('data-name'); 2795 break; 2796 } 2797 } 2798} 2799 2800document.addEventListener("DOMContentLoaded", function() { 2801 const countrySelect = document.getElementById("country-code"); 2802 const countryNameHidden = document.getElementById("country-name-hidden"); 2803 2804 // 1. Fetch data via PHP 2805 const countryData = {"status":true,"message":"country list found","countrylist":[{"country_id":"1","country_name":"Afghanistan","country_code":"+93","country_is_deleted":"0"},{"country_id":"2","country_name":"Albania","country_code":"+355","country_is_deleted":"0"},{"country_id":"3","country_name":"Algeria","country_code":"+213","country_is_deleted":"0"},{"country_id":"4","country_name":"Andorra","country_code":"+376","country_is_deleted":"0"},{"country_id":"5","country_name":"Angola","country_code":"+244","country_is_deleted":"0"},{"country_id":"6","country_name":"Antigua and Barbuda","country_code":"+1-268","country_is_deleted":"0"},{"country_id":"7","country_name":"Argentina","country_code":"+54","country_is_deleted":"0"},{"country_id":"8","country_name":"Armenia","country_code":"+374","country_is_deleted":"0"},{"country_id":"9","country_name":"Australia","country_code":"+61","country_is_deleted":"0"}
2805,{"country_id":"10","country_name":"Austria","country_code":"+43","country_is_deleted":"0"},{"country_id":"11","country_name":"Azerbaijan","country_code":"+994","country_is_deleted":"0"},{"country_id":"12","country_name":"Bahamas","country_code":"+1-242","country_is_deleted":"0"},{"country_id":"13","country_name":"Bahrain","country_code":"+973","country_is_deleted":"0"},{"country_id":"14","country_name":"Bangladesh","country_code":"+880","country_is_deleted":"0"},{"country_id":"15","country_name":"Barbados","country_code":"+1-246","country_is_deleted":"0"},{"country_id":"16","country_name":"Belarus","country_code":"+375","country_is_deleted":"0"},{"country_id":"17","country_name":"Belgium","country_code":"+32","country_is_deleted":"0"},{"country_id":"18","country_name":"Belize","country_code":"+501","country_is_deleted":"0"},{"country_id":"19","country_name":"Benin","country_code":"+229","country_is_deleted":"0"},{"country_id":"20","country_name":"Bhutan","country_code":"+975","country_is_deleted":"0"},{"country_id":"21","country_name":"Bolivia","country_code":"+591","country_is_deleted":"0"},{"country_id":"22","country_name":"Bosnia and Herzegovina","country_code":"+387","country_is_deleted":"0"},{"country_id":"23","country_name":"Botswana","country_code":"+267","country_is_deleted":"0"},{"country_id":"24","country_name":"Brazil","country_code":"+55","country_is_deleted":"0"},{"country_id":"25","country_name":"Brunei","country_code":"+673","country_is_deleted":"0"},{"country_id":"26","country_name":"Bulgaria","country_code":"+359","country_is_deleted":"0"},{"country_id":"27","country_name":"Burkina Faso","country_code":"+226","country_is_deleted":"0"},{"country_id":"28","country_name":"Burundi","country_code":"+257","country_is_deleted":"0"},{"country_id":"29","country_name":"Cabo Verde","country_code":"+238","country_is_deleted":"0"},{"country_id":"30","country_name":"Cambodia","country_code":"+855","country_is_deleted":"0"},{"country_id":"31","country_name":"Cameroon","country_code":"+237","country_is_deleted":"0"},{"country_id":"32","country_name":"Canada","country_code":"+1","country_is_deleted":"0"},{"country_id":"33","country_name":"Central African Republic","country_code":"+236","country_is_deleted":"0"},{"country_id":"34","country_name":"Chad","country_code":"+235","country_is_deleted":"0"},{"country_id":"35","country_name":"Chile","country_code":"+56","country_is_deleted":"0"},{"country_id":"36","country_name":"China","country_code":"+86","country_is_deleted":"0"},{"country_id":"37","country_name":"Colombia","country_code":"+57","country_is_deleted":"0"},{"country_id":"38","country_name":"Comoros","country_code":"+269","country_is_deleted":"0"},{"country_id":"39","country_name":"Congo, Democratic Republic of the","country_code":"+243","country_is_deleted":"0"},{"country_id":"40","country_name":"Congo, Republic of the","country_code":"+242","country_is_deleted":"0"},{"country_id":"41","country_name":"Costa Rica","country_code":"+506","country_is_deleted":"0"},{"country_id":"42","country_name":"Croatia","country_code":"+385","country_is_deleted":"0"},{"country_id":"43","country_name":"Cuba","country_code":"+53","country_is_deleted":"0"},{"country_id":"44","country_name":"Cyprus","country_code":"+357","country_is_deleted":"0"},{"country_id":"45","country_name":"Czech Republic","country_code":"+420","country_is_deleted":"0"},{"country_id":"46","country_name":"Denmark","country_code":"+45","country_is_deleted":"0"},{"country_id":"47","country_name":"Djibouti","country_code":"+253","country_is_deleted":"0"},{"country_id":"48","country_name":"Dominica","country_code":"+1-767","country_is_deleted":"0"},{"country_id":"49","country_name":"Dominican Republic","country_code":"+1-809","country_is_deleted":"0"},{"country_id":"50","country_name":"Ecuador","country_code":"+593","country_is_deleted":"0"},{"country_id":"51","country_name":"Egypt","country_code":"+20","country_is_deleted":"0"},{"country_id":"52","country_name":"El Salvador","country_code":"+503","country_is_deleted":"0"},{"country_id":"53","country_name":"Equatorial Guinea","country_code":"+240","country_is_deleted":"0"},{"country_id":"54","country_name":"Eritrea","country_code":"+291","country_is_deleted":"0"},{"country_id":"55","country_name":"Estonia","country_code":"+372","country_is_deleted":"0"},{"country_id":"56","country_name":"Eswatini","country_code":"+268","country_is_deleted":"0"},{"country_id":"57","country_name":"Ethiopia","country_code":"+251","country_is_deleted":"0"},{"country_id":"58","country_name":"Fiji","country_code":"+679","country_is_deleted":"0"},{"country_id":"59","country_name":"Finland","country_code":"+358","country_is_deleted":"0"},{"country_id":"60","country_name":"France","country_code":"+33","country_is_deleted":"0"},{"country_id":"61","country_name":"Gabon","country_code":"+241","country_is_deleted":"0"},{"country_id":"62","country_name":"Gambia","country_code":"+220","country_is_deleted":"0"},{"country_id":"63","country_name":"Georgia","country_code":"+995","country_is_deleted":"0"},{"country_id":"64","country_name":"Germany","country_code":"+49","country_is_deleted":"0"},{"country_id":"65","country_name":"Ghana","country_code":"+233","country_is_deleted":"0"},{"country_id":"66","country_name":"Greece","country_code":"+30","country_is_deleted":"0"},{"country_id":"67","country_name":"Grenada","country_code":"+1-473","country_is_deleted":"0"},{"country_id":"68","country_name":"Guatemala","country_code":"+502","country_is_deleted":"0"},{"country_id":"69","country_name":"Guinea","country_code":"+224","country_is_deleted":"0"},{"country_id":"70","country_name":"Guinea-Bissau","country_code":"+245","country_is_deleted":"0"},{"country_id":"71","country_name":"Guyana","country_code":"+592","country_is_deleted":"0"},{"country_id":"72","country_name":"Haiti","country_code":"+509","country_is_deleted":"0"},{"country_id":"73","country_name":"Honduras","country_code":"+504","country_is_deleted":"0"},{"country_id":"74","country_name":"Hungary","country_code":"+36","country_is_deleted":"0"},{"country_id":"75","country_name":"Iceland","country_code":"+354","country_is_deleted":"0"},{"country_id":"76","country_name":"India","country_code":"+91","country_is_deleted":"0"},{"country_id":"77","country_name":"Indonesia","country_code":"+62","country_is_deleted":"0"},{"country_id":"78","country_name":"Iran","country_code":"+98","country_is_deleted":"0"},{"country_id":"79","country_name":"Iraq","country_code":"+964","country_is_deleted":"0"},{"country_id":"80","country_name":"Ireland","country_code":"+353","country_is_deleted":"0"},{"country_id":"81","country_name":"Israel","country_code":"+972","country_is_deleted":"0"},{"country_id":"82","country_name":"Italy","country_code":"+39","country_is_deleted":"0"},{"country_id":"83","country_name":"Jamaica","country_code":"+1-876","country_is_deleted":"0"},{"country_id":"84","country_name":"Japan","country_code":"+81","country_is_deleted":"0"},{"country_id":"85","country_name":"Jordan","country_code":"+962","country_is_deleted":"0"},{"country_id":"86","country_name":"Kazakhstan","country_code":"+7","country_is_deleted":"0"},{"country_id":"87","country_name":"Kenya","country_code":"+254","country_is_deleted":"0"},{"country_id":"88","country_name":"Kiribati","country_code":"+686","country_is_deleted":"0"},{"country_id":"89","country_name":"Korea, North","country_code":"+850","country_is_deleted":"0"},{"country_id":"90","country_name":"Korea, South","country_code":"+82","country_is_deleted":"0"},{"country_id":"91","country_name":"Kuwait","country_code":"+965","country_is_deleted":"0"},{"country_id":"92","country_name":"Kyrgyzstan","country_code":"+996","country_is_deleted":"0"},{"country_id":"93","country_name":"Laos","country_code":"+856","country_is_deleted":"0"},{"country_id":"94","country_name":"Latvia","country_code":"+371","country_is_deleted":"0"},{"country_id":"95","country_name":"Lebanon","country_code":"+961","country_is_deleted":"0"},{"country_id":"96","country_name":"Lesotho","country_code":"+266","country_is_deleted":"0"},{"country_id":"97","country_name":"Liberia","country_code":"+231","country_is_deleted":"0"},{"country_id":"98","country_name":"Libya","country_code":"+218","country_is_deleted":"0"},{"country_id":"99","country_name":"Liechtenstein","country_code":"+423","country_is_deleted":"0"}
2805,{"country_id":"100","country_name":"Lithuania","country_code":"+370","country_is_deleted":"0"},{"country_id":"101","country_name":"Luxembourg","country_code":"+352","country_is_deleted":"0"},{"country_id":"102","country_name":"Madagascar","country_code":"+261","country_is_deleted":"0"},{"country_id":"103","country_name":"Malawi","country_code":"+265","country_is_deleted":"0"},{"country_id":"104","country_name":"Malaysia","country_code":"+60","country_is_deleted":"0"},{"country_id":"105","country_name":"Maldives","country_code":"+960","country_is_deleted":"0"},{"country_id":"106","country_name":"Mali","country_code":"+223","country_is_deleted":"0"},{"country_id":"107","country_name":"Malta","country_code":"+356","country_is_deleted":"0"},{"country_id":"108","country_name":"Marshall Islands","country_code":"+692","country_is_deleted":"0"},{"country_id":"109","country_name":"Mauritania","country_code":"+222","country_is_deleted":"0"},{"country_id":"110","country_name":"Mauritius","country_code":"+230","country_is_deleted":"0"},{"country_id":"111","country_name":"Mexico","country_code":"+52","country_is_deleted":"0"},{"country_id":"112","country_name":"Micronesia","country_code":"+691","country_is_deleted":"0"},{"country_id":"113","country_name":"Moldova","country_code":"+373","country_is_deleted":"0"},{"country_id":"114","country_name":"Monaco","country_code":"+377","country_is_deleted":"0"},{"country_id":"115","country_name":"Mongolia","country_code":"+976","country_is_deleted":"0"},{"country_id":"116","country_name":"Montenegro","country_code":"+382","country_is_deleted":"0"},{"country_id":"117","country_name":"Morocco","country_code":"+212","country_is_deleted":"0"},{"country_id":"118","country_name":"Mozambique","country_code":"+258","country_is_deleted":"0"},{"country_id":"119","country_name":"Myanmar","country_code":"+95","country_is_deleted":"0"},{"country_id":"120","country_name":"Namibia","country_code":"+264","country_is_deleted":"0"},{"country_id":"121","country_name":"Nauru","country_code":"+674","country_is_deleted":"0"},{"country_id":"122","country_name":"Nepal","country_code":"+977","country_is_deleted":"0"},{"country_id":"123","country_name":"Netherlands","country_code":"+31","country_is_deleted":"0"},{"country_id":"124","country_name":"New Zealand","country_code":"+64","country_is_deleted":"0"},{"country_id":"125","country_name":"Nicaragua","country_code":"+505","country_is_deleted":"0"},{"country_id":"126","country_name":"Niger","country_code":"+227","country_is_deleted":"0"},{"country_id":"127","country_name":"Nigeria","country_code":"+234","country_is_deleted":"0"},{"country_id":"128","country_name":"North Macedonia","country_code":"+389","country_is_deleted":"0"},{"country_id":"129","country_name":"Norway","country_code":"+47","country_is_deleted":"0"},{"country_id":"130","country_name":"Oman","country_code":"+968","country_is_deleted":"0"},{"country_id":"131","country_name":"Pakistan","country_code":"+92","country_is_deleted":"0"},{"country_id":"132","country_name":"Palau","country_code":"+680","country_is_deleted":"0"},{"country_id":"133","country_name":"Palestine","country_code":"+970","country_is_deleted":"0"},{"country_id":"134","country_name":"Panama","country_code":"+507","country_is_deleted":"0"},{"country_id":"135","country_name":"Papua New Guinea","country_code":"+675","country_is_deleted":"0"},{"country_id":"136","country_name":"Paraguay","country_code":"+595","country_is_deleted":"0"},{"country_id":"137","country_name":"Peru","country_code":"+51","country_is_deleted":"0"},{"country_id":"138","country_name":"Philippines","country_code":"+63","country_is_deleted":"0"},{"country_id":"139","country_name":"Poland","country_code":"+48","country_is_deleted":"0"},{"country_id":"140","country_name":"Portugal","country_code":"+351","country_is_deleted":"0"},{"country_id":"141","country_name":"Qatar","country_code":"+974","country_is_deleted":"0"},{"country_id":"142","country_name":"Romania","country_code":"+40","country_is_deleted":"0"},{"country_id":"143","country_name":"Russia","country_code":"+7","country_is_deleted":"0"}
2805,{"country_id":"144","country_name":"Rwanda","country_code":"+250","country_is_deleted":"0"},{"country_id":"145","country_name":"Saint Kitts and Nevis","country_code":"+1-869","country_is_deleted":"0"},{"country_id":"146","country_name":"Saint Lucia","country_code":"+1-758","country_is_deleted":"0"},{"country_id":"147","country_name":"Saint Vincent and the Grenadines","country_code":"+1-784","country_is_deleted":"0"},{"country_id":"148","country_name":"Samoa","country_code":"+685","country_is_deleted":"0"},{"country_id":"149","country_name":"San Marino","country_code":"+378","country_is_deleted":"0"},{"country_id":"150","country_name":"Sao Tome and Principe","country_code":"+239","country_is_deleted":"0"},{"country_id":"151","country_name":"Saudi Arabia","country_code":"+966","country_is_deleted":"0"},{"country_id":"152","country_name":"Senegal","country_code":"+221","country_is_deleted":"0"},{"country_id":"153","country_name":"Serbia","country_code":"+381","country_is_deleted":"0"},{"country_id":"154","country_name":"Seychelles","country_code":"+248","country_is_deleted":"0"},{"country_id":"155","country_name":"Sierra Leone","country_code":"+232","country_is_deleted":"0"},{"country_id":"156","country_name":"Singapore","country_code":"+65","country_is_deleted":"0"},{"country_id":"157","country_name":"Slovakia","country_code":"+421","country_is_deleted":"0"},{"country_id":"158","country_name":"Slovenia","country_code":"+386","country_is_deleted":"0"},{"country_id":"159","country_name":"Solomon Islands","country_code":"+677","country_is_deleted":"0"},{"country_id":"160","country_name":"Somalia","country_code":"+252","country_is_deleted":"0"},{"country_id":"161","country_name":"South Africa","country_code":"+27","country_is_deleted":"0"},{"country_id":"162","country_name":"South Sudan","country_code":"+211","country_is_deleted":"0"},{"country_id":"163","country_name":"Spain","country_code":"+34","country_is_deleted":"0"},{"country_id":"164","country_name":"Sri Lanka","country_code":"+94","country_is_deleted":"0"},{"country_id":"165","country_name":"Sudan","country_code":"+249","country_is_deleted":"0"},{"country_id":"166","country_name":"Suriname","country_code":"+597","country_is_deleted":"0"},{"country_id":"167","country_name":"Sweden","country_code":"+46","country_is_deleted":"0"},{"country_id":"168","country_name":"Switzerland","country_code":"+41","country_is_deleted":"0"},{"country_id":"169","country_name":"Syria","country_code":"+963","country_is_deleted":"0"},{"country_id":"170","country_name":"Taiwan","country_code":"+886","country_is_deleted":"0"},{"country_id":"171","country_name":"Tajikistan","country_code":"+992","country_is_deleted":"0"},{"country_id":"172","country_name":"Tanzania","country_code":"+255","country_is_deleted":"0"},{"country_id":"173","country_name":"Thailand","country_code":"+66","country_is_deleted":"0"},{"country_id":"174","country_name":"Timor-Leste","country_code":"+670","country_is_deleted":"0"},{"country_id":"175","country_name":"Togo","country_code":"+228","country_is_deleted":"0"},{"country_id":"176","country_name":"Tonga","country_code":"+676","country_is_deleted":"0"},{"country_id":"177","country_name":"Trinidad and Tobago","country_code":"+1-868","country_is_deleted":"0"},{"country_id":"178","country_name":"Tunisia","country_code":"+216","country_is_deleted":"0"},{"country_id":"179","country_name":"Turkey","country_code":"+90","country_is_deleted":"0"},{"country_id":"180","country_name":"Turkmenistan","country_code":"+993","country_is_deleted":"0"},{"country_id":"181","country_name":"Tuvalu","country_code":"+688","country_is_deleted":"0"},{"country_id":"182","country_name":"Uganda","country_code":"+256","country_is_deleted":"0"},{"country_id":"183","country_name":"Ukraine","country_code":"+380","country_is_deleted":"0"},{"country_id":"184","country_name":"United Arab Emirates","country_code":"+971","country_is_deleted":"0"},{"country_id":"185","country_name":"United Kingdom","country_code":"+44","country_is_deleted":"0"},{"country_id":"186","country_name":"United States","country_code":"+1","country_is_deleted":"0"}
2805,{"country_id":"187","country_name":"Uruguay","country_code":"+598","country_is_deleted":"0"},{"country_id":"188","country_name":"Uzbekistan","country_code":"+998","country_is_deleted":"0"},{"country_id":"189","country_name":"Vanuatu","country_code":"+678","country_is_deleted":"0"},{"country_id":"190","country_name":"Vatican City","country_code":"+379","country_is_deleted":"0"},{"country_id":"191","country_name":"Venezuela","country_code":"+58","country_is_deleted":"0"},{"country_id":"192","country_name":"Vietnam","country_code":"+84","country_is_deleted":"0"},{"country_id":"193","country_name":"Yemen","country_code":"+967","country_is_deleted":"0"},{"country_id":"194","country_name":"Zambia","country_code":"+260","country_is_deleted":"0"},{"country_id":"195","country_name":"Zimbabwe","country_code":"+263","country_is_deleted":"0"}]}; 2806 // 2. Populate the Select Dropdown 2807 if (countryData.status && countryData.countrylist) { 2808 countrySelect.innerHTML = ''; // Clear fallback 2809 2810 const sortedList = countryData.countrylist.sort((a, b) => 2811 a.country_name.localeCompare(b.country_name) 2812 ); 2813 2814 sortedList.forEach(country => { 2815 const option = document.createElement("option"); 2816 2817 option.value = country.country_id; 2818 // Store the name in a data attribute so we can grab it later 2819 option.setAttribute('data-name', country.country_name); 2820 option.textContent = `${country.country_name} (${country.country_code})`; 2821 2822 resetToIndia(); 2823 2824 countrySelect.appendChild(option); 2825 }); 2826 } 2827 2828 // 3. Listener to update hidden name field when dropdown changes 2829 countrySelect.addEventListener("change", function() { 2830 const selectedOption = this.options[this.selectedIndex]; 2831 const countryName = selectedOption.getAttribute('data-name'); 2832 2833 // Update the hidden input that gets POSTed to PHP 2834 if (countryName) { 2835 countryNameHidden.value = countryName; 2836 } 2837 }); 2838 2839 // 4. Clear errors on input 2840 document.querySelectorAll("input, textarea, select").forEach(el => { 2841 el.addEventListener("input", function() { 2842 this.classList.remove("is-invalid"); 2843 // Look for error-msg in the parent container 2844 const container = this.closest('.col-md-6, .col-md-12, .col-12'); 2845 if (container) { 2846 const errorEl = container.querySelector(".error-msg"); 2847 if (errorEl) errorEl.textContent = ""; 2848 } 2849 }); 2850 }); 2851}); 2852 2853 document.getElementById("contactForm").addEventListener("submit", function (e) { 2854 e.preventDefault(); 2855 2856 let isValid = true; 2857 const form = this; 2858 const msgBox = document.getElementById("form-message") || createMsgBox(form); 2859 const recaptchaError = document.getElementById("recaptcha-error"); 2860 2861 // Clear previous errors 2862 document.querySelectorAll(".error-msg").forEach(el => el.textContent = ""); 2863 document.querySelectorAll(".form-control, .form-select").forEach(el => el.classList.remove("is-invalid")); 2864 recaptchaError.textContent = ""; 2865 2866 2867 const name = document.getElementById("name"); 2868 const email = document.getElementById("email"); 2869 const contact = document.getElementById("contact"); 2870 const message = document.getElementById("message"); 2871 const countryCode = document.getElementById("country-code"); 2872 const countryNameHidden = document.getElementById("country-name-hidden"); 2873 const product = document.getElementById("product_id"); 2874 2875 console.log("Selected Country Code:", countryCode.value); 2876 console.log("Selected Country Name (hidden):", countryNameHidden.value); 2877 // Name validation 2878 if (!/^[A-Za-z ]{3,}$/.test(name.value.trim())) { 2879 showError(name, "Please enter a valid name (min 3 letters)"); 2880 isValid = false; 2881 } 2882 2883 // Email validation 2884 if (!/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(email.value.trim())) { 2885 showError(email, "Please enter a valid email address"); 2886 isValid = false;
2887 } 2888 2889 // Contact validation (10 digits) 2890 if (!/^[1-9]\d{9}$/.test(contact.value.trim())) { 2891 showError(contact, "Enter a valid 10-digit mobile number"); 2892 isValid = false; 2893 } 2894 2895 if (product.value === "") { 2896 showError(product, "Please select a product"); 2897 isValid = false; 2898 } 2899 2900 2901 // --- RECAPTCHA VALIDATION --- 2902 const recaptchaResponse = grecaptcha.getResponse(); 2903 if (recaptchaResponse.length === 0) { 2904 recaptchaError.textContent = "Please verify that you are not a robot."; 2905 isValid = false; 2906 } 2907 2908 if (!isValid) return; 2909 2910 // Show loading state on button 2911 const submitBtn = form.querySelector('button[type="submit"]'); 2912 const originalBtnText = submitBtn.innerHTML; 2913 submitBtn.disabled = true; 2914 submitBtn.innerHTML = '<span class="spinner-border spinner-border-sm"></span> Sending...'; 2915 2916 fetch(form.action, { 2917 method: "POST", 2918 body: new FormData(form) 2919 }) 2920 .then(res => res.json()) 2921 .then(data => { 2922 msgBox.style.display = "block"; 2923 msgBox.className = "alert alert-" + (data.status === 'success' ? 'success' : 'danger') + " mt-3"; 2924 msgBox.textContent = data.message; 2925 2926 if (data.status === 'success') { 2927 form.reset(); 2928 grecaptcha.reset(); // Reset reCAPTCHA on success 2929 resetToIndia(); 2930 } 2931 setTimeout(() => { 2932 msgBox.style.display = "none"; 2933 }, 5000); // 5 seconds 2934 }) 2935 .catch(err => { 2936 msgBox.style.display = "block"; 2937 msgBox.className = "alert alert-danger mt-3"; 2938 msgBox.textContent = "Submission failed. Please try again."; 2939 console.error("Submit Error:", err); 2940 setTimeout(() => { msgBox.style.display = "none"; }, 5000); 2941 }) 2942 .finally(() => { 2943 submitBtn.disabled = false; 2944 submitBtn.innerHTML = originalBtnText; 2945 }); 2946}); 2947 2948function showError(input, message) { 2949 input.classList.add("is-invalid"); 2950 // Find the error message sibling or parent's sibling (for input-groups) 2951 const container = input.closest('.col-md-6, .col-md-12, .col-12'); 2952 const errorEl = container.querySelector(".error-msg"); 2953 if (errorEl) errorEl.textContent = message; 2954} 2955 2956function createMsgBox(form) { 2957 const div = document.createElement('div'); 2958 div.id = "form-message"; 2959 div.style.display = "none"; 2960 form.appendChild(div); 2961 return div; 2962} 2963 2964// Clear error on input 2965document.querySelectorAll(".form-control, .form-select").forEach(input => { 2966 input.addEventListener("input", () => { 2967 input.classList.remove("is-invalid"); 2968 const container = input.closest('.col-md-6, .col-md-12, .col-12'); 2969 const errorEl = container.querySelector(".error-msg"); 2970 if (errorEl) errorEl.textContent = ""; 2971 }); 2972}); 2973 2974</script>
2974 2975
2976<script defer> 2977document.addEventListener("DOMContentLoaded", function() { 2978 const observerOptions = { 2979 threshold: 0.15 // Triggers when 15% of the section is visible 2980 }; 2981 2982 const observer = new IntersectionObserver((entries) => { 2983 entries.forEach(entry => { 2984 if (entry.isIntersecting) { 2985 entry.target.classList.add('is-visible'); 2986 2987 } 2988 }); 2989 }, observerOptions); 2990 2991 // Apply to every section with the class 2992 document.querySelectorAll('.animate-on-scroll').forEach(section => { 2993 observer.observe(section); 2994 }); 2995}); 2996 2997document.querySelectorAll('.nav-sub-item').forEach(item => { 2998 item.addEventListener('click', function(e) { 2999 e.stopPropagation(); // Prevents dropdown from closing on click 3000 3001 // 1. Remove active class from all sidebar items 3002 document.querySelectorAll('.nav-sub-item').forEach(i => i.classList.remove('active')); 3003 // 2. Add active class to clicked item 3004 this.classList.add('active'); 3005 3006 // 3. Hide all content areas 3007 document.querySelectorAll('.product-content').forEach(content => { 3008 content.classList.add('d-none'); 3009 }); 3010 3011 // 4. Show the target content area 3012 const targetId = this.getAttribute('data-target'); 3013 document.getElementById(targetId).classList.remove('d-none'); 3014 }); 3015}); 3016 3017document.addEventListener("DOMContentLoaded", function() { 3018 const bModal = document.getElementById("brochureModalCustom"); 3019 const bBtn = document.getElementById("brochure-download-btn"); // Updated ID 3020 const bSpan = document.querySelector(".close-brochure"); 3021 3022 if (bBtn) { 3023 bBtn.onclick = function (e) { 3024 e.preventDefault(); 3025 bModal.style.display = "block"; 3026 }; 3027 } 3028 3029 if (bSpan) { 3030 bSpan.onclick = function() { 3031 bModal.style.display = "none"; 3032 }; 3033 } 3034 3035 // Close when clicking outside the modal content 3036 window.onclick = function(event) { 3037 if (event.target == bModal) { 3038 bModal.style.display = "none"; 3039 } 3040 }; 3041 3042 // 1. Fetch data via PHP (This must be in a .php file) 3043const countryData = {"status":true,"message":"country list found","countrylist":[{"country_id":"1","country_name":"Afghanistan","country_code":"+93","country_is_deleted":"0"},{"country_id":"2","country_name":"Albania","country_code":"+355","country_is_deleted":"0"},{"country_id":"3","country_name":"Algeria","country_code":"+213","country_is_deleted":"0"},{"country_id":"4","country_name":"Andorra","country_code":"+376","country_is_deleted":"0"},{"country_id":"5","country_name":"Angola","country_code":"+244","country_is_deleted":"0"},{"country_id":"6","country_name":"Antigua and Barbuda","country_code":"+1-268","country_is_deleted":"0"},{"country_id":"7","country_name":"Argentina","country_code":"+54","country_is_deleted":"0"},{"country_id":"8","country_name":"Armenia","country_code":"+374","country_is_deleted":"0"},{"country_id":"9","country_name":"Australia","country_code":"+61","country_is_deleted":"0"},{"country_id":"10","country_name":"Austria","country_code":"+43","country_is_deleted":"0"},{"country_id":"11","country_name":"Azerbaijan","country_code":"+994","country_is_deleted":"0"},{"country_id":"12","country_name":"Bahamas","country_code":"+1-242","country_is_deleted":"0"},{"country_id":"13","country_name":"Bahrain","country_code":"+973","country_is_deleted":"0"},{"country_id":"14","country_name":"Bangladesh","country_code":"+880","country_is_deleted":"0"},{"country_id":"15","country_name":"Barbados","country_code":"+1-246","country_is_deleted":"0"},{"country_id":"16","country_name":"Belarus","country_code":"+375","country_is_deleted":"0"},{"country_id":"17","country_name":"Belgium","country_code":"+32","country_is_deleted":"0"},{"country_id":"18","country_name":"Belize","country_code":"+501","country_is_deleted":"0"},{"country_id":"19","country_name":"Benin","country_code":"+229","country_is_deleted":"0"},{"country_id":"20","country_name":"Bhutan","country_code":"+975","country_is_deleted":"0"},{"country_id":"21","country_name":"Bolivia","country_code":"+591","country_is_deleted":"0"},{"country_id":"22","country_name":"Bosnia and Herzegovina","country_code":"+387","country_is_deleted":"0"},{"country_id":"23","country_name":"Botswana","country_code":"+267","country_is_deleted":"0"},{"country_id":"24","country_name":"Brazil","country_code":"+55","country_is_deleted":"0"},{"country_id":"25","country_name":"Brunei","country_code":"+673","country_is_deleted":"0"},{"country_id":"26","country_name":"Bulgaria","country_code":"+359","country_is_deleted":"0"},{"country_id":"27","country_name":"Burkina Faso","country_code":"+226","country_is_deleted":"0"},{"country_id":"28","country_name":"Burundi","country_code":"+257","country_is_deleted":"0"},{"country_id":"29","country_name":"Cabo Verde","country_code":"+238","country_is_deleted":"0"},{"country_id":"30","country_name":"Cambodia","country_code":"+855","country_is_deleted":"0"},{"country_id":"31","country_name":"Cameroon","country_code":"+237","country_is_deleted":"0"},{"country_id":"32","country_name":"Canada","country_code":"+1","country_is_deleted":"0"},{"country_id":"33","country_name":"Central African Republic","country_code":"+236","country_is_deleted":"0"},{"country_id":"34","country_name":"Chad","country_code":"+235","country_is_deleted":"0"},{"country_id":"35","country_name":"Chile","country_code":"+56","country_is_deleted":"0"},{"country_id":"36","country_name":"China","country_code":"+86","country_is_deleted":"0"},{"country_id":"37","country_name":"Colombia","country_code":"+57","country_is_deleted":"0"},{"country_id":"38","country_name":"Comoros","country_code":"+269","country_is_deleted":"0"},{"country_id":"39","country_name":"Congo, Democratic Republic of the","country_code":"+243","country_is_deleted":"0"},{"country_id":"40","country_name":"Congo, Republic of the","country_code":"+242","country_is_deleted":"0"},{"country_id":"41","country_name":"Costa Rica","country_code":"+506","country_is_deleted":"0"},{"country_id":"42","country_name":"Croatia","country_code":"+385","country_is_deleted":"0"},{"country_id":"43","country_name":"Cuba","country_code":"+53","country_is_deleted":"0"},{"country_id":"44","country_name":"Cyprus","country_code":"+357","country_is_deleted":"0"},{"country_id":"45","country_name":"Czech Republic","country_code":"+420","country_is_deleted":"0"},{"country_id":"46","country_name":"Denmark","country_code":"+45","country_is_deleted":"0"},{"country_id":"47","country_name":"Djibouti","country_code":"+253","country_is_deleted":"0"},{"country_id":"48","country_name":"Dominica","country_code":"+1-767","country_is_deleted":"0"},{"country_id":"49","country_name":"Dominican Republic","country_code":"+1-809","country_is_deleted":"0"},{"country_id":"50","country_name":"Ecuador","country_code":"+593","country_is_deleted":"0"},{"country_id":"51","country_name":"Egypt","country_code":"+20","country_is_deleted":"0"},{"country_id":"52","country_name":"El Salvador","country_code":"+503","country_is_deleted":"0"},{"country_id":"53","country_name":"Equatorial Guinea","country_code":"+240","country_is_deleted":"0"},{"country_id":"54","country_name":"Eritrea","country_code":"+291","country_is_deleted":"0"},{"country_id":"55","country_name":"Estonia","country_code":"+372","country_is_deleted":"0"},{"country_id":"56","country_name":"Eswatini","country_code":"+268","country_is_deleted":"0"},{"country_id":"57","country_name":"Ethiopia","country_code":"+251","country_is_deleted":"0"},{"country_id":"58","country_name":"Fiji","country_code":"+679","country_is_deleted":"0"},{"country_id":"59","country_name":"Finland","country_code":"+358","country_is_deleted":"0"},{"country_id":"60","country_name":"France","country_code":"+33","country_is_deleted":"0"},{"country_id":"61","country_name":"Gabon","country_code":"+241","country_is_deleted":"0"},{"country_id":"62","country_name":"Gambia","country_code":"+220","country_is_deleted":"0"},{"country_id":"63","country_name":"Georgia","country_code":"+995","country_is_deleted":"0"},{"country_id":"64","country_name":"Germany","country_code":"+49","country_is_deleted":"0"},{"country_id":"65","country_name":"Ghana","country_code":"+233","country_is_deleted":"0"},{"country_id":"66","country_name":"Greece","country_code":"+30","country_is_deleted":"0"},{"country_id":"67","country_name":"Grenada","country_code":"+1-473","country_is_deleted":"0"},{"country_id":"68","country_name":"Guatemala","country_code":"+502","country_is_deleted":"0"},{"country_id":"69","country_name":"Guinea","country_code":"+224","country_is_deleted":"0"},{"country_id":"70","country_name":"Guinea-Bissau","country_code":"+245","country_is_deleted":"0"},{"country_id":"71","country_name":"Guyana","country_code":"+592","country_is_deleted":"0"},{"country_id":"72","country_name":"Haiti","country_code":"+509","country_is_deleted":"0"},{"country_id":"73","country_name":"Honduras","country_code":"+504","country_is_deleted":"0"},{"country_id":"74","country_name":"Hungary","country_code":"+36","country_is_deleted":"0"},{"country_id":"75","country_name":"Iceland","country_code":"+354","country_is_deleted":"0"},{"country_id":"76","country_name":"India","country_code":"+91","country_is_deleted":"0"},{"country_id":"77","country_name":"Indonesia","country_code":"+62","country_is_deleted":"0"},{"country_id":"78","country_name":"Iran","country_code":"+98","country_is_deleted":"0"},{"country_id":"79","country_name":"Iraq","country_code":"+964","country_is_deleted":"0"},{"country_id":"80","country_name":"Ireland","country_code":"+353","country_is_deleted":"0"},{"country_id":"81","country_name":"Israel","country_code":"+972","country_is_deleted":"0"},{"country_id":"82","country_name":"Italy","country_code":"+39","country_is_deleted":"0"},{"country_id":"83","country_name":"Jamaica","country_code":"+1-876","country_is_deleted":"0"},{"country_id":"84","country_name":"Japan","country_code":"+81","country_is_deleted":"0"},{"country_id":"85","country_name":"Jordan","country_code":"+962","country_is_deleted":"0"},{"country_id":"86","country_name":"Kazakhstan","country_code":"+7","country_is_deleted":"0"},{"country_id":"87","country_name":"Kenya","country_code":"+254","country_is_deleted":"0"},{"country_id":"88","country_name":"Kiribati","country_code":"+686","country_is_deleted":"0"},{"country_id":"89","country_name":"Korea, North","country_code":"+850","country_is_deleted":"0"},{"country_id":"90","country_name":"Korea, South","country_code":"+82","country_is_deleted":"0"},{"country_id":"91","country_name":"Kuwait","country_code":"+965","country_is_deleted":"0"},{"country_id":"92","country_name":"Kyrgyzstan","country_code":"+996","country_is_deleted":"0"},{"country_id":"93","country_name":"Laos","country_code":"+856","country_is_deleted":"0"},{"country_id":"94","country_name":"Latvia","country_code":"+371","country_is_deleted":"0"},{"country_id":"95","country_name":"Lebanon","country_code":"+961","country_is_deleted":"0"},{"country_id":"96","country_name":"Lesotho","country_code":"+266","country_is_deleted":"0"},{"country_id":"97","country_name":"Liberia","country_code":"+231","country_is_deleted":"0"},{"country_id":"98","country_name":"Libya","country_code":"+218","country_is_deleted":"0"},{"country_id":"99","country_name":"Liechtenstein","country_code":"+423","country_is_deleted":"0"}
3043,{"country_id":"100","country_name":"Lithuania","country_code":"+370","country_is_deleted":"0"},{"country_id":"101","country_name":"Luxembourg","country_code":"+352","country_is_deleted":"0"},{"country_id":"102","country_name":"Madagascar","country_code":"+261","country_is_deleted":"0"},{"country_id":"103","country_name":"Malawi","country_code":"+265","country_is_deleted":"0"},{"country_id":"104","country_name":"Malaysia","country_code":"+60","country_is_deleted":"0"},{"country_id":"105","country_name":"Maldives","country_code":"+960","country_is_deleted":"0"},{"country_id":"106","country_name":"Mali","country_code":"+223","country_is_deleted":"0"},{"country_id":"107","country_name":"Malta","country_code":"+356","country_is_deleted":"0"},{"country_id":"108","country_name":"Marshall Islands","country_code":"+692","country_is_deleted":"0"},{"country_id":"109","country_name":"Mauritania","country_code":"+222","country_is_deleted":"0"},{"country_id":"110","country_name":"Mauritius","country_code":"+230","country_is_deleted":"0"},{"country_id":"111","country_name":"Mexico","country_code":"+52","country_is_deleted":"0"},{"country_id":"112","country_name":"Micronesia","country_code":"+691","country_is_deleted":"0"},{"country_id":"113","country_name":"Moldova","country_code":"+373","country_is_deleted":"0"},{"country_id":"114","country_name":"Monaco","country_code":"+377","country_is_deleted":"0"},{"country_id":"115","country_name":"Mongolia","country_code":"+976","country_is_deleted":"0"},{"country_id":"116","country_name":"Montenegro","country_code":"+382","country_is_deleted":"0"},{"country_id":"117","country_name":"Morocco","country_code":"+212","country_is_deleted":"0"},{"country_id":"118","country_name":"Mozambique","country_code":"+258","country_is_deleted":"0"},{"country_id":"119","country_name":"Myanmar","country_code":"+95","country_is_deleted":"0"},{"country_id":"120","country_name":"Namibia","country_code":"+264","country_is_deleted":"0"},{"country_id":"121","country_name":"Nauru","country_code":"+674","country_is_deleted":"0"},{"country_id":"122","country_name":"Nepal","country_code":"+977","country_is_deleted":"0"},{"country_id":"123","country_name":"Netherlands","country_code":"+31","country_is_deleted":"0"},{"country_id":"124","country_name":"New Zealand","country_code":"+64","country_is_deleted":"0"},{"country_id":"125","country_name":"Nicaragua","country_code":"+505","country_is_deleted":"0"},{"country_id":"126","country_name":"Niger","country_code":"+227","country_is_deleted":"0"},{"country_id":"127","country_name":"Nigeria","country_code":"+234","country_is_deleted":"0"},{"country_id":"128","country_name":"North Macedonia","country_code":"+389","country_is_deleted":"0"},{"country_id":"129","country_name":"Norway","country_code":"+47","country_is_deleted":"0"},{"country_id":"130","country_name":"Oman","country_code":"+968","country_is_deleted":"0"},{"country_id":"131","country_name":"Pakistan","country_code":"+92","country_is_deleted":"0"},{"country_id":"132","country_name":"Palau","country_code":"+680","country_is_deleted":"0"},{"country_id":"133","country_name":"Palestine","country_code":"+970","country_is_deleted":"0"},{"country_id":"134","country_name":"Panama","country_code":"+507","country_is_deleted":"0"},{"country_id":"135","country_name":"Papua New Guinea","country_code":"+675","country_is_deleted":"0"},{"country_id":"136","country_name":"Paraguay","country_code":"+595","country_is_deleted":"0"},{"country_id":"137","country_name":"Peru","country_code":"+51","country_is_deleted":"0"},{"country_id":"138","country_name":"Philippines","country_code":"+63","country_is_deleted":"0"},{"country_id":"139","country_name":"Poland","country_code":"+48","country_is_deleted":"0"},{"country_id":"140","country_name":"Portugal","country_code":"+351","country_is_deleted":"0"},{"country_id":"141","country_name":"Qatar","country_code":"+974","country_is_deleted":"0"},{"country_id":"142","country_name":"Romania","country_code":"+40","country_is_deleted":"0"},{"country_id":"143","country_name":"Russia","country_code":"+7","country_is_deleted":"0"}
3043,{"country_id":"144","country_name":"Rwanda","country_code":"+250","country_is_deleted":"0"},{"country_id":"145","country_name":"Saint Kitts and Nevis","country_code":"+1-869","country_is_deleted":"0"},{"country_id":"146","country_name":"Saint Lucia","country_code":"+1-758","country_is_deleted":"0"},{"country_id":"147","country_name":"Saint Vincent and the Grenadines","country_code":"+1-784","country_is_deleted":"0"},{"country_id":"148","country_name":"Samoa","country_code":"+685","country_is_deleted":"0"},{"country_id":"149","country_name":"San Marino","country_code":"+378","country_is_deleted":"0"},{"country_id":"150","country_name":"Sao Tome and Principe","country_code":"+239","country_is_deleted":"0"},{"country_id":"151","country_name":"Saudi Arabia","country_code":"+966","country_is_deleted":"0"},{"country_id":"152","country_name":"Senegal","country_code":"+221","country_is_deleted":"0"},{"country_id":"153","country_name":"Serbia","country_code":"+381","country_is_deleted":"0"},{"country_id":"154","country_name":"Seychelles","country_code":"+248","country_is_deleted":"0"},{"country_id":"155","country_name":"Sierra Leone","country_code":"+232","country_is_deleted":"0"},{"country_id":"156","country_name":"Singapore","country_code":"+65","country_is_deleted":"0"},{"country_id":"157","country_name":"Slovakia","country_code":"+421","country_is_deleted":"0"},{"country_id":"158","country_name":"Slovenia","country_code":"+386","country_is_deleted":"0"},{"country_id":"159","country_name":"Solomon Islands","country_code":"+677","country_is_deleted":"0"},{"country_id":"160","country_name":"Somalia","country_code":"+252","country_is_deleted":"0"},{"country_id":"161","country_name":"South Africa","country_code":"+27","country_is_deleted":"0"},{"country_id":"162","country_name":"South Sudan","country_code":"+211","country_is_deleted":"0"},{"country_id":"163","country_name":"Spain","country_code":"+34","country_is_deleted":"0"},{"country_id":"164","country_name":"Sri Lanka","country_code":"+94","country_is_deleted":"0"},{"country_id":"165","country_name":"Sudan","country_code":"+249","country_is_deleted":"0"},{"country_id":"166","country_name":"Suriname","country_code":"+597","country_is_deleted":"0"},{"country_id":"167","country_name":"Sweden","country_code":"+46","country_is_deleted":"0"},{"country_id":"168","country_name":"Switzerland","country_code":"+41","country_is_deleted":"0"},{"country_id":"169","country_name":"Syria","country_code":"+963","country_is_deleted":"0"},{"country_id":"170","country_name":"Taiwan","country_code":"+886","country_is_deleted":"0"},{"country_id":"171","country_name":"Tajikistan","country_code":"+992","country_is_deleted":"0"},{"country_id":"172","country_name":"Tanzania","country_code":"+255","country_is_deleted":"0"},{"country_id":"173","country_name":"Thailand","country_code":"+66","country_is_deleted":"0"},{"country_id":"174","country_name":"Timor-Leste","country_code":"+670","country_is_deleted":"0"},{"country_id":"175","country_name":"Togo","country_code":"+228","country_is_deleted":"0"},{"country_id":"176","country_name":"Tonga","country_code":"+676","country_is_deleted":"0"},{"country_id":"177","country_name":"Trinidad and Tobago","country_code":"+1-868","country_is_deleted":"0"},{"country_id":"178","country_name":"Tunisia","country_code":"+216","country_is_deleted":"0"},{"country_id":"179","country_name":"Turkey","country_code":"+90","country_is_deleted":"0"},{"country_id":"180","country_name":"Turkmenistan","country_code":"+993","country_is_deleted":"0"},{"country_id":"181","country_name":"Tuvalu","country_code":"+688","country_is_deleted":"0"},{"country_id":"182","country_name":"Uganda","country_code":"+256","country_is_deleted":"0"},{"country_id":"183","country_name":"Ukraine","country_code":"+380","country_is_deleted":"0"},{"country_id":"184","country_name":"United Arab Emirates","country_code":"+971","country_is_deleted":"0"},{"country_id":"185","country_name":"United Kingdom","country_code":"+44","country_is_deleted":"0"},{"country_id":"186","country_name":"United States","country_code":"+1","country_is_deleted":"0"}
3043,{"country_id":"187","country_name":"Uruguay","country_code":"+598","country_is_deleted":"0"},{"country_id":"188","country_name":"Uzbekistan","country_code":"+998","country_is_deleted":"0"},{"country_id":"189","country_name":"Vanuatu","country_code":"+678","country_is_deleted":"0"},{"country_id":"190","country_name":"Vatican City","country_code":"+379","country_is_deleted":"0"},{"country_id":"191","country_name":"Venezuela","country_code":"+58","country_is_deleted":"0"},{"country_id":"192","country_name":"Vietnam","country_code":"+84","country_is_deleted":"0"},{"country_id":"193","country_name":"Yemen","country_code":"+967","country_is_deleted":"0"},{"country_id":"194","country_name":"Zambia","country_code":"+260","country_is_deleted":"0"},{"country_id":"195","country_name":"Zimbabwe","country_code":"+263","country_is_deleted":"0"}]}; 3044// 2. Population Logic 3045if (countryData.status && countryData.countrylist) { 3046 // Sort once for both forms 3047 const sortedList = countryData.countrylist.sort((a, b) => 3048 a.country_name.localeCompare(b.country_name) 3049 ); 3050 3051 // Target both select elements 3052 const mainSelect = document.getElementById("country-code"); // Contact form 3053 const brochureSelect = document.getElementById("b-country-code"); // Brochure form 3054 3055 // Target both hidden inputs 3056 const mainHidden = document.getElementById("country-name-hidden"); 3057 const brochureHidden = document.getElementById("b-country-name-hidden"); 3058 3059 // Clear and Fill both 3060 [ {el: mainSelect, hidden: mainHidden}, {el: brochureSelect, hidden: brochureHidden} ].forEach(obj => { 3061 if (obj.el) { 3062 obj.el.innerHTML = ''; // Clear fallback 3063 3064 sortedList.forEach(country => { 3065 const option = document.createElement("option"); 3066 option.value = country.country_id; 3067 option.setAttribute('data-name', country.country_name); 3068 option.textContent = `${country.country_name} (${country.country_code})`; 3069 3070 // Set Default to India 3071 if (country.country_name.toLowerCase() === "india") { 3072 option.selected = true; 3073 if (obj.hidden) obj.hidden.value = country.country_name; 3074 } 3075 obj.el.appendChild(option); 3076 }); 3077 3078 // Add listener to update hidden field on change 3079 obj.el.addEventListener("change", function() { 3080 const selected = this.options[this.selectedIndex]; 3081 const name = selected.getAttribute('data-name'); 3082 if (obj.hidden) obj.hidden.value = name; 3083 }); 3084 } 3085 }); 3086} 3087 3088 // --- 3. Submission & Download Logic --- 3089const bForm = document.getElementById("brochure-form-custom"); 3090 3091bForm.addEventListener("submit", function (e) { 3092 e.preventDefault(); 3093 3094 // 1. Get the actual elements (for error placement) 3095 const nameEl = document.getElementById("b-name"); 3096 const emailEl = document.getElementById("b-email"); 3097 const phoneEl = document.getElementById("b-phone"); 3098 const countryEl = document.getElementById("b-country-code"); 3099 const submitBtn = document.getElementById("b-submit-btn"); 3100 3101 // 2. Clear all previous error messages 3102 this.querySelectorAll(".error-msg").forEach(el => el.textContent = ""); 3103 let isValid = true; 3104 3105 // 3. Validation 3106 if (!/^[A-Za-z ]{3,}$/.test(nameEl.value.trim())) { 3107 showBrochureError(nameEl, "Please enter a valid name (min 3 letters)"); 3108 isValid = false; 3109 } 3110 3111 if (!/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(emailEl.value.trim())) { 3112 showBrochureError(emailEl, "Please enter a valid email address"); 3113 isValid = false; 3114 } 3115 3116 // Contact validation (Checks for exactly 10 digits) 3117 if (!/^[0-9]{10,15}$/.test(phoneEl.value.trim())) { 3118 showBrochureError(phoneEl, "Enter a valid mobile number"); 3119 isValid = false; 3120 } 3121 3122 if (!countryEl.value) { 3123 showBrochureError(countryEl, "Please select a country code"); 3124 isValid = false; 3125 } 3126 3127 if (!isValid) return; 3128 3129 // 4. Processing State 3130 submitBtn.disabled = true; 3131 const originalBtnText = submitBtn.innerText; 3132 submitBtn.innerHTML = '<span class="spinner-border spinner-border-sm"></span> Processing...'; 3133 3134 const formData = new FormData(this); 3135 3136 fetch('https://techkshetrainfo.com/CRM/Login/attendify_brochure_download', { 3137 method: 'POST', 3138 body: formData 3139 }) 3140 .then(async res => { 3141 const text = await res.text(); 3142 try { 3143 return JSON.parse(text); 3144 } catch (err) { 3145 console.error("Raw Server Response:", text); 3146 throw new Error("Invalid server response format"); 3147 } 3148 }) 3149 .then(data => { 3150 if (data.status === 'success' || data.status == 1) { 3151 // Trigger download 3152 const link = document.createElement('a'); 3153 link.href = 'https://attendify.ai/AttendifyHR_CorporateBrochure.pdf'; 3154 link.setAttribute('download', 'AttendifyHR_CorporateBrochure.pdf'); 3155 document.body.appendChild(link); 3156 link.click(); 3157 document.body.removeChild(link); 3158 3159 // Success UI Actions 3160 const bModal = document.getElementById("brochureModalCustom"); 3161 if(bModal) bModal.style.display = "none"; 3162 3163 bForm.reset(); 3164 // Optional: Show a nice success toast here 3165 console.log("Download started successfully."); 3166 } else { 3167 // Server-side validation error 3168 showBrochureError(nameEl, data.message || "Submission failed."); 3169 } 3170 }) 3171 .catch(err => { 3172 console.error("Fetch Error:", err); 3173 // Fallback error if the server crashes or JSON is bad 3174 showBrochureError(submitBtn, "Connection error. Data saved but couldn't confirm."); 3175 }) 3176 .finally(() => { 3177 submitBtn.disabled = false;
3178 submitBtn.innerText = originalBtnText; 3179 }); 3180}); 3181}); 3182 3183function showBrochureError(inputElement, message) { 3184 // Find the nearest error-msg container relative to the input 3185 const container = inputElement.closest('.mb-2'); 3186 if (container) { 3187 const errorDisplay = container.querySelector('.error-msg'); 3188 if (errorDisplay) { 3189 errorDisplay.textContent = message; 3190 inputElement.classList.add('is-invalid'); // Optional: red border if using Bootstrap 3191 } 3192 } 3193} 3194</script>
3194 3195
3196<script src="js/jquery.min.js" defer></script>
vendor: 1 bytes, line 3196
3196
3197<script src="js/custom.js" defer></script>
vendor: 1 bytes, line 3197
3197
3198<script src="js/bootstrap.bundle.min.js" defer></script>
vendor: 1 bytes, line 3198
3198
3199<script src="https://cdn.jsdelivr.net/npm/flatpickr" defer></script>
vendor: 1 bytes, line 3199
3199
3200<script> 3201 let tawkLoaded = false; 3202 3203 function loadTawk() { 3204 if (tawkLoaded) return; 3205 tawkLoaded = true; 3206 3207 var s1 = document.createElement("script"); 3208 s1.src = 'https://embed.tawk.to/66b9ab740cca4f8a7a74cb93/1i52kbfsh'; 3209 s1.async = true; 3210 document.body.appendChild(s1); 3211 } 3212 3213 window.addEventListener("scroll", loadTawk); 3214 window.addEventListener("click", loadTawk); 3215</script>
3215</html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.