1 2(function ($) { 3 // "use strict"; 4 5 var ROOT_URL = "https://www.finnovate.in"; 6 7 var DARK_NAV_SLUGS = [ 8 "about-us-old", 9 "advisorybackup", 10 "affordability-calculator", 11 "aindex", 12 "careers", 13 "compliant-redressal", 14 "contact-us", 15 "faq", 16 "faqs-pb", 17 "finn-tools", 18 "finnfit-test", 19 "insurance-grievance-redressal", 20 "lodge-complaints", 21 "privacy-policy", 22 "property-yield-calculator", 23 "refund-policy", 24 "sebi-investor-charter", 25 "services", 26 "sip-calculator2", 27 "terms-conditions", 28 "testpage", 29 "track-page", 30 "transact-page", 31 "lodge-complaints-new" 32 ]; 33 34 var getPathSlug = function () { 35 var path = window.location.pathname.split("?")[0].toLowerCase(); 36 path = path.replace(/\/+$/, ""); 37 if (path === "" || path === "/") { 38 return ""; 39 } 40 var segments = path.split("/").filter(Boolean); 41 var last = segments.length ? segments[segments.length - 1] : ""; 42 if (last.indexOf(".") !== -1) { 43 last = last.split(".")[0]; 44 } 45 return last; 46 }; 47 48 var getUtmMedium = function () { 49 var slug = getPathSlug(); 50 return slug || "homepage"; 51 }; 52 53 var getFooterMedium = function () { 54 var mediumBase = getUtmMedium() || "homepage"; 55 return mediumBase + "-footer"; 56 }; 57 58 // Detour smart link â routes to Play Store or App Store by device. 59 var APP_SMART_LINK = "https://finnovate.godetour.link/ImFyaps11Z"; 60 61 var buildAppLink = function (medium, campaign, platform) { 62 return APP_SMART_LINK 63 + "?utm_origin=Organic&utm_source=Website" 64 + "&utm_medium=" + encodeURIComponent(medium) 65 + "&utm_campaign=" + campaign 66 + "&utm_term=" + platform 67 + "&utm_content=Download%20App"; 68 }; 69 70 var SESSION_KEY = "ff_landing"; 71 var PC_KEY = "ff_pc"; 72 var LP_PREFIX = "lp."; 73 var PC_PREFIX = "pc."; 74 var CALENDLY_PREFIX = "https://calendly.com/finnovate/"; 75 76 var ensureSessionLandingPath = function () { 77 try { 78 var existing = sessionStorage.getItem(SESSION_KEY); 79 if (existing) { 80 return existing; 81 } 82 var slug = getPathSlug() || "homepage"; 83 sessionStorage.setItem(SESSION_KEY, slug); 84 return slug; 85 } catch (e) { 86 return getPathSlug() || "homepage"; 87 } 88 }; 89 90 var incrementPageCount = function () { 91 try { 92 var count = parseInt(sessionStorage.getItem(PC_KEY) || "0", 10); 93 sessionStorage.setItem(PC_KEY, String(count + 1)); 94 } catch (e) {} 95 }; 96 97 var getPageCount = function () { 98 try { 99 return parseInt(sessionStorage.getItem(PC_KEY) || "1", 10); 100 } catch (e) { 101 return 1; 102 } 103 }; 104 105 var decorateCalendlyUrl = function (url) { 106 try { 107 if (!url || typeof url !== "string") { 108 return url; 109 } 110 111 var parsedUrl = new URL(url, window.location.origin); 112 var fullHref = parsedUrl.href; 113 if (fullHref.indexOf(CALENDLY_PREFIX) !== 0) { 114 return url; 115 } 116 117 var utmTerm = parsedUrl.searchParams.get("utm_term") || ""; 118 if (utmTerm.indexOf(LP_PREFIX) !== -1) { 119 return parsedUrl.toString(); 120 } 121 122 var landingPath = ensureSessionLandingPath(); 123 var lpToken = LP_PREFIX + landingPath; 124 var pcToken = PC_PREFIX + getPageCount(); 125 var nextUtmTerm = utmTerm ? (utmTerm + "|" + lpToken + "|" + pcToken) : (lpToken + "|" + pcToken); 126 parsedUrl.searchParams.set("utm_term", nextUtmTerm); 127 return parsedUrl.toString(); 128 } catch (e) { 129 return url; 130 } 131 }; 132 133 var findAnchorElement = function (target) { 134 if (!target) { 135 return null; 136 } 137 if (target.closest) { 138 return target.closest("a"); 139 } 140 var node = target; 141 while (node && node !== document) { 142 if (node.tagName && node.tagName.toLowerCase() === "a") { 143 return node; 144 } 145 node = node.parentNode; 146 } 147 return null; 148 }; 149 150 var patchCalendlyMethods = function () { 151 if (!window.Calendly || window.__ffCalendlyMethodPatchDone) { 152 return; 153 } 154 155 if (typeof window.Calendly.initPopupWidget === "function") { 156 var originalInitPopupWidget = window.Calendly.initPopupWidget; 157 window.Calendly.initPopupWidget = function (options) { 158 if (options && options.url) { 159 options.url = decorateCalendlyUrl(options.url); 160 } 161 return originalInitPopupWidget.call(window.Calendly, options); 162 }; 163 } 164 165 if (typeof window.Calendly.showPopupWidget === "function") { 166 var originalShowPopupWidget = window.Calendly.showPopupWidget; 167 window.Calendly.showPopupWidget = function (url) { 168 return originalShowPopupWidget.call(window.Calendly, decorateCalendlyUrl(url)); 169 }; 170 } 171
172 window.__ffCalendlyMethodPatchDone = true; 173 }; 174 175 var installCalendlyAssignmentHook = function () { 176 var currentCalendly = window.Calendly; 177 178 if (window.__ffCalendlyAssignmentHookInstalled) { 179 return; 180 } 181 182 try { 183 Object.defineProperty(window, "Calendly", { 184 configurable: true, 185 enumerable: true, 186 get: function () { 187 return currentCalendly; 188 }, 189 set: function (value) { 190 currentCalendly = value; 191 window.__ffCalendlyMethodPatchDone = false; 192 patchCalendlyMethods(); 193 } 194 }); 195 window.__ffCalendlyAssignmentHookInstalled = true; 196 } catch (e) { 197 return; 198 } 199 200 if (currentCalendly) { 201 window.__ffCalendlyMethodPatchDone = false; 202 patchCalendlyMethods(); 203 } 204 }; 205 206 // Lock session-first path and increment page count on every page load. 207 ensureSessionLandingPath(); 208 incrementPageCount(); 209 installCalendlyAssignmentHook(); 210 patchCalendlyMethods(); 211 var calendlyPatchAttempt = setInterval(function () { 212 patchCalendlyMethods(); 213 if (window.__ffCalendlyMethodPatchDone) { 214 clearInterval(calendlyPatchAttempt); 215 } 216 }, 500); 217 218 // Ensure direct Calendly anchor clicks (non-popup flows) also carry lp tracking. 219 document.addEventListener("click", function (event) { 220 var anchor = findAnchorElement(event.target); 221 if (!anchor || !anchor.href) { 222 return; 223 } 224 anchor.href = decorateCalendlyUrl(anchor.href); 225 }, true); 226 227 // Shared Calendly opener for unified footer CTA 228 window.openCalendlyFooter = function (url) { 229 url = decorateCalendlyUrl(url); 230 231 // If Calendly is already available, open immediately 232 if (window.Calendly && typeof window.Calendly.initPopupWidget === "function") { 233 window.Calendly.initPopupWidget({ url: url }); 234 return false; 235 } 236 237 // Ensure widget CSS is present (idempotent) 238 if (!document.querySelector('link[href^="https://assets.calendly.com/assets/external/widget.css"]')) { 239 var link = document.createElement("link"); 240 link.rel = "stylesheet"; 241 link.href = "https://assets.calendly.com/assets/external/widget.css"; 242 document.head.appendChild(link); 243 } 244 245 // Reuse existing script tag if present 246 var existingScript = document.querySelector('script[src^="https://assets.calendly.com/assets/external/widget.js"]'); 247 if (existingScript) { 248 existingScript.addEventListener("load", function () { 249 if (window.Calendly && typeof window.Calendly.initPopupWidget === "function") { 250 window.Calendly.initPopupWidget({ url: url }); 251 } 252 }); 253 return false; 254 } 255 256 // Otherwise, load the Calendly widget script on demand 257 var script = document.createElement("script"); 258 script.src = "https://assets.calendly.com/assets/external/widget.js"; 259 script.async = true; 260 script.onload = function () { 261 if (window.Calendly && typeof window.Calendly.initPopupWidget === "function") { 262 window.Calendly.initPopupWidget({ url: url }); 263 } 264 }; 265 document.head.appendChild(script); 266 267 return false; 268 }; 269 // Reusable alias so header/nav CTAs can use the same loader 270 window.openCalendlyPopup = function (url) { 271 return window.openCalendlyFooter && window.openCalendlyFooter(url); 272 }; 273 274 var hasDarkNav = function () { 275 var slug = getPathSlug(); 276 return DARK_NAV_SLUGS.indexOf(slug) !== -1; 277 }; 278 279 var getUnifiedLogoSrc = function () { 280 return hasDarkNav() 281 ? "/assets/images/Finnovate logo.webp" 282 : "/assets/images/logo.svg"; 283 }; 284 285 var buildUnifiedNavMarkup = function () { 286 var logoSrc = getUnifiedLogoSrc(); 287 var utmMedium = getUtmMedium(); 288 return ` 289 <!-- ***** Logo Start ***** --> 290 <a href="${ROOT_URL}/" class="logo"><img src="${logoSrc}" alt="logo" style="height: 30px;"></a> 291 <!-- ***** Logo End ***** --> 292 <!-- ***** Menu Start ***** --> 293 <ul class="nav"> 294 295 <li class="dropdown"> 296 <div class="dropbtn-container"> 297 <a href="${ROOT_URL}/advisory/" class="dropbtn" data-track-click="top_nav_services">Services <i 298 class="fas fa-chevron-down"></i></a> 299 </div> 300 <div class="dropdown-content nav-panel"> 301 <div class="nav-panel-grid"> 302 <div class="nav-col nav-col--start"> 303 <p class="nav-col-label"><i class="fas fa-flag nav-col-ico"></i><span>Start Here</span><i class="fas fa-chevron-down nav-col-caret"></i></p> 304 <div class="nav-col-links"> 305 <a class="nav-feature" href="${ROOT_URL}/advisory/" data-track-click="top_nav_advisory_overview">
306 <span class="nf-title">Explore Finnovate Advisory</span> 307 <small class="nf-desc">See how our advisory model, services and process work.</small> 308 </a> 309 <a class="nav-feature nav-feature--alt" href="${ROOT_URL}/advisory/pricing" data-track-click="top_nav_pricing_fees"> 310 <span class="nf-title">Pricing & Fees</span> 311 <small class="nf-desc">See fees across all advisory services.</small> 312 </a> 313 </div> 314 </div> 315 <div class="nav-col"> 316 <p class="nav-col-label"><i class="fas fa-briefcase nav-col-ico"></i><span>Advisory Services</span><i class="fas fa-chevron-down nav-col-caret"></i></p> 317 <div class="nav-col-links"> 318 <a href="${ROOT_URL}/advisory/financial-planning" data-track-click="top_nav_financial_planning"><img src="/assets/images/advisory-icon-01.webp" 319 alt="Financial Planning Icon"><div><span class="np-title">Financial Planning</span><small class="np-desc">A complete written plan for your goals</small></div></a> 320 <a href="${ROOT_URL}/advisory/wealth-management" data-track-click="top_nav_wealth_management"><img src="/assets/images/advisory-icon-02.webp" 321 alt="Wealth Management Icon"><div><span class="np-title">Wealth Management</span><small class="np-desc">Ongoing advisory for your portfolio</small></div></a> 322 <a href="${ROOT_URL}/advisory/retirement-planning" data-track-click="top_nav_retirement_planning"><img src="/assets/images/retire.webp" 323 alt="Retirement Planning Icon"><div><span class="np-title">Retirement Planning</span><small class="np-desc">Build the corpus your retirement needs</small></div></a> 324 <a href="${ROOT_URL}/advisory/tax-planning" data-track-click="top_nav_tax_planning"><img src="/assets/images/advisory-icon-03.webp" 325 alt="Tax Planning Icon"><div><span class="np-title">Tax Planning</span><small class="np-desc">Keep every decision tax-efficient</small></div></a> 326 <a href="${ROOT_URL}/advisory/estate-planning" data-track-click="top_nav_estate_planning"><img src="/assets/images/advisory-icon-04.webp" 327 alt="Estate Planning Icon"><div><span class="np-title">Estate Planning</span><small class="np-desc">Wills, nominations and succession</small></div></a> 328 </div> 329 </div> 330 <div class="nav-col"> 331 <p class="nav-col-label"><i class="fas fa-user-plus nav-col-ico"></i><span>Specialist</span><i class="fas fa-chevron-down nav-col-caret"></i></p> 332 <div class="nav-col-links"> 333 <a href="${ROOT_URL}/doctors" data-track-click="top_nav_doctors_advisory"><i class="fas fa-user-md nav-fa-icon"></i><div><span class="np-title">For Doctors</span><small class="np-desc">Planning built for medical professionals</small></div></a> 334 <a href="${ROOT_URL}/advisory/nri" data-track-click="top_nav_nri_advisory"><i class="fas fa-globe nri-nav-icon"></i><div><span class="np-title">For NRIs</span><small class="np-desc">Cross-border planning and advice</small></div></a> 335 <a href="${ROOT_URL}/advisory/business-owners" data-track-click="top_nav_business_owners_advisory"><i class="fas fa-user-tie nav-fa-icon"></i><div><span class="np-title">For Business Owners</span><small class="np-desc">Planning built for entrepreneurs too</small></div></a> 336 </div> 337 </div> 338 </div> 339 </div> 340 </li> 341 342 <li class="dropdown"> 343 <div class="dropbtn-container"> 344 <a href="${ROOT_URL}/why-finnovate" class="dropbtn" data-track-click="top_nav_why_finnovate">Why Finnovate <i 345 class="fas fa-chevron-down"></i></a> 346 </div> 347 <div class="dropdown-content nav-panel"> 348 <div class="nav-panel-grid"> 349 <div class="nav-col nav-col--start"> 350 <p class="nav-col-label"><i class="fas fa-info-circle nav-col-ico"></i><span>Understand Finnovate</span><i class="fas fa-chevron-down nav-col-caret"></i></p> 351 <div class="nav-col-links"> 352 <a class="nav-feature" href="${ROOT_URL}/why-finnovate" data-track-click="top_nav_why_finnovate_feature">
353 <span class="nf-title">Why Finnovate</span> 354 <small class="nf-desc">Our approach to making your financial life work as one connected system.</small> 355 </a> 356 <a href="https://www.finnovate.in/about-us#how-it-works" data-track-click="top_nav_how_we_work"><i class="fas fa-map-signs nav-fa-icon"></i><div><span class="np-title">How We Work</span><small class="np-desc">From your first conversation to ongoing reviews</small></div></a> 357 <a href="${ROOT_URL}/testimonials" data-track-click="top_nav_testimonials_page"><img src="/assets/images/testimonials-icon.webp" 358 alt="Testimonials Videos Icon"><div><span class="np-title">Client Experiences</span><small class="np-desc">Named stories and video testimonials</small></div></a> 359 </div> 360 </div> 361 <div class="nav-col"> 362 <p class="nav-col-label"><i class="fas fa-building nav-col-ico"></i><span>Proof & Company</span><i class="fas fa-chevron-down nav-col-caret"></i></p> 363 <div class="nav-col-links"> 364 <a href="${ROOT_URL}/about-us" data-track-click="top_nav_who_we_are"><img src="/assets/images/about-icon.webp" 365 alt="About Us Icon"><div><span class="np-title">Who We Are</span><small class="np-desc">Our story, founders and mission</small></div></a> 366 <a href="${ROOT_URL}/about-us#team" data-track-click="top_nav_our_team"><i class="fas fa-users nav-fa-icon"></i><div><span class="np-title">Our Team</span><small class="np-desc">The people behind the plans</small></div></a> 367 <a href="${ROOT_URL}/near-me/" data-track-click="top_nav_near_me_page"><img src="/assets/images/locations-icon.webp" 368 alt="Office Locations Icon"><div><span class="np-title">Our Locations</span><small class="np-desc">Meet us in person or virtually</small></div></a> 369 <a href="${ROOT_URL}/faq" data-track-click="top_nav_faq_page"><img src="/assets/images/faq-icon.webp" 370 alt="FAQ Icon"><div><span class="np-title">FAQs</span><small class="np-desc">Common questions, answered</small></div></a> 371 </div> 372 </div> 373 </div> 374 </div> 375 </li> 376 377 <li class="dropdown"> 378 <div class="dropbtn-container"> 379 <a href="${ROOT_URL}/learn/finnversity" class="dropbtn" data-track-click="top_nav_learn_finnversity">Learn <i 380 class="fas fa-chevron-down"></i></a> 381 </div> 382 <div class="dropdown-content nav-panel"> 383 <div class="nav-panel-grid"> 384 <div class="nav-col"> 385 <p class="nav-col-label"><i class="fas fa-book nav-col-ico"></i><span>Learn</span><i class="fas fa-chevron-down nav-col-caret"></i></p> 386 <div class="nav-col-links"> 387 <a href="${ROOT_URL}/learn/blog-listing" data-track-click="top_nav_learn_blogs"><img src="/assets/images/blogs.webp" 388 alt="Blogs Icon"><div><span class="np-title">Blogs</span><small class="np-desc">Guides, explainers and deep dives</small></div></a> 389 <a href="${ROOT_URL}/learn/finnversity" data-track-click="top_nav_learn_finnversity_dropdown"><img src="/assets/images/finnversityv2.webp" 390 alt="Finnversity Icon"><div><span class="np-title">Finnversity</span><small class="np-desc">Structured courses on money</small></div></a> 391 <a href="${ROOT_URL}/glossary/" data-track-click="top_nav_learn_glossary"><i class="fas fa-spell-check nav-fa-icon"></i><div><span class="np-title">Financial Glossary</span><small class="np-desc">100+ money terms, explained simply</small></div></a> 392 </div> 393 </div> 394 <div class="nav-col"> 395 <p class="nav-col-label"><i class="fas fa-headphones nav-col-ico"></i><span>Watch & Listen</span><i class="fas fa-chevron-down nav-col-caret"></i></p> 396 <div class="nav-col-links"> 397 <a href="${ROOT_URL}/podcast" data-track-click="top_nav_learn_podcast"><img src="/assets/images/podcast.webp" 398 alt="Podcast Icon"><div><span class="np-title">Podcast</span><small class="np-desc">Money conversations on the go</small></div></a> 399 <a href="${ROOT_URL}/events/" data-track-click="top_nav_learn_events"><i class="fas fa-calendar-alt nav-fa-icon"></i><div><span class="np-title">Events</span><small class="np-desc">Webinars and meetups to attend</small></div></a> 400 <a href="${ROOT_URL}/learn/videos" data-track-click="top_nav_learn_videos"><img src="/assets/images/videos1.webp" 401 alt="Videos Icon"><div><span class="np-title">Videos</span><small class="np-desc">Watch concepts explained simply</small></div></a> 402 </div> 403 </div> 404 <div class="nav-col"> 405 <p class="nav-col-label"><i class="fas fa-search nav-col-ico"></i><span>Research</span><i class="fas fa-chevron-down nav-col-caret"></i></p> 406 <div class="nav-col-links"> 407 <a href="${ROOT_URL}/mutual-funds/" data-track-click="top_nav_mutual_fund_research"><img src="/assets/images/MutualFund.webp" 408 alt="Mutual Fund Research Icon"><div><span class="np-title">Mutual Fund Research</span><small class="np-desc">Explore schemes, data and overlap</small></div></a> 409 <a href="${ROOT_URL}/news-articles" data-track-click="top_nav_learn_news"><img src="/assets/images/news1.webp" 410 alt="News Icon"><div><span class="np-title">Finnovate in the News</span><small class="np-desc">Our press coverage and media mentions</small></div></a> 411 </div> 412 </div> 413 </div> 414 </div> 415 </li> 416 417 <!-- Mobile-inline essentials --> 418 <li class="mobile-inline-link"> 419 <a href="${ROOT_URL}/calculators" data-track-click="mobile_nav_tools">Tools</a> 420 </li> 421 422 423 <!-- <li class="scroll-to-section"><a href="#frequently-question">Frequently Questions</a></li> --> 424 <li class="mega-drop-down tools-mega"> 425 <div class="dropbtn-container"> 426 <a href="${ROOT_URL}/calculators" class="dropbtn" data-track-click="top_nav_tools">Tools <i class="fas fa-chevron-down"></i></a> 427 </div> 428 <div class="mega-menu tools-menu"> 429 <div class="mega-menu-wrap"> 430 <div class="mega-header-row"> 431 <p class="mega-label">Calculators</p>
432 <span class="mega-trending-chip">★ Trending Now</span> 433 </div> 434 <div class="mega-grid mega-grid--featured"> 435 <a class="mega-link mega-link--featured" 436 href="${ROOT_URL}/fire-calculator" data-track-click="top_nav_fire_calculator"> 437 <img src="/assets/images/fire.webp" alt="FIRE Icon"> 438 <div> 439 <span class="mega-title-row"> 440 <span class="mega-title">FIRE</span> 441 <span class="mega-badge mega-badge--green">Trending</span> 442 </span> 443 <small class="mega-desc">See when work becomes optional</small> 444 </div> 445 </a> 446 <a class="mega-link mega-link--featured" 447 href="${ROOT_URL}/swp-calculator" data-track-click="top_nav_swp_calculator"> 448 <img src="/assets/images/swp-icon.webp" alt="SWP Icon"> 449 <div> 450 <span class="mega-title-row"> 451 <span class="mega-title">SWP</span> 452 <span class="mega-badge mega-badge--blue">Popular</span> 453 </span> 454 <small class="mega-desc">Plan steady withdrawals</small> 455 </div> 456 </a> 457 <a class="mega-link mega-link--featured" 458 href="${ROOT_URL}/income-tax-calculator" data-track-click="top_nav_income_tax_calculator"> 459 <img src="/assets/images/taxsave.webp" alt="Income Tax Calculator Icon"> 460 <div> 461 <span class="mega-title-row"> 462 <span class="mega-title">Income Tax</span> 463 <span class="mega-badge mega-badge--new">New</span> 464 </span> 465 <small class="mega-desc">Compare old vs new tax regime</small> 466 </div> 467 </a> 468 </div> 469 <div class="mega-divider"><span>More Tools</span></div> 470 <div class="mega-grid mega-grid--more"> 471 <a class="mega-link mega-link--sm" 472 href="https://www.finnovate.in/finnfit-quiz"> 473 <img src="/assets/images/scorefinnfit.webp" alt="FinnFit Icon"> 474 <div> 475 <span class="mega-title">FinnFit Score</span> 476 <small class="mega-desc">Gauge your financial fitness</small> 477 </div> 478 </a> 479 <a class="mega-link mega-link--sm" 480 href="${ROOT_URL}/capital-gain-tax-calculator" data-track-click="top_nav_capital_gains_calculator"> 481 <img src="/assets/images/equity-icon.webp" alt="Capital Gains Icon"> 482 <div>
483 <span class="mega-title">Capital Gains</span> 484 <small class="mega-desc">Estimate your tax on gains</small> 485 </div> 486 </a> 487 <a class="mega-link mega-link--sm" 488 href="${ROOT_URL}/hra-calculator" data-track-click="top_nav_hra_calculator"> 489 <img src="/assets/images/fixed-income-icon.webp" alt="HRA Calculator Icon"> 490 <div> 491 <span class="mega-title">HRA</span> 492 <small class="mega-desc">Work out your HRA exemption</small> 493 </div> 494 </a> 495 <a class="mega-link mega-link--sm" 496 href="${ROOT_URL}/xirr-calculator" data-track-click="top_nav_xirr_calculator"> 497 <img src="/assets/images/xirr-icon.webp" alt="XIRR Icon"> 498 <div> 499 <span class="mega-title">XIRR</span> 500 <small class="mega-desc">Measure investment returns</small> 501 </div> 502 </a> 503 <a class="mega-link mega-link--sm" 504 href="${ROOT_URL}/retirement-calculator" data-track-click="top_nav_retirement_calculator"> 505 <img src="/assets/images/retire.webp" alt="Retirement Icon"> 506 <div> 507 <span class="mega-title">Retirement</span> 508 <small class="mega-desc">Plan what you need at 60</small> 509 </div> 510 </a> 511 <a class="mega-link mega-link--sm" 512 href="${ROOT_URL}/sip-calculator" data-track-click="top_nav_sip_calculator"> 513 <img src="/assets/images/sip-icon.webp" alt="SIP Icon"> 514 <div> 515 <span class="mega-title">SIP</span> 516 <small class="mega-desc">Project how your SIP grows</small> 517 </div> 518 </a> 519 <a class="mega-link mega-link--sm" 520 href="${ROOT_URL}/my-first-1-crore" data-track-click="top_nav_1_crore"> 521 <img src="/assets/images/score.webp" alt="1 Crore Icon"> 522 <div> 523 <span class="mega-title">1 Crore</span> 524 <small class="mega-desc">Map the journey to your first crore</small> 525 </div> 526 </a> 527 <a class="mega-link mega-link--sm" 528 href="${ROOT_URL}/emi-calculator" data-track-click="top_nav_emi_calculator"> 529 <img src="/assets/images/emi-icon.webp" alt="EMI Icon"> 530 <div>
531 <span class="mega-title">EMI</span> 532 <small class="mega-desc">Estimate monthly repayments</small> 533 </div> 534 </a> 535 <a class="mega-link mega-link--sm" 536 href="${ROOT_URL}/cagr-calculator" data-track-click="top_nav_cagr_calculator"> 537 <img src="/assets/images/cagr-icon.webp" alt="CAGR Icon"> 538 <div> 539 <span class="mega-title">CAGR</span> 540 <small class="mega-desc">Check average annual returns</small> 541 </div> 542 </a> 543 <a class="mega-link mega-link--sm" 544 href="${ROOT_URL}/child-education-plan-calculator" data-track-click="top_nav_child_education_calculator"> 545 <img src="/assets/images/education-icon.webp" alt="Child Education Icon"> 546 <div> 547 <span class="mega-title">Child Education</span> 548 <small class="mega-desc">Plan future education costs</small> 549 </div> 550 </a> 551 <a class="mega-link mega-link--sm" 552 href="${ROOT_URL}/mutual-funds/overlap-calculator" data-track-click="top_nav_mf_overlap_calculator"> 553 <img src="/assets/images/overlap1.svg" alt="MF Overlap Icon"> 554 <div> 555 <span class="mega-title">MF Overlap</span> 556 <small class="mega-desc">See common stocks across funds</small> 557 </div> 558 </a> 559 560 </div> 561 <div class="mega-footer-bar"> 562 <a href="${ROOT_URL}/calculators" class="mega-all-link" data-track-click="top_nav_view_all_calculators">View all calculators →</a> 563 </div> 564 </div> 565 </div> 566 </li> 567 568 <li class="scroll-to-section"> 569 <a href="https://www.financialopd.com/?utm_origin=Organic&utm_source=Website&utm_medium=${utmMedium}&utm_campaign=top_nav_financialopd&utm_term=Nav%20Bar&utm_content=DOCTORPro" style="text-transform: none;"><img src="/assets/images/medical-symbol.png" alt="DoctorPro Icon" style="height: 16px; width: 16px; margin-right: 6px; vertical-align: -2px;"> DOCTORPro</a> 570 </li> 571 572 573 <li class="mob_view nav-call-cta"> 574 <a href="javascript:;" onclick="return window.openCalendlyPopup && window.openCalendlyPopup('https://calendly.com/finnovate/financial-fitness-consultation?utm_origin=Organic&utm_source=Website&utm_medium=${utmMedium}&utm_campaign=top_nav_call_cta&utm_term=green_button&utm_content=Schedule%20Call');" class="CalendlyPopup" style=" background: #009356 ;color: #fff;padding: 0px 25px;border-radius: 575 10px;">Schedule 576 Call</a> 577 </li><!-- <li class="scroll-to-section"><a href="testimonials">Testimonials</a></li> --> 578 579 <li class="mob_view"> 580 <a href="https://wealth.finnovate.in/?utm_origin=Organic&utm_source=Website&utm_medium=${utmMedium}
580&utm_campaign=top_nav_members_login&utm_term=link&utm_content=Login">Login</a> 581 582 </li> 583 </ul><a class='menu-trigger'><span>Menu</span></a> <!-- ***** Menu End ***** --> 584 `; 585 }; 586 587 var injectUnifiedNav = function () { 588 var nav = document.querySelector(".header-area .main-nav"); 589 if (!nav) { 590 return; 591 } 592 nav.innerHTML = buildUnifiedNavMarkup(); 593 injectMobileQuickLinks(); 594 }; 595 596 // Mobile quick links fallback (ensures Tools/DoctorPro/CTA visible) 597 var injectMobileQuickLinks = function () { 598 var navList = document.querySelector(".header-area .main-nav .nav"); 599 // legacy: no-op now that mobile inline links are in markup 600 return; 601 }; 602 603 var applyNavTheme = function () { 604 var header = document.querySelector("header.header-area"); 605 if (!header) { 606 return; 607 } 608 if (hasDarkNav()) { 609 header.classList.add("dark-nav"); 610 } else { 611 header.classList.remove("dark-nav"); 612 } 613 }; 614 615 var setLogoForTheme = function () { 616 var logoImg = $(".logo img"); 617 if (!logoImg.length) { 618 return; 619 } 620 logoImg.attr("src", getUnifiedLogoSrc()); 621 }; 622 623 injectUnifiedNav(); 624 applyNavTheme(); 625 setLogoForTheme(); 626 $(window).on("resize", setLogoForTheme); 627 628 $("#insurance").owlCarousel({ 629 loop: true, 630 margin: 20, 631 nav: true, 632 pagination: false, 633 634 responsive: { 635 0: { 636 items: 1 637 }, 638 600: { 639 items: 2 640 }, 641 1000: { 642 items: 4 643 } 644 } 645 646 647 648 }); 649 var owl = $('#staff'); 650 owl.owlCarousel({ 651 margin: 20, 652 dots: false, 653 nav: true, 654 navText: [ 655 "<i class='fa fa-arrow-left'></i>", 656 "<i class='fa fa-arrow-right'></i>" 657 ], 658 autoplay: true, 659 autoplayHoverPause: true, 660 responsive: { 661 0: { 662 items: 1 663 }, 664 600: { 665 items: 2 666 }, 667 1000: { 668 items: 2 669 }, 670 1200: { 671 items: 4 672 } 673 } 674 }); 675 676 // Product and Marketing ST 677 var owl = $('#productmarketing'); 678 owl.owlCarousel({ 679 margin: 20, 680 dots: false, 681 nav: true, 682 navText: [ 683 "<i class='fa fa-arrow-left'></i>", 684 "<i class='fa fa-arrow-right'></i>" 685 ], 686 autoplay: true, 687 autoplayHoverPause: true, 688 responsive: { 689 0: { 690 items: 1 691 }, 692 600: { 693 items: 2 694 }, 695 1000: { 696 items: 2 697 }, 698 1200: { 699 items: 4 700 } 701 } 702 }); 703 // Product and Marketing ED 704 705 706 // HR and Operations ST 707 var owl = $('#hrandoperations'); 708 owl.owlCarousel({ 709 margin: 20, 710 dots: false, 711 nav: true, 712 navText: [ 713 "<i class='fa fa-arrow-left'></i>", 714 "<i class='fa fa-arrow-right'></i>" 715 ], 716 autoplay: true, 717 autoplayHoverPause: true, 718 responsive: { 719 0: { 720 items: 1 721 }, 722 600: { 723 items: 2 724 }, 725 1000: { 726 items: 2 727 }, 728 1200: { 729 items: 4 730 } 731 } 732 }); 733 // HR and Operations ED 734 735 736 var owl = $('#course'); 737 owl.owlCarousel({ 738 margin: 20, 739 dots: false, 740 nav: false, 741 loop: true, 742 743 stagePadding: 100, 744 responsive: { 745 0: { 746 items: 1, 747 stagePadding: 0, 748 margin: 10, 749 }, 750 600: { 751 items: 1, 752 stagePadding: 0, 753 margin: 10, 754 }, 755 1000: { 756 items: 1 757 }, 758 1200: { 759 items: 2, 760 761 } 762 } 763 }); 764 765 var owl = $('#testimonial'); 766 owl.owlCarousel({ 767 margin: 20, 768 dots: false, 769 nav: true, 770 loop: true, 771 navText: [ 772 "<i class='fa fa-chevron-left'></i>", 773 "<i class='fa fa-chevron-right'></i>" 774 ], 775 776 responsive: { 777 0: { 778 items: 1, 779 nav: false, 780 }, 781 600: { 782 items: 2, 783 nav: false, 784 }, 785 1000: { 786 items: 1 787 }, 788 1200: { 789 items: 1 790 } 791 } 792 }); 793 var owl = $('#family'); 794 owl.owlCarousel({ 795 margin: 20, 796 dots: true, 797 nav: false, 798 navText: [ 799 "<i class='fa fa-chevron-left'></i>", 800 "<i class='fa fa-chevron-right'></i>" 801 ], 802 803 responsive: { 804 0: { 805 items: 1 806 }, 807 600: { 808 items: 1 809 }, 810 1000: { 811 items: 1 812 }, 813 1200: { 814 items: 1 815 } 816 } 817 }); 818 var owl = $('#blog'); 819 owl.owlCarousel({ 820 margin: 10, 821 dots: false, 822 nav: true, 823 824 825 responsive: { 826 0: { 827 items: 1, 828 nav: false, 829 }, 830 600: { 831 items: 1, 832 nav: false 833 }, 834 1000: { 835 items: 2 836 }, 837 1200: { 838 items: 3 839 } 840 } 841 }); 842 $(window).scroll(function () { 843 var scroll = $(window).scrollTop(); 844 var boxHeight = $(".header-text").height() || 0; 845 var headerEl = $("header"); 846 var headerHeight = headerEl.height() || 0; 847 848 if (boxHeight && scroll >= boxHeight - headerHeight) { 849 headerEl.addClass("background-header"); 850 } else { 851 headerEl.removeClass("background-header"); 852 } 853 854 setLogoForTheme(); 855 }); 856 857 // Mobile menu dropdown 858 $(".submenu").on("click", function () { 859 var width = $(window).width(); 860 if (width < 992) { 861 $(".submenu ul").toggleClass("active"); 862 } 863 }); 864 865 // Scroll animation init 866 window.sr = new scrollReveal(); 867 868 // Menu Dropdown Toggle 869 // Create a shared mobile backdrop once 870 $(function () { 871 if (!$(".mobile-nav-backdrop").length) { 872 $("body").append('<div class="mobile-nav-backdrop"></div>'); 873 } 874 }); 875 876 $(document).on("click", ".menu-trigger", function () { 877 $(this).toggleClass("active"); 878 var isOpen = $("body").hasClass("nav-open"); 879 if (isOpen) { 880 $("body").removeClass("nav-open"); 881 $(".tools-menu").removeClass("clicked"); 882 $(".dropdown").removeClass("is-open");
883 $(".dropdown-content").slideUp(150); 884 } else { 885 $("body").addClass("nav-open"); 886 injectMobileQuickLinks(); 887 // Services expanded by default when the drawer opens 888 var $services = $(".header-area .main-nav .nav > li.dropdown").first(); 889 if ($services.length && !$services.hasClass("is-open")) { 890 $services.addClass("is-open"); 891 $services.find(".dropdown-content").first().show(); 892 } 893 } 894 }); 895 896 // Close mobile nav when tapping backdrop 897 $(document).on("click", ".mobile-nav-backdrop", function () { 898 $("body").removeClass("nav-open"); 899 $(".menu-trigger").removeClass("active"); 900 $(".dropdown").removeClass("is-open").find(".dropdown-content").slideUp(150); 901 $(".tools-menu").removeClass("clicked"); 902 }); 903 904 $(function () { 905 // Toggle tools mega menu on tap for mobile; keep desktop click fallback 906 $('.mega-drop-down').on('click', function (e) { 907 var $targetToggle = $(e.target).closest('.dropbtn-container'); 908 if ($(window).width() < 992) { 909 if ($targetToggle.length) { 910 e.preventDefault(); 911 e.stopPropagation(); 912 var $menu = $(this).find('.tools-menu').first(); 913 $('.tools-menu').not($menu).removeClass('clicked'); 914 $menu.toggleClass('clicked'); 915 } 916 return; 917 } 918 if ($targetToggle.length) { 919 $('.mega-menu').toggleClass('clicked'); 920 } 921 }); 922 923 // Mobile dropdown toggles for standard dropdowns (About, Products, Learn) 924 $(document).on('click', '.dropdown > .dropbtn-container > .dropbtn', function (e) { 925 if ($(window).width() >= 992) { 926 return; 927 } 928 var $dropdown = $(this).closest('.dropdown'); 929 if ($dropdown.hasClass('tools-mega')) { 930 return; 931 } 932 e.preventDefault(); 933 e.stopPropagation(); 934 var $content = $dropdown.find('.dropdown-content').first(); 935 var isOpen = $dropdown.hasClass('is-open'); 936 $('.dropdown').not($dropdown).removeClass('is-open').find('.dropdown-content').slideUp(150); 937 if (isOpen) { 938 $dropdown.removeClass('is-open'); 939 $content.slideUp(150); 940 } else { 941 $dropdown.addClass('is-open'); 942 $content.slideDown(180); 943 } 944 }); 945 946 // Mobile: level-2 group toggles inside nav panels (collapsed by default) 947 $(document).on('click', '.nav-panel .nav-col-label', function () { 948 if ($(window).width() >= 992) { 949 return; 950 } 951 var $col = $(this).closest('.nav-col'); 952 var $links = $col.find('.nav-col-links').first(); 953 if ($col.hasClass('nav-col-open')) { 954 $col.removeClass('nav-col-open'); 955 $links.slideUp(160); 956 } else { 957 $col.addClass('nav-col-open'); 958 $links.slideDown(180); 959 } 960 }); 961 962 // Close nav after selecting a non-dropdown link on mobile 963 $(document).on('click', '.header-area .nav li:not(.dropdown) > a', function () { 964 if ($(window).width() >= 992) { 965 return; 966 } 967 $(".menu-trigger").removeClass("active"); 968 $("body").removeClass("nav-open"); 969 $(".dropdown").removeClass("is-open").find('.dropdown-content').hide(); 970 $(".tools-menu").removeClass("clicked"); 971 }); 972 973 // Close nav when selecting a dropdown item or tool item on mobile 974 $(document).on('click', '.header-area .dropdown-content a, .header-area .tools-menu .mega-link', function () { 975 if ($(window).width() >= 992) { 976 return; 977 } 978 $(".menu-trigger").removeClass("active"); 979 $("body").removeClass("nav-open"); 980 $(".dropdown").removeClass("is-open").find('.dropdown-content').hide(); 981 $(".tools-menu").removeClass("clicked"); 982 }); 983
984 // Reset mobile nav state on resize to desktop 985 $(window).on('resize', function () { 986 if ($(window).width() >= 992) { 987 $("body").removeClass("nav-open"); 988 $(".menu-trigger").removeClass("active"); 989 $(".dropdown").removeClass("is-open").find('.dropdown-content').removeAttr('style'); 990 $(".tools-menu").removeClass("clicked"); 991 } 992 injectMobileQuickLinks(); 993 }); 994 }); 995 996 // Menu elevator animation 997 $("a[href*=\\#]:not([href=\\#])").on("click", function () { 998 if ( 999 location.pathname.replace(/^\//, "") == 1000 this.pathname.replace(/^\//, "") && 1001 location.hostname == this.hostname 1002 ) { 1003 var target = $(this.hash); 1004 target = target.length ? target : $("[name=" + this.hash.slice(1) + "]"); 1005 if (target.length) { 1006 var width = $(window).width(); 1007 if (width < 991) { 1008 $(".menu-trigger").removeClass("active"); 1009 $(".header-area .nav").slideUp(200); 1010 } 1011 $("html,body").animate( 1012 { 1013 scrollTop: target.offset().top - 80 1014 }, 1015 700 1016 ); 1017 return false; 1018 } 1019 } 1020 }); 1021 1022 $(document).ready(function () { 1023 $(document).on("scroll", onScroll); 1024 1025 //smoothscroll 1026 $('a[href^="#"]').on("click", function (e) { 1027 e.preventDefault(); 1028 $(document).off("scroll"); 1029 1030 $("a").each(function () { 1031 $(this).removeClass("active"); 1032 }); 1033 $(this).addClass("active"); 1034 1035 var target = this.hash, 1036 menu = target; 1037 var target = $(this.hash); 1038 $("html, body") 1039 .stop() 1040 .animate( 1041 { 1042 scrollTop: target.offset().top - 79 1043 }, 1044 500, 1045 "swing", 1046 function () { 1047 window.location.hash = target; 1048 $(document).on("scroll", onScroll); 1049 } 1050 ); 1051 }); 1052 }); 1053 1054 function onScroll(event) { 1055 var scrollPos = $(document).scrollTop(); 1056 $(".nav a").each(function () { 1057 var currLink = $(this); 1058 1059 try { 1060 var refElement = $(currLink.attr("href")); 1061 if ( 1062 refElement.length && 1063 refElement.position().top <= scrollPos && 1064 refElement.position().top + refElement.height() > scrollPos 1065 ) { 1066 $(".nav ul li a").removeClass("active"); 1067 currLink.addClass("active"); 1068 } else { 1069 currLink.removeClass("active"); 1070 } 1071 } catch (e) { 1072 // Ignore href='javascript:;' 1073 } 1074 }); 1075 } 1076 1077 var Accordion = { 1078 settings: { 1079 // Expand the first item by default 1080 first_expanded: false, 1081 // Allow items to be toggled independently 1082 toggle: false 1083 }, 1084 1085 openAccordion: function (toggle, content) { 1086 if (content.children.length) { 1087 toggle.classList.add("is-open"); 1088 var final_height = Math.floor(content.children[0].offsetHeight); 1089 content.style.height = final_height + "px"; 1090 } 1091 }, 1092 1093 closeAccordion: function (toggle, content) { 1094 toggle.classList.remove("is-open"); 1095 content.style.height = 0; 1096 }, 1097 1098 init: function (el) { 1099 var _this = this; 1100 1101 // Override default settings with classes 1102 var is_first_expanded = _this.settings.first_expanded; 1103 if (el.classList.contains("is-first-expanded")) is_first_expanded = true; 1104 var is_toggle = _this.settings.toggle; 1105 if (el.classList.contains("is-toggle")) is_toggle = true; 1106 1107 // Loop through the accordion's sections and set up the click behavior 1108 var sections = el.getElementsByClassName("accordion"); 1109 var all_toggles = el.getElementsByClassName("accordion-head"); 1110 var all_contents = el.getElementsByClassName("accordion-body"); 1111 for (var i = 0; i < sections.length; i++) { 1112 var section = sections[i]; 1113 var toggle = all_toggles[i]; 1114 var content = all_contents[i]; 1115 1116 // Click behavior 1117 toggle.addEventListener("click", function (e) { 1118 if (!is_toggle) { 1119 // Hide all content areas first 1120 for (var a = 0; a < all_contents.length; a++) { 1121 _this.closeAccordion(all_toggles[a], all_contents[a]); 1122 } 1123 1124 // Expand the clicked item 1125 _this.openAccordion(toggle, content); 1126 } else { 1127 // Toggle the clicked item 1128 if (toggle.classList.contains("is-open")) { 1129 _this.closeAccordion(toggle, content); 1130 } else { 1131 _this.openAccordion(toggle, content); 1132 } 1133 } 1134 }); 1135 1136 // Expand the first item 1137 if (i === 0 && is_first_expanded) { 1138 _this.openAccordion(toggle, content); 1139 } 1140 } 1141 } 1142 }; 1143 1144 (function () { 1145 // Initiate all instances on the page 1146 var accordions = document.getElementsByClassName("accordions"); 1147 for (var i = 0; i < accordions.length; i++) { 1148 Accordion.init(accordions[i]); 1149 } 1150 })(); 1151 1152 // Home seperator 1153 if ($(".home-seperator").length) { 1154 $(".home-seperator .left-item, .home-seperator .right-item").imgfix(); 1155 } 1156 1157 // Home number counterup 1158 if ($(".count-item").length) { 1159 $(".count-item strong").counterUp({ 1160 delay: 10, 1161 time: 1000 1162 }); 1163 } 1164 1165 // Page loading animation 1166 $(window).on("load", function () { 1167 if ($(".cover").length) { 1168 $(".cover").parallax({ 1169 imageSrc: $(".cover").data("image"), 1170 zIndex: "1" 1171 }); 1172 } 1173 1174 $("#preloader").animate( 1175 { 1176 opacity: "0" 1177 }, 1178 600, 1179 function () { 1180 setTimeout(function () { 1181 $("#preloader") 1182 .css("visibility", "hidden") 1183 .fadeOut(); 1184 }, 300); 1185 } 1186 ); 1187 }); 1188 1189 1190 var TabBlock = { 1191 s: { 1192 animLen: 200 1193 }, 1194 1195 init: function () { 1196 TabBlock.bindUIActions(); 1197 TabBlock.hideInactive(); 1198 }, 1199 1200 bindUIActions: function () { 1201 $('.tabBlock-tabs').on('click', '.tabBlock-tab', function () { 1202 TabBlock.switchTab($(this)); 1203 }); 1204 }, 1205 1206 hideInactive: function () { 1207 var $tabBlocks = $('.tabBlock'); 1208 1209 $tabBlocks.each(function (i) { 1210 var 1211 $tabBlock = $($tabBlocks[i]), 1212 $panes = $tabBlock.find('.tabBlock-pane'), 1213 $activeTab = $tabBlock.find('.tabBlock-tab.is-active'); 1214 1215 $panes.hide(); 1216 $($panes[$activeTab.index()]).show(); 1217 }); 1218 }, 1219 1220 switchTab: function ($tab) { 1221 var $context = $tab.closest('.tabBlock'); 1222 1223 if (!$tab.hasClass('is-active')) { 1224 $tab.siblings().removeClass('is-active'); 1225 $tab.addClass('is-active'); 1226 1227 TabBlock.showPane($tab.index(), $context); 1228 } 1229 }, 1230 1231 showPane: function (i, $context) { 1232 var $panes = $context.find('.tabBlock-pane'); 1233 1234 // Normally I'd frown at using jQuery over CSS animations, but we can't transition between unspecified variable heights, right? If you know a better way, I'd love a read it in the comments or on Twitter @johndjameson 1235 $panes.slideUp(TabBlock.s.animLen); 1236 $($panes[i]).slideDown(TabBlock.s.animLen); 1237 } 1238 }; 1239 1240 $(function () { 1241 TabBlock.init(); 1242 }); 1243 1244 var buildUnifiedFooterMarkup = function () { 1245 var footerMedium = getFooterMedium(); 1246 var calendlyFooterUrl = `https://calendly.com/finnovate/financial-fitness-consultation?utm_origin=Organic&utm_source=Website&utm_medium=${footerMedium}&utm_campaign=footer_call_cta&utm_term=footer_button&utm_content=Book%20a%20Call`; 1247 var appLinkAndroid = buildAppLink(footerMedium, "footer_app_download", "android"); 1248 var appLinkIos = buildAppLink(footerMedium, "footer_app_download", "ios"); 1249 var currentYear = new Date().getFullYear(); 1250 // Years of trust since Finnovate was founded on 7 July 2007 (auto-updates each anniversary). 1251 var yearsOfTrust = (function () { 1252 var now = new Date(); 1253 var y = now.getFullYear() - 2007; 1254 if (now.getMonth() < 6 || (now.getMonth() === 6 && now.getDate() < 7)) { y--; } 1255 return y; 1256 })(); 1257 return ` 1258 <div class="footer-shell container"> 1259 <div class="footer-top"> 1260 <div class="footer-brand"> 1261 <a href="/" class="footer-logo" aria-label="Finnovate home"> 1262 <img src="/assets/images/logo-white.svg" alt="Finnovate Financial Services logo"> 1263 </a> 1264 <p class="footer-tagline"> 1265 Finnovate is a financial fitness planning platform that helps successful professionals stay disciplined on their journey to financial independence. 1266 </p> 1267 <a class="footer-cta-btn footer-tagline-cta" href="javascript:;" onclick="return window.openCalendlyFooter && window.openCalendlyFooter('${calendlyFooterUrl}');" rel="noopener"> 1268 Schedule a Call 1269 </a> 1270 <div class="footer-metrics"> 1271 <div class="footer-metric">
1272 <span class="metric-value">${yearsOfTrust}+</span> 1273 <span class="metric-label">Years of trust</span> 1274 </div> 1275 <div class="footer-metric"> 1276 <span class="metric-value">35,000+</span> 1277 <span class="metric-label">Families Empowered</span> 1278 </div> 1279 1280 </div> 1281 1282 1283 <div class="footer-cta-inline"> 1284 <p class="footer-store-copy"> 1285 Track your investments, talk with our advisors, and plan your financial life from anywhere. 1286 </p> 1287 1288 <div class="footer-cta-actions"> 1289 <div class="appBtn footer-app-buttons"> 1290 <a href="${appLinkAndroid}" target="_blank" rel="noopener" data-track-click="footer_app_download_android"> 1291 <img src="/assets/images/playstore.png" alt="Get it on Google Play"> 1292 </a> 1293 <a href="${appLinkIos}" target="_blank" rel="noopener" data-track-click="footer_app_download_ios"> 1294 <img src="/assets/images/appstore.png" alt="Download on the App Store"> 1295 </a> 1296 </div> 1297 </div> 1298 </div> 1299 1300 </div> 1301 <div class="footer-links-grid"> 1302 <div class="footer-link-group"> 1303 <p class="link-label">Services</p> 1304 <ul class="footer-list"> 1305 <li><a href="https://www.finnovate.in/advisory/financial-planning">Financial Planning</a></li> 1306 <li><a href="https://www.finnovate.in/advisory/wealth-management">Wealth Management</a></li> 1307 <li><a href="https://www.finnovate.in/advisory/tax-planning">Tax Services</a></li> 1308 <li><a href="https://www.finnovate.in/advisory/estate-planning">Estate Planning</a></li> 1309 <li><a href="https://www.finnovate.in/advisory/retirement-planning">Retirement Planning</a></li> 1310 </ul> 1311 </div> 1312 <div class="footer-link-group"> 1313 <p class="link-label">Platforms</p> 1314 <ul class="footer-list"> 1315 <li><a href="https://www.finnovate.in/learn/finnversity">FinnVersity</a></li> 1316 <li><a href="https://www.finnovate.in/transact-page">FinnVest</a></li> 1317 <li><a href="https://www.finnovate.in/track-page">FinnTrack</a></li> 1318 <li><a href="https://www.finnovate.in/services/insurance-planning">FinnSure</a></li> 1319 </ul> 1320 </div> 1321 <div class="footer-link-group"> 1322 <p class="link-label">Company</p> 1323 <ul class="footer-list"> 1324 <li><a href="https://www.finnovate.in/about-us">Our Story</a></li> 1325 <li><a href="/partners">Partners</a></li> 1326 <li><a href="https://careers.finnovate.in" target="_blank" rel="noopener">Careers</a></li> 1327 <li><a href="https://www.finnovate.in/contact-us">Contact Us</a></li> 1328 <li><a href="https://www.finnovate.in/testimonials">Testimonials</a></li> 1329 </ul> 1330 </div> 1331 <div class="footer-link-group"> 1332 <p class="link-label">Legal</p> 1333 <ul class="footer-list"> 1334 <li><a href="/terms-conditions">Terms & Conditions</a></li> 1335 <li><a href="/privacy-policy">Privacy Policy</a></li> 1336 <li><a href="/refund-policy">Refund Policy</a></li> 1337 </ul> 1338 </div> 1339 <div class="footer-link-group"> 1340 <p class="link-label">Investment Adviser</p> 1341 <ul class="footer-list"> 1342 <li><a href="/sebi-investor-charter">Investor Charter</a></li> 1343 <li><a href="/complaints">Complaints Status</a></li> 1344 <li><a href="/Lodge-Complaints">Lodge a Complaint</a></li> 1345 <li><a href="/Compliant-redressal">Complaint Redressal</a></li> 1346 <li><a href="javascript:;" onclick="regulatory_disclosure_popup()">Regulatory Disclosure</a></li> 1347 <li><a href="https://scores.sebi.gov.in" target="_blank" rel="noopener">SEBI SCORES</a></li> 1348 <li><a href="https://smartodr.in/" target="_blank" rel="noopener">SmartODR</a></li> 1349 </ul> 1350 </div> 1351 <div class="footer-link-group"> 1352 <p class="link-label">PMS</p> 1353 <ul class="footer-list"> 1354 <li><a href="/pms/">Portfolio Management (PMS)</a></li> 1355 <li><a href="/pms/investor-charter">PMS Investor Charter</a></li> 1356 <li><a href="/pms/complaints">PMS Complaints</a></li> 1357 <li><a href="/pms/disclosure-documents">Disclosure Documents</a></li> 1358 <li><a href="/pms/accredited-investors">Accredited Investors</a></li> 1359 <li><a href="/pms/fee-calculator">PMS Fee Calculator</a></li> 1360 <li><a href="https://scores.sebi.gov.in" target="_blank" rel="noopener">SEBI SCORES</a></li> 1361 </ul> 1362 </div> 1363 </div> 1364 </div> 1365 <div class="footer-seo-links"> 1366 <div class="footer-seo-row">
1367 <span class="footer-seo-label">Top Searched Schemes:</span> 1368 <a href="${ROOT_URL}/mutual-funds/hdfc-flexi-cap-fund-g">HDFC Flexi Cap Fund</a> 1369 <a href="${ROOT_URL}/mutual-funds/hdfc-balanced-advantage-fund-g">HDFC Balanced Advantage Fund</a> 1370 <a href="${ROOT_URL}/mutual-funds/parag-parikh-flexi-cap-fund-g">Parag Parikh Flexi Cap Fund</a> 1371 <a href="${ROOT_URL}/mutual-funds/nippon-india-small-cap-fund-g">Nippon India Small Cap Fund</a> 1372 <a href="${ROOT_URL}/mutual-funds/sbi-small-cap-fund-g">SBI Small Cap Fund</a> 1373 <a href="${ROOT_URL}/mutual-funds/motilal-oswal-midcap-fund-g">Motilal Oswal Midcap Fund</a> 1374 <a href="${ROOT_URL}/mutual-funds/uti-nifty-50-index-fund-g">UTI Nifty 50 Index Fund</a> 1375 <a href="${ROOT_URL}/mutual-funds/quant-small-cap-fund-g">Quant Small Cap Fund</a> 1376 </div> 1377 <div class="footer-seo-row"> 1378 <span class="footer-seo-label">Important Tools & Calculators:</span> 1379 <a href="${ROOT_URL}/sip-calculator">SIP Calculator</a> 1380 <a href="${ROOT_URL}/step-up-sip-calculator">Step-up SIP Calculator</a> 1381 <a href="${ROOT_URL}/swp-calculator">SWP Calculator</a> 1382 <a href="${ROOT_URL}/xirr-calculator">XIRR Calculator</a> 1383 <a href="${ROOT_URL}/cagr-calculator">CAGR Calculator</a> 1384 <a href="${ROOT_URL}/emi-calculator">EMI Calculator</a> 1385 <a href="${ROOT_URL}/capital-gain-tax-calculator">Capital Gains Tax Calculator</a> 1386 <a href="${ROOT_URL}/retirement-calculator">Retirement Calculator</a> 1387 <a href="${ROOT_URL}/mutual-funds/overlap-calculator">MF Overlap Calculator</a> 1388 <a href="${ROOT_URL}/calculators">All Calculators</a> 1389 </div> 1390 <div class="footer-seo-row"> 1391 <span class="footer-seo-label">Learn More About Mutual Funds:</span> 1392 <a href="${ROOT_URL}/mutual-funds/">Explore Mutual Funds</a> 1393 <a href="${ROOT_URL}/mutual-funds.html">About Mutual Funds</a> 1394 <a href="${ROOT_URL}/learn/finnversity">FinnVersity</a> 1395 <a href="${ROOT_URL}/learn/blog-listing">Mutual Fund Blogs</a> 1396 </div> 1397 </div> 1398 <p class="footer-meta-head">Finnovate operates two separate SEBI-registered entities.</p> 1399 <div class="footer-meta footer-meta--entities"> 1400 <div class="meta-card entity-card"> 1401 <p class="entity-badge">Investment Adviser</p> 1402 <p class="entity-name">Finnovate Financial Services Pvt Ltd</p> 1403 <p class="entity-reg">SEBI RIA · INA000013518</p> 1404 <p class="mc-sub addr">Registered Office: The Summit Business Park, 7th Floor, Unit No. 703, Andheri Kurla Road, Andheri East, Mumbai 400093.</p> 1405 <p class="mc-sub">Fee payments (validated UPI): <b>finnovatefinancial.ia@validicici</b></p> 1406 <p class="mc-person">Nehal Mota<span class="mc-role">Principal Officer</span></p> 1407 <p class="mc-sub"><a href="mailto:[email protected]">[email protected]</a> · <a href="tel:9223380009">9223380009</a></p> 1408 <p class="mc-person">Priyanka Kelkar<span class="mc-role">Compliance Officer</span></p> 1409 <p class="mc-sub"><a href="mailto:[email protected]">[email protected]</a></p> 1410 <p class="mc-sub">Grievance: <a href="mailto:[email protected]">[email protected]</a> · <a href="tel:8369625478">8369625478</a></p> 1411 </div> 1412 <div class="meta-card entity-card"> 1413 <p class="entity-badge">Portfolio Manager</p> 1414 <p class="entity-name">Finnovate Investment Managers Pvt Ltd</p> 1415 <p class="entity-reg">SEBI PMS · INP000010104</p> 1416 <p class="mc-sub addr">Registered Office: 703, The Summit Business Bay, Gundavali, Chakala MIDC, Mumbai 400093.</p> 1417 <p class="mc-person">Naveen Kumar Singh<span class="mc-role">Principal Officer</span></p> 1418 <p class="mc-sub"><a href="mailto:[email protected]">[email protected]</a> · <a href="tel:9867325874">9867325874</a></p> 1419 <p class="mc-person">Pravin Mayekar<span class="mc-role">Compliance Officer</span></p> 1420 <p class="mc-sub"><a href="mailto:[email protected]">[email protected]</a> · <a href="tel:9619783006">9619783006</a></p> 1421 </div> 1422 <div class="meta-card entity-card"> 1423 <p class="entity-badge">Need help?</p> 1424 <p class="entity-name">Talk to us</p> 1425 <p class="mc-sub">Write to <a href="mailto:[email protected]">[email protected]</a> or call <a href="tel:+919240941082">+91 92409 41082</a>.</p> 1426 <p class="mc-sub">You can also explore the Finnovate app to manage your investments on the go.</p> 1427 </div> 1428 </div> 1429 <div class="footer-bottom"> 1430 <p>
1430Copyright © 2007-${currentYear} | Finnovate Financial Services Pvt Ltd. All rights reserved.</p> 1431 <ul class="footer-social"> 1432 <li><a href="https://www.facebook.com/Finnovate" target="_blank" rel="noopener" aria-label="Facebook"><i class="fab fa-facebook-f"></i></a></li> 1433 <li><a href="https://twitter.com/FinnovateLive" target="_blank" rel="noopener" aria-label="Twitter"><i class="fab fa-twitter"></i></a></li> 1434 <li><a href="https://www.linkedin.com/company/finnovateofficial" target="_blank" rel="noopener" aria-label="LinkedIn"><i class="fab fa-linkedin-in"></i></a></li> 1435 <li><a href="https://www.instagram.com/finnovate.in" target="_blank" rel="noopener" aria-label="Instagram"><i class="fab fa-instagram"></i></a></li> 1436 <li><a href="https://www.youtube.com/channel/UCbeqQ9zocbH3bT_ZbodPBpQ?sub_confirmation=1" target="_blank" rel="noopener" aria-label="YouTube"><i class="fab fa-youtube"></i></a></li> 1437 </ul> 1438 </div> 1439 <div class="footer-disclaimer entry-content"> 1440 <p>Disclaimer: Wealth Management Firm in India. Registration granted by SEBI, membership of BSE, and certification from NISM in no way guarantee performance of the intermediary or provide any assurance of returns to investors.</p> 1441 <p>Mutual Fund investments are subject to market risks, read all scheme related documents carefully.</p> 1442 <p>Past performance is not indicative of future returns. Please consider your specific investment requirements, risk tolerance, goal, time frame, risk and reward balance and the cost associated with the investment before choosing a fund, or designing a portfolio that suits your needs. Performance and returns of any investment portfolio can neither be predicted nor guaranteed.</p> 1443 <p>SEBI RIA Registration No: INA000013518 | Type of Registration: Non-Individual | Validity of registration: June 19, 2019 - Perpetual | Corresponding Local SEBI Office: Office of Investor Assistance and Education, SEBI Bhavan Plot No. C4-A, G Block, Bandra Kurla Complex, Bandra (E), Mumbai 400051.</p> 1444 <p>AMFI Registered Distributor - ARN 52128 | BSE Reg. No: 1401 | Platform Partner: BSE (Member code 17548) | IRDAI Corporate Agency: CA0703 | CIN: U67190MH2007PTC172272 | GST No: 27AABCF1124C2ZC | Website: <a href="https://www.finnovate.in" target="_blank" rel="noopener">www.finnovate.in</a> | Email: <a href="mailto:[email protected]">[email protected]</a></p> 1445 <p>Portfolio Management Services (PMS) are offered by Finnovate Investment Managers Private Limited, a separate legal entity | SEBI PMS Registration No: INP000010104. PMS investments are subject to market risks; please read the <a href="/pms/disclosure-documents">Disclosure Document</a> carefully before investing. Regulatory disclosures: <a href="/pms/investor-charter">Investor Charter</a> | <a href="/pms/complaints">Complaints Status</a>.</p> 1446 </div> 1447 </div> 1448 `; 1449 }; 1450 1451 var buildRegulatoryDisclosureMarkup = function () { 1452 return ` 1453 <div id="enquirypopup" class="modal fade regulatory-modal" role="dialog" aria-labelledby="regulatoryDisclosureTitle" aria-modal="true"> 1454 <div class="modal-dialog modal-lg modal-dialog-centered" role="document"> 1455 <div class="modal-content"> 1456 <button type="button" class="reg-close" data-dismiss="modal" aria-label="Close disclosure"> 1457 <span aria-hidden="true">×</span> 1458 </button> 1459 <div class="modal-body"> 1460 <div class="regulatory-heading"> 1461 <div class="reg-badge"><i class="fa-solid fa-shield-check"></i><span>SEBI RIA · INA000013518</span></div> 1462 <h3 id="regulatoryDisclosureTitle">Regulatory Disclosure</h3> 1463 <p>Finnovate Financial Services Pvt Ltd is a SEBI Registered Investment Advisor and Wealth Management Firm in India. We publish our complaint status in line with SEBI guidance for complete transparency.</p> 1464 <div class="reg-meta"> 1465 <span class="reg-pill"><i class="fa-regular fa-calendar"></i><span id="regAsOnText">As on 31 Oct 2025</span></span>
1466 <span class="reg-pill"><i class="fa-regular fa-circle-check"></i>Published monthly</span> 1467 </div> 1468 </div> 1469 <div class="reg-grid"> 1470 <div class="reg-card reg-card--accent"> 1471 <h5>Current snapshot</h5> 1472 <p class="reg-hint">Every ticket is acknowledged and tracked until closure.</p> 1473 <div class="reg-stat-grid"> 1474 <div class="reg-stat"> 1475 <div class="label">Open</div> 1476 <div class="value">0</div> 1477 <div class="hint">Pending to be resolved</div> 1478 </div> 1479 <div class="reg-stat"> 1480 <div class="label">Received this month</div> 1481 <div class="value">0</div> 1482 <div class="hint">New complaints</div> 1483 </div> 1484 <div class="reg-stat"> 1485 <div class="label">Resolved this month</div> 1486 <div class="value">0</div> 1487 <div class="hint">Closed with client confirmation</div> 1488 </div> 1489 <div class="reg-stat"> 1490 <div class="label">Carry forward</div> 1491 <div class="value">0</div> 1492 <div class="hint">At the beginning of month</div> 1493 </div> 1494 </div> 1495 <div class="reg-footnote"><i class="fa-regular fa-envelope"></i>Need help? Reach us at <a href="mailto:[email protected]">[email protected]</a></div> 1496 </div> 1497 </div> 1498 </div> 1499 </div> 1500 </div> 1501 </div> 1502 `; 1503 }; 1504 1505 var bindRegulatoryDisclosureEvents = function (modalEl) { 1506 if (!modalEl || modalEl.dataset.regulatoryBound === "true") { 1507 return; 1508 } 1509 modalEl.dataset.regulatoryBound = "true"; 1510 if (window.jQuery && window.jQuery.fn && window.jQuery.fn.modal) { 1511 window.jQuery(modalEl).on("shown.bs.modal", function () { 1512 document.body.classList.add("regulatory-disclosure-open"); 1513 }); 1514 window.jQuery(modalEl).on("hidden.bs.modal", function () { 1515 document.body.classList.remove("regulatory-disclosure-open"); 1516 }); 1517 } 1518 }; 1519 1520 var ensureRegulatoryDisclosureModal = function () { 1521 var modalEl = document.getElementById("enquirypopup"); 1522 if (modalEl) { 1523 bindRegulatoryDisclosureEvents(modalEl); 1524 return modalEl; 1525 } 1526 if (!document.body) { 1527 return null; 1528 } 1529 var wrapper = document.createElement("div"); 1530 wrapper.innerHTML = buildRegulatoryDisclosureMarkup().trim(); 1531 modalEl = wrapper.firstElementChild; 1532 if (!modalEl) { 1533 return null; 1534 } 1535 document.body.appendChild(modalEl); 1536 bindRegulatoryDisclosureEvents(modalEl); 1537 return modalEl; 1538 }; 1539 1540 if (!window.regulatory_disclosure_popup) { 1541 window.regulatory_disclosure_popup = function () { 1542 var modalEl = ensureRegulatoryDisclosureModal(); 1543 if (!modalEl) { 1544 return; 1545 } 1546 if (window.jQuery && window.jQuery.fn && window.jQuery.fn.modal) { 1547 window.jQuery(modalEl).modal("show"); 1548 return; 1549 } 1550 modalEl.classList.add("show"); 1551 modalEl.style.display = "block"; 1552 modalEl.setAttribute("aria-hidden", "false"); 1553 document.body.classList.add("modal-open", "regulatory-disclosure-open"); 1554 }; 1555 } 1556 1557 var initRegulatoryDisclosureModal = function () { 1558 ensureRegulatoryDisclosureModal(); 1559 updateRegulatoryDisclosureDate(); 1560 }; 1561 1562 var updateRegulatoryDisclosureDate = function () { 1563 var target = document.getElementById("regAsOnText"); 1564 if (!target) { 1565 return; 1566 } 1567 var now = new Date(); 1568 // Last day of the previous month, using UTC to avoid timezone shifts. 1569 var asOf = new Date(Date.UTC(now.getUTCFullYear(), now.getUTCMonth(), 0)); 1570 var months = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]; 1571 var day = asOf.getUTCDate(); 1572 var month = months[asOf.getUTCMonth()]; 1573 var year = asOf.getUTCFullYear(); 1574 target.textContent = "As on " + day + " " + month + " " + year; 1575 }; 1576 1577 var injectUnifiedFooter = function () { 1578 var footerNodes = document.querySelectorAll('footer'); 1579 if (!footerNodes.length) { 1580 return; 1581 } 1582 var markup = buildUnifiedFooterMarkup(); 1583 for (var i = 0; i < footerNodes.length; i++) { 1584 var footerEl = footerNodes[i]; 1585 // Allow pages to opt out of the unified footer 1586 if (footerEl.classList.contains('no-unified-footer') || footerEl.getAttribute('data-static-footer') === 'true') { 1587 continue; 1588 } 1589 footerEl.innerHTML = markup; 1590 footerEl.classList.add('site-footer'); 1591 if (!footerEl.getAttribute('role')) { 1592 footerEl.setAttribute('role', 'contentinfo'); 1593 } 1594 } 1595 }; 1596 1597 var slugifyTrackingValue = function (value) { 1598 return (value || "") 1599 .toString() 1600 .trim() 1601 .toLowerCase() 1602 .replace(/[^a-z0-9]+/g, "_") 1603 .replace(/^_+|_+$/g, ""); 1604 }; 1605 1606 var getNearestTrackingSection = function (element) { 1607 if (!element || !element.closest) { 1608 return ""; 1609 } 1610 1611 var panel = element.closest('.content > div[id], [data-track-section], section[id], form[id]'); 1612 if (!panel) { 1613 return ""; 1614 } 1615 1616 if (panel.getAttribute && panel.getAttribute('data-track-section')) { 1617 return panel.getAttribute('data-track-section'); 1618 } 1619 1620 var anchor = panel.querySelector('.tab-anchor[id]'); 1621 if (anchor && anchor.id) { 1622 return anchor.id; 1623 } 1624 1625 return panel.id || ""; 1626 }; 1627 1628 var getTrackingPayload = function (element) { 1629 if (!element) { 1630 return null; 1631 } 1632 1633 var text = ""; 1634 if (element.getAttribute) { 1635 text = 1636 element.getAttribute("data-track-label") || 1637 element.getAttribute("aria-label") || 1638 element.getAttribute("title") || 1639 ""; 1640 } 1641 if (!text) { 1642 text = element.innerText || element.textContent || ""; 1643 } 1644 text = text.replace(/\s+/g, " ").trim(); 1645 1646 var section = ""; 1647 if (element.getAttribute) { 1648 section = element.getAttribute("data-track-section") || ""; 1649 } 1650 if (!section) { 1651 section = getNearestTrackingSection(element); 1652 } 1653 1654 var explicitName = ""; 1655 if (element.getAttribute) { 1656 explicitName = element.getAttribute("data-track-click") || ""; 1657 } 1658 1659 var buttonName = explicitName; 1660 if (!buttonName) { 1661 var textSlug = slugifyTrackingValue(text) || "unnamed_cta"; 1662 var sectionSlug = slugifyTrackingValue(section); 1663 buttonName = sectionSlug ? textSlug + "_" + sectionSlug : textSlug; 1664 } 1665 1666 return { 1667 event: "cta_clicked", 1668 button_name: buttonName, 1669 button_text: text,
1670 button_id: element.id || "", 1671 button_class: typeof element.className === "string" ? element.className : "", 1672 button_tag: element.tagName ? element.tagName.toLowerCase() : "", 1673 section: section, 1674 page_path: window.location.pathname, 1675 page_title: document.title, 1676 link_url: element.getAttribute && element.getAttribute("href") ? element.getAttribute("href") : "" 1677 }; 1678 }; 1679 1680 var sendTrackingEvent = function (payload) { 1681 if (!payload) { 1682 return; 1683 } 1684 1685 if (window.dataLayer && typeof window.dataLayer.push === "function") { 1686 window.dataLayer.push(payload); 1687 } 1688 1689 if (typeof window.gtag === "function") { 1690 window.gtag("event", "cta_clicked", { 1691 button_name: payload.button_name, 1692 button_text: payload.button_text, 1693 button_id: payload.button_id, 1694 button_class: payload.button_class, 1695 button_tag: payload.button_tag, 1696 section: payload.section, 1697 page_path: payload.page_path, 1698 page_title: payload.page_title, 1699 link_url: payload.link_url 1700 }); 1701 } 1702 }; 1703 1704 var initClickTracking = function () { 1705 if (document.body && document.body.dataset.ctaTrackingBound === "true") { 1706 return; 1707 } 1708 if (!document.body) { 1709 return; 1710 } 1711 1712 document.body.dataset.ctaTrackingBound = "true"; 1713 document.addEventListener("click", function (event) { 1714 var target = event.target; 1715 if (!target || !target.closest) { 1716 return; 1717 } 1718 1719 var clickable = target.closest( 1720 '[data-track-click], button, a.btn, a.main-button, a.main-button-2, a.glass-cta, .CalendlyPopup' 1721 ); 1722 if (!clickable) { 1723 return; 1724 } 1725 1726 var payload = getTrackingPayload(clickable); 1727 if (!payload || !payload.button_text) { 1728 return; 1729 } 1730 1731 sendTrackingEvent(payload); 1732 }); 1733 }; 1734 1735 if (document.readyState === "loading") { 1736 document.addEventListener("DOMContentLoaded", injectUnifiedFooter); 1737 document.addEventListener("DOMContentLoaded", initRegulatoryDisclosureModal); 1738 document.addEventListener("DOMContentLoaded", initClickTracking); 1739 } else { 1740 injectUnifiedFooter(); 1741 initRegulatoryDisclosureModal(); 1742 initClickTracking(); 1743 } 1744})(window.jQuery); 1745 1746// JavaScript used to set randomness for particles. 1747// Sparkle Could be done via SSR 1748 1749var RANDOM = function (min, max) { 1750 return Math.floor(Math.random() * (max - min + 1) + min); 1751}; 1752var PARTICLES = document.querySelectorAll('.particle'); 1753if (PARTICLES && PARTICLES.length) { 1754 for (var p = 0; p < PARTICLES.length; p++) { 1755 var node = PARTICLES[p]; 1756 if (!node || !node.setAttribute) { 1757 continue; 1758 } 1759 var styles = '' 1760 + '--x: ' + RANDOM(20, 80) + ';' 1761 + '--y: ' + RANDOM(20, 80) + ';' 1762 + '--duration: ' + RANDOM(6, 20) + ';' 1763 + '--delay: ' + RANDOM(1, 10) + ';' 1764 + '--alpha: ' + (RANDOM(40, 90) / 100) + ';' 1765 + '--origin-x: ' + (Math.random() > 0.5 ? RANDOM(300, 800) * -1 : RANDOM(300, 800)) + '%;' 1766 + '--origin-y: ' + (Math.random() > 0.5 ? RANDOM(300, 800) * -1 : RANDOM(300, 800)) + '%;' 1767 + '--size: ' + (RANDOM(40, 90) / 100) + ';'; 1768 node.setAttribute('style', styles); 1769 } 1770} 1771 1772 1773$(document).ready(function () { 1774 $("#show_hide_password a").on('click', function (event) { 1775 event.preventDefault(); 1776 if ($('#show_hide_password input').attr("type") == "text") { 1777 $('#show_hide_password input').attr('type', 'password'); 1778 $('#show_hide_password i').addClass("fa-eye-slash"); 1779 $('#show_hide_password i').removeClass("fa-eye"); 1780 } else if ($('#show_hide_password input').attr("type") == "password") { 1781 $('#show_hide_password input').attr('type', 'text'); 1782 $('#show_hide_password i').removeClass("fa-eye-slash"); 1783 $('#show_hide_password i').addClass("fa-eye"); 1784 } 1785 }); 1786});
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.