1 2 3 4 5 6 7 8<!DOCTYPE html> 9<html> 10<head> 11 12 13 14 15 16
17<script type="text/javascript">window.NREUM||(NREUM={});NREUM.info={"errorBeacon":"bam.nr-data.net","licenseKey":"NRJS-3c5e94b79297c3f66ad","agent":"","beacon":"bam.nr-data.net","applicationTime":99,"applicationID":"1108160141","transactionName":"Y1RVZkAHVhIHBUZfWVoeZEJAD1YGJQlcQkRbXVtXQElLFQkUVxlTdl5YWUFJXAQVBUBfRkBYWFwdHVsOCBJXWEJhQ1tPEk5\/JDJP","queueTime":0}; 18(window.NREUM||(NREUM={})).init={privacy:{cookies_enabled:true},ajax:{deny_list:["bam.nr-data.net"]},distributed_tracing:{enabled:true}};(window.NREUM||(NREUM={})).loader_config={agentID:"1134555315",accountID:"3033394",trustKey:"3033394",xpid:"VwYEUlVaDBABVVFaBgcHV1AA",licenseKey:"NRJS-3c5e94b79297c3f66ad",applicationID:"1108160141",browserID:"1134555315"};;/*! For license information please see nr-loader-spa-1.322.0.min.js.LICENSE.txt */ 19(()=>{var e={8122(e,t,r){"use strict";r.d(t,{a:()=>i});var n=r(944);function i(e,t){try{if(!e||"object"!=typeof e)return(0,n.R)(3);if(!t||"object"!=typeof t)return(0,n.R)(4);const r=Object.create(Object.getPrototypeOf(t),Object.getOwnPropertyDescriptors(t)),s=0===Object.keys(r).length?e:r;for(let a in s)if(void 0!==e[a])try{if(null===e[a]){r[a]=null;continue}Array.isArray(e[a])&&Array.isArray(t[a])?r[a]=Array.from(new Set([...e[a],...t[a]])):e[a]instanceof Map||e[a]instanceof Set||e[a]instanceof Date||e[a]instanceof RegExp?r[a]=e[a]:"object"==typeof e[a]&&null!==t[a]&&"object"==typeof t[a]?r[a]=i(e[a],t[a]):r[a]=e[a]}catch(e){r[a]||(0,n.R)(1,e)}return r}catch(e){(0,n.R)(2,e)}}},2555(e,t,r){"use strict";r.d(t,{f:()=>a});var n=r(384),i=r(8122);const s={beacon:n.NT.beacon,errorBeacon:n.NT.errorBeacon,licenseKey:void 0,applicationID:void 0,sa:void 0,queueTime:void 0,applicationTime:void 0,ttGuid:void 0,user:void 0,account:void 0,product:void 0,extra:void 0,jsAttributes:{},userAttributes:void 0,atts:void 0,transactionName:void 0,tNamePlain:void 0};function a(e){try{return!!e.licenseKey&&!!e.errorBeacon&&!!e.applicationID}catch(e){return!1}}r.d(t,["D",0,e=>(0,i.a)(e,s)])},7699(e,t,r){"use strict";var n=r(860);const i={[n.K7.logging]:!0,[n.K7.genericEvents]:!0,[n.K7.jserrors]:!0,[n.K7.ajax]:!0};r.d(t,["It",0,1e6,"KC",0,i,"qh",0,"SESSION_ERROR"])},9324(e,t,r){"use strict";r.d(t,["A",0,"@newrelic/rrweb","x",0,"1.322.0"])},981(e,t,r){"use strict";r.d(t,["R",0,{AJAX:"AjaxRequest",PA:"PageAction",UA:"UserAction",BP:"BrowserPerformance",WS:"WebSocket",SPV:"SecurityPolicyViolation",JSE:"JavaScriptError",LOG:"Log",PVE:"PageView",PVT:"PageViewTiming",SR:"SessionReplay",ST:"SessionTrace",BI:"BrowserInteraction"}])},9752(e,t,r){"use strict";const n="newrelic-iframe-",i=n+"timing-update",s=n+"api",a=n+"api-response",o=n+"vitals-update",c=n+"ajax";r.d(t,["$8",0,o,"Gi",0,a,"KU",0,c,"Pl",0,n,"cS",0,s,"cr",0,i])},6154(e,t,r){"use strict";var n=r(1863);const i="undefined"!=typeof window&&!!window.document,s="undefined"!=typeof WorkerGlobalScope&&("undefined"!=typeof self&&self instanceof WorkerGlobalScope&&self.navigator instanceof WorkerNavigator||"undefined"!=typeof globalThis&&globalThis instanceof WorkerGlobalScope&&globalThis.navigator instanceof WorkerNavigator),a=i?window:"undefined"!=typeof WorkerGlobalScope&&("undefined"!=typeof self&&self instanceof WorkerGlobalScope&&self||"undefined"!=typeof globalThis&&globalThis instanceof WorkerGlobalScope&&globalThis),o=Boolean("hidden"===a?.document?.visibilityState),c=""+a?.location,d=/iPad|iPhone|iPod/.test(a.navigator?.userAgent),u=d&&"undefined"==typeof SharedWorker,l=(()=>{const e=a.navigator?.userAgent?.match(/Firefox[/\s](\d+\.\d+)/);return Array.isArray(e)&&e.length>=2?+e[1]:0})(),f=Date.now()-(0,n.t)();r.d(t,["OF",0,d,"RI",0,i,"WN",0,f,"bv",0,s,"gm",0,a,"lR",0,l,"m",0,c,"mw",0,o,"sb",0,u,"zk",0,()=>{const e=a?.performance?.getEntriesByType?.("navigation")?.[0];if(e&&e.responseStart>0&&e.responseStart<a.performance.now())return e}])},7295(e,t,r){"use strict";r.d(t,{Xv:()=>a,gX:()=>i,iW:()=>s});var n=[];function i(e){if(!e||s(e))return!1;if(0===n.length)return!0;if("*"===n[0].hostname)return!1;for(var t=0;t<n.length;t++){var r=n[t];if(r.hostname.test(e.hostname)&&r.pathname.test(e.pathname))return!1}return!0}function s(e){return void 0===e.hostname}function a(e){if(n=[],e&&e.length)for(var t=0;t<e.length;t++){let r=e[t];if(!r)continue;if("*"===r)return void(n=[{hostname:"*"}]);0===r.indexOf("http://")?r=r.substring(7):0===r.indexOf("https://")&&(r=r.substring(8));const i=r.indexOf("/");let s,a;i>0?(s=r.substring(0,i),a=r.substring(i)):(s=r,a="*");let[c]=s.split(":");n.push({hostname:o(c),pathname:o(a,!0)})}}function o(e,t=!1){const r=e.replace(/[.+?^${}()|[\]\\]/g,e=>"\\"+e).replace(/\*/g,".*?");return new RegExp((t?"^":"")+r+"$")}},3241(e,t,r){"use strict";r.d(t,{W:()=>i});var n=r(6154);function i(e={}){try{n.gm.dispatchEvent(new CustomEvent("newrelic",{detail:e}))}catch(e){}}},1687(e,t,r){"use strict";r.d(t,{Ak:()=>o,Ze:()=>d,x3:()=>c});var n=r(3241),i=r(3606),s=r(860),a=r(2646);function o(e,t){if(!e)return;const r={staged:!1,priority:s.P3[t]||0};
19e.runtime.drainRegistry.get(t)||e.runtime.drainRegistry.set(t,r)}function c(e,t){if(!e)return;const r=e.runtime.drainRegistry;r&&(r.get(t)&&r.delete(t),l(e,t,!1),r.size&&u(e))}function d(e,t="feature",r=!1){if(e){if(!e.runtime.drainRegistry.get(t)||r)return l(e,t);e.runtime.drainRegistry.get(t).staged=!0,u(e)}}function u(e){if(!e)return;const t=Array.from(e.runtime.drainRegistry);t.every(([e,t])=>t.staged)&&(t.sort((e,t)=>e[1].priority-t[1].priority),t.forEach(([t])=>{e.runtime.drainRegistry.delete(t),l(e,t)}))}function l(e,t,r=!0){if(!e)return;const s=e.ee,o=i.i.handlers;if(s&&!s.aborted&&s.backlog&&o){if((0,n.W)({type:"lifecycle",name:"drain",feature:t}),r){const e=s.backlog[t],r=o[t];if(r){for(let t=0;e&&t<e.length;++t)f(e[t],r);Object.entries(r).forEach(([e,t])=>{Object.values(t||{}).forEach(t=>{t[0]?.on&&t[0].context()instanceof a.y&&!t[0].listeners(e).includes(t[1])&&t[0].on(e,t[1])})})}}s.isolatedBacklog||delete o[t],s.backlog[t]=null,s.emit("drain-"+t,[])}}function f(e,t){var r=e[1];Object.values(t[r]||{}).forEach(t=>{var r=e[0];if(t[0]===r){var n=t[1],i=e[3],s=e[2];n.apply(i,s)}})}},7836(e,t,r){"use strict";var n=r(384),i=r(8990),s=r(2646),a=r(5607);const o="nr@context:".concat(a.W),c=function e(t,r){var n={},a={},u={},l=!1;try{l=16===r.length&&d.initializedAgents?.[r]?.runtime.isolatedBacklog}catch(e){}var f={on:p,addEventListener:p,removeEventListener:function(e,t){var r=n[e];if(!r)return;for(var i=0;i<r.length;i++)r[i]===t&&r.splice(i,1)},emit:function(e,r,n,i,s){!1!==s&&(s=!0);if(c.aborted&&!i)return;t&&s&&t.emit(e,r,n);var o=h(n);g(e).forEach(e=>{e.apply(o,r)});var d=v()[a[e]];d&&d.push([f,e,r,o]);return o},get:m,listeners:g,context:h,buffer:function(e,t){const r=v();if(t=t||"feature",f.aborted)return;Object.entries(e||{}).forEach(([e,n])=>{a[n]=t,t in r||(r[t]=[])})},abort:function(){f._aborted=!0,Object.keys(f.backlog).forEach(e=>{delete f.backlog[e]})},isBuffering:function(e){return!!v()[a[e]]},debugId:r,backlog:l?{}:t&&"object"==typeof t.backlog?t.backlog:{},isolatedBacklog:l};return Object.defineProperty(f,"aborted",{get:()=>{let e=f._aborted||!1;return e||(t&&(e=t.aborted),e)}}),f;function h(e){return e&&e instanceof s.y?e:e?(0,i.I)(e,o,()=>new s.y(o)):new s.y(o)}function p(e,t){n[e]=g(e).concat(t)}function g(e){return n[e]||[]}function m(t){return u[t]=u[t]||e(f,t)}function v(){return f.backlog}}(void 0,"globalEE"),d=(0,n.Zm)();d.ee||(d.ee=c),r.d(t,["P",0,o,"ee",0,c])},2646(e,t,r){"use strict";r.d(t,{y:()=>n});class n{constructor(e){this.contextId=e}}},9908(e,t,r){"use strict";r.d(t,{d:()=>n,p:()=>i});var n=r(7836).ee.get("handle");function i(e,t,r,i,s){s?(s.buffer([e],i),s.emit(e,t,r)):(n.buffer([e],i),n.emit(e,t,r))}},3606(e,t,r){"use strict";r.d(t,{i:()=>s});var n=r(9908);s.on=a;var i=s.handlers={};function s(e,t,r,s){a(s||n.d,i,e,t,r)}function a(e,t,r,i,s){s||(s="feature"),e||(e=n.d);var a=t[s]=t[s]||{};(a[r]=a[r]||[]).push([e,i])}},3878(e,t,r){"use strict";function n(e,t){return{capture:e,passive:!1,signal:t}}function i(e,t,r=!1,i){window.addEventListener(e,t,n(r,i))}function s(e,t,r=!1,i){document.addEventListener(e,t,n(r,i))}r.d(t,{DD:()=>s,jT:()=>n,sp:()=>i})},5607(e,t,r){"use strict";const n=(0,r(9566).bz)();r.d(t,["W",0,n])},9566(e,t,r){"use strict";r.d(t,{LA:()=>a,ZF:()=>o,bz:()=>s,el:()=>c});var n=r(6154);function i(e,t){return e?15&e[t]:16*Math.random()|0}function s(){const e=n.gm?.crypto||n.gm?.msCrypto;let t,r=0;return e&&e.getRandomValues&&(t=e.getRandomValues(new Uint8Array(30))),"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".split("").map(e=>"x"===e?i(t,r++).toString(16):"y"===e?(3&i()|8).toString(16):e).join("")}function a(e){const t=n.gm?.crypto||n.gm?.msCrypto;let r,s=0;t&&t.getRandomValues&&(r=t.getRandomValues(new Uint8Array(e)));const a=[];for(var o=0;o<e;o++)a.push(i(r,s++).toString(16));return a.join("")}function o(){return a(16)}function c(){return a(32)}},2614(e,t,r){"use strict";r.d(t,["BB",0,18e5,"Wt",0,"NRBA_SESSION::","g",0,{OFF:0,FULL:1,ERROR:2},"iL",0,{SAME_TAB:"same-tab",CROSS_TAB:"cross-tab"},"tS",0,{STARTED:"session-started",PAUSE:"session-pause",RESET:"session-reset",RESUME:"session-resume",UPDATE:"session-update"},"wk",0,144e5])},733(e,t,r){"use strict";function n(e,t){return function(e){let t=2166136261;for(let r=0;r<e.length;r++)t^=e.charCodeAt(r),t=Math.imul(t,16777619);return(t>>>0).toString(16).padStart(8,"0")}("".concat(String(e),":").concat(String(t)))}r.d(t,{Y:()=>n})},1863(e,t,r){"use strict";function n(){return Math.floor(performance.now())}r.d(t,{t:()=>n})},9119(e,t,r){"use strict";r.d(t,{L:()=>s});var n=/([^?#]*)[^#]*(#[^?]*|$).*/,i=/([^?#]*)().*/;function s(e,t){return e?e.replace(t?n:i,"$1$2"):e}},7485(e,t,r){"use strict";r.d(t,{D:()=>i});var n=r(6154);function i(e){if(0===(e||"").indexOf("data:"))return{protocol:"data"};try{const t=new URL(e,location.href),r={port:t.port,hostname:t.hostname,pathname:t.pathname,search:t.search,protocol:t.protocol.slice(0,t.protocol.indexOf(":")),sameOrigin:t.protocol===n.gm?.location?.protocol&&t.host===n.gm?.location?.host};return r.port&&""!==r.port||("http:"===t.protocol&&(r.port="80"),"https:"===t.protocol&&(r.port="443")),r.pathname&&""!==r.pathname?r.pathname.startsWith("/")||(r.pathname="/".concat(r.pathname)):r.pathname="/",r}catch(e){return{}}}},7866(e,t,r){"use strict";r.d(t,["Nc",0,/^\s*at Function code \(Function code:\d+:\d+\)\s*/i,"cn",0,/^\s*(?:([^@]*)(?:\(.*?\))?@)?((?:file|http|https|chrome|safari-extension).*?):(\d+)(?::(\d+))?\s*$/i,"fL",0,/^\s*at .+ \(eval at \S+ \((?:(?:file|http|https):[^)]+)?\)(?:, [^:]*:\d+:\d+)?\)$/i,"h3",0,/function (.+?)\s*\(/,"hB",0,/^\s*at (?:((?:\[object object\])?(?:[^(]*\([^)]*\))*[^()]*(?: \[as \S+\])?) )?\(?((?:file|http|https|chrome-extension):.*?)?:(\d+)(?::(\d+))?\)?\s*$/i])},944(e,t,r){"use strict";r.d(t,{R:()=>i});var n=r(3241);function i(e,t){"function"==typeof console.debug&&(console.debug("New Relic Warning: https://github.com/newrelic/newrelic-browser-agent/blob/main/docs/warning-codes.md#".concat(e),t),(0,n.W)({drained:null,type:"data",name:"warn",feature:"warn",data:{code:e,secondary:t}}))}},8990(e,t,r){"use strict";r.d(t,{I:()=>i});var n=Object.prototype.hasOwnProperty;function i(e,t,r){if(n.call(e,t))return e[t];var i=r();if(Object.defineProperty&&Object.keys)try{return Object.defineProperty(e,t,{value:i,writable:!0,enumerable:!1}),i}catch(e){}return e[t]=i,i}},6389(e,t,r){"use strict";function n(e,t=500,r={}){const n=r?.leading||!1;let i;return(...r)=>{n&&void 0===i&&(e.apply(this,r),i=setTimeout(()=>{i=clearTimeout(i)},t)),n||(clearTimeout(i),i=setTimeout(()=>{e.apply(this,r)},t))}}function i(e){let t=!1;return(...r)=>{t||(t=!0,e.apply(this,r))}}r.d(t,{J:()=>i,s:()=>n})},1910(e,t,r){"use strict";r.d(t,{i:()=>s});var n=r(944);const i=new Map;function s(...e){return e.every(e=>{if(i.has(e))return i.get(e);const t="function"==typeof e?e.toString():"",r=t.includes("[native code]"),s=t.includes("nrWrapper");return r||s||(0,n.R)(64,e?.name||t),i.set(e,r),r})}},3304(e,t,r){"use strict";r.d(t,{A:()=>i});var n=r(7836);function i(e){try{return JSON.stringify(e,(()=>{const e=new WeakSet;return(t,r)=>{if("object"==typeof r&&null!==r){if(e.has(r))return;e.add(r)}return r}})())??""}catch(e){try{n.ee.emit("internal-error",[e])}catch(e){}return""}}},9232(e,t,r){"use strict";r.d(t,["f",0,{MFE:"MFE",BA:"BA"}])},7560(e,t,r){"use strict";r.d(t,{N:()=>a,j:()=>c});var n=r(9119),i=r(944);const s=(0,r(6389).J)(e=>(0,i.R)(80,e));function a(e){if(!Array.isArray(e?.assets)||!e.assets.length)return;
19const t=e.assets.map(o).filter(Boolean);return t.length?{assets:t,scripts:t.filter(e=>e.isScript)}:void 0}function o(e){if(!e||"object"!=typeof e)return;const{matcher:t,type:r}=e;let i="string"==typeof t&&t.endsWith(".js");return void 0!==r&&(!function(e){return"script"===e||"asset"===e}(r)?s(r):i=function(e){return"script"===e}(r)),a=t,"[object RegExp]"===Object.prototype.toString.call(a)?{pattern:t,test:e=>(t.lastIndex=0,t.test((0,n.L)(e))),isScript:i}:"string"==typeof t&&t.length>0?{pattern:t,test:e=>(0,n.L)(e).includes(t),isScript:i}:void s(t);var a}function c(e,t,{scriptsOnly:r=!1}={}){if(!e||!t)return!1;return(r?e.scripts:e.assets).some(e=>e.test(t))}},5718(e,t,r){"use strict";r.d(t,{xo:()=>T,AZ:()=>v,cI:()=>g,Qr:()=>A,QL:()=>y});var n=r(6154),i=r(1863),s=r(9119),a=r(7866);class o{dom=new c;performance=new c;constructor(e){this.url=e,this.claimedBy=new Set}get script(){const e=Math.max(this.dom.start,this.performance.end);return{start:e,end:Math.max(this.dom.end,this.performance.end,e)}}}class c{start=0;end=0;value=void 0}function d(e=()=>{},t){return{get:()=>void 0!==t?t:e(),set:e=>{t=e}}}let u;try{u=v(y())[0]}catch(e){u=v(e)[0]}const l=new Map;let f=[];const h=new WeakMap;function p(e){let t=h.get(e);return t||(t={weighedAssetUrls:new Set,recordManifestScriptWindow:(t,r)=>{t&&(e.scriptStart=e.scriptStart>0?Math.min(e.scriptStart,t):t),r&&(e.scriptEnd=e.scriptEnd>0?Math.max(e.scriptEnd,r):r)}},h.set(e,t)),t}function g(e){return l.get(e)}function m(e){const t=g(e);
19if(t)return t;const r=new o(e);if(l.set(e,r),l.size>1e3){const e=l.keys().next().value;l.delete(e)}return r}if(n.gm.MutationObserver&&n.gm.document){new MutationObserver(e=>{e.forEach(e=>{e.addedNodes.forEach(e=>{if("SCRIPT"===e.nodeName&&e.src){const t=m((0,s.L)(e.src));t.dom.start=(0,i.t)(),t.dom.value=e;const r=()=>{t.dom.end=(0,i.t)()};["load","error"].forEach(t=>e.addEventListener(t,r,{once:!0}))}})})}).observe(n.gm.document,{childList:!0,subtree:!0})}if(n.gm.PerformanceObserver?.supportedEntryTypes.includes("resource")){new PerformanceObserver(e=>{e.getEntries().forEach(e=>{if((e=>"script"===e.initiatorType||["link","fetch"].includes(e.initiatorType)&&(0,s.L)(e.name).endsWith(".js"))(e)){const t=m((0,s.L)(e.name));t.performance.start=Math.floor(e.startTime),t.performance.end=Math.floor(e.responseEnd),t.performance.value=e}if(!f.length)return;const t=[];f.forEach(({test:r,addedAt:n},s)=>{(r(e)||(0,i.t)()-n>1e4)&&t.push(s)}),f=f.filter((e,r)=>!t.includes(r))})}).observe({type:"resource",buffered:!0})}function v(e){if(!e||"string"!=typeof e)return[];const t=new Set,r=e.split("\n");for(const e of r){const r=e.match(a.cn)||e.match(a.hB)||e.match(a.fL);if(r&&r[2])t.add((0,s.L)(r[2]));else{const r=e.match(/\(([^)]+\.js):\d+:\d+\)/)||e.match(/^\s+at\s+([^\s(]+\.js):\d+:\d+/);r&&r[1]&&t.add((0,s.L)(r[1]))}}return[...t]}function y(){let e;try{const t=Error.stackTraceLimit;Error.stackTraceLimit=50,e=(new Error).stack,Error.stackTraceLimit=t}catch(t){e=(new Error).stack}return e}function b(e,t){return(0,s.L)(e.name)===t}function E(e,t){e.fetchStart=Math.floor(t.startTime),e.fetchEnd=Math.floor(t.responseEnd),e.asset=t.name,e.type=t.initiatorType,w(e,t)}function w(e,t){const r=(0,s.L)(t.name),{weighedAssetUrls:n}=p(e);n.has(r)||(n.add(r),e.totalWeight=(e.totalWeight||0)+(t.transferSize||0),"blocking"===t.renderBlockingStatus?e.renderBlocking=!0:"non-blocking"===t.renderBlockingStatus&&!0!==e.renderBlocking&&(e.renderBlocking=!1))}function R(e,t,r,n,i){if(w(e,t),"scripts"!==i&&"all"!==i)return;if("all"===i||r.isScript){const r=Math.floor(t.startTime),n=Math.floor(t.responseEnd);e.fetchStart=e.fetchStart>0?Math.min(e.fetchStart,r):r,e.fetchEnd=e.fetchEnd>0?Math.max(e.fetchEnd,n):n}if(r.isScript){const r=g((0,s.L)(t.name));if(r){const t=()=>{const{start:t,end:n}=r.script;p(e).recordManifestScriptWindow(t,n)};t(),!r.dom.end&&r.dom.value&&["load","error"].forEach(e=>r.dom.value.addEventListener(e,t,{once:!0}))}n.resolved||(e.asset=t.name,e.type=t.initiatorType,n.resolved=!0)}}function T(e,t){const r=t?.manifest;if(!r||!r.assets.length)return;const s={resolved:!1},a=new Set(r.assets);(n.gm.performance?.getEntriesByType("resource")||[]).forEach(r=>{const n=[...a].find(e=>e.test(r.name));n&&(R(e,r,n,s,t.timingMethod),a.delete(n))}),a.size&&function(e,t,r,s){n.gm.PerformanceObserver?.supportedEntryTypes?.includes("resource")&&f.push({addedAt:(0,i.t)(),test:n=>{const i=[...t].find(e=>e.test(n.name));return i&&(R(e,n,i,r,s),t.delete(i)),0===t.size}})}(e,a,s,t.timingMethod)}function A(e){const t=e?.id,r={registeredAt:(0,i.t)(),reportedAt:void 0,fetchStart:0,fetchEnd:0,scriptStart:0,scriptEnd:0,asset:void 0,type:"unknown",totalWeight:0,renderBlocking:void 0},a=y();if(!a)return r;const o=n.gm.performance?.getEntriesByType("navigation")?.[0]?.name||"";try{const e=v(a),c=(e.length>1?e.filter(e=>u!==e):e)[0];if(!c)return r;if(o.includes(c))return r.asset=(0,s.L)(o),r.type="inline",r;r.correlation=g(c);const l=r.correlation?.performance.value||n.gm.performance?.getEntriesByType("resource")?.find(e=>b(e,c));if(l)E(r,l);else{(function(e){if(!e||!n.gm.document)return!1;try{const t=n.gm.document.querySelectorAll('link[rel="preload"][as="script"]');for(const r of t)if((0,s.L)(r.href)===e)return!0}catch(e){}return!1})(c)&&(r.asset=c,r.type="preload"),function(e,t){n.gm.PerformanceObserver?.supportedEntryTypes?.includes("resource")&&f.push({addedAt:(0,i.t)(),test:r=>!!b(r,t)&&(E(e,r),!0)})}(r,c)}const h=r.correlation,m=!!t&&!!h?.claimedBy.has(t);h&&t&&h.claimedBy.add(t);const y=()=>{const e=h?.script.start;if(!m||!e)return!1;return r.registeredAt-e>1e4};let w=0,R=0;p(r).recordManifestScriptWindow=(e,t)=>{e&&(w=w>0?Math.min(w,e):e),t&&(R=R>0?Math.max(R,t):t)},Object.defineProperty(r,"scriptStart",d(()=>{const e=y()?r.registeredAt:h?.script.start??r.fetchEnd;return w>0?Math.min(e,w):e})),Object.defineProperty(r,"scriptEnd",d(()=>{const e=y()?r.registeredAt:h?.script.end??r.registeredAt;return R>0?Math.max(e,R):e}))}catch(e){}return r}},5732(e,t,r){"use strict";r.d(t,{$5:()=>m,B5:()=>g,K6:()=>u,M$:()=>
19o,Ms:()=>d,NG:()=>c,Ux:()=>h,YA:()=>p,yx:()=>l});var n=r(5718),i=r(7560),s=r(9119),a=r(9232);function o(e){return e?.type===a.f.MFE}function c(e,t){if(!y(e,t))return;const r=t.runtime.registeredEntities;return r?.find(t=>t.metadata.target.iframeInterfaceId===e)}function d(e,t){if(!y(e,t))return[];const r=t.runtime.registeredEntities;return r?.filter(t=>String(t.metadata.target.id)===String(e)).map(e=>e.metadata.target)||[]}function u(e,t){if(!y(e,t))return[];const r=t.runtime.registeredEntities,n=(0,s.L)(e),a=r?.filter(t=>{const r=t.metadata.target?.manifest;return r?(0,i.j)(r,e,{scriptsOnly:!1}):!!t.metadata.timings?.asset&&(0,s.L)(t.metadata.timings.asset)===n});return f(a).map(e=>e.metadata.target)}function l(e,t){if(!y(e,t))return[];const r=t.runtime.registeredEntities,n=r?.filter(t=>{const r=t.metadata.target?.manifest;return r?(0,i.j)(r,e,{scriptsOnly:!0}):!!t.metadata.timings?.asset?.endsWith(e)});return f(n).map(e=>e.metadata.target)}function f(e){if(!e?.length)return e||[];const t=new Map,r=[];for(const n of e){const e=n.metadata?.timings?.asset;if(!e){r.push(n);continue}const i="".concat(e,"::").concat(n.metadata?.target?.id),s=t.get(i);if(s){if(s.metadata.target?.blocked&&!n.metadata.target?.blocked){const e=r.indexOf(s);-1!==e&&(r[e]=n),t.set(i,n)}}else t.set(i,n),r.push(n)}return r}function h(e,t){return v(t)?o(e)?e.attributes:t.agentRef.runtime.v2Target.attributes:{}}function p(e,t){return g(e,t)?{"child.id":e.id,"child.type":e.type,...h(void 0,t)}:{}}function g(e,t){return o(e)&&!!v(t)&&t.agentRef.init.api.register.duplicate_data_to_container}function m(e){if(!e?.runtime)return[];if(!y(!0,e)||!e.runtime.registeredEntities?.length)return[e.runtime.v2Target];const t=[];try{var r=(0,n.AZ)((0,n.QL)());let i=r.length-1;for(;r[i];)t.push(...l(r[i--],e))}catch(e){}const i=function(e){const t=new Set,r=[];for(const n of e){const e=n?.instance;t.has(e)||(t.add(e),r.push(n))}return r}(t);return i.length||i.push(e.runtime.v2Target),i}function v(e){return 2===e?.harvestEndpointVersion}function y(e,t){return!!e&&!!t?.init.api.register.enabled}},5289(e,t,r){"use strict";r.d(t,{GG:()=>a,Qr:()=>c,sB:()=>o});var n=r(3878),i=r(6389);function s(){return"undefined"==typeof document||"complete"===document.readyState}function a(e,t){if(s())return e();const r=(0,i.J)(e),a=setInterval(()=>{s()&&(clearInterval(a),r())},500);(0,n.sp)("load",r,t)}function o(e){if(s())return e();(0,n.DD)("DOMContentLoaded",e)}function c(e){if(s())return e();(0,n.sp)("popstate",e)}},384(e,t,r){"use strict";r.d(t,{Zm:()=>c,bQ:()=>u,dV:()=>d,pV:()=>l});var n=r(6154),i=r(1863),s=r(944),a=r(1910);const o={beacon:"bam.nr-data.net",errorBeacon:"bam.nr-data.net"};function c(){return n.gm.NREUM||(n.gm.NREUM={}),void 0===n.gm.newrelic&&(n.gm.newrelic=n.gm.NREUM),n.gm.NREUM}function d(){let e=c();return e.o||(e.o={ST:n.gm.setTimeout,SI:n.gm.setImmediate||n.gm.setInterval,CT:n.gm.clearTimeout,XHR:n.gm.XMLHttpRequest,REQ:n.gm.Request,EV:n.gm.Event,PR:n.gm.Promise,MO:n.gm.MutationObserver,FETCH:n.gm.fetch,WS:n.gm.WebSocket},(0,a.i)(...Object.values(e.o))),e}function u(e,t){let r=c();r.initializedAgents??={},t.initializedAt={ms:(0,i.t)(),date:new Date},r.initializedAgents[e]=t,2===Object.keys(r.initializedAgents).length&&(0,s.R)(69)}function l(){return function(){let e=c();const t=e.info||{};e.info={beacon:o.beacon,errorBeacon:o.errorBeacon,...t}}(),function(){let e=c();const t=e.init||{};e.init={...t}}(),d(),function(){let e=c();const t=e.loader_config||{};e.loader_config={...t}}(),c()}r.d(t,["NT",0,o])},2843(e,t,r){"use strict";r.d(t,{G:()=>s,u:()=>i});var n=r(3878);function i(e,t=!1,r,i){(0,n.DD)("visibilitychange",function(){if(t)return void("hidden"===document.visibilityState&&e());e(document.visibilityState)},r,i)}function s(e,t,r){(0,n.sp)("pagehide",e,t,r)}},8139(e,t,r){"use strict";r.d(t,{u:()=>f});var n=r(7836),i=r(3434),s=r(8990),a=r(6154);const o={},c=a.gm.XMLHttpRequest,d="addEventListener",u="removeEventListener",l="nr@wrapped:".concat(n.P);function f(e,t){var r=function(e){return(e||n.ee).get("events")}(e);if(o[r.debugId]++)return r;o[r.debugId]=1;var f=(0,i.YM)(r,!0,t);function p(e){f.inPlace(e,[d,u],"-",g)}function g(e,t){return e[1]}return"getPrototypeOf"in Object&&(a.RI&&h(document,p),c&&h(c.prototype,p),h(a.gm,p)),r.on(d+"-start",function(e,t){var r=e[1];if(null!==r&&("function"==typeof r||"object"==typeof r)&&"newrelic"!==e[0]){var n=(0,s.I)(r,l,function(){var e={object:function(){if("function"!=typeof r.handleEvent)return;return r.handleEvent.apply(r,arguments)},function:r}[typeof r];return e?f(e,"fn-",null,e.name||"anonymous"):r});this.wrapped=e[1]=n}}),r.on(u+"-start",function(e){e[1]=this.wrapped||e[1]}),r}function h(e,t,...r){let n=e;for(;"object"==typeof n&&!Object.prototype.hasOwnProperty.call(n,d);)n=Object.getPrototypeOf(n);n&&t(n,...r)}},3434(e,t,r){"use strict";r.d(t,{YM:()=>d});var n=r(7836),i=r(5607),s=r(5732);const a="nr@original:".concat(i.W);var o=Object.prototype.hasOwnProperty,c=!1;function d(e,t,r){return e||(e=n.ee),i.inPlace=function(e,t,r,n,s,a){r||(r="");const o="-"===r.charAt(0);for(let c=0;c<t.length;c++){const d=t[c],u=e[d];l(u)||(e[d]=i(u,o?d+r:r,n,d,s,a))}},i.flag=a,i;function i(t,n,i,c,f,h){return l(t)?t:(n||(n=""),nrWrapper[a]=t,function(e,t,r){if(Object.defineProperty&&Object.keys)try{return Object.keys(e).forEach(function(r){Object.defineProperty(t,r,{get:function(){return e[r]},set:function(t){return e[r]=t,t}})}),t}catch(e){u([e],r)}for(var n in e)o.call(e,n)&&(t[n]=e[n])}
19(t,nrWrapper,e),nrWrapper);function nrWrapper(){var a,o,l,p;let g,m;try{o=this,a=[...arguments],m=h?(0,s.$5)(r):[r?.runtime?.v2Target],l="function"==typeof i?i(a,o):i||{}}catch(t){u([t,"",[a,o,c],l],e)}d(n+"start",[a,o,c,m],l,f);const v=performance.now();let y;try{return p=t.apply(o,a),y=performance.now(),p}catch(e){throw y=performance.now(),d(n+"err",[a,o,e,m],l,f),g=e,g}finally{const e=y-v,t={start:v,end:y,duration:e,isLongTask:e>=50,methodName:c,thrownError:g};t.isLongTask&&d("long-task",[t,o,m],l,f),d(n+"end",[a,o,p,m],l,f)}}}function d(r,n,i,s){if(!c||t){var a=c;c=!0;try{e.emit(r,n,i,t,s)}catch(t){u([t,r,n,i],e)}c=a}}}function u(e,t){t||(t=n.ee);try{t.emit("internal-error",e)}catch(e){}}function l(e){return!(e&&"function"==typeof e&&e.apply&&!e[a])}r.d(t,["Jt",0,a])},9300(e,t,r){"use strict";const n=r(860).K7.ajax;r.d(t,["TZ",0,n,"f5",0,"ajaxRequest.id","mo",0,{NONE:"none",FAILURES:"failures",ALL:"all"}])},3333(e,t,r){"use strict";var n=r(981);const i=r(860).K7.genericEvents,s=[n.R.PA,n.R.UA,n.R.BP];r.d(t,["$v",0,{RESOURCES:"experimental.resources",REGISTER:"register"},"TZ",0,i,"Zp",0,["auxclick","click","copy","keydown","paste","scrollend"],"kd",0,s,"qN",0,["focus","blur"]])},6774(e,t,r){"use strict";const n=r(860).K7.jserrors;r.d(t,["T",0,n])},993(e,t,r){"use strict";const n=r(860).K7.logging;r.d(t,["A$",0,{OFF:0,ERROR:1,WARN:2,INFO:3,DEBUG:4,TRACE:5},"TZ",0,n,"p_",0,{ERROR:"ERROR",WARN:"WARN",INFO:"INFO",DEBUG:"DEBUG",TRACE:"TRACE"}])},3785(e,t,r){"use strict";r.d(t,{R:()=>c,b:()=>d});var n=r(9908),i=r(1863),s=r(860),a=r(3969),o=r(993);function c(e,t,r={},c=o.p_.INFO,d=!0,u,l=(0,i.t)()){(0,n.p)(a.xV,["API/logging/".concat(c.toLowerCase(),"/called")],void 0,s.K7.metrics,e),(0,n.p)("log",[l,t,r,c,d,u],void 0,s.K7.logging,e)}function d(e){return"string"==typeof e&&Object.values(o.p_).some(t=>t===e.toUpperCase().trim())}},3969(e,t,r){"use strict";const n=r(860).K7.metrics;r.d(t,["TZ",0,n,"XG",0,"storeEventMetrics","xV",0,"storeSupportabilityMetrics"])},6630(e,t,r){"use strict";const n=r(860).K7.pageViewEvent;r.d(t,["T",0,n])},782(e,t,r){"use strict";const n=r(860).K7.pageViewTiming;r.d(t,["T",0,n])},6344(e,t,r){"use strict";var n=r(2614);const i=r(860).K7.sessionReplay,s={[n.g.ERROR]:15e3,[n.g.FULL]:3e5,[n.g.OFF]:0}
19;r.d(t,["Qb",0,{API:"api",RESUME:"resume",SWITCH_TO_FULL:"switchToFull",INITIALIZE:"initialize",PRELOAD:"preload"},"TZ",0,i,"Vh",0,"errorDuringReplay","_s",0,{DomContentLoaded:0,Load:1,FullSnapshot:2,IncrementalSnapshot:3,Meta:4,Custom:5},"bc",0,{RESET:{message:"Session was reset",sm:"Reset"},IMPORT:{message:"Recorder failed to import",sm:"Import"},TOO_MANY:{message:"429: Too Many Requests",sm:"Too-Many"},TOO_BIG:{message:"Payload was too large",sm:"Too-Big"},CROSS_TAB:{message:"Session Entity was set to OFF on another tab",sm:"Cross-Tab"},ENTITLEMENTS:{message:"Session Replay is not allowed and will not be started",sm:"Entitlement"}},"yP",0,s])},5270(e,t,r){"use strict";r.d(t,{Aw:()=>a,SR:()=>s,rF:()=>o});var n=r(384),i=r(7767);function s(e){return!!(0,n.dV)().o.MO&&(0,i.V)(e)&&!0===e?.session_trace.enabled}function a(e){return!0===e?.session_replay.preload&&s(e)}function o(e,t){try{if("string"==typeof t?.type&&"password"===t.type.toLowerCase())return"*".repeat(e?.length||0);if(void 0!==t?.dataset?.nrUnmask||t?.classList?.contains("nr-unmask"))return e}catch(e){}return"string"==typeof e?e.replace(/[\S]/g,"*"):"*".repeat(e?.length||0)}},3738(e,t,r){"use strict";const n=r(860).K7.sessionTrace,i="-start",s="-end",a="fn"+i,o="fn"+s;r.d(t,["He",0,"bstResource","Kp",0,s,"Lc",0,o,"Rz",0,"pushState","TZ",0,n,"bD",0,"resource","bc",0,{CROSS_TAB:{message:"Session Entity was set to OFF on another tab"},ENTITLEMENTS:{message:"Session Trace is not allowed and will not be started"},RESET:{message:"Session was reset"},SESSION_CHANGED:{message:"Session identifier changed unexpectedly"}},"d3",0,i,"uP",0,a])},3962(e,t,r){"use strict";const n=r(860).K7.softNav;r.d(t,["O2",0,{INITIAL_PAGE_LOAD:"",ROUTE_CHANGE:1,UNSPECIFIED:2},"OV",0,"popstate","Qu",0,{INTERACTION:1,AJAX:2,CUSTOM_END:3,CUSTOM_TRACER:4},"TZ",0,n,"ih",0,{IP:"in progress",PF:"pending finish",FIN:"finished",CAN:"cancelled"},"pP",0,"initialPageLoad","tC",0,["click","keydown","submit"]])},4234(e,t,r){"use strict";r.d(t,{W:()=>i});var n=r(1687);class i{constructor(e,t){this.agentRef=e,this.ee=e?.ee,this.featureName=t,this.blocked=!1}deregisterDrain(){(0,n.x3)(this.agentRef,this.featureName)}}},7767(e,t,r){"use strict";var n=r(6154);r.d(t,["V",0,e=>n.RI&&!0===e?.privacy.cookies_enabled])},8362(e,t,r){"use strict";r.d(t,{d:()=>s});var n=r(9566),i=r(1741);class s extends i.W{agentIdentifier=(0,n.LA)(16)}},1741(e,t,r){"use strict";r.d(t,{W:()=>s});var n=r(944),i=r(4261);class s{#e(e,...t){if(this[e]!==s.prototype[e])return this[e](...t);(0,n.R)(35,e)}addPageAction(e,t){return this.#e(i.hG,e,t)}register(e){return this.#e(i.eY,e)}recordCustomEvent(e,t){return this.#e(i.fF,e,t)}setPageViewName(e,t){return this.#e(i.Fw,e,t)}setCustomAttribute(e,t,r){return this.#e(i.cD,e,t,r)}noticeError(e,t){return this.#e(i.o5,e,t)}setUserId(e,t=!1){return this.#e(i.Dl,e,t)}setApplicationVersion(e){return this.#e(i.nb,e)}setErrorHandler(e){return this.#e(i.bt,e)}addRelease(e,t){return this.#e(i.k6,e,t)}log(e,t){return this.#e("log",e,t)}start(){return this.#e("start")}finished(e){return this.#e(i.BL,e)}recordReplay(){return this.#e(i.CH)}pauseReplay(){return this.#e(i.Tb)}addToTrace(e){return this.#e(i.U2,e)}setCurrentRouteName(e){return this.#e(i.PA,e)}interaction(e){return this.#e(i.dT,e)}wrapLogger(e,t,r){return this.#e(i.Wb,e,t,r)}measure(e,t){return this.#e(i.V1,e,t)}consent(e){return this.#e(i.Pv,e)}}},4261(e,t,r){"use strict";r.d(t,["BL",0,"finished","CH",0,"recordReplay","Dl",0,"setUserId","Fw",0,"setPageViewName","PA",0,"setCurrentRouteName","Pv",0,"consent","Tb",0,"pauseReplay","U2",0,"addToTrace","V1",0,"measure","Wb",0,"wrapLogger","bt",0,"setErrorHandler","cD",0,"setCustomAttribute","dT",0,"interaction","eY",0,"register","fF",0,"recordCustomEvent","hG",0,"addPageAction","hw",0,"api-ixn-","k6",0,"addRelease","nb",0,"setApplicationVersion","o5",0,"noticeError"])},1738(e,t,r){"use strict";r.d(t,{U:()=>l,Y:()=>u});var n=r(3241),i=r(9908),s=r(1863),a=r(944),o=r(3969),c=r(8362),d=r(860);function u(e,t,r,s){const u=s||r;!u||u[e]&&u[e]!==c.d.prototype[e]||(u[e]=function(){(0,i.p)(o.xV,["API/"+e+"/called"],void 0,d.K7.metrics,r.ee),(0,n.W)({drained:!!r.runtime?.activatedFeatures,type:"data",name:"api",feature:"api-"+e,data:{}});try{return t.apply(this,arguments)}catch(e){(0,a.R)(23,e)}})}function l(e,t,r,n,a){const o=e.info;null===r?delete o.jsAttributes[t]:o.jsAttributes[t]=r,(a||null===r)&&(0,i.p)("api-"+n,[(0,s.t)(),t,r],void 0,"session",e.ee)}},8374(e,t,r){r.nc=(()=>{try{return document?.currentScript?.nonce}catch(e){}return""})()},860(e,t,r){"use strict";const n="events",i="jserrors",s="browser/blobs",a="browser/logs",o={ajax:"ajax",genericEvents:"generic_events",jserrors:i,logging:"logging",metrics:"metrics",pageAction:"page_action",pageViewEvent:"page_view_event",pageViewTiming:"page_view_timing",sessionReplay:"session_replay",sessionTrace:"session_trace",softNav:"soft_navigations"},c={[o.pageViewEvent]:1,[o.pageViewTiming]:2,[o.metrics]:3,[o.jserrors]:4,[o.softNav]:5,[o.ajax]:6,[o.sessionTrace]:7,[o.sessionReplay]:8,[o.logging]:9,[o.genericEvents]:10},d={[o.pageViewEvent]:"rum",[o.pageViewTiming]:n,[o.ajax]:n,[o.softNav]:n,[o.metrics]:i,[o.jserrors]:i,[o.sessionTrace]:s,[o.sessionReplay]:s,[o.logging]:a,[o.genericEvents]:"ins"};r.d(t,["$J",0,d,"K7",0,o,"P3",0,c,"XX",0,i,"Yy",0,a,"df",0,s,"hg",0,"connect"])}};const t={};function r(n){const i=t[n];if(void 0!==i)return i.exports;const s=t[n]={exports:{}};return e[n](s,s.exports,r),s.exports}r.m=e,r.d=(e,t)=>{if(Array.isArray(t))for(var n=0;n<t.length;){var i=t[n++],s=t[n++];r.o(e,i)?0===s&&n++:0===s?Object.defineProperty(e,i,{enumerable:!0,value:t[n++]}):Object.defineProperty(e,i,{enumerable:!0,get:s})}else for(var i in t)r.o(t,i)&&!r.o(e,i)&&Object.defineProperty(e,i,{enumerable:!0,get:t[i]})},r.f={},r.e=e=>Promise.all(Object.keys(r.f).reduce((t,n)=>(r.f[n](e,t),t),[])),r.u=e=>({212:"nr-spa-compressor",238:"nr-spa-iframe-message-handler",249:"nr-spa-recorder",478:"nr-spa"}[e]+"-1.322.0.min.js"),r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),(()=>{const e={},t="NRBA-1.322.0.PROD:";r.l=(n,i,s,a)=>
19{if(e[n])return void e[n].push(i);let o,c;if(void 0!==s){const e=document.getElementsByTagName("script");for(var d=0;d<e.length;d++){const r=e[d];if(r.getAttribute("src")==n||r.getAttribute("data-webpack")==t+s){o=r;break}}}if(!o){c=!0;var u={478:"sha512-SARROoir04gFygxlr/+mTI+PyMeFL+epi1vnUA2G5mTQ7s3G44ItQBJKbOaIMdIE5OBzuaKhb4k5JYta0NICxg==",249:"sha512-6DKQo5WP7YlpzX6l9UfYkgGLGK2oITdoaYTcZtgl5Foa22NY63lED/0z1hBBLeD7qZCz/YdlY19/r8drlol1tg==",212:"sha512-CYxuvSpDx6ErqWJwAvpoHn54eY37YdMcFao/axOumlw3BsSL7yioOeB2LWViY/Njs818sQG10dSglUhYCMfLPw==",238:"sha512-mvbMILWa3ohYst+u6TLfNrmtY2swUIB3rbJFN/uzt3W62KhgvUVwB81UEZ1R0/it5bfrQ5EVz864pi/CAmucNQ=="};o=document.createElement("script"),o.charset="utf-8",r.nc&&o.setAttribute("nonce",r.nc),o.setAttribute("data-webpack",t+s),o.src=n,0!==o.src.indexOf(window.location.origin+"/")&&(o.crossOrigin="anonymous"),u[a]&&(o.integrity=u[a])}e[n]=[i];const l=(t,r)=>{o.onerror=o.onload=null,clearTimeout(f);const i=e[n];if(delete e[n],o.parentNode?.removeChild(o),i?.forEach(e=>e(r)),t)return t(r)},f=setTimeout(l.bind(null,void 0,{type:"timeout",target:o}),12e4);o.onerror=l.bind(null,o.onerror),o.onload=l.bind(null,o.onload),c&&document.head.appendChild(o)}})(),r.r=e=>{Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.p="https://js-agent.newrelic.com/",(()=>{const e={38:0,788:0};r.f.j=(t,n)=>{let i=r.o(e,t)?e[t]:void 0;if(0!==i)if(i)n.push(i[2]);else{const s=new Promise((r,n)=>i=e[t]=[r,n]);n.push(i[2]=s);const a=r.p+r.u(t),o=new Error,c=n=>{if(r.o(e,t)&&(i=e[t],0!==i&&(e[t]=void 0),i)){const e=n&&("load"===n.type?"missing":n.type),r=n&&n.target&&n.target.src;o.message="Loading chunk "+t+" failed: ("+e+": "+r+")",o.name="ChunkLoadError",o.type=e,o.request=r,i[1](o)}};r.l(a,c,"chunk-"+t,t)}};const t=(t,n)=>{let[i,s,a]=n;var o,c,d=0;if(i.some(t=>0!==e[t])){for(o in s)r.o(s,o)&&(r.m[o]=s[o]);if(a)a(r)}for(t&&t(n);d<i.length;d++)c=i[d],r.o(e,c)&&e[c]&&e[c][0](),e[c]=0},n=self["webpackChunk:NRBA-1.322.0.PROD"]=self["webpackChunk:NRBA-1.322.0.PROD"]||[];n.forEach(t.bind(null,0)),n.push=t.bind(null,n.push.bind(n))})(),(()=>{"use strict";r(8374);var e=r(8362),t=r(860);const n=Object.values(t.K7);var i=r(384),s=r(1741);var a=r(2555),o=r(3333),c=r(9300);const d=e=>{if(!e||"string"!=typeof e)return!1;try{document.createDocumentFragment().querySelector(e)}catch{return!1}return!0};var u=r(2614),l=r(944),f=r(8122);const h="[data-nr-mask]",p=e=>(0,f.a)(e,(()=>{const e={feature_flags:[],experimental:{register:!1,resources:!1,iframe_bridge:!1,iframe_domains:[]},mask_selector:"*",block_selector:"[data-nr-block]",mask_input_options:{color:!1,date:!1,"datetime-local":!1,email:!1,month:!1,number:!1,range:!1,search:!1,tel:!1,text:!1,time:!1,url:!1,week:!1,textarea:!1,select:!1,password:!0}};return{ajax:{deny_list:void 0,block_internal:!0,enabled:!0,autoStart:!0,capture_payloads:c.mo.NONE},api:{register:{get enabled(){return e.feature_flags.includes(o.$v.REGISTER)||e.experimental.register},set enabled(t){e.experimental.register=t},duplicate_data_to_container:!1,get allow_iframe_bridge(){return e.feature_flags.includes(o.$v.IFRAME_BRIDGE)||e.experimental.iframe_bridge},set allow_iframe_bridge(t){e.experimental.iframe_bridge=t},get iframe_domains(){return e.experimental.iframe_domains},set iframe_domains(t){Array.isArray(t)?e.experimental.iframe_domains=t:(0,l.R)(1,t)}}},browser_consent_mode:{enabled:!1},distributed_tracing:{enabled:void 0,exclude_newrelic_header:void 0,cors_use_newrelic_header:void 0,cors_use_tracecontext_headers:void 0,allowed_origins:void 0},get feature_flags(){return e.feature_flags},set feature_flags(t){e.feature_flags=t},generic_events:{enabled:!0,autoStart:!0},harvest:{interval:30},jserrors:{enabled:!0,autoStart:!0},logging:{enabled:!0,autoStart:!0},metrics:{enabled:!0,autoStart:!0},obfuscate:void 0,page_action:{enabled:!0},page_view_event:{enabled:!0,autoStart:!0},page_view_timing:{enabled:!0,autoStart:!0},performance:{capture_marks:!1,capture_measures:!1,capture_detail:!0,resources:{get enabled(){return e.feature_flags.includes(o.$v.RESOURCES)||e.experimental.resources},set enabled(t){e.experimental.resources=t},asset_types:[],first_party_domains:[],ignore_newrelic:!0}},privacy:{cookies_enabled:!0},proxy:{assets:void 0,beacon:void 0},session:{expiresMs:u.wk,inactiveMs:u.BB},session_replay:{autoStart:!0,enabled:!1,preload:!1,sampling_rate:10,error_sampling_rate:100,collect_fonts:!1,inl
19ine_images:!1,fix_stylesheets:!0,mask_all_inputs:!0,get mask_text_selector(){return e.mask_selector},set mask_text_selector(t){d(t)?e.mask_selector="".concat(t,",").concat(h):""===t||null===t?e.mask_selector=h:(0,l.R)(5,t)},get block_class(){return"nr-block"},get ignore_class(){return"nr-ignore"},get mask_text_class(){return"nr-mask"},get block_selector(){return e.block_selector},set block_selector(t){d(t)?e.block_selector+=",".concat(t):""!==t&&(0,l.R)(6,t)},get mask_input_options(){return e.mask_input_options},set mask_input_options(t){t&&"object"==typeof t?e.mask_input_options={...t,password:!0}:(0,l.R)(7,t)}},session_trace:{enabled:!0,autoStart:!0},soft_navigations:{enabled:!0,autoStart:!0},ssl:void 0,user_actions:{enabled:!0,elementAttributes:["id","className","tagName","type"]},web_sockets:{enabled:!1}}})());var g=r(6154),m=r(9324);let v=0;const y={buildEnv:"PROD",distMethod:"CDN",version:m.x,originTime:g.WN},b={consented:!1},E={activatedFeatures:void 0,appMetadata:{},configured:!1,get consented(){return this.session?.state?.consent||b.consented},set consented(e){b.consented=e},customTransaction:void 0,denyList:[],disabled:!1,drainRegistry:new Map,connector:void 0,harvester:void 0,v2Target:void 0,isolatedBacklog:!1,isRecording:!1,loaderType:void 0,maxBytes:3e4,obfuscator:void 0,onerror:void 0,ptid:void 0,releaseIds:{},session:void 0,timeKeeper:void 0,registeredEntities:[],jsAttributesMetadata:{bytes:0},get harvestCount(){return++v},listeningForIframeMessages:!1};var w=r(9232);var R=r(7836),T=r(3241);const A={accountID:void 0,trustKey:void 0,agentID:void 0,licenseKey:void 0,applicationID:void 0,xpid:void 0};var S=r(9908),x=r(9752);function O(e,t={},n,o){let{init:c,info:d,loader_config:u,runtime:l={},exposed:h=!0}=t;if(!d){const e=(0,i.pV)();c=e.init,d=e.info,u=e.loader_config}var m;e.init=p(c||{}),e.loader_config=(m=u||{},(0,f.a)(m,A)),d.jsAttributes??={},g.bv&&(d.jsAttributes.isWorker=!0),e.info=(0,a.D)(d);const v=e.init;e.runtime??=(e=>{const t=(0,f.a)(e,E),r=Object.keys(y).reduce((e,t)=>(e[t]={value:y[t],writable:!1,configurable:!0,enumerable:!0},e),{});return Object.defineProperties(t,r)})(l),e.runtime.v2Target??={type:w.f.BA,instance:e.agentIdentifier,get id(){return e.runtime.appMetadata?.agents?.[0]?.entityGuid},get attributes(){return{"entity.guid":this.id,appId:e.info.applicationID}}},v.proxy.assets&&(e=>{const t=e.startsWith("http");e+="/",r.p=t?e:"https://"+e})(v.proxy.assets),e.runtime.configured||(Object.defineProperty(e,"beacons",{get:()=>[e.info.beacon,e.info.errorBeacon,e.init.proxy.assets,e.init.proxy.beacon].filter(Boolean)}),Object.defineProperty(e.runtime,"denyList",{get:()=>[...e.init.ajax.deny_list||[],...e.init.ajax.block_internal?e.beacons:[]]}),e.runtime.ptid=e.agentIdentifier,function(e){const t=(0,i.pV)();Object.getOwnPropertyNames(s.W.prototype).forEach(r=>{const n=s.W.prototype[r];if("function"!=typeof n||"constructor"===n)return;let i=t[r];e[r]&&!1!==e.exposed&&"micro-agent"!==e.runtime?.loaderType&&(t[r]=(...t)=>{const n=e[r](...t);return i?i(...t):n})})}(e),e.runtime.loaderType=n,e.ee=R.ee.get(e.agentIdentifier),e.exposed=h,(0,T.W)({drained:!!e.runtime.activatedFeatures,type:"lifecycle",name:"initialize",feature:void 0,data:e.config}),e.init.api.register.allow_iframe_bridge&&g.gm.addEventListener("message",t=>{"string"==typeof t.data?.type&&t.data.type.startsWith(x.Pl)&&(0,S.p)("iframe-message",[t],void 0,"IFRAME",e.ee)}),e.runtime.configured=!0)}var _=r(1863),k=r(4261),N=r(1738);var L=r(1687),M=r(4234),P=r(5289),I=r(5270),j=r(7767),C=r(6389),D=r(7699);const B=new WeakSet,H=new WeakMap;class W extends M.W{constructor(e,t){super(e,t),this.abortHandler=void 0,this.featAggregate=void 0,this.loadedSuccessfully=void 0,this.onAggregateImported=new Promise(e=>{this.loadedSuccessfully=e}),this.deferred=Promise.resolve(),!1===e.init[this.featureName].autoStart?this.deferred=new Promise((t,r)=>{this.ee.on("manual-start-all",(0,C.J)(()=>{(0,L.Ak)(e,this.featureName),t()}))}):(0,L.Ak)(e,t)}importAggregator(e,t,n={}){if(this.featAggregate)return;const i=async()=>{if(await this.deferred,this.#t(e),!(0,a.f)(e.info))return(0,l.R)(43),e.ee.abort(),void this.loadedSuccessfully(!1);try{await async function(e,t,n){if(H.has(e))return H.get(e);const i=(async()=>
19{if((0,j.V)(e.init))try{const{setupAgentSession:t}=await r.e(478).then(r.bind(r,8766));t(e)}catch(e){(0,l.R)(20,e),t.emit("internal-error",[e]),(0,S.p)(D.qh,[e],void 0,n,t)}if(e.init.api.register.allow_iframe_bridge)try{const{setupIframeMFEMessageListener:t}=await r.e(238).then(r.bind(r,6417));t(e)}catch(e){(0,l.R)(23,e)}const[{Connector:i},{Harvester:s}]=await Promise.all([r.e(478).then(r.bind(r,6589)),r.e(478).then(r.bind(r,5237))]);e.runtime.connector=new i(e),e.runtime.harvester=new s(e);const a=Object.values(e.features).filter(t=>e.runtime.drainRegistry.has(t.featureName));Promise.all(a.map(e=>e.onAggregateImported)).then(()=>e.runtime.harvester.startTimer())})();H.set(e,i),await i}(e,this.ee,this.featureName)}catch(e){return(0,l.R)(79,e),this.ee.abort(),void this.loadedSuccessfully(!1)}try{if(!this.#r(this.featureName,e.runtime.session,e.init))return this.abortHandler?.(),(0,L.Ze)(this.agentRef,this.featureName),void this.loadedSuccessfully(!1);const{Aggregate:r}=await t();this.featAggregate=new r(e,n),e.runtime.harvester.initializedAggregates.push(this.featAggregate),this.loadedSuccessfully(!0)}catch(e){(0,l.R)(34,e),this.abortHandler?.(),(0,L.Ze)(this.agentRef,this.featureName,!0),this.loadedSuccessfully(!1)}};g.RI?(0,P.GG)(()=>i(),!0):i()}#r(e,r,n){if(this.blocked)return!1;switch(e){case t.K7.sessionReplay:return(0,I.SR)(n)&&!!r;case t.K7.sessionTrace:return!!r;default:return!0}}#t(e){if(!B.has(e)&&(B.add(e),!(0,a.f)(e.info))){const t=(0,i.pV)();let r={...t.info?.jsAttributes};try{r={...r,...e.info?.jsAttributes}}catch(e){}O(e,{...t,info:{...t.info,jsAttributes:r},runtime:e.runtime},e.runtime.loaderType)}}}var U=r(6630);class K extends W{static featureName=U.T;constructor(e){var t;super(e,U.T),this.setupInspectionEvents(),t=e,(0,N.Y)(k.Fw,function(e,r){"string"==typeof e&&("/"!==e.charAt(0)&&(e="/"+e),t.runtime.customTransaction=(r||"http://custom.transaction")+e,(0,S.p)("api-"+k.Fw,[(0,_.t)()],void 0,void 0,t.ee))},t),this.importAggregator(e,()=>e.init.feature_flags.includes("rum_v2")?r.e(478).then(r.bind(r,908)):r.e(478).then(r.bind(r,7927)))}setupInspectionEvents(){const e=(e,t)=>{e&&(0,T.W)({timeStamp:e.timeStamp,loaded:"complete"===e.target.readyState,type:"window",name:t,data:e.target.location+""})};(0,P.sB)(t=>{e(t,"DOMContentLoaded")}),(0,P.GG)(t=>{e(t,"load")}),(0,P.Qr)(t=>{e(t,"navigate")}),this.ee.on(u.tS.UPDATE,(e,t)=>{(0,T.W)({type:"lifecycle",name:"session",data:t})})}}class F extends e.d{constructor(e){var t;(super(),g.gm)?(this.features={},(0,i.bQ)(this.agentIdentifier,this),this.desiredFeatures=new Set(e.features||[]),this.desiredFeatures.add(K),O(this,e,e.loaderType||"agent"),t=this,(0,N.Y)(k.cD,function(e,r,n=!1){if("string"==typeof e){if(["string","number","boolean"].includes(typeof r)||null===r)return(0,N.U)(t,e,r,k.cD,n);(0,l.R)(40,typeof r)}else(0,l.R)(39,typeof e)},t),function(e){(0,N.Y)(k.Dl,function(t,r=!1){if("string"!=typeof t&&null!==t)return void(0,l.R)(41,typeof t);const n=e.info.jsAttributes["enduser.id"];r&&null!=n&&n!==t?(0,S.p)("api-setUserIdAndResetSession",[t],void 0,"session",e.ee):(0,N.U)(e,"enduser.id",t,k.Dl,!0)},e)}(this),function(e){(0,N.Y)(k.nb,function(t){if("string"==typeof t||null===t)return(0,N.U)(e,"application.version",t,k.nb,!1);(0,l.R)(42,typeof t)},e)}(this),function(e){(0,N.Y)("start",function(){e.ee.emit("manual-start-all")},e)}(this),function(e){(0,N.Y)(k.Pv,function(t=!0){if("boolean"==typeof t){if((0,S.p)("api-"+k.Pv,[t],void 0,"session",e.ee),e.runtime.consented=t,t){const t=e.features.page_view_event;t.onAggregateImported.then(e=>{const r=t.featAggregate;e&&!r.sentRum&&r.sendRum?.()})}}else(0,l.R)(65,typeof t)},e)}(this),this.run()):(0,l.R)(21)}get config(){return{info:this.info,init:this.init,loader_config:this.loader_config,runtime:this.runtime}}get api(){return this}run(){try{const e=function(e){const t={};return n.forEach(r=>{t[r]=!!e[r]?.enabled}),t}(this.init),r=[...this.desiredFeatures],i=this.init.feature_flags.includes("rum_v2");r.sort((e,r)=>t.P3[e.featureName]-t.P3[r.featureName]),r.forEach(r=>{if(!e[r.featureName]&&(i||r.featureName!==t.K7.pageViewEvent))return;const n=function(e){switch(e){case t.K7.ajax:return[t.K7.jserrors];case t.K7.sessionTrace:return[t.K7.ajax,t.K7.pageViewEvent];case t.K7.sessionReplay:return[t.K7.sessionTrace];case t.K7.pageViewTiming:return[t.K7.pageViewEvent];default:return[]}}(r.featureName).filter(e=>!(e in this.features));n.length>0&&(0,l.R)(36,{targetFeature:r.featureName,missingDependencies:n}),this.features[r.featureName]=new r(this)})}catch(e){(0,l.R)(22,e);for(const e in this.features)this.features[e].abortHandler?.();const t=(0,i.Zm)();delete t.initializedAgents[this.agentIdentifier]?.features,delete this.sharedAggregator;return t.ee.get(this.agentIdentifier).abort(),!1}}}var V=r(2843),z=r(782);class G extends W{static featureName=z.T;constructor(e){super(e,z.T),g.RI&&((0,V.u)(()=>(0,S.p)("docHidden",[(0,_.t)()],void 0,z.T,this.ee),!0),(0,V.G)(()=>(0,S.p)("winPagehide",[(0,_.t)()],void 0,z.T,this.ee)),this.importAggregator(e,()=>r.e(478).then(r.bind(r,9917))))}}var q=r(3969);class Y extends W{static featureName=q.TZ;constructor(e){super(e,q.TZ),this.importAggregator(e,()=>r.e(478).then(r.bind(r,6555)))}}var Z=r(6774),J=r(3878),X=r(3304);class Q{constructor(e,t,r,n,i){this.name="UncaughtError",this.message="string"==typeof e?e:(0,X.A)(e),this.sourceURL=t,this.line=r,this.column=n,this.__newrelic=i}}function ee(e){return ne(e)?e:new Q(void 0!==e?.message?e.message:e,e?.filename||e?.sourceURL,e?.lineno||e?.line,e?.colno||e?.col,e?.__newrelic,e?.cause)}function te(e){const t="Unhandled Promise Rejection: ";if(!e?.reason)return;if(ne(e.reason)){try{e.reason.message.startsWith(t)||(e.reason.message=t+e.reason.message)}catch(e){}return ee(e.reason)}const r=ee(e.reason);return(r.message||"").startsWith(t)||(r.message=t+r.message),r}function re(e){if(e.error instanceof SyntaxError&&!/:\d+$/.test(e.error.stack?.trim())){const t=new Q(e.message,e.filename,e.lineno,e.colno,e.error.__newrelic,e.cause);return t.name=SyntaxError.name,t}return ne(e.error)?e.error:ee(e)}function ne(e){return e instanceof Error&&!!e.stack}function ie(e,r,n,i,s=(0,_.t)()){"string"==typeof e&&(e=new Error(e)),(0,S.p)("err",[e,s,!1,r,n.runtime.isRecording,void 0,i],void 0,t.K7.jserrors,n.ee),(0,S.p)("uaErr",[],void 0,t.K7.genericEvents,n.ee)}var se=r(993),ae=r(3785);function oe(e,{customAttributes:t={},level:r=se.p_.INFO}={},n,i,s=(0,_.t)()){(0,ae.R)(n.ee,e,t,r,!1,i,s)}function ce(e,r,n,i,s=(0,_.t)()){(0,S.p)("api-"+k.hG,[s,e,r,i],void 0,t.K7.genericEvents,n.ee)}function de(e,r,n,i,s=(0,_.t)()){const{start:a,end:o,customAttributes:c}=r||{},d={customAttributes:c||{}};if("object"!=typeof d.customAttributes||"string"!=typeof e||0===e.length)return void(0,l.R)(57);const u=(e,t)=>
19null==e?t:"number"==typeof e?e:e instanceof PerformanceMark?e.startTime:Number.NaN;if(d.start=u(a,0),d.end=u(o,s),Number.isNaN(d.start)||Number.isNaN(d.end))(0,l.R)(57);else{if(d.duration=d.end-d.start,!(d.duration<0))return(0,S.p)("api-"+k.V1,[d,e,i],void 0,t.K7.genericEvents,n.ee),d;(0,l.R)(58)}}function ue(e,r={},n,i,s=(0,_.t)()){(0,S.p)("api-"+k.fF,[s,e,r,i],void 0,t.K7.genericEvents,n.ee)}var le=r(5718);const fe=(e,t)=>e?.nrMfeId===t.id&&(!e?.nrMfeObserved||e?.nrMfeObserved===t.instance),he=e=>{try{return g.gm.CSS.escape(e)}catch(t){return e}},pe=(e,t={})=>{const r=t.id,n=t.instance;if(!e||!r||!n)return!1;try{let r=1===e.nodeType?e:e.parentElement;for(;r?.tagName;){if(fe(r.dataset,t))return r.dataset.nrMfeObserved=n,!0;r=r.parentNode}}catch(e){}return!1},ge=(e,t)=>{const r=g.gm.document?.querySelectorAll('[data-nr-mfe-id="'.concat(he(e.id),'"]')),n=(Array.from(r)||[]).find(t=>fe(t.dataset,e));let i=!!n;i&&(n.dataset.nrMfeObserved??=e.instance);const s=new g.gm.MutationObserver(r=>{r.forEach(r=>{r.addedNodes.forEach(r=>{const n=1===r.nodeType?r:null;!i&&fe(n?.dataset,e)&&(s.disconnect(),s.observe(n,{childList:!0,subtree:!0}),i=!0,n.dataset.nrMfeObserved=e.instance),(e=>{try{return e?.textContent?.trim()||["img","video","canvas","svg"].includes(e?.nodeName?.toLowerCase())}catch(e){return!1}})(r)&&(i||pe(r,e))&&t(r,s)})})});return s.observe(n||g.gm.document,{childList:!0,subtree:!0}),s},me=(e,t,r)=>{try{const n=new g.gm.PerformanceObserver(e=>{e.getEntries().forEach(r)});return n.observe(t),e.push(n),n}catch(e){return null}};function ve(e,t){let r,n,i=!1;const s=e=>null==e?e:e-(t?.scriptStart||t?.registeredAt||0),a={fcp:{get value(){const e=s(r);return e>1e4?void 0:e},set value(e){i||(r=e)}},lcp:{get value(){if(void 0!==a.fcp.value)return s(n)},set value(e){i||(n=e)}},cls:{value:void 0},inp:{value:void 0},disconnect:()=>{}};if(!(e&&g.RI&&g.gm.MutationObserver&&g.gm.PerformanceObserver))return a;const o=[];setTimeout(()=>{r||a.disconnect()},1e4);const c=()=>{if(!i){if(null==r){const e=(0,_.t)();if(s(e)>1e4)return void a.disconnect();r=e}n??=(0,_.t)(),a.cls.value??=0}},d=ge(e,(e,t)=>{c(),t.disconnect()});o.push(d);let u=0,l=null;const f=new Set;try{l=new g.gm.ResizeObserver(e=>{i||e.forEach(e=>{try{const t=e.contentRect.width*e.contentRect.height;t>u&&(u=t,a.lcp.value=(0,_.t)()),l.unobserve(e.target)}catch(e){}})})}catch(e){}const h=ge(e,e=>{if(c(),l)try{const t=1===e.nodeType?e:e.parentElement;t&&!f.has(t)&&(f.add(t),"IMG"===t.tagName?t.complete?l.observe(t):t.addEventListener("load",()=>{l.observe(t)},{once:!0}):"VIDEO"===t.tagName?t.readyState>=2?l.observe(t):t.addEventListener("loadeddata",()=>{l.observe(t)},{once:!0}):l.observe(t))}catch(e){}});l&&o.push(l),o.push(h),me(o,{type:"layout-shift",buffered:!0},t=>{i||t.hadRecentInput||(t.sources||[]).some(r=>!!pe(r.node,e)&&(c(),a.cls.value+=t.value,!0))}),me(o,{type:"event",buffered:!0,durationThreshold:40},t=>{!i&&t.interactionId&&pe(t.target,e)&&(void 0===a.inp.value||t.duration>a.inp.value)&&(c(),a.inp.value=t.duration)});const p=["pointerdown","keydown"],m=()=>{p.forEach(e=>{g.gm.removeEventListener(e,v,{passive:!0})})};a.disconnect=()=>{i=!0,o.forEach(e=>{try{e?.disconnect()}catch(e){}}),m(),["visibilitychange","pagehide"].forEach(e=>{g.gm.removeEventListener(e,a.disconnect,{once:!0,passive:!0})})};const v=t=>{pe(t?.target,e)&&((()=>{try{h?.disconnect(),l?.disconnect()}catch(e){}})(),m())};p.forEach(e=>{g.gm.addEventListener(e,v,{passive:!0})}),["visibilitychange","pagehide"].forEach(e=>{g.gm.addEventListener(e,a.disconnect,{once:!0,passive:!0})});const y=g.gm.document?.querySelectorAll('[data-nr-mfe-id="'.concat(he(e.id),'"]'));return Array.from(y||[]).some(t=>fe(t.dataset,e))&&c(),a}var ye=r(9566),be=r(7560),Ee=r(9119);const we=["entry","scripts","all"],Re=["name","id","type"],Te=new Map([[ce,"addPageAction"],[oe,"log"],[de,"measure"],[ie,"noticeError"],[ue,"recordCustomEvent"]]),Ae={experimental:(0,C.J)(()=>(0,l.R)(54,"newrelic.register")),disabled:(0,C.J)(()=>(0,l.R)(55)),invalidTarget:(0,C.J)(e=>(0,l.R)(48,e)),deregistered:(0,C.J)(()=>(0,l.R)(68)),invalidTimingMethod:(0,C.J)(e=>(0,l.R)(80,e)),duplicateName:(0,C.J)(e=>(0,l.R)(81,e)),duplicateId:(0,C.J)(e=>(0,l.R)(82,e))};function Se(e){(0,N.Y)(k.eY,function(t){return xe(e,t)},e)}function xe(e,r){Ae.experimental(),r||={},r.instance=(0,ye.LA)(8),r.type=w.f.MFE,r.licenseKey||=e.info.licenseKey,r.blocked=!1,("object"!=typeof r.tags||null===r.tags||Array.isArray(r.tags))&&(r.tags={}),r.parent??={get id(){return e.runtime.appMetadata.agents?.[0].entityGuid},type:w.f.BA},r.manifest=(0,be.N)(r.manifest),void 0===r.timingMethod||we.includes(r.timingMethod)||(Ae.invali
19dTimingMethod(r.timingMethod),r.timingMethod=void 0);const n=(0,le.Qr)(r);r.manifest&&(0,le.xo)(n,r);const i=ve(r,n),s=(0,Ee.L)(""+location),a={};Object.prototype.hasOwnProperty.call(r,"attributes")||Object.defineProperty(r,"attributes",{get:()=>({...a,"source.id":r.id,"source.name":r.name,"source.type":r.type,"parent.type":r.parent?.type||w.f.BA,"parent.id":r.parent?.id})}),Object.entries(r.tags).forEach(([e,t])=>{Re.includes(e)||(a["source.".concat(e)]=t)});let o=()=>{};const c=e.runtime.registeredEntities,d=e=>{r.blocked=!0,o=e};function u(e){return"string"==typeof e&&!!e.trim()&&e.trim().length<501}e.init.api.register.enabled||d(Ae.disabled),u(r.id)&&u(r.name)||d(()=>Ae.invalidTarget(r)),c.forEach(e=>{try{const{name:t,id:n}=e.metadata.target;t===r.name&&n!==r.id&&Ae.duplicateName(r),n===r.id&&t!==r.name&&Ae.duplicateId(r)}catch(e){}});const f={addPageAction:(t,n={})=>m(ce,[t,{...a,...n},e],r),deregister:()=>{p(),d(Ae.deregistered)},log:(t,n={})=>m(oe,[t,{...n,customAttributes:{...a,...n.customAttributes||{}}},e],r),measure:(t,n={})=>m(de,[t,{...n,customAttributes:{...a,...n.customAttributes||{}}},e],r),noticeError:(t,n={})=>m(ie,[t,{...a,...n},e],r),recordCustomEvent:(t,n={})=>m(ue,[t,{...a,...n},e],r),setApplicationVersion:e=>g("application.version",e),setCustomAttribute:(e,t)=>g(e,t),setUserId:e=>g("enduser.id",e),metadata:{get customAttributes(){return a},target:r,timings:n,vitals:i,events:{latestTimestamp:void 0}}},h=()=>(r.blocked&&o(),r.blocked);function p(){if(n.reportedAt)return;n.reportedAt=(0,_.t)(),i.disconnect(),n.fcp=i.fcp,n.lcp=i.lcp,n.cls=i.cls,n.inp=i.inp;const e=n.fetchEnd-n.fetchStart,t=n.scriptEnd-n.scriptStart,r={assetUrl:n.asset,assetType:n.type,registerUrl:s,deregisterUrl:(0,Ee.L)(""+location),pageUrl:void 0,currentUrl:void 0,timeAlive:n.reportedAt-n.registeredAt,timeToBeRequested:n.fetchStart,timeToExecute:t,timeToFetch:e,timeToLoad:e+t,t
19imeToRegister:n.registeredAt,totalWeight:n.totalWeight,...void 0!==n.renderBlocking&&{renderBlocking:n.renderBlocking},...i.fcp.value>=0&&{"vitals.fcp.value":i.fcp.value},...i.lcp.value>=0&&{"vitals.lcp.value":i.lcp.value},...i.cls.value>=0&&{"vitals.cls.value":i.cls.value},...i.inp.value>=0&&{"vitals.inp.value":i.inp.value}};f.recordCustomEvent("MicroFrontEndTiming",r)}h()||(c.push(f),(0,V.G)(p));const g=(e,t)=>{h()||(a[e]=t)},m=(r,n,i)=>{if(h()&&r!==xe)return;const s=f.metadata.events.latestTimestamp??(0,_.t)();f.metadata.events.latestTimestamp=void 0;const a=Te.get(r)||"unknown";(0,S.p)(q.xV,["API/register/".concat(a,"/called")],void 0,t.K7.metrics,e.ee);try{return r(...n,i,s)}catch(e){(0,l.R)(50,e)}};return f}class Oe extends W{static featureName=Z.T;constructor(e){var t;super(e,Z.T),t=e,(0,N.Y)(k.o5,(e,r)=>ie(e,r,t),t),function(e){(0,N.Y)(k.bt,function(t){e.runtime.onerror=t},e)}(e),function(e){let t=0;(0,N.Y)(k.k6,function(e,r){++t>10||(this.runtime.releaseIds[e.slice(-200)]=(""+r).slice(-200))},e)}(e),Se(e);try{this.removeOnAbort=new AbortController}catch(e){}this.ee.on("internal-error",(t,r)=>{this.abortHandler&&(0,S.p)("ierr",[ee(t),(0,_.t)(),!0,{},e.runtime.isRecording,r],void 0,this.featureName,this.ee)}),g.gm.addEventListener("unhandledrejection",t=>{this.abortHandler&&(0,S.p)("err",[te(t),(0,_.t)(),!1,{unhandledPromiseRejection:1},e.runtime.isRecording],void 0,this.featureName,this.ee)},(0,J.jT)(!1,this.removeOnAbort?.signal)),g.gm.addEventListener("error",t=>{this.abortHandler&&(0,S.p)("err",[re(t),(0,_.t)(),!1,{},e.runtime.isRecording],void 0,this.featureName,this.ee)},(0,J.jT)(!1,this.removeOnAbort?.signal)),this.abortHandler=this.#n,this.importAggregator(e,()=>r.e(478).then(r.bind(r,9377)))}#n(){this.removeOnAbort?.abort(),this.abortHandler=void 0}}var _e=r(8990);let ke=1;function Ne(e){const t=typeof e;return!e||"object"!==t&&"function"!==t?-1:e===g.gm?0:(0,_e.I)(e,"nr@id",function(){return ke++})}function Le(e){if("string"==typeof e)return e.length;if("object"==typeof e){if("undefined"!=typeof ArrayBuffer&&e instanceof ArrayBuffer&&e.byteLength)return e.byteLength;if("undefined"!=typeof Blob&&e instanceof Blob&&e.size)return e.size;if(!("undefined"!=typeof FormData&&e instanceof FormData))try{return(0,X.A)(e).length}catch(e){return}}}var Me=r(8139),Pe=r(3434),Ie=r(5732);const je={},Ce=["open","send","setRequestHeader"];function De(e,t){var r=e||R.ee;const n=function(e){return(e||R.ee).get("xhr")}(r);if(void 0===g.gm.XMLHttpRequest)return n;if(je[n.debugId]++)return n;je[n.debugId]=1,(0,Me.u)(r,t);var i=(0,Pe.YM)(n,void 0,t),s=g.gm.XMLHttpRequest,a=g.gm.MutationObserver,o=g.gm.Promise,c=g.gm.setInterval,d="readystatechange",u=["onload","onerror","onabort","onloadstart","onloadend","onprogress","ontimeout"],f=[],h=g.gm.XMLHttpRequest=function(e){const r=new s(e),a=n.context(r);a.targets=(0,Ie.$5)(t);try{n.emit("new-xhr",[r],a),r.addEventListener(d,(o=a,function(){var e=this;e.readyState>3&&!o.resolved&&(o.resolved=!0,n.emit("xhr-resolved",[],e)),i.inPlace(e,u,"fn-",E)}),(0,J.jT)(!1))}catch(e){(0,l.R)(15,e);try{n.emit("internal-error",[e])}catch(e){}}var o;return r};function p(e,t){i.inPlace(t,["onreadystatechange"],"fn-",E)}if(function(e,t){for(var r in e)t[r]=e[r]}(s,h),h.prototype=s.prototype,i.inPlace(h.prototype,Ce,"-xhr-",E),n.on("send-xhr-start",function(e,t){p(e,t),function(e){f.push(e),a&&(m?m.then(b):c?c(b):(v=-v,y.data=v))}(t)}),n.on("open-xhr-start",p),a){var m=o&&o.resolve();if(!c&&!o){var v=1,y=document.createTextNode(v);new a(b).observe(y,{characterData:!0})}}else r.on("fn-end",function(e){e[0]&&e[0].type===d||b()});function b(){for(var e=0;e<f.length;e++)p(0,f[e]);f.length&&(f=[])}function E(e,t){return t}return n}var Be="fetch-",He=Be+"body-",We=["arrayBuffer","blob","json","text","formData"],Ue=g.gm.Request,Ke=g.gm.Response,Fe="prototype";const Ve={};function ze(e,t){const r=function(e){return(e||R.ee).get("fetch")}(e);if(!(Ue&&Ke&&g.gm.fetch))return r;if(Ve[r.debugId]++)return r;function n(e,n,i){var s=e[n];"function"==typeof s&&(e[n]=function(){var e=[...arguments];const n={},a=(0,Ie.$5)(t);var o;r.emit(i+"before-start",[e],n),n[R.P]&&n[R.P].dt&&(o=n[R.P].dt);var c=s.apply(this,e);return r.emit(i+"start",[e,o],c),c.then(function(e){return r.emit(i+"end",[null,e,a],c),e},function(e){throw r.emit(i+"end",[e,void 0,a],c),e})})}
19return Ve[r.debugId]=1,We.forEach(e=>{n(Ue[Fe],e,He),n(Ke[Fe],e,He)}),n(g.gm,"fetch",Be),r.on(Be+"end",function(e,n,i){var s=this;if(s.targets=i||[t.runtime.v2Target],n){var a=n.headers.get("content-length");null!==a&&(s.rxSize=a),r.emit(Be+"done",[null,n],s)}else r.emit(Be+"done",[e],s)}),r}var Ge=r(7485);class qe{constructor(e){this.agentRef=e}generateTracePayload(e){const t=this.agentRef.loader_config;if(!this.shouldGenerateTrace(e)||!t)return null;var r=(t.accountID||"").toString()||null,n=(t.agentID||"").toString()||null,i=(t.trustKey||"").toString()||null;if(!r||!n)return null;var s=(0,ye.ZF)(),a=(0,ye.el)(),o=Date.now(),c={spanId:s,traceId:a,timestamp:o};return(e.sameOrigin||this.isAllowedOrigin(e)&&this.useTraceContextHeadersForCors())&&(c.traceContextParentHeader=this.generateTraceContextParentHeader(s,a),c.traceContextStateHeader=this.generateTraceContextStateHeader(s,o,r,n,i)),(e.sameOrigin&&!this.excludeNewrelicHeader()||!e.sameOrigin&&this.isAllowedOrigin(e)&&this.useNewrelicHeaderForCors())&&(c.newrelicHeader=this.generateTraceHeader(s,a,o,r,n,i)),c}generateTraceContextParentHeader(e,t){return"00-"+t+"-"+e+"-01"}generateTraceContextStateHeader(e,t,r,n,i){return i+"@nr=0-1-"+r+"-"+n+"-"+e+"----"+t}generateTraceHeader(e,t,r,n,i,s){if(!("function"==typeof g.gm?.btoa))return null;var a={v:[0,1],d:{ty:"Browser",ac:n,ap:i,id:e,tr:t,ti:r}};return s&&n!==s&&(a.d.tk=s),btoa((0,X.A)(a))}shouldGenerateTrace(e){return this.agentRef.init?.distributed_tracing?.enabled&&this.isAllowedOrigin(e)}isAllowedOrigin(e){var t=!1;const r=this.agentRef.init?.distributed_tracing;if(e.sameOrigin)t=!0;else if(r?.allowed_origins instanceof Array)for(var n=0;n<r.allowed_origins.length;n++){var i=(0,Ge.D)(r.allowed_origins[n]);if(e.hostname===i.hostname&&e.protocol===i.protocol&&e.port===i.port){t=!0;break}}return t}excludeNewrelicHeader(){var e=this.agentRef.init?.distributed_tracing;return!!e&&!!e.exclude_newrelic_header}useNewrelicHeaderForCors(){var e=this.agentRef.init?.distributed_tracing;return!!e&&!1!==e.cors_use_newrelic_header}useTraceContextHeadersForCors(){var e=this.agentRef.init?.distributed_tracing;return!!e&&!!e.cors_use_tracecontext_headers}}var Ye=r(7295);function Ze(e){return"string"==typeof e?e:e instanceof(0,i.dV)().o.REQ?e.url:g.gm?.URL&&e instanceof URL?e.href:void 0}function $e(e,t){var r=(0,Ge.D)(t),n=e.params||e;n.hostname=r.hostname,n.port=r.port,n.protocol=r.protocol,n.host=r.hostname+":"+r.port,n.pathname=r.pathname,e.parsedOrigin=r,e.sameOrigin=r.sameOrigin}var Je=["load","error","abort","timeout"],Xe=Je.length,Qe=(0,i.dV)().o.REQ,et=(0,i.dV)().o.XHR;const tt="X-NewRelic-App-Data",rt="internal-error";class nt extends W{static featureName=c.TZ;constructor(e){super(e,c.TZ),this.dt=new qe(e),this.handler=(e,t,r,n)=>(0,S.p)(e,t,r,n,this.ee);try{const e={xmlhttprequest:"xhr",fetch:"fetch",beacon:"beacon"};g.gm?.performance?.getEntriesByType("resource").forEach(r=>{if(r.initiatorType in e&&0!==r.responseStatus){const n={status:r.responseStatus},i={rxSize:r.transferSize,duration:Math.floor(r.duration),cbTime:0};$e(n,r.name),this.handler("xhr",[n,i,r.startTime,r.responseEnd,e[r.initiatorType]],void 0,t.K7.ajax)}})}catch(e){}ze(this.ee,e),De(this.ee,e),function(e,r,n,i){const s=[c.mo.ALL,c.mo.FAILURES].includes(e.init.ajax?.capture_payloads);function a(e){var t=this;t.totalCbs=0,t.called=0,t.cbTime=0,t.end=A,t.ended=!1,t.xhrGuids={},t.lastSize=null,t.loadCaptureCalled=!1,t.params=this.params||{},t.metrics=this.metrics||{},t.latestLongtaskEnd=0,e.addEventListener("load",function(r){O(t,e)},(0,J.jT)(!1)),g.lR||e.addEventListener("progress",function(e){t.lastSize=e.loaded},(0,J.jT)(!1))}function o(e){this.params={method:e[0]},$e(this,e[1]),this.metrics={}}function d(t,r){e.loader_config.xpid&&this.sameOrigin&&r.setRequestHeader("X-NewRelic-ID",e.loader_config.xpid);var n=i.generateTracePayload(this.parsedOrigin);if(n){var s=!1;n.newrelicHeader&&(r.setRequestHeader("newrelic",n.newrelicHeader),s=!0),n.traceContextParentHeader&&(r.setRequestHeader("traceparent",n.traceContextParentHeader),n.traceContextStateHeader&&r.setRequestHeader("tracestate",n.traceContextStateHeader),s=!0),s&&(this.dt=n)}}function u(e,t){s&&e.length>=2&&(this.requestHeaders??={},this.requestHeaders[e[0].toLowerCase()]=e[1])}function l(e,t){var n=this.metrics,i=e[0],s=this;if(n&&i){var a=Le(i);a&&(n.txSize=a)}this.startTime=(0,_.t)(),this.requestBody=i,this.listener=function(e){try{"abort"!==e.type||s.loadCaptureCalled||(s.params.aborted=!0),("load"
19!==e.type||s.called===s.totalCbs&&(s.onloadCalled||"function"!=typeof t.onload)&&"function"==typeof s.end)&&s.end(t)}catch(e){try{r.emit(rt,[e])}catch(e){}}};for(var o=0;o<Xe;o++)t.addEventListener(Je[o],this.listener,(0,J.jT)(!1))}function f(e,t,r){this.cbTime+=e,t?this.onloadCalled=!0:this.called+=1,this.called!==this.totalCbs||!this.onloadCalled&&"function"==typeof r.onload||"function"!=typeof this.end||this.end(r)}function h(e,t){var r=""+Ne(e)+!!t;this.xhrGuids&&!this.xhrGuids[r]&&(this.xhrGuids[r]=!0,this.totalCbs+=1)}function p(e,t){var r=""+Ne(e)+!!t;this.xhrGuids&&this.xhrGuids[r]&&(delete this.xhrGuids[r],this.totalCbs-=1)}function m(){this.endTime=(0,_.t)()}function v(e,t){t instanceof et&&"load"===e[0]&&r.emit("xhr-load-added",[e[1],e[2]],t)}function y(e,t){t instanceof et&&"load"===e[0]&&r.emit("xhr-load-removed",[e[1],e[2]],t)}function b(e,t,r){t instanceof et&&("onload"===r&&(this.onload=!0),("load"===(e[0]&&e[0].type)||this.onload)&&(this.xhrCbStart=(0,_.t)()))}function E(e,t){this.xhrCbStart&&r.emit("xhr-cb-time",[(0,_.t)()-this.xhrCbStart,this.onload,t],t)}function w(e){var t,r=e[1]||{};if("string"==typeof e[0]?0===(t=e[0]).length&&g.RI&&(t=""+g.gm.location.href):e[0]&&e[0].url?t=e[0].url:g.gm?.URL&&e[0]&&e[0]instanceof URL?t=e[0].href:"function"==typeof e[0].toString&&(t=e[0].toString()),"string"==typeof t&&0!==t.length){t&&(this.parsedOrigin=(0,Ge.D)(t),this.sameOrigin=this.parsedOrigin.sameOrigin);var n=i.generateTracePayload(this.parsedOrigin);if(n&&(n.newrelicHeader||n.traceContextParentHeader))if(e[0]&&e[0].headers)o(e[0].headers,n)&&(this.dt=n);else{var s={};for(var a in r)s[a]=r[a];s.headers=new Headers(r.headers||{}),o(s.headers,n)&&(this.dt=n),e.length>1?e[1]=s:e.push(s)}}function o(e,t){var r=!1;return t.newrelicHeader&&(e.set("newrelic",t.newrelicHeader),r=!0),t.traceContextParentHeader&&(e.set("traceparent",t.traceContextParentHeader),t.traceContextStateHeader&&e.set("tracestate",t.traceContextStateHeader),r=!0),r}}function R(e,t){this.params={},this.metrics={},this.startTime=(0,_.t)(),this.dt=t;let[r,n={}]=e;$e(this,Ze(r));const i=(""+(r&&r instanceof Qe&&r.method||n.method||"GET")).toUpperCase();this.params.method=i,this.txSize=Le(n.body||r?.body)||0;try{var a=n.headers||r?.headers;if(s&&a)if(this.requestHeaders??={},a instanceof Headers)a.forEach(function(e,t){this.requestHeaders[t.toLowerCase()]=e}.bind(this));else if("object"==typeof a)for(var o in a)this.requestHeaders[o.toLowerCase()]=a[o]}catch(e){}this.requestBody=n.body||r?.body}function T(e,t){if(this.endTime=(0,_.t)(),this.params||(this.params={}),(0,Ye.iW)(this.params))return;this.params.status=t?t.status:0;const n=()=>{const e=+this.rxSize,t=null==this.rxSize||isNaN(e)?void 0:e,r={txSize:this.txSize,rxSize:t,duration:this.endTime-this.startTime},n=[this.params,r,this.startTime,this.endTime,"fetch"];this.targets.forEach(e=>x(n,this,e))};t&&s?t.clone().text().then(e=>{this.responseBody=e,this.rxSize&&"0"!==this.rxSize&&0!==this.rxSize||void 0===e||0===this.params.status||(this.rxSize=Le(e)),t?.headers&&(this.responseHeaders={},t.headers.forEach(function(e,t){this.responseHeaders[t.toLowerCase()]=e}.bind(this)))}).catch(e=>{r.emit(rt,[e])}).finally(()=>{n()}):n()}function A(e){const t=this.params,n=this.metrics;if(this.ended)return;this.ended=!0;for(let t=0;t<Xe;t++)e.removeEventListener(Je[t],this.listener,!1);if(t.aborted)return;if((0,Ye.iW)(t))return;if(n.duration=this.endTime-this.startTime,this.loadCaptureCalled||4!==e.readyState?null==t.status&&(t.status=0):O(this,e),n.cbTime=this.cbTime,s){try{this.responseBody=e.responseText}catch(t){this.responseBody=e.response}if((!n.rxSize||0===n.rxSize)&&void 0!==this.responseBody&&0!==t.status){const e=Le(this.responseBody);void 0!==e&&(n.rxSize=e)}try{this.responseHeaders=function(e){const t={};return e?(e.split("\r\n").forEach(function(e){const r=e.indexOf(": ");if(r>0){const n=e.substring(0,r),i=e.substring(r+2);t[n.toLowerCase()]=i}}),t):t}(e.getAllResponseHeaders())}catch(e){r.emit(rt,[e])}}const i=[t,n,this.startTime,this.endTime,"xhr"];this.targets.forEach(e=>x(i,this,e))}function x(e,r,i){n("xhr",[...e,i],r,t.K7.ajax)}function O(e,n){e.params.status=n.status;var i=function(e,t){var r=e.responseType;return"json"===r&&null!==t?t:"arraybuffer"===r||"blob"===r||"json"===r?Le(e.response):"text"===r||""===r||void 0===r?Le(e.responseText):void 0}(n,e.lastSize);if(void 0!==i&&0!==n.status&&(e.metrics.rxSize=i),e.sameOrigin&&n.getAllResponseHeaders().indexOf(tt)>=0){var s=n.getResponseHeader(tt);s&&((0,S.p)("sm",["Ajax/CrossApplicationTracing/Header/Seen"],void 0,t.K7.metrics,r),e.params.cat=s.split(", ").pop())}e.loadCaptureCalled=!0}r.on("new-xhr",a),r.on("open-xhr-start",o),r.on("open-xhr-end",d),r.on("send-xhr-start",l),r.on("setRequestHeader-xhr-start",u),r.on("xhr-cb-time",f),r.on("xhr-load-added",h),r.on("xhr-load-removed",p),r.on("xhr-resolved",m),r.on("addEventListener-end",v),r.on("removeEventListener-end",y),r.on("fn-end",E),r.on("fetch-before-start",w),r.on("fetch-start",R),r.on("fn-start",b),r.on("fetch-done",T)}(e,this.ee,this.handler,this.dt),this.importAggregator(e,()=>r.e(478).then(r.bind(r,3845)))}}const it={},st=["pushState","replaceState"];function at(e,t){const r=function(e){return(e||R.ee).get("history")}(e);return!g.RI||it[r.debugId]++||(it[r.debugId]=1,(0,Pe.YM)(r,void 0,t).inPlace(window.history,st,"-")),r}var ot=r(3738);function ct(e){(0,N.Y)(k.BL,function(r=Date.now()){const n=r-g.WN;n<0&&(0,l.R)(62,r),(0,S.p)(q.XG,[k.BL,{time:n}],void 0,t.K7.metrics,e.ee),e.addToTrace({name:k.BL,start:r,origin:"nr"}),(0,S.p)("api-"+k.hG,[n,k.BL],void 0,t.K7.genericEvents,e.ee)},e)}const{He:dt,bD:ut,d3:lt,Kp:ft,TZ:ht,Lc:pt,uP:gt,Rz:mt}=ot;class vt extends W{static featureName=ht;constructor(e){var n;super(e,ht),n=e,(0,N.Y)(k.U2,function(e){if(!(e&&"object"==typeof e&&e.name&&e.start))return;const r={n:e.name,s:e.start-g.WN,e:(e.end||e.start)-g.WN,o:e.origin||"",t:"api"};r.s<0||r.e<0||r.e<r.s?(0,l.R)(61,{start:r.s,end:r.e}):(0,S.p)("bstApi",[r],void 0,t.K7.sessionTrace,n.ee)},n),ct(e);
19if(!(0,j.V)(e.init))return void this.deregisterDrain();const i=this.ee;let s;at(i,e),this.eventsEE=(0,Me.u)(i,e),this.eventsEE.on(gt,function(e,t){this.bstStart=(0,_.t)()}),this.eventsEE.on(pt,function(e,r){(0,S.p)("bst",[e[0],r,this.bstStart,(0,_.t)()],void 0,t.K7.sessionTrace,i)}),i.on(mt+lt,function(e){this.time=(0,_.t)(),this.startPath=location.pathname+location.hash}),i.on(mt+ft,function(e){(0,S.p)("bstHist",[location.pathname+location.hash,this.startPath,this.time],void 0,t.K7.sessionTrace,i)});try{s=new PerformanceObserver(e=>{const r=e.getEntries();(0,S.p)(dt,[r],void 0,t.K7.sessionTrace,i)}),s.observe({type:ut,buffered:!0})}catch(e){}this.importAggregator(e,()=>r.e(478).then(r.bind(r,6974)),{resourceObserver:s})}}var yt=r(733),bt=r(6344);class Et extends W{static featureName=bt.TZ;#i;recorder;constructor(e){var n;let i;super(e,bt.TZ),n=e,(0,N.Y)(k.CH,function(){(0,S.p)(k.CH,[],void 0,t.K7.sessionReplay,n.ee)},n),function(e){(0,N.Y)(k.Tb,function(){(0,S.p)(k.Tb,[],void 0,t.K7.sessionReplay,e.ee)},e)}(e);const s="".concat(u.Wt).concat((0,yt.Y)(e.info.licenseKey,e.info.applicationID));try{i=JSON.parse(localStorage.getItem(s))}catch(e){}(0,I.SR)(e.init)&&this.ee.on(k.CH,()=>this.#s()),this.#a(i)&&this.importRecorder().then(e=>{e.startRecording(bt.Qb.PRELOAD,i?.sessionReplayMode)}),this.abortHandler=this.#n,this.importAggregator(this.agentRef,()=>r.e(478).then(r.bind(r,6167)),this),this.ee.on("err",e=>{this.blocked||this.agentRef.runtime.isRecording&&(this.errorNoticed=!0,(0,S.p)(bt.Vh,[e],void 0,this.featureName,this.ee))})}#a(e){return e&&(e.sessionReplayMode===u.g.FULL||e.sessionReplayMode===u.g.ERROR)||(0,I.Aw)(this.agentRef.init)}importRecorder(){return this.recorder?Promise.resolve(this.recorder):(this.#i??=Promise.all([r.e(478),r.e(249)]).then(r.bind(r,4866)).then(({Recorder:e})=>(this.recorder=new e(this),this.recorder)).catch(e=>{throw this.ee.emit("internal-error",[e]),this.blocked=!0,e}),this.#i)}#s(){this.blocked||(this.featAggregate?this.featAggregate.mode!==u.g.FULL&&this.featAggregate.initializeRecording(u.g.FULL,!0,bt.Qb.API):this.importRecorder().then(()=>{this.recorder.startRecording(bt.Qb.API,u.g.FULL)}))}#n(){this.recorder?.stopRecording()}}var wt=r(3962);class Rt extends W{static featureName=wt.TZ;constructor(e){if(super(e,wt.TZ),function(e){const r=e.ee.get("tracer");function n(){}(0,N.Y)(k.dT,function(e){return(new n).get("object"==typeof e?e:{})},e);const i=n.prototype={createTracer:function(n,i){var s={},a=this,o="function"==typeof i;return(0,S.p)(q.xV,["API/createTracer/called"],void 0,t.K7.metrics,e.ee),function(){if(r.emit((o?"":"no-")+"fn-start",[(0,_.t)(),a,o],s),o)try{return i.apply(this,arguments)}catch(e){const t="string"==typeof e?new Error(e):e;throw r.emit("fn-err",[arguments,this,t],s),t}finally{r.emit("fn-end",[(0,_.t)()],s)}}}};["actionText","setName","setAttribute","save","ignore","onEnd","getContext","end","get"].forEach(r=>{N.Y.apply(this,[r,function(){return(0,S.p)(k.hw+r,[performance.now(),...arguments],this,t.K7.softNav,e.ee),this},e,i])}),(0,N.Y)(k.PA,function(){(0,S.p)(k.hw+"routeName",[performance.now(),...arguments],void 0,t.K7.softNav,e.ee)},e)}(e),!g.RI||!(0,i.dV)().o.MO)return;const n=at(this.ee,e);try{this.removeOnAbort=new AbortController}catch(e){}wt.tC.forEach(e=>{(0,J.sp)(e,e=>{c(e)},!0,this.removeOnAbort?.signal)}
19);const s=()=>(0,S.p)("newURL",[(0,_.t)(),""+window.location],void 0,this.featureName,this.ee);n.on("pushState-end",s),n.on("replaceState-end",s),(0,J.sp)(wt.OV,e=>{c(e),(0,S.p)("newURL",[e.timeStamp,""+window.location],void 0,this.featureName,this.ee)},!0,this.removeOnAbort?.signal);let a=!1;const o=new((0,i.dV)().o.MO)((e,t)=>{a||(a=!0,requestAnimationFrame(()=>{(0,S.p)("newDom",[(0,_.t)()],void 0,this.featureName,this.ee),a=!1}))}),c=(0,C.s)(e=>{"loading"!==document.readyState&&((0,S.p)("newUIEvent",[e],void 0,this.featureName,this.ee),o.observe(document.body,{attributes:!0,childList:!0,subtree:!0,characterData:!0}))},100,{leading:!0});this.abortHandler=function(){this.removeOnAbort?.abort(),o.disconnect(),this.abortHandler=void 0},this.importAggregator(e,()=>r.e(478).then(r.bind(r,4393)),{domObserver:o})}}var Tt=r(981);const At={},St=new Set;function xt(e){return"string"==typeof e?{type:"string",size:(new TextEncoder).encode(e).length}:e instanceof ArrayBuffer?{type:"ArrayBuffer",size:e.byteLength}:e instanceof Blob?{type:"Blob",size:e.size}:e instanceof DataView?{type:"DataView",size:e.byteLength}:ArrayBuffer.isView(e)?{type:"TypedArray",size:e.byteLength}:{type:"unknown",size:0}}class Ot{constructor(e,t){this.timestamp=(0,_.t)(),this.currentUrl=(0,Ee.L)(window.location.href),this.socketId=(0,ye.LA)(8),this.requestedUrl=(0,Ee.L)(e),this.requestedProtocols=Array.isArray(t)?t.join(","):t||"",this.openedAt=void 0,this.protocol=void 0,this.extensions=void 0,this.binaryType=void 0,this.messageOrigin=void 0,this.messageCount=0,this.messageBytes=0,this.messageBytesMin=0,this.messageBytesMax=0,this.messageTypes=void 0,this.sendCount=0,this.sendBytes=0,this.sendBytesMin=0,this.sendBytesMax=0,this.sendTypes=void 0,this.closedAt=void 0,this.closeCode=void 0,this.closeReason="unknown",this.closeWasClean=void 0,this.connectedDuration=0,this.hasErrors=void 0}}class _t extends W{static featureName=o.TZ;constructor(e){super(e,o.TZ);const n=e.init.feature_flags.includes("websockets")||e.init.web_sockets?.enabled,s=!e.init.feature_flags.includes("no_spv"),a=[e.init.page_action.enabled,e.init.performance.capture_marks,e.init.performance.capture_measures,e.init.performance.resources.enabled,e.init.user_actions.enabled,n,s];var c;let d;if(c=e,(0,N.Y)(k.hG,(e,t)=>ce(e,t,c),c),function(e){(0,N.Y)(k.fF,(t,r)=>ue(t,r,e),e)}(e),ct(e),Se(e),function(e){(0,N.Y)(k.V1,(t,r)=>de(t,r,e),e)}(e),this.removeOnAbort=new AbortController,this.abortHandler=()=>{this.removeOnAbort.abort(),this.abortHandler=void 0},n){const u=function(e,t){if(!(0,i.dV)().o.WS)return e;const r=e.get("websockets");if(At[r.debugId]++)return r;At[r.debugId]=1,(0,V.G)(()=>{const e=(0,_.t)();St.forEach(t=>{t.nrData.closedAt=e,t.nrData.closeCode=1001,t.nrData.closeReason="Page navigating away",t.nrData.closeWasClean=!1,t.nrData.openedAt&&(t.nrData.connectedDuration=e-t.nrData.openedAt),r.emit("ws",[t.nrData,t.targets],t)})});
19class n extends WebSocket{static name=Tt.R.WS;static toString(){return"function WebSocket() { [native code] }"}toString(){return"[object WebSocket]"}get[Symbol.toStringTag](){return n.name}#o(e){(e.__newrelic??={}).socketId=this.nrData.socketId,this.nrData.hasErrors??=!0}constructor(...e){super(...e),this.nrData=new Ot(e[0],e[1]),this.targets=(0,Ie.$5)(t),this.addEventListener("open",()=>{this.nrData.openedAt=(0,_.t)(),["protocol","extensions","binaryType"].forEach(e=>{this.nrData[e]=this[e]}),St.add(this)}),this.addEventListener("message",e=>{const{type:t,size:r}=xt(e.data);this.nrData.messageOrigin??=(0,Ee.L)(e.origin),this.nrData.messageCount++,this.nrData.messageBytes+=r,this.nrData.messageBytesMin=Math.min(this.nrData.messageBytesMin||1/0,r),this.nrData.messageBytesMax=Math.max(this.nrData.messageBytesMax,r),(this.nrData.messageTypes??"").includes(t)||(this.nrData.messageTypes=this.nrData.messageTypes?"".concat(this.nrData.messageTypes,",").concat(t):t)}),this.addEventListener("close",e=>{this.nrData.closedAt=(0,_.t)(),this.nrData.closeCode=e.code,e.reason&&(this.nrData.closeReason=e.reason),this.nrData.closeWasClean=e.wasClean,this.nrData.connectedDuration=this.nrData.closedAt-this.nrData.openedAt,St.delete(this),r.emit("ws",[this.nrData,this.targets],this)})}addEventListener(e,t,...r){const n=this,i="function"==typeof t?function(...e){try{return t.apply(this,e)}catch(e){throw n.#o(e),e}}:t?.handleEvent?{handleEvent:function(...e){try{return t.handleEvent.apply(t,e)}catch(e){throw n.#o(e),e}}}:t;return super.addEventListener(e,i,...r)}send(e){if(this.readyState===WebSocket.OPEN){const{type:t,size:r}=xt(e);this.nrData.sendCount++,this.nrData.sendBytes+=r,this.nrData.sendBytesMin=Math.min(this.nrData.sendBytesMin||1/0,r),this.nrData.sendBytesMax=Math.max(this.nrData.sendBytesMax,r),(this.nrData.sendTypes??"").includes(t)||(this.nrData.sendTypes=this.nrData.sendTypes?"".concat(this.nrData.sendTypes,",").concat(t):t)}try{return super.send(e)}catch(e){throw this.#o(e),e}}close(...e){try{super.close(...e)}catch(e){throw this.#o(e),e}}}return g.gm.WebSocket=n,r}(this.ee,e);u.on("ws",(e,t)=>{(0,S.p)("ws-complete",[e,t],void 0,this.featureName,this.ee)})}if(s){if("function"==typeof g.gm.ReportingObserver){const l=new g.gm.ReportingObserver(e=>{e.forEach(e=>{(0,S.p)("spv",[kt(e),(0,_.t)()],void 0,t.K7.genericEvents,this.ee)}),l.disconnect()},{types:["csp-violation"],buffered:!0});l.observe()}g.gm.addEventListener("securitypolicyviolation",e=>{(0,S.p)("spv",[kt(e),e.timeStamp],void 0,t.K7.genericEvents,this.ee)},(0,J.jT)(!1,this.removeOnAbort.signal))}if(g.RI){if(ze(this.ee,e),De(this.ee,e),d=at(this.ee,e),e.init.user_actions.enabled){function f(t){const r=(0,Ge.D)(t);return e.beacons.includes(r.hostname+":"+r.port)}function h(){d.emit("navChange")}o.Zp.forEach(e=>(0,J.sp)(e,e=>(0,S.p)("ua",[e],void 0,this.featureName,this.ee),!0)),o.qN.forEac
19h(e=>{const t=(0,C.s)(e=>{(0,S.p)("ua",[e],void 0,this.featureName,this.ee)},500,{leading:!0});(0,J.sp)(e,t)}),g.gm.addEventListener("error",()=>{(0,S.p)("uaErr",[],void 0,t.K7.genericEvents,this.ee)},(0,J.jT)(!1,this.removeOnAbort.signal)),this.ee.on("open-xhr-start",(e,r)=>{f(e[1])||r.addEventListener("readystatechange",()=>{2===r.readyState&&(0,S.p)("uaXhr",[],void 0,t.K7.genericEvents,this.ee)},(0,J.jT)(void 0,this.removeOnAbort.signal))}),this.ee.on("fetch-start",e=>{e.length>=1&&!f(Ze(e[0]))&&(0,S.p)("uaXhr",[],void 0,t.K7.genericEvents,this.ee)}),d.on("pushState-end",h),d.on("replaceState-end",h),window.addEventListener("hashchange",h,(0,J.jT)(!0,this.removeOnAbort.signal)),window.addEventListener("popstate",h,(0,J.jT)(!0,this.removeOnAbort.signal))}if(e.init.performance.resources.enabled&&g.gm.PerformanceObserver?.supportedEntryTypes.includes("resource")){new PerformanceObserver(e=>{e.getEntries().forEach(e=>{(0,S.p)("browserPerformance.resource",[e],void 0,this.featureName,this.ee)})}).observe({type:"resource",buffered:!0})}}a.some(e=>e)?this.importAggregator(e,()=>r.e(478).then(r.bind(r,8019))):this.deregisterDrain()}}function kt(e){const t=e.body??e;return{blockedUrl:t.blockedURL??e.blockedURI,documentUrl:t.documentURL??e.documentURI,effectiveDirective:t.effectiveDirective,originalPolicy:t.originalPolicy,sourceFile:t.sourceFile,statusCode:t.statusCode,lineNumber:t.lineNumber,columnNumber:t.columnNumber,disposition:"reporting"===t.disposition?"report":t.disposition,sample:t.sample,referrer:t.referrer}}var Nt=r(2646);const Lt=new Map;function Mt(e,t,r,n,i=!0,s){if("object"!=typeof t||!t||"string"!=typeof r||!r||"function"!=typeof t[r])return(0,l.R)(29);const a=function(e){return(e||R.ee).get("logger")}(e),o=(0,Pe.YM)(a,void 0,s),c=new Nt.y(R.P);c.level=n.level,c.customAttributes=n.customAttributes,c.autoCaptured=i;const d=t[r]?.[Pe.Jt]||t[r];return Lt.set(d,c),o.inPlace(t,[r],"wrap-logger-",()=>Lt.get(d),void 0,!0),a}var Pt=r(1910);class It extends W{static featureName=se.TZ;constructor(e){var t;super(e,se.TZ),t=e,(0,N.Y)("log",(e,r)=>oe(e,r,t),t),function(e){(0,N.Y)(k.Wb,(t,r,{customAttributes:n={},level:i=se.p_.INFO}={})=>{Mt(e.ee,t,r,{customAttributes:n,level:i},!1,e)},e)}(e),Se(e);const n=this.ee;["log","error","warn","info","debug","trace"].forEach(t=>{(0,Pt.i)(g.gm.console[t]),Mt(n,g.gm.console,t,{level:"log"===t?"info":t},void 0,e)}),this.ee.on("wrap-logger-end",function([t],r,i,s=[e.runtime.v2Target]){const{level:a,customAttributes:o,autoCaptured:c}=this;s.forEach(e=>{(0,ae.R)(n,t,o,a,c,e)})}),this.importAggregator(e,()=>r.e(478).then(r.bind(r,5288)))}}new F({features:[nt,K,G,vt,Et,Y,Oe,_t,It,Rt],loaderType:"spa"})})()})();</script>
19<link href="/resources/pagebuilder2/box/box.css" rel="stylesheet" 20 type="text/css" /> 21 <link 22 href="/resources/pagebuilder2/assets/minimalist-blocks/content.css" 23 rel="stylesheet" type="text/css" /> 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 <meta name="viewport" content="width=device-width, initial-scale=1.0"> 83 84 85 86 87 88 89 90 91 92 93 94 95 <meta name="google" content="notranslate"> 96 97 98 <link rel="canonical" href="https://learn.excelsirji.com/courses/Learn-Excel-from-Basics-to-AI--FREE-696cecf361729d185b1c7649" /> 99 100 101 102<link rel="shortcut icon" href="/favicon.ico" type="image/x-icon"> 103<link rel="icon" href="/favicon.ico" type="image/x-icon"> 104 105 106 107 108 109 110 111
111<script>var orgCountry = "IN";</script>
111 112 113 114 115 116<link id="theme" href="https://d502jbuhuh9wk.cloudfront.net/resources/themes/default/spectre.min.css" rel="stylesheet"> 117 118<link rel="preconnect" href="https://fonts.googleapis.com"> 119<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> 120 121<link rel="preload" href="https://fonts.googleapis.com/icon?family=Material+Icons|Material+Icons+Outlined" as="style" onload="this.onload=null;this.rel='stylesheet'"> 122<noscript><link rel="stylesheet" href="https://fonts.googleapis.com/icon?family=Material+Icons|Material+Icons+Outlined" ></noscript> 123 124<link rel="preload" href="https://d502jbuhuh9wk.cloudfront.net/resources/css/intlTelInput.css?v=1" as="style" onload="this.onload=null;this.rel='stylesheet'"> 125<noscript><link rel="stylesheet" href="https://d502jbuhuh9wk.cloudfront.net/resources/css/intlTelInput.css?v=1" ></noscript> 126 127<link rel="preload" href="https://d502jbuhuh9wk.cloudfront.net/fontawesome/css/all.min.css" as="style" onload="this.onload=null;this.rel='stylesheet'"> 128<noscript><link rel="stylesheet" href="https://d502jbuhuh9wk.cloudfront.net/fontawesome/css/all.min.css" ></noscript> 129 130<link id="theme-exp" href="https://d502jbuhuh9wk.cloudfront.net/resources/themes/default/spectre-exp.min.css" rel="stylesheet"> 131 132 133 134 135 <link href="https://d502jbuhuh9wk.cloudfront.net/staticfiles/resources/stylesheets/sstyles_0f8f8346b730ed7f9d44d25335e652c6.css" rel="stylesheet"> 136 <link rel="stylesheet" href="https://d502jbuhuh9wk.cloudfront.net/staticfiles/resources/stylesheets/sstore_052a28d8fc16dab749345a09dfcd63bf.css"/> 137 138 <link rel="stylesheet" href="https://d502jbuhuh9wk.cloudfront.net/resources/stylesheets/gtheme3.css?v=7"/> 139 140 <style type="text/css"> 141 #loginLoader{ 142 position: absolute; 143 left: 0; 144 right: 0; 145 margin-left: auto; 146 margin-right: auto; 147 width: 100px; 148 top: 50%; 149 } 150 .customSocialBtn { 151 display: flex; 152 white-space: nowrap; 153 justify-content: center; 154 align-items: center; 155 padding: 11px 67px; 156 position: static; 157 left: 0px; 158 top: 40px; 159 cursor: pointer; 160 margin: auto; 161 border: none; 162 gap: 10px; 163 /*width: 364px; 164 height: 48px; 165 background: #000000; */ 166 /*For New Button Remove Bellow Codes and Uncomment upper Code */ 167 background: white; 168 border-radius: 4px; 169 box-shadow: 0 2px 4px 0 rgb(0 0 0 / 25%); 170 width: 245px; 171 height: 40px; 172 } 173 174 .customSocialBtn img.icon { 175 height: 20px; 176 width: 20px; 177 } 178 .customSocialBtn span.buttonText { 179 font-style: normal; 180 font-weight: 900; 181 font-size: 16px; 182 line-height: 120%; 183 opacity: 0.9; 184 font-family: 'Roboto', sans-serif; 185 /* color: #F7F7F7; */ 186 /*For New Button Remove Bellow Codes and Uncomment upper Code */ 187 color: #808080; 188 } 189 </style> 190 191 192 193 194 195 <style type="text/css"> 196 197 </style> 198 199 200 201 202 203 <style type="text/css"> 204 footer a, footer+div a { 205 color: var(--footerTextColor) !important; 206 } 207 footer .socialIcons {text-align: right;} 208 @media (max-width: 600px) { 209 footer .linksCont a { display: block !important; } 210 footer .socialIcons {text-align: center;margin-top: 20px;} 211 } 212 </style> 213 214 215 216 217 218 219 220<style type="text/css"> 221 :root { 222 --themeColor: #5755d9; 223 --themeBGColor: #fff; 224 --headerHeight: 80px; 225 --headerTextColor: #0a0959; 226 --headerBGColor: #fdfbfb; 227 --footerTextColor: #FAF0F0; 228 } 229 230 231 :root { 232 --themeColor: #317AE7; 233 --themeBGColor: #EFF5FE; 234 --themeCornerRadius: 25px; 235 --themeGrayColor: #F5F5F5; 236 } 237 238</style> 239 240<style type="text/css"> 241 242 243 244</style> 245 246 247 248
249<script type="text/javascript"> 250 window.onload = function(event) { 251 document.querySelectorAll('header .avatar img').forEach(function(img){ 252 if(img.naturalWidth == 0) { 253 img.style.display='none'; 254 } 255 }) 256 }; 257 var RESCDN = "https://d502jbuhuh9wk.cloudfront.net"; 258 259 function showCourseDefaultCover(img, cid) { 260 var rndm = ((parseInt(cid.replace(/[a-z]/g, '')) % 10) % 6) + 1; 261 rndm = isNaN(rndm) ? 1 : rndm; 262 if(img === null) { 263 return RESCDN + "/resources/images/cc"+rndm+".jpg"; 264 } 265 266 img.src = RESCDN + "/resources/images/cc"+rndm+".jpg"; 267 } 268</script>
268 269 270 271 272 273 274 275 276 277 278 279 280
281<script type="text/javascript">var learnerConsentMsg = `We've updated our <a href='/termsofuse' target='_blank' style='text-decoration:underline'>terms and conditions</a> and <a href='/privacy-policy' target='_blank' style='text-decoration:underline'>privacy policy</a>.<br>By proceeding, you agree to our new terms.`;</script>
281 282
283<script type="text/javascript">var creatorConsentMsg = `We've updated our <a href='https://graphy.com/legal/terms' target='_blank' style='text-decoration:underline'>terms and conditions</a> and <a href='https://graphy.com/legal/privacy' target='_blank' style='text-decoration:underline'>privacy policy</a>.<br>By proceeding, you agree to our new terms.`;</script>
283 284
285<script type="text/javascript">var cookieMsg = `We use cookies to personalise your experience and to analyse our website traffic. By continuing to use our website, you consent to our cookies.`;</script>
285 286 287 288 289 290 291
292<script type="text/template" id="consentPromptTemplate"> 293<div class="spectre"> 294 <div class="modal active" id="consentPrompt"> 295 <a href="javascript:void(0);" class="modal-overlay" aria-label="Close"></a> 296 <div class="modal-container" style="max-width:325px"> 297 <div class="modal-header" style="padding:0.8rem 0.8rem 0px 0.8rem;"> 298 <div class="modal-title h5 text-center">Updated Terms</div> 299 </div> 300 <div class="modal-body"> 301 302 <form id="consentForm" style="text-align:center; font-size:13px"> 303 <div class="content"></div><br> 304 <div class="text-center"> 305 <button id="consentBtn" type="button" class="btn close btn-primary">I Agree</button> 306 </div> 307 </form> 308 309 </div> 310 </div> 311</div> 312</script>
312 313 314
315<script> 316 var hideCookiePopup = false; 317 var cookieConsentEnabled = true; 318 if(!cookieConsentEnabled){ 319 hideCookiePopup = true; 320 } 321 var SPORG = {subscriptionPlan: "launch", checkout_version: "2", customer_type: "r"}; 322</script>
vendor: 1 bytes, line 322
322
323<script type="text/template" id="cookiePopupTemplate"> 324<div class="spectre" style="position: fixed; bottom: 0; width: 100%; opacity:1; z-index: 9999;"> 325 <div class="modal-container p-0" id="cookiePopup"> 326 <form id="cookiePopupForm"> 327 <div class="columns" style="align-items: center;"> 328 <div class="column col-sm-12 content text-center"></div> 329 <div class="column col-sm-12 text-center"> 330 <a href="/privacy-policy" class="btn" target="_blank" id="viewPrivacyPolicyBtn" style="margin-right:15px;">View privacy policy</a> 331 <button id="acceptCookiesBtn" type="button" class="btn close btn-primary">Accept cookies</button> 332 </div> 333 </div> 334 </form> 335 </div> 336</div> 337</script>
337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352<!-- Google tag (gtag.js) -->
vendor: 64 bytes, lines 352-353
352 353<script async src="https://www.googletagmanager.com/gtag/js?id=
353G-F3JG413BC3
vendor: 12 bytes, line 353
353"></script>
354<script> 355
vendor: 131 bytes, lines 355-359
355window.dataLayer = window.dataLayer || []; 356 function gtag(){dataLayer.push(arguments);} 357 gtag('js', new Date()); 358 359 gtag('config', '
359G-F3JG413BC3
vendor: 4 bytes, line 359
359');
360</script>
360 361 362 363 364 365 366 367 368 369 370 371<!-- Google Tag Manager -->
372<script>
vendor: 327 bytes, lines 372-376
372(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': 373new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], 374j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= 375'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); 376})(window,document,'script','dataLayer','
376GTM-KW7N9P2
vendor: 4 bytes, line 376
376');
377</script>
377 378<!-- End Google Tag Manager --> 379 380
380<script defer type="text/javascript" src="https://api.pirsch.io/pirsch-extended.js" 381 id="pirschextendedjs" 382 data-code="yC7RsVPamLZfZxOoirzOBh118RYP87Mw"></script>
382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418<meta property="og:url" 419 content="https://learn.excelsirji.com/courses/Learn-Excel-from-Basics-to-AI--FREE-696cecf361729d185b1c7649" /> 420<meta property="og:type" content="product" /> 421<meta property="og:title" content="Learn Excel from Basics to AI â FREE" /> 422 423 <meta property="og:image" 424 content="https://learn.excelsirji.com/s/store/courses/696cecf361729d185b1c7649/cover.jpg?v=1" /> 425 426 427 428 <meta name="description" 429 content="Learn Excel from basics to AI in this free 5-day Excel course. Perfect for beginners, students, and professionals. No prior experience needed." /> 430 431 432 433 434 <meta name="keywords" 435 content="free excel course,excel course for beginners,excel basics course,excel training online,excel online course,excel course free,learn excel online,excel classes online,excel certification course,excel course in india" /> 436 437 438 439 440 441 442 <title>Learn Excel from Basics to AI â FREE</title> 443 444 445 446 447<style type="text/css"> 448 .courseContents.table td { 449 border-bottom: none; 450 padding: .3rem .2rem; 451 } 452 453 .courseItemIcon { 454 padding: 6px; 455 border-radius: 50%; 456 } 457 458 .restrictHide { 459 display: none !important; 460 } 461 462 @media ( max-width : 640px) { 463 .whatsapp-widget-container { 464 display: none; 465 } 466 } 467</style> 468 469 470 471 472 473 474 475 476 477 478
479<script type="application/ld+json"> 480 { 481 "@context": "http://schema.org/", 482 "@type": "Product", 483 "sku": "696cecf361729d185b1c7649", 484 "image": [ 485 "https://d502jbuhuh9wk.cloudfront.net/courses/696cecf361729d185b1c7649/696cecf361729d185b1c7649_scaled_cover.jpg?v=1" 486 ], 487 "name": "Learn Excel from Basics to AI â FREE", 488 "description": "Learn Excel from basics to AI in this free 5-day Excel course. Perfect for beginners, students, and professionals. No prior experience needed.", 489 "brand": { 490 "@type": "Brand", 491 "name": "EXCELSIRJI" 492 }, 493 "category": "Software & Technology", 494 "offers": { 495 "@type": "Offer", 496 "url": "https://learn.excelsirji.com/courses/Learn-Excel-from-Basics-to-AI--FREE-696cecf361729d185b1c7649", 497 "price": "0", 498 "priceCurrency": "USD", 499 "availability": "https://schema.org/InStock" 500 } 501 502 } 503 504 </script>
vendor: 1 bytes, line 504
504
505<script> 506 var contentTitle = "Learn Excel from Basics to AI â FREE"; 507 var checkoutRedirectGuestUsers = 'signup'; 508</script>
508 509 510 511 512</head> 513<body class="contentDescBody theme3"> 514 515 516 517 518 519 520 521<div class="header spectre " 522 style="background-color: #fdfbfb;"> 523 524 <header class="navbar container" style="min-height: 80px;"> 525 526 <div id="navbar-section-btn"> 527 528 <a href="javascript:void(0);" amplitude-event="navbar_link_tapped_user_landing_page" amplitude-payload='{"custom_domain": "learn.excelsirji.com","button":"cart"}' class="nav-link badge cartBtn mr-2" data-badge="0"><i class="material-icons">shopping_cart</i></a> 529 530 <a class="btn btn-link btn-action ml-2" id="header-collapse-btn" href="javascript:void(0);"> 531 <i class="icon-menu material-icons">menu</i> 532 </a> 533 </div> 534 <section class="navbar-section" style="min-height: 80px;"> 535 <a href="/" amplitude-event="navbar_link_tapped_user_landing_page" amplitude-payload='{"custom_domain": "learn.excelsirji.com","button":"profile_logo"}'><img alt="logo" onerror="this.src='https://d502jbuhuh9wk.cloudfront.net/resources/images/yourlogohere.jpg'" src='https://d502jbuhuh9wk.cloudfront.net/logos/696502429e49c234f6d30d1e.png?v=1'/></a> 536 </section> 537 538 <section class="navbar-section hide-md"> 539 <form class="input-group p-0 relative" action="/s/store/courses" method="GET" style="width:100%;background:transparent"> 540 <div class="input-group" style="width: 100%;"> 541 <input type="text" name="query" value="" class="form-input input-lg searchTxtBox" placeholder="Search"> 542 <button type="submit" class="btn btn-link"><i class="fa-regular fa-magnifying-glass"></i></button> 543 </div> 544 </form> 545 </section> 546 547 <section class="navbar-section menu-links"> 548 549 550 551 552 553 <a class="nav-link" href="https://www.excelsirji.com/excel-courses/" data-id="5arfj45sh" target='_blank'>Courses</a> 554 555 <a class="nav-link" href="https://www.excelsirji.com/" data-id="ezf5cvhad" target='_blank'>Free Tutorials</a> 556 557 558 559 560 561 <a href="/products#nav_bar" class="nav-link" amplitude-event="digital_products_tapped" amplitude-payload='{"source":"nav_bar"}' href="javascript:void(0);">Digital Products</a> 562 563 564 565 566 567 568 569 570 <a href="javascript:void(0);" class="nav-link badge cartBtn hide-md" data-badge="0"><i class="fa-regular fa-cart-shopping"></i></a> 571 572 573 <a href="javascript:void(0);" class="btn btn-primary loginBtn">Login</a> 574 575 576 </section> 577 </header> 578 579 580 <form class="show-md container" action="/s/store/courses" method="GET" style="background:transparent;"> 581 <div class="input-group relative" style="width: 100%;"> 582 <input type="text" name="query" value="" class="form-input input-lg searchTxtBox" placeholder="Search"> 583 <button type="submit" class="btn btn-link"><i class="fa-regular fa-magnifying-glass"></i></button> 584 </div> 585 </form> 586 587</div> 588 589 590 591 592 593 594 595
596<script>const customDomain = "learn.excelsirji.com";</script>
596 597 598 599 600
601<script> 602var disabledLocleVar='Disabled'; 603var enabledLocaleVar='Enabled'; 604var smsLocaleVar='SMS'; 605var webpushLocaleVar='Web Push'; 606var mobilepushLocaleVar='Mobile Push'; 607var invoicenumberLocaleVar='Invoice Number'; 608var productLocaleVar='Product'; 609var dateLocaleVar='Date'; 610var amountLocaleVar='Amount'; 611var detailsLocaleVar='Details'; 612var subscriptionPlanLocaleVar='Subscription Plan'; 613var addonsLocaleVar='Add Ons'; 614var showLocalVar='Show'; 615var hideLocaleVar='Hide'; 616</script>
616 617<div class="spectre"> 618 619 620 621 622 623 624 625
625<script> 626 var isPopupLogin = true; 627 var login = ''; 628 var message = ''; 629 function closeLoginPopup() { 630 $("#loginFormHtml").removeClass("active"); 631 $("body").removeClass("overflowYDisable"); 632 } 633 </script>
633 634 635 636 637 638 639 640 <div class="modal" id="loginFormHtml"> 641 <iframe id="microfe-popup-login" src="/t/public/login" loading="lazy" 642 style="width: calc(100% + 10px); height: 100vh; border: none;" 643 onload="$(this).parent().removeClass('loading');"></iframe> 644 </div> 645 646 647 648 649 650 <div class="modal" id="cartHtml"> 651 <a href="javascript:void(0);" class="modal-overlay close" 652 aria-label="Close"></a> 653 <div class="modal-container" style="max-width: 800px;"> 654 <div class="modal-header"> 655 <a href="javascript:void(0);" 656 class="close btn btn-clear float-right" aria-label="Close"></a> 657 <div class="modal-title h5"> 658 <i class="fa-regular fa-shopping-cart"></i> 659 Cart 660 (<span class="cartCount">0</span> 661 Items 662 ) 663 </div> 664 </div> 665 <div class="modal-body" style="max-height: 70vh;"> 666 <div class="content"> 667 668 <div class="text-center msg loading"></div> 669 <div class="text-center msg noItems" style="display: none;"> 670 There are no items in your cart<br/> 671 <a class="btn btn-primary" href="/s/store" 672 style="margin: 20px auto;"> 673 Add More 674 </a> 675 </div> 676 <div class="items msg" style="display: none;"> 677 <div class="m-0 cartDiv"> 678 <table class="table cartTable"> 679 <thead> 680 <tr> 681 <th colspan="2">Item Details</th> 682 <th class="text-right">Price</th> 683 <th style="width: 50px;"></th> 684 </tr> 685 </thead> 686 <tbody></tbody> 687 </table> 688 </div> 689 <div class="suggestCart mt-2 bg-gray p-2" style="display: none;"> 690 <h6>You may also be interested in</h6> 691 <div class="columns loading" id="cartRelatedCont"></div> 692 </div> 693 </div> 694 </div> 695 </div> 696 <div class="modal-footer"> 697 <div class="msg items clearfix"> 698 699 700 701 <div class="float-left text-gray"> 702 Note: Promo Codes can be applied after checkout 703 </div> 704 705 706 707 <div class="float-right"> 708 Total Amount 709 <span class="text-primary curr">$<span 710 class="totalAmount">0</span></span> 711 </div> 712 </div> 713 <div class="msg items clearfix mt-2"> 714 <a class="btn float-left" href="/s/store" amplitude-event="add_more_course_checkout"> 715 Add More 716 </a> 717 718 719 720 721 722 723 724 <a class="btn btn-primary float-right" href="/s/checkout" amplitude-event="checkout_tapped_course_checkout" amplitude-payload='{"currency": "USD" }'>Checkout</a> 725 </div> 726 </div> 727 </div> 728 </div> 729 <div class="modal" id="newCheckoutHtml" style="padding: 0; z-index: 10000;"> 730 <div id="newCheckoutLoader" class="loading loading-lg" style="position: absolute;top: 50%;left: 50%;transform: translate(-50%, -50%);width: 100%;height: 100%;background-color: rgba(0, 0, 0, 0.5); z-index: 1000;display:none;"></div> 731 <!-- <a href="javascript:void(0);" class="modal-overlay close" 732 aria-label="Close"></a> 733 <div class="modal-container" style=""> --> 734 735 736 <iframe onload="hideCheckoutLoader()" id="newCheckoutIframe" sandbox="allow-top-navigation allow-modals allow-popups allow-presentation allow-orientation-lock allow-pointer-lock allow-popups-to-escape-sandbox allow-top-navigation-by-user-activation allow-scripts allow-same-origin allow-forms" style = "width: calc(100% + 10px); height: 100%; border: none;" src=""></iframe> 737 738 <!-- </div> --> 739 </div> 740</div> 741
742<script type="text/template" id="cartItemTemplate"> 743 <tr data-id="<@- item.id @>" data-type="<@- item.type @>" data-title="<@- item.title @>" data-price="<@- item.price @>" data-coursecategory="<@- item.courseCategory @>"> 744 <@ var itemType = item.type; @> 745 <td style="width:150px;"> 746 <@ var curl = "https://d502jbuhuh9wk.cloudfront.net/courses/"+ item.id +"/"+ item.id +"_scaled_cover.jpg?v=" + coverVersion; if(isNaN(coverVersion)) { curl = showCourseDefaultCover(null, item.id) } @> 747 <img alt="<@- item.title @> cover" style="width:100%;max-height:100px;" class="img-fit-contain lazy" onerror="showCourseDefaultCover(this, '<@- item.id @>')" 748 data-src='<@- curl @>' /> 749 </td> 750 <td class="itemTitle"><@- item.title @><@ if(item.description !== undefined) { @><div class='text-gray variantDescription'><@ print(item.description) @></div><@ } @></td> 751 <td class="text-right curr"><@ if(item.priceWithoutTax !== undefined && '' != '') { @><@ print(getDisplayAmount(item.priceWithoutTax)) @><br><small><@ print(getDisplayAmount(item.price)) @> incl. <@- item.gstRate @>% </small><@ } else { @><@ print(getDisplayAmount(item.price)) @> <@ if(item.gstRate > 0 && '' != '') { print("<br><small>incl. " +item.gstRate+"% </small>") } @><@ } @> 752 <@ if(item.pgChargesLearnerPercent !==undefined && getDisplayAmount(item.pgChargesLearnerPercent).includes('â¹')) {@> <br><small>Internet handling fees: <@print(getDisplayAmount(item.pgChargesLearnerPercent/100*item.price))@></small> <@} @> 753 </td> 754 <td>
754<button class="btn btn-sm btn-error btn-action circle removeItemBtn" data-url="/s/cart/remove/<@- item.id @>"><i class="material-icons">clear</i></button></td> 755 </tr> 756 </script>
vendor: 1 bytes, line 756
756
757<script type="text/template" id="cartcoursecard-template"> 758 <div class="column col-2 col-md-4 scourse <@- item['spayee:resource']['spayee:courseType'] @>" title="<@- item["spayee:resource"]["spayee:title"] @>"> 759 <a class="card" title="<@- item['spayee:resource']['spayee:title'] @>" href="<@ print(getCourseLandingPageUrl(item._id, item['spayee:resource']['spayee:courseUrl'])) @>"> 760 <@ var curl = "https://d502jbuhuh9wk.cloudfront.net/courses/"+ item._id +"/"+ item._id +"_scaled_cover.jpg?v=" + item["spayee:resource"]["spayee:coverVersion"]; if(isNaN(item["spayee:resource"]["spayee:coverVersion"])) { curl = showCourseDefaultCover(null, item._id) } @> 761 <img style="width: 100%;" alt="<@- item['spayee:resource']['spayee:title'] @> cover" class="lazy" data-src="<@- curl @>" onerror="showCourseDefaultCover(this, '<@- item._id @>')"> 762 <div class="card-footer" style="padding: 0.2rem;"><span class="ctitle text-ellipsis d-block" style="color:#2f4f4f;font-size:small;"><@- item["spayee:resource"]["spayee:title"] @></span></div> 763 </a> 764 </div> 765 </script>
vendor: 1 bytes, line 765
765
766<script type="text/template" id="coursecard-template"> 767 <div class="column scourse <@- item['spayee:resource']['spayee:courseType'] @> hidePackageRibbon<@- item['spayee:resource']['spayee:hidePackageRibbon'] @>"> 768 769 770 771 <@ var itemCategory = (item['spayee:resource']['spayee:filter1'] !== undefined)? item['spayee:resource']['spayee:filter1'][0]:'' @> 772 773 <a class="card courseDiscId" style="height:100%" title="<@- item['spayee:resource']['spayee:title'] @>" href="<@ print(getCourseLandingPageUrl(item._id, item['spayee:resource']['spayee:courseUrl'])) @>" data-id="<@- item._id@>" data-dcid="<@-item._id@>" 774 amplitude-event="course_card_tapped_checkout" 775 amplitude-payload='{"<@- item['spayee:resource']['spayee:courseType']== 'package' ? "package_id" : "course_id" @>": "<@- item._id @>","is_a_package":"<@- item['spayee:resource']['spayee:courseType']== 'package' ? "true" : "false" @>","price_on_card":"<@- removeCurrencySymbol(getCourseDisplayPrice('$', '', item, '0.0', '', false)) @>","currency":"USD","multiple_pricing_plans_exist":"<@- isMultiplePlansAvailable('', item) @>","wallet_coins_enabled_on_school":"false","category":"<@- itemCategory @>"}' 776 > 777 778 779 780 <div class="card-image relative <@ print(item["spayee:resource"]["spayee:availableForMembership"] ? 'includedInMembership' : '') @>"> 781 <@ var curl = "https://d502jbuhuh9wk.cloudfront.net/courses/"+ item._id + "/" + item._id +"_scaled_cover.jpg?v=" + item["spayee:resource"]["spayee:coverVersion"]; if(isNaN(item["spayee:resource"]["spayee:coverVersion"])) { curl = showCourseDefaultCover(null, item._id); } @> 782 <div class="blurbg lazy" data-bg="<@- curl @>"></div> 783 <img alt="<@- item['spayee:resource']['spayee:title'] @> cover" class="lazy" data-src="<@- curl @>" onerror="showCourseDefaultCover(this, '<@- item._id @>')"> 784 </div> 785 <div class="card-body text-ellipsis"> 786 <span class="ctitle" style="color:#2f4f4f;text-wrap: balance;overflow: hidden;display: -webkit-box;-webkit-box-orient: vertical;-webkit-line-clamp: 2;"><@- item["spayee:resource"]["spayee:title"] @></span><br> 787 788 <@ if(item.rating !== undefined) { @> 789 <span class="text-gray ratingIcons icon-text"> 790 <@ for(var i=1;i<6;i++) { @> 791 <@ if(item.rating.avgRating >= i) { @><i class="material-icons text-primary">star</i><@ }else if(item.rating.avgRating > i-1 && item.rating.avgRating < i) { @><i class="material-icons text-primary">star_half</i><@ }else { @> 792 <i class="material-icons">star_border</i> 793 <@ } } @></span><small class="d-inline-block pl-1 text-dark"><@ print(formatRating(item['rating']['avgRating'])) @> (<@- item['rating']['total'] @> ratings)</small> 794 <@ }else { @> <span class="text-gray ratingIcons icon-text"> </span> <@ } @> 795 <br> 796 <span class="text-gray"> 797 <@ if(item['spayee:resource']['spayee:courseType'] === 'package') { @> 798 <@ print(item["courses-count"]!==undefined?item["courses-count"]:"0") @> Courses 799 <@ }else { @> 800 <@ print(item["spayee:resource"]["spayee:publisher"]!==undefined?htmlEntities(item["spayee:resource"]["spayee:publisher"]):" ") @> 801 <@ } @> 802 </span> 803 </div> 804 <div class="card-footer"> 805 <@ print(getCourseDisplayPrice('$', '', item, '0.0', '', true)) @> 806 <span class="text-gray" style="font-size:small"> 807 <@ if(item['spayee:resource']['spayee:instalmentPlanId']!=null && item['spayee:resource']['spayee:instalmentPlanId'] !== "") { @> 808 <@ print(getCourseInstalmentDisplayPrice('', item))@> 809 <@ }else { @> 810 <@ " " @> 811 <@ } @> 812 </span> 813 </div> 814 <div style="padding: 0 0.8rem 0.8rem 0.8rem;"> 815 <span class="text-gray" style="font-size:small"> 816 <@ if(getMultiplePlanLabel('', item)>1) {@> 817 <i class="material-icons text-primary" style="font-size:small">discount</i> 818 <@ print(' Flexible pricing plans') } @> 819 </span> 820 </div> 821 </a> 822 </div> 823 </script>
823 824
825<script type="text/template" id="blogcard-template"> 826 <div class="column col-3 col-md-6 col-sm-6 col-xs-12 scourse" style="margin-bottom: 20px;"> 827 <a class="card" title="<@- item['spayee:resource']['spayee:title'] @>" href="/blog/<@- item['spayee:resource']['spayee:url'] @>"> 828 <div class="card-image relative"> 829 <@ if(item['spayee:resource']['spayee:cover'] !== undefined && item['spayee:resource']['spayee:cover']) { @> 830 <div class="blurbg lazy" data-bg="https://d502jbuhuh9wk.cloudfront.net/articles/<@- item._id @>/cover.jpg<@ print(item["spayee:resource"]["spayee:coverVersion"] !== undefined?"?v="+item["spayee:resource"]["spayee:coverVersion"]:"") @>"></div> 831 <img alt="<@- item['spayee:resource']['spayee:title'] @> cover" class="img-responsive centered relative lazy" style="max-height: 100%;" data-src="https://d502jbuhuh9wk.cloudfront.net/articles/<@- item._id @>/cover.jpg?v=<@- item['spayee:resource']['spayee:coverVersion'] @>" onerror="showCourseDefaultCover(this, '<@- item._id @>')"> 832 <@ }else { @> 833 <div class="blurbg lazy" data-bg="https://d502jbuhuh9wk.cloudfront.net/resources/images/defaultCourseCover.png"></div> 834 <img alt="<@- item['spayee:resource']['spayee:title'] @> cover" class="img-responsive centered relative lazy" style="max-height: 100%;" data-src='https://d502jbuhuh9wk.cloudfront.net/resources/images/defaultCourseCover.png'> 835 <@ } @> 836 </div> 837 <div class="card-body text-ellipsis"><span style="color:#2f4f4f;"><@- item["spayee:resource"]["spayee:title"] @></span></div> 838 <div class="card-footer" style="padding: 0.4rem;"> 839 <span class="text-gray float-left text-ellipsis" style="max-width: calc(100% - 110px);"><@ print(item["spayee:resource"]["spayee:author"]!==undefined?htmlEntities(item["spayee:resource"]["spayee:author"]):"") @></span> 840 <@ var pdate = item.createdDate.$date; if(item['spayee:resource']['spayee:publishDate'] !== undefined && item['spayee:resource']['spayee:publishDate'] !== '') { pdate = item['spayee:resource']['spayee:publishDate']; } @> 841 <time class="float-right text-warning"><@ print(formatDate(new Date(pdate))) @></time> 842 </div> 843 </a> 844 </div> 845 </script>
845 846 847
847<script type="text/javascript"> 848 var uuid = function (a) { 849 // https://github.com/amplitude/Amplitude-Javascript/blob/master/src/uuid.js 850 return a // if the placeholder was passed, return 851 ? // a random number from 0 to 15 852 ( 853 a ^ // unless b is 8, 854 ((Math.random() * // in which case 855 16) >> // a random number from 856 (a / 4)) 857 ) // 8 to 11 858 .toString(16) // in hexadecimal 859 : // or otherwise a concatenated string: 860 ( 861 [1e7] + // 10000000 + 862 -1e3 + // -1000 + 863 -4e3 + // -4000 + 864 -8e3 + // -80000000 + 865 -1e11 866 ) // -100000000000, 867 .replace( 868 // replacing 869 /[018]/g, // zeroes, ones, and eights with 870 uuid, // random hex digits 871 ); 872 }; 873 874 (function(e,t){var n=e.amplitude||{_q:[],_iq:{}};var r=t.createElement("script") 875 ;r.type="text/javascript" 876 ;r.integrity="sha384-tzcaaCH5+KXD4sGaDozev6oElQhsVfbJvdi3//c2YvbY02LrNlbpGdt3Wq4rWonS" 877 ;r.crossOrigin="anonymous";r.async=true 878 ;r.src="https://cdn.amplitude.com/libs/amplitude-8.5.0-min.gz.js" 879 ;r.onload=function(){if(!e.amplitude.runQueuedFunctions){ 880 console.log("[Amplitude] Error: could not load SDK")}} 881 ;var i=t.getElementsByTagName("script")[0];i.parentNode.insertBefore(r,i) 882 ;function s(e,t){e.prototype[t]=function(){ 883 this._q.push([t].concat(Array.prototype.slice.call(arguments,0)));return this}} 884 var o=function(){this._q=[];return this} 885 ;var a=["add","append","clearAll","prepend","set","setOnce","unset","preInsert","postInsert","remove"] 886 ;for(var c=0;c<a.length;c++){s(o,a[c])}n.Identify=o;var u=function(){this._q=[] 887 ;return this} 888 ;var l=["setProductId","setQuantity","setPrice","setRevenueType","setEventProperties"] 889 ;for(var p=0;p<l.length;p++){s(u,l[p])}n.Revenue=u 890 ;var d=["init","logEvent","logRevenue","setUserId","setUserProperties","setOptOut","setVersionName","setDomain","setDeviceId","enableTracking","setGlobalUserProperties","identify","clearUserProperties","setGroup","logRevenueV2","regenerateDeviceId","groupIdentify","onInit","logEventWithTimestamp","logEventWithGroups","setSessionId","resetSessionId"] 891 ;function v(e){function t(t){e[t]=function(){ 892 e._q.push([t].concat(Array.prototype.slice.call(arguments,0)))}} 893 for(var n=0;n<d.length;n++){t(d[n])}}v(n);n.getInstance=function(e){ 894 e=(!e||e.length===0?"$default_instance":e).toLowerCase() 895 ;if(!Object.prototype.hasOwnProperty.call(n._iq,e)){n._iq[e]={_q:[]};v(n._iq[e]) 896 }return n._iq[e]};e.amplitude=n})(window,document); 897 898 amplitude.getInstance().init('e56929a4c3888c23e97a7e70e34ccf6c'); 899 amplitude.getInstance().setUserId(null); 900 //amplitude.getInstance().regenerateDeviceId(); 901 902 var userProperties = { 903 custom_domain: "learn.excelsirji.com", 904 org_id: "696502429e49c234f6d30d1e", 905 default_google_login_enabled: 'true' == 'true', 906 personalized_google_login_enabled: '' != '' && 'true' == 'false' ? true : false, 907 facebook_login_enabled: '' == 'true' ? true : false 908 }; 909 amplitude.getInstance().setUserProperties(userProperties); 910 911/* var deviceId = uuid(); 912 amplitude.getInstance().setDeviceId(deviceId); 913 sessionStorage.setItem('amplitudeDeviceId', deviceId); */ 914 </script>
914 915 916
916<script type="text/javascript"> 917 window.signupParams = {source: "store", platform: "web", sourceId: null}; 918 var showGraphyFomoFlag = ''; 919 920 </script>
920 921 922
922<script type="text/javascript"> 923 function hideCheckoutLoader() { 924 if(typeof window.hideLoader =="function") { 925 window.hideLoader(); 926 } 927 } 928 var checkoutRedirectGuestUsers = 'signup'; 929 </script>
929 930 931 932 933 934 935
936<script type="text/template" id="spcoursecard-2-template"> 937 <div class="column third"> 938 <@ var planName = getCoursePlanName(sessionCountry, item), price = getCoursePrice(sessionCountry, item, '0.0', ''), isPackage = item['spayee:resource']['spayee.courseType'] == 'package', courseId = isPackage ? '' : item._id, packageId = isPackage ? item._id : ''; @> 939 <a title="<@- item['spayee:resource']['spayee:title'] @>" href="<@ print(getCourseLandingPageUrl(item._id, item['spayee:resource']['spayee:courseUrl'])) @>" amplitude-event="buy_now_tapped_course_checkout" amplitude-payload='{"plan_name": "<@- planName @>", "price": <@- price @>, "currency": "USD", "course_id": "<@- courseId @>", "is_package": <@- isPackage @>, "package_id": "<@- packageId @>"}' style="text-decoration: none;"> 940 <@ var curl = "https://d502jbuhuh9wk.cloudfront.net/courses/"+ item._id +"/"+ item._id +"_scaled_cover.jpg?v=" + item['spayee:resource']['spayee:coverVersion']; if(isNaN(item['spayee:resource']['spayee:coverVersion'])) { curl = showCourseDefaultCover(null, item._id); } @> 941 <img class="lazy" data-src="<@- curl @>" alt="<@- item['spayee:resource']['spayee:title'] @> cover" onerror="showCourseDefaultCover(this, '<@- item._id @>')"> 942 <h4 class="size-21 text-ellipsis" style="text-wrap: balance;overflow: hidden;display: -webkit-box;-webkit-box-orient: vertical;-webkit-line-clamp: 1;"><@- item['spayee:resource']['spayee:title'] @></h4> 943 <p class="size-16"><@ if(item.rating !== undefined) { @> 944 <span class="text-gray ratingIcons icon-text"> 945 <@ for(var i=1;i<6;i++) { @> 946 <@ if(item.rating.avgRating >= i) { @><i class="material-icons text-primary">star</i><@ }else if(item.rating.avgRating > i-1 && item.rating.avgRating < i) { @><i class="material-icons text-primary">star_half</i><@ }else { @> 947 <i class="material-icons">star_border</i> 948 <@ } } @></span><span><@ print(formatRating(item['rating']['avgRating'])) @> (<@- item['rating']['total'] @> ratings)</span> 949 <@ }else { @> <span class="text-gray ratingIcons icon-text"> </span> <@ } @></p> 950 <p class="size-16 text-ellipsis"><@ if(item['spayee:resource']['spayee:courseType'] === 'package') { @><@ print(item["courses-count"]!==undefined?item["courses-count"]:"0") @> Courses<@ }else { @> 951 <@ print(item["spayee:resource"]["spayee:publisher"]!==undefined?item["spayee:resource"]["spayee:publisher"]:" ") @><@ } @></p> 952 953 <p class="size-18"><span style="color: rgb(21, 101, 192);"><@ print(getCourseDisplayPrice('$', sessionCountry, item, '0.0', '', true)) @></span><br></p> 954 <div style="margin:1em 0"></div> 955 </a> 956 </div> 957 </script>
vendor: 1 bytes, line 957
957
958<script type="text/template" id="spcoursecard-1-template"> 959 <div class="column third"> 960 <@ var planName = getCoursePlanName(sessionCountry, item), price = getCoursePrice(sessionCountry, item, '0.0', ''), isPackage = item['spayee:resource']['spayee.courseType'] == 'package', courseId = isPackage ? '' : item._id, packageId = isPackage ? item._id : ''; @> 961 <a title="<@- item['spayee:resource']['spayee:title'] @>" href="<@ print(getCourseLandingPageUrl(item._id, item['spayee:resource']['spayee:courseUrl'])) @>" amplitude-event="buy_now_tapped_course_checkout" amplitude-payload='{"plan_name": "<@- planName @>", "price": <@- price @>, "currency": "USD", "course_id": "<@- courseId @>", "is_package": <@- isPackage @>, "package_id": "<@- packageId @>"}' style="text-decoration: none;"> 962 <@ var curl = "https://d502jbuhuh9wk.cloudfront.net/courses/"+ item._id +"/"+ item._id +"_scaled_cover.jpg?v=" + item['spayee:resource']['spayee:coverVersion']; if(isNaN(item['spayee:resource']['spayee:coverVersion'])) { curl = showCourseDefaultCover(null, item._id); } @> 963 <img class="lazy" data-src="<@- curl @>" alt="<@- item['spayee:resource']['spayee:title'] @> cover" onerror="showCourseDefaultCover(this, '<@- item._id @>')"> 964 <h4 class="size-21 text-ellipsis" style="text-wrap: balance;overflow: hidden;display: -webkit-box;-webkit-box-orient: vertical;-webkit-line-clamp: 1;"><@- item['spayee:resource']['spayee:title'] @></h4> 965 <div class="size-16 text-ellipsis" style="max-height: 3rem;"><@ print(item['spayee:resource']['spayee:shortDescription']!==undefined?item['spayee:resource']['spayee:shortDescription']:"") @></div> 966 967 <p class="size-18"><span style="color: rgb(21, 101, 192);"><@ print(getCourseDisplayPrice('$', sessionCountry, item, '0.0', '', true)) @></span><br></p> 968 <div style="margin:1em 0"></div> 969 </a> 970 </div> 971 </script>
vendor: 1 bytes, line 971
971
972<script type="text/template" id="spcoursecard-3-template"> 973 <div class="column third"> 974 <@ var planName = getCoursePlanName(sessionCountry, item), price = getCoursePrice(sessionCountry, item, '0.0', ''), isPackage = item['spayee:resource']['spayee.courseType'] == 'package', courseId = isPackage ? '' : item._id, packageId = isPackage ? item._id : ''; @> 975 <a title="<@- item['spayee:resource']['spayee:title'] @>" href="<@ print(getCourseLandingPageUrl(item._id, item['spayee:resource']['spayee:courseUrl'])) @>" amplitude-event="buy_now_tapped_course_checkout" amplitude-payload='{"plan_name": "<@- planName @>", "price": <@- price @>, "currency": "USD", "course_id": "<@- courseId @>", "is_package": <@- isPackage @>, "package_id": "<@- packageId @>"}' style="text-decoration: none;"> 976 <@ var curl = "https://d502jbuhuh9wk.cloudfront.net/courses/"+ item._id +"/"+ item._id +"_scaled_cover.jpg?v=" + item['spayee:resource']['spayee:coverVersion']; if(isNaN(item['spayee:resource']['spayee:coverVersion'])) { curl = showCourseDefaultCover(null, item._id); } @> 977 <img class="lazy" data-src="<@- curl @>" alt="<@- item['spayee:resource']['spayee:title'] @> cover" onerror="showCourseDefaultCover(this, '<@- item._id @>')"> 978 <h4 class="size-21 text-ellipsis" style="text-wrap: balance;overflow: hidden;display: -webkit-box;-webkit-box-orient: vertical;-webkit-line-clamp: 1;"><@- item['spayee:resource']['spayee:title'] @></h4> 979 <div class="size-16 text-ellipsis" style="max-height: 3rem;"><@ print(item['spayee:resource']['spayee:shortDescription']!==undefined?item['spayee:resource']['spayee:shortDescription']:"") @></div> 980 <p class="size-16 text-ellipsis"><@ if(item['spayee:resource']['spayee:courseType'] === 'package') { @><@ print(item["courses-count"]!==undefined?item["courses-count"]:"0") @> Courses<@ }else { @> 981 <@ print(item["spayee:resource"]["spayee:publisher"]!==undefined?item["spayee:resource"]["spayee:publisher"]:" ") @><@ } @></p> 982 <p class="size-18"><span style="color: rgb(21, 101, 192);"><@ print(getCourseDisplayPrice('$', sessionCountry, item, '0.0', '', true)) @></span><br></p> 983 <div style="margin:1em 0"></div> 984 </a> 985 </div> 986 </script>
986 987
988<script type="text/template" id="spcoursecard-4-template"> 989 <div class="column third text-center" style="padding-left: 1rem; padding-right: 1rem; margin-bottom: 0px;"> 990 <@ var curl = "https://d502jbuhuh9wk.cloudfront.net/courses/"+ item._id +"/"+ item._id +"_scaled_cover.jpg?v=" + item['spayee:resource']['spayee:coverVersion']; if(isNaN(item['spayee:resource']['spayee:coverVersion'])) { curl = showCourseDefaultCover(null, item._id); } @> 991 <@ var planName = getCoursePlanName(sessionCountry, item), price = getCoursePrice(sessionCountry, item, '0.0', ''), isPackage = item['spayee:resource']['spayee.courseType'] == 'package', courseId = isPackage ? '' : item._id, packageId = isPackage ? item._id : ''; @> 992 <a title="<@- item['spayee:resource']['spayee:title'] @>" href="<@ print(getCourseLandingPageUrl(item._id, item['spayee:resource']['spayee:courseUrl'])) @>" amplitude-event="buy_now_tapped_course_checkout" amplitude-payload='{"plan_name": "<@- planName @>", "price": <@- price @>, "currency": "USD", "course_id": "<@- courseId @>", "is_package": <@- isPackage @>, "package_id": "<@- packageId @>"}' style="text-decoration: none;"> 993 <img class="lazy" data-src="<@- curl @>" alt="<@- item['spayee:resource']['spayee:title'] @> cover" onerror="showCourseDefaultCover(this, '<@- item._id @>')"> 994 </a> 995 <h3 class="size-18 text-center" style="text-wrap: balance;overflow: hidden;display: -webkit-box;-webkit-box-orient: vertical;-webkit-line-clamp: 1;"><b class="text-primary"><@- item['spayee:resource']['spayee:title'] @></b></h3> 996 <div class="discription"><@ print(item['spayee:resource']['spayee:shortDescription']!==undefined?item['spayee:resource']['spayee:shortDescription']:"") @></div> 997 <p class="size-18 price text-primary"><@ print(getCourseDisplayPrice('$', sessionCountry, item, '0.0', '', true)) @></p> 998 <a title="<@- item['spayee:resource']['spayee:title'] @>" href="<@ print(getCourseLandingPageUrl(item._id, item['spayee:resource']['spayee:courseUrl'])) @>" class="buy-btn btn btn-primary" amplitude-event="buy_now_tapped_course_checkout" amplitude-payload='{"plan_name": "<@- planName @>", "price": <@- price @>, "currency": "USD", "course_id": "<@- courseId @>", "is_package": <@- isPackage @>, "package_id": "<@- packageId @>"}'>Buy now<br></a> 999 </div> 1000 </script>
1000
1001<script type="text/template" id="spcoursecard-5-template"> 1002 <div class="column third" style="padding-left: 1rem; padding-right: 1rem; margin-bottom: 0px;"> 1003 <@ var curl = "https://d502jbuhuh9wk.cloudfront.net/courses/"+ item._id +"/"+ item._id +"_scaled_cover.jpg?v=" + item['spayee:resource']['spayee:coverVersion']; if(isNaN(item['spayee:resource']['spayee:coverVersion'])) { curl = showCourseDefaultCover(null, item._id); } @> 1004 <@ var planName = getCoursePlanName(sessionCountry, item), price = getCoursePrice(sessionCountry, item, '0.0', ''), isPackage = item['spayee:resource']['spayee.courseType'] == 'package', courseId = isPackage ? '' : item._id, packageId = isPackage ? item._id : ''; @> 1005 <a title="<@- item['spayee:resource']['spayee:title'] @>" href="<@ print(getCourseLandingPageUrl(item._id, item['spayee:resource']['spayee:courseUrl'])) @>" amplitude-event="buy_now_tapped_course_checkout" amplitude-payload='{"plan_name": "<@- planName @>", "price": <@- price @>, "currency": "USD", "course_id": "<@- courseId @>", "is_package": <@- isPackage @>, "package_id": "<@- packageId @>"}' style="text-decoration: none;"> 1006 <img class="lazy" data-src="<@- curl @>" alt="<@- item['spayee:resource']['spayee:title'] @> cover" onerror="showCourseDefaultCover(this, '<@- item._id @>')"> 1007 </a> 1008 <h3 class="sub-heading"><b class="size-18 text-primary"><@- item['spayee:resource']['spayee:title'] @></b></h4> 1009 <p class="size-16 description text-primary"> <@ if(item['spayee:resource']['spayee:courseType'] === 'package') { @><@ print(item["courses-count"]!==undefined?item["courses-count"]:"0") @> Courses<@ }else { @> 1010 Instructor : <@ print(item["spayee:resource"]["spayee:publisher"]!==undefined?item["spayee:resource"]["spayee:publisher"]:" ") @><@ } @></p> 1011 <@if(item.rating){@> 1012 <p class="size-16 description text-primary">Rating: 1013 <@ for (ratingsSize = 1; ratingsSize <= 5; ratingsSize++) {@> 1014 <@if(item.rating){@> 1015 <@if(item.rating.avgRating){@> 1016 <@ if(item.rating.avgRating >= ratingsSize) {@> 1017 <i class="icon ion-android-star text-primary"></i> 1018 <@ } else if(item.rating.avgRating > ratingsSize-1 && item.rating.avgRating < ratingsSize) { @> 1019 <i class="icon ion-android-star-half text-primary"></i> 1020 <@ } @> 1021 <@}@> 1022 <@}@> 1023 <@}@> 1024 </p> 1025 <@}@> 1026 1027 <p class="size-18 price text-primary">Price : <@ print(getCourseDisplayPrice('$', sessionCountry, item, '0.0', '', true)) @></p> 1028 <a title="<@- item['spayee:resource']['spayee:title'] @>" href="<@ print(getCourseLandingPageUrl(item._id, item['spayee:resource']['spayee:courseUrl'])) @>" class="buy-btn btn btn-primary" amplitude-event="buy_now_tapped_course_checkout" amplitude-payload='{"plan_name": "<@- planName @>", "price": <@- price @>, "currency": "USD", "course_id": "<@- courseId @>", "is_package": <@- isPackage @>, "package_id": "<@- packageId @>"}'>Buy now</a> 1029 </div> 1030 </script>
1030 1031
1032<script type="text/template" id="spcoursecard-6-template"> 1033 <div class="column third"> 1034 <@ var curl = "https://d502jbuhuh9wk.cloudfront.net/courses/"+ item._id +"/"+ item._id +"_scaled_cover.jpg?v=" + item['spayee:resource']['spayee:coverVersion']; if(isNaN(item['spayee:resource']['spayee:coverVersion'])) { curl = showCourseDefaultCover(null, item._id); } @> 1035 <@ var planName = getCoursePlanName(sessionCountry, item), price = getCoursePrice(sessionCountry, item, '0.0', ''), isPackage = item['spayee:resource']['spayee.courseType'] == 'package', courseId = isPackage ? '' : item._id, packageId = isPackage ? item._id : ''; @> 1036 1037 1038 <@ var itemCategory = (item['spayee:resource']['spayee:filter1'] !== undefined)? item['spayee:resource']['spayee:filter1'][0]:''@> 1039 1040 <@ if (item['spayee:resource']['spayee:availableForMarket']==="true" ) { @> 1041 <a title="<@- item['spayee:resource']['spayee:title'] @>" href="<@ print(getCourseLandingPageUrl(item._id, item['spayee:resource']['spayee:courseUrl'])) @>" amplitude-event="course_card_tapped_checkout" amplitude-payload='{"<@- item['spayee:resource']['spayee:courseType']== 'package' ? "package_id" : "course_id" @>": "<@- item._id @>","is_a_package":"<@- item['spayee:resource']['spayee:courseType']== 'package' ? "true" : "false" @>","price_on_card":"<@- removeCurrencySymbol(getCourseDisplayPrice('$', sessionCountry, item, '0.0', '', false)) @>","currency":"USD","multiple_pricing_plans_exist":"<@- isMultiplePlansAvailable(sessionCountry, item) @>","wallet_coins_enabled_on_school":"<@- false @>","category":"<@- itemCategory @>"}'> 1042 <@ } else { @> 1043 <a title="<@- item['spayee:resource']['spayee:title'] @>" amplitude-event="course_card_tapped_checkout" amplitude-payload='{"<@- item['spayee:resource']['spayee:courseType']== 'package' ? "package_id" : "course_id" @>": "<@- item._id @>","is_a_package":"<@- item['spayee:resource']['spayee:courseType']== 'package' ? "true" : "false" @>","price_on_card":"<@- removeCurrencySymbol(getCourseDisplayPrice('$', sessionCountry, item, '0.0', '', false)) @>","currency":"USD","multiple_pricing_plans_exist":"<@- isMultiplePlansAvailable(sessionCountry, item) @>","wallet_coins_enabled_on_school":"<@- false @>","category":"<@- itemCategory @>"}'> 1044 <@ } @> 1045 1046 1047 <img class="lazy" data-src="<@- curl @>" alt="<@- item['spayee:resource']['spayee:title'] @> cover" onerror="showCourseDefaultCover(this, '<@- item._id @>')" style="border-radius: 20px; margin-bottom: 0px; width: 100%; height: 190px;object-fit:cover;"> 1048 </a> 1049 <div style="font-weight: 800; line-height: 1.1; text-wrap: balance;overflow: hidden;display: -webkit-box;-webkit-box-orient: vertical;-webkit-line-clamp: 1;" class="text-ellipsis"><@- item['spayee:resource']['spayee:title'] @></div> 1050 <p class="size-16 description text-primary"><@ if(item['spayee:resource']['spayee:courseType'] === 'package') { @> Courses<@ } @></p> 1051 <p class="size-18 price text-primary"><@ if (item['spayee:resource']['spayee:availableForMarket']==="true" ) @> <@ print(getCourseDisplayPrice('$', sessionCountry, item, '0.0', '', false)) @></p> 1052 <@ if (item.isMembershipPage != undefined && !item.isMembershipPage) { @> 1053 1054 1055 <@ var itemCategory = (item['spayee:resource']['spayee:filter1'] !== undefined)? item['spayee:resource']['spayee:filter1'][0]:'' @> 1056 <@ if(isMultiplePlansAvailable(sessionCountry, item) === false) { @> 1057 <a title="<@- item['spayee:resource']['spayee:title'] @>" href="/single-checkout/<@- item['_id'] @>?pid=<@ print(getCoursePid(sessionCountry, item)) @>" class="buy-btn btn btn-primary" amplitude-event="course_buy_now_tapped_checkout" amplitude-payload='{"<@- item['spayee:resource']['spayee:courseType']== 'package' ? "package_id" : "course_id" @>": "<@- item._id @>","is_a_package":"<@- item['spayee:resource']['spayee:courseType']== 'package' ? "true" : "false" @>","price_on_card":"<@- removeCurrencySymbol(getCourseDisplayPrice('$', sessionCountry, item, '0.0', '', false)) @>","currency":"USD","multiple_pricing_plans_exist":"<@- isMultiplePlansAvailable(sessionCountry, item) @>","wallet_coins_enabled_on_school":"<@- false @>","category":"<@- itemCategory @>"}' style="border: none;padding: 16px 61px; font-size: 16px; letter-spacing: 0.08px; line-height: 16px; font-weight: 600; text-decoration: none; display: block; text-align: center;"> 1058 Buy now 1059 </a> 1060 <@ } else { @> 1061 1062 <a title="<@- item['spayee:resource']['spayee:title'] @>" href="<@ print(getCourseLandingPageUrl(item._id, item['spayee:resource']['spayee:courseUrl'])) @>" class="buy-btn btn btn-primary" amplitude-event="course_buy_now_tapped_checkout" amplitude-payload='{"<@- item['spayee:resource']['spayee:courseType']== 'package' ? "package_id" : "course_id" @>": "<@- item._id @>","is_a_package":"<@- item['spayee:resource']['spayee:courseType']== 'package' ? "true" : "false" @>","price_on_card":"<@- removeCurrencySymbol(getCourseDisplayPrice('$', sessionCountry, item, '0.0', '', false)) @>","currency":"USD","multiple_pricing_plans_exist":"<@- isMultiplePlansAvailable(sessionCountry, item) @>","wallet_coins_enabled_on_school":"<@- false @>","category":"<@- itemCategory @>"}' style="border: none;padding: 16px 61px; font-size: 16px; letter-spacing: 0.08px; line-height: 16px; font-weight: 600; text-decoration: none; display: block; text-align: center;"> 1063 Buy now 1064 </a> 1065 <@ } @> 1066 1067 1068 1069 <@ } @> 1070 </div> 1071 </script>
1071 1072 1073
1074<script type="text/template" id="spcoursecard-7-template"> 1075 <div class="column third course-mob-block"> 1076 <div class="inner-course-block"> 1077 <@ var curl = "https://d502jbuhuh9wk.cloudfront.net/courses/"+ item._id +"/"+ item._id +"_scaled_cover.jpg?v=" + item['spayee:resource']['spayee:coverVersion']; if(isNaN(item['spayee:resource']['spayee:coverVersion'])) { curl = showCourseDefaultCover(null, item._id); } @> 1078 <@ var planName = getCoursePlanName(sessionCountry, item), price = getCoursePrice(sessionCountry, item, '0.0', ''), isPackage = item['spayee:resource']['spayee.courseType'] == 'package', courseId = isPackage ? '' : item._id, packageId = isPackage ? item._id : ''; @> 1079 <a title="<@- item['spayee:resource']['spayee:title'] @>" href="<@ print(getCourseLandingPageUrl(item._id, item['spayee:resource']['spayee:courseUrl'])) @>" amplitude-event="buy_now_tapped_course_checkout" amplitude-payload='{"plan_name": "<@- planName @>", "price": <@- price @>, "currency": "USD", "course_id": "<@- courseId @>", "is_package": <@- isPackage @>, "package_id": "<@- packageId @>"}' style="text-decoration: none;"> 1080 <img class="lazy" data-style="width: 100%; height: auto;" data-src="<@- curl @>" alt="<@- item['spayee:resource']['spayee:title'] @> cover" onerror="showCourseDefaultCover(this, '<@- item._id @>')" > 1081 </a> 1082 <div class="course-price-block"> 1083 <p class="text-ellipsis" title="<@- item['spayee:resource']['spayee:title'] @>" style="font-size: 18px; font-weight: 700; line-height: 1.3rem; width: 100%; margin-top: 0px; margin-bottom: 0px; min-height: 47px; text-wrap: balance;overflow: hidden;display: -webkit-box;-webkit-box-orient: vertical;-webkit-line-clamp: 1;"> 1084 <@- item['spayee:resource']['spayee:title'] @> 1085 </p> 1086 <p class="text-primary" style="word-break: break-all; font-size: 14px; font-weight: 500; line-height: 1.5; margin-top: 16px; margin-bottom: 0px;"> 1087 <@ print(getCourseDisplayPrice('$', sessionCountry, item, '0.0', '', false)) @> 1088 </p> 1089 </div> 1090 <a title="<@- item['spayee:resource']['spayee:title'] @>" href="<@ print(getCourseLandingPageUrl(item._id, item['spayee:resource']['spayee:courseUrl'])) @>" class="buy-btn btn btn-primary" amplitude-event="buy_now_tapped_course_checkout" amplitude-payload='{"plan_name": "<@- planName @>", "price": <@- price @>, "currency": "USD", "course_id": "<@- courseId @>", "is_package": <@- isPackage @>, "package_id": "<@- packageId @>"}' style="display: inline-block; text-decoration: none; transition: all 0.16s ease 0s; border: none; cursor: pointer; border-radius: 4px; padding: 13px 28px; line-height: 1.5; font-weight: 600; font-size: 14px; letter-spacing: 0.15px; margin-top: 28px;"> 1091 Enroll now 1092 </a> 1093 </div> 1094 </div> 1095</script>
1095 1096
1097<script type="text/template" id="spcoursecard-8-template"> 1098 <div class="row clearfix" style="margin-bottom: 24px; margin-top: 14px;"> 1099 <@ var curl = "https://d502jbuhuh9wk.cloudfront.net/courses/"+ item._id +"/"+ item._id +"_scaled_cover.jpg?v=" + item['spayee:resource']['spayee:coverVersion']; if(isNaN(item['spayee:resource']['spayee:coverVersion'])) { curl = showCourseDefaultCover(null, item._id); } @> 1100 <@ var planName = getCoursePlanName(sessionCountry, item), price = getCoursePrice(sessionCountry, item, '0.0', ''), isPackage = item['spayee:resource']['spayee.courseType'] == 'package', courseId = isPackage ? '' : item._id, packageId = isPackage ? item._id : ''; @> 1101 <div class="column third center" style="padding-left: 0px; padding-right: 0px;"> 1102 <img 1103 class="lazy" data-src="<@- curl @>" alt="<@- item['spayee:resource']['spayee:title'] @> cover" onerror="showCourseDefaultCover(this, '<@- item._id @>')" 1104 style="margin-top: 0px; margin-bottom: 0px;" 1105 /> 1106 </div> 1107 <div class="column two-third course-block-mob" style="display: flex; flex-direction: column; justify-content: center;"> 1108 <div class="course-price-block"> 1109 <h3 style="color: rgb(255, 255, 255); font-size: 18px; font-weight: 700; line-height: 1.1; margin-bottom: 0px; margin-top: 0px; text-wrap: balance;overflow: hidden;display: -webkit-box;-webkit-box-orient: vertical;-webkit-line-clamp: 1;"> 1110 <@- item['spayee:resource']['spayee:title'] @> 1111 </h3> 1112 <div class="sortDescription8"> 1113 <@ print(item['spayee:resource']['spayee:shortDescription']!==undefined?item['spayee:resource']['spayee:shortDescription']:"") @> 1114 </div> 1115 </div> 1116 1117 <a class="buy-btn btn btn-primary" title="<@- item['spayee:resource']['spayee:title'] @>" amplitude-event="buy_now_tapped_course_checkout" amplitude-payload='{"plan_name": "<@- planName @>", "price": <@- price @>, "currency": "USD", "course_id": "<@- courseId @>", "is_package": <@- isPackage @>, "package_id": "<@- packageId @>"}' href="<@ print(getCourseLandingPageUrl(item._id, item['spayee:resource']['spayee:courseUrl'])) @>" style="width: fit-content; text-align: left; display: inline-block; text-decoration: none; transition: all 0.16s ease 0s; cursor: pointer; background-color: rgb(231, 215, 73); color: rgb(0, 0, 0);border-radius: 0px;padding: 16px 48px;line-height: 16px;font-weight: 700;font-size: 16px;letter-spacing: 0.08px;border-image: initial;"> 1118 Enroll for <@ print(getCourseDisplayPrice('$', sessionCountry, item, '0.0', '', false)) @> 1119 </a> 1120 </div> 1121 </div> 1122 </script>
1122 1123 1124 1125 <!-- vegas TEMPLATE 9 NEW--> 1126
1126<script type="text/template" id="spcoursecard-9-template" > 1127 <div class="column third text-center course-card-fixed-height" style="padding-left: 1rem; padding-right: 1rem; margin-bottom: 2rem; text-align:left;"> 1128 <div style="border:1px solid #D7D7D7; border-radius:24px; padding-bottom: 20px; height: 100%; display: flex; flex-direction: column;"> 1129 <@ var curl = "https://d502jbuhuh9wk.cloudfront.net/courses/"+ item._id +"/"+ item._id +"_scaled_cover.jpg?v=" + item['spayee:resource']['spayee:coverVersion']; if(isNaN(item['spayee:resource']['spayee:coverVersion'])) { curl = showCourseDefaultCover(null, item._id); } @> 1130 <@ var planName = getCoursePlanName(sessionCountry, item), price = getCoursePrice(sessionCountry, item, '0.0', ''), isPackage = item['spayee:resource']['spayee.courseType'] == 'package', courseId = isPackage ? '' : item._id, packageId = isPackage ? item._id : ''; @> 1131 1132 <a style="color:black; text-align:left;" title="<@- item['spayee:resource']['spayee:title'] @>" href="<@ print(getCourseLandingPageUrl(item._id, item['spayee:resource']['spayee:courseUrl'])) @>" amplitude-event="buy_now_tapped_course_checkout" amplitude-payload='{"plan_name": "<@- planName @>", "price": <@- price @>, "currency": "USD", "course_id": "<@- courseId @>", "is_package": <@- isPackage @>, "package_id": "<@- packageId @>"}'> 1133 <img style="height:200px; width:100%; object-fit:fill; margin:0px 0px; border-top-left-radius:24px; border-top-right-radius:24px;" class="lazy" data-src="<@- curl @>" alt="<@- item['spayee:resource']['spayee:title'] @> cover" onerror="showCourseDefaultCover(this, '<@- item._id @>')"> 1134 </a> 1135 1136 <div style="padding:10px 20px; flex-grow: 1; display: flex; flex-direction: column;" class="course-card-content"> 1137 <h3 1138 class="size-18 text-left" 1139 title="<@- item['spayee:resource']['spayee:title'] @>" 1140 style="white-space: nowrap; overflow: hidden; text-overflow: ellipsis; width: 100%; display: block; margin-bottom: 12px; color: black;" 1141 > 1142 <b style="color:black;"><@- item['spayee:resource']['spayee:title'] @></b> 1143 </h3> 1144 1145 <div 1146 class="size-16 text-ellipsis course-card-text" 1147 title="<@= (item['spayee:resource']['spayee:shortDescription'] || ' ').replace(/<[^>]*>/g, '') @>" 1148 style="max-height: 3rem; min-height: 3rem; margin-bottom: 12px; overflow: hidden; display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 1;" 1149 > 1150 <@= (item['spayee:resource']['spayee:shortDescription'] || '').replace(/<[^>]*>/g, '') @> 1151 </div> 1152 </div> 1153 1154 <div style="margin-top: auto; margin-left:10px;"> 1155 <a style="background-color:#FB5607 !important; border:0px !important; border-radius:62px !important; padding:10px 16px !important; width: fit-content; display: inline-block; text-decoration: none; color: white; padding: 12px 24px; font-weight: 600 !important; font-size: 16px;letter-spacing:0px; !important" 1156 class="buy-btn btn btn-primary" 1157 title="<@- item['spayee:resource']['spayee:title'] @>" 1158 amplitude-event="buy_now_tapped_course_checkout" 1159 amplitude-payload='{"plan_name": "<@- planName @>", "price": <@- price @>, "currency": "USD", "course_id": "<@- courseId @>", "is_package": <@- isPackage @>, "package_id": "<@- packageId @>"}' 1160 href="<@ print(getCourseLandingPageUrl(item._id, item['spayee:resource']['spayee:courseUrl'])) @>"> 1161 Enroll for <@ print(getCourseDisplayPrice('$', sessionCountry, item, '0.0', '', false)) @> 1162 </a> 1163 </div> 1164 </div> 1165 </div> 1166 </div> 1167</script>
1167 1168 1169 <!--Blaze Course nEW tEMPLATE 10--> 1170
1170<script type="text/template" id="spcoursecard-10-template"> 1171 <div class="column third text-center course-card-fixed-height" style="padding-left: 1rem; padding-right: 1rem; margin-bottom: 10px;margin-top:10px; text-align:left;"> 1172 <div style="height: 100%; display: flex; flex-direction: column;"> 1173 <@ var curl = "https://d502jbuhuh9wk.cloudfront.net/courses/"+ item._id +"/"+ item._id +"_scaled_cover.jpg?v=" + item['spayee:resource']['spayee:coverVersion']; if(isNaN(item['spayee:resource']['spayee:coverVersion'])) { curl = showCourseDefaultCover(null, item._id); } @> 1174 <@ var planName = getCoursePlanName(sessionCountry, item), price = getCoursePrice(sessionCountry, item, '0.0', ''), isPackage = item['spayee:resource']['spayee.courseType'] == 'package', courseId = isPackage ? '' : item._id, packageId = isPackage ? item._id : ''; @> 1175 1176 <a style="color:black; text-align:left;" title="<@- item['spayee:resource']['spayee:title'] @>" href="<@ print(getCourseLandingPageUrl(item._id, item['spayee:resource']['spayee:courseUrl'])) @>" amplitude-event="buy_now_tapped_course_checkout" amplitude-payload='{"plan_name": "<@- planName @>", "price": <@- price @>, "currency": "USD", "course_id": "<@- courseId @>", "is_package": <@- isPackage @>, "package_id": "<@- packageId @>"}' style="text-decoration: none; color:black; font-size:24px;"> 1177 <img style="height:320px; object-fit:cover; margin:0px 0px;" class="lazy" data-src="<@- curl @>" alt="<@- item['spayee:resource']['spayee:title'] @> cover" onerror="showCourseDefaultCover(this, '<@- item._id @>')"> 1178 </a> 1179 1180 <div style=" flex-grow: 1; display: flex; flex-direction: column;" class="course-card-content"> 1181 <h3 1182 class="size-18 text-left" 1183 style="white-space: nowrap; overflow: hidden; text-overflow: ellipsis; width: 100%; display: block; margin-bottom: 12px; color: white;" 1184 > 1185 <b title="<@= item['spayee:resource']['spayee:title'] @>" style="color:white;"> 1186 <@- item['spayee:resource']['spayee:title'] @> 1187 </b> 1188 </h3> 1189 1190 <div title="<@= (item['spayee:resource']['spayee:shortDescription'] || ' ').replace(/<[^>]*>/g, '') @>" class="size-16 text-ellipsis course-card-text" style="max-height: 3rem; min-height: 3rem; margin-bottom: 12px; overflow: hidden; display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 1;color:white;"> 1191 <@= (item['spayee:resource']['spayee:shortDescription'] || '').replace(/<[^>]*>/g, '') @> 1192 </div> 1193 1194 <div style="margin-top: auto;"> 1195 <a style="width:100% !important;font-weight:600 !important; letter-spacing:0px; color:black !important; background-color:#D8FD46 !important; border:0px !important; border-radius:0px !important; padding:20px 36px !important; width: fit-content; display: inline-block; text-decoration: none; transition: all 0.16s ease 0s; cursor: pointer; padding: 16px 28px; line-height: 16px; font-weight: 700; font-size: 16px; letter-spacing: 0px; border-image: initial;" 1196 class="buy-btn btn btn-primary" 1197 title="<@- item['spayee:resource']['spayee:title'] @>" 1198 amplitude-event="buy_now_tapped_course_checkout" 1199 amplitude-payload='{"plan_name": "<@- planName @>", "price": <@- price @>, "currency": "USD", "course_id": "<@- courseId @>", "is_package": <@- isPackage @>, "package_id": "<@- packageId @>"}' 1200 href="<@ print(getCourseLandingPageUrl(item._id, item['spayee:resource']['spayee:courseUrl'])) @>"> 1201 Enroll for <@ print(getCourseDisplayPrice('$', sessionCountry, item, '0.0', '', false)) @> 1202 </a> 1203 1204 </div> 1205 </div> 1206 </div> 1207 </div> 1208 </script>
1208 1209 1210 <!--Olive Course 11--> 1211
1211<script type="text/template" id="spcoursecard-11-template" > 1212 <@ 1213 // Calculate colors based on index 1214 var colorIndex = (typeof window.courseCardColorIndex === 'undefined') ? 0 : window.courseCardColorIndex; 1215 var colors = [ 1216 { bg: '#FFA46B', btnBg: '#361500' }, // Orange card â Dark brown button 1217 { bg: '#87A1F6', btnBg: '#001A71' }, // Blue card â Dark blue button 1218 { bg: '#B073DC', btnBg: '#34005A' } // Purple card â Dark brown button (default) 1219 ]; 1220 var currentColor = colors[colorIndex % 3]; 1221 window.courseCardColorIndex = colorIndex + 1; 1222 @> 1223 1224 <div class="column third text-center course-card course-card-fixed-height" style="padding: 0 15px; margin-bottom: 30px;"> 1225 <div class="course-card-wrapper" style="background-color: <@- currentColor.bg @>; height: 100%; border-radius: 32px; overflow: hidden;"> 1226 <@ var curl = "https://d502jbuhuh9wk.cloudfront.net/courses/"+ item._id +"/"+ item._id +"_scaled_cover.jpg?v=" + item['spayee:resource']['spayee:coverVersion']; 1227 if(isNaN(item['spayee:resource']['spayee:coverVersion'])) { curl = showCourseDefaultCover(null, item._id); } @> 1228 1229 <a class="course-image-link" style="display: block; padding: 16px;padding-bottom:0px" title="<@- item['spayee:resource']['spayee:title'] @>" href="<@ print(getCourseLandingPageUrl(item._id, item['spayee:resource']['spayee:courseUrl'])) @>"> 1230 <img style="height:320px; width:100%; object-fit:cover; border-radius: 32px;" class="lazy" data-src="<@- curl @>" alt="<@- item['spayee:resource']['spayee:title'] @> cover" onerror="showCourseDefaultCover(this, '<@- item._id @>')"> 1231 </a> 1232 1233 <div style="padding: 20px;" class="course-card-content"> 1234 <h3 style="font-size:24px; text-transform:uppercase; color: black; margin: 0 0 15px 0; text-align: left;white-space:nowrap; overflow: hidden; text-overflow: ellipsis;width: 100%;display:block;"> 1235 <b title="<@= item['spayee:resource']['spayee:title'] @>"><@- item['spayee:resource']['spayee:title'] @></b> 1236 </h3> 1237 <div title="<@= (item['spayee:resource']['spayee:shortDescription'] || ' ').replace(/<[^>]*>/g, '') @>" class="size-16 text-ellipsis course-card-text" style="max-height: 3rem; min-height: 3rem; color:black; margin-bottom: 12px;text-align: left;"> 1238 <@ print(item['spayee:resource']['spayee:shortDescription']!==undefined?item['spayee:resource']['spayee:shortDescription']:" ") @> 1239 </div> 1240 <a class="enroll-button" 1241 style="display: block; 1242 background-color: <@- currentColor.btnBg @>; 1243 color: white !important; 1244 padding: 12px; 1245 text-align: center; 1246 font-weight: 600; 1247 text-decoration: none; 1248 border-radius: 32px;" 1249 href="<@ print(getCourseLandingPageUrl(item._id, item['spayee:resource']['spayee:courseUrl'])) @>"> 1250 Enroll for <@ print(getCourseDisplayPrice('$', sessionCountry, item, '0.0', '', false)) @> 1251 </a> 1252 </div> 1253 </div> 1254 </div> 1255 1256 </script>
1256 1257 1258 1259 <!-- Nebula Course 12--> 1260
1260<script type="text/template" id="spcoursecard-12-template" > 1261 <div class="column third text-center course-card-fixed-height" style="padding-left: 1rem; padding-right: 1rem; margin-bottom: 2rem; text-align:left;"> 1262 <div style="border:0px; border-radius:16px; padding-bottom: 20px; height: 100%; display: flex; flex-direction: column;"> 1263 <@ var curl = "https://d502jbuhuh9wk.cloudfront.net/courses/"+ item._id +"/"+ item._id +"_scaled_cover.jpg?v=" + item['spayee:resource']['spayee:coverVersion']; if(isNaN(item['spayee:resource']['spayee:coverVersion'])) { curl = showCourseDefaultCover(null, item._id); } @> 1264 <@ var planName = getCoursePlanName(sessionCountry, item), price = getCoursePrice(sessionCountry, item, '0.0', ''), isPackage = item['spayee:resource']['spayee.courseType'] == 'package', courseId = isPackage ? '' : item._id, packageId = isPackage ? item._id : ''; @> 1265 1266 <a style="color:black; text-align:left;" title="<@- item['spayee:resource']['spayee:title'] @>" href="<@ print(getCourseLandingPageUrl(item._id, item['spayee:resource']['spayee:courseUrl'])) @>" amplitude-event="buy_now_tapped_course_checkout" amplitude-payload='{"plan_name": "<@- planName @>", "price": <@- price @>, "currency": "USD", "course_id": "<@- courseId @>", "is_package": <@- isPackage @>, "package_id": "<@- packageId @>"}'> 1267 <img style="height:240px; width:100%; object-fit:fill; margin:0px 0px; border-radius:16px; " class="lazy" data-src="<@- curl @>" alt="<@- item['spayee:resource']['spayee:title'] @> cover" onerror="showCourseDefaultCover(this, '<@- item._id @>')"> 1268 </a> 1269 1270 <div style="padding:10px 0px; flex-grow: 1; display: flex; flex-direction: column;" class="course-card-content"> 1271 <h3 1272 class="size-18 text-left" 1273 title="<@- item['spayee:resource']['spayee:title'] @>" 1274 style="white-space: nowrap; overflow: hidden; text-overflow: ellipsis; width: 100%; display: block; margin-bottom: 12px; color: black;" 1275 > 1276 <b style="color:black;"><@- item['spayee:resource']['spayee:title'] @></b> 1277 </h3> 1278 1279 <div 1280 class="size-16 text-ellipsis course-card-text" 1281 title="<@= (item['spayee:resource']['spayee:shortDescription'] || ' ').replace(/<[^>]*>/g, '') @>" 1282 style="max-height: 3rem; min-height: 3rem; margin-bottom: 12px; overflow: hidden; display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 1;" 1283 > 1284 <@= (item['spayee:resource']['spayee:shortDescription'] || '').replace(/<[^>]*>/g, '') @> 1285 </div> 1286 </div> 1287 1288 <div style="margin-top: auto; margin-left:0px;"> 1289 <a style="background-color:#6715FF !important; border-radius:12px !important; padding:10px 16px !important; width: fit-content; display: inline-block; text-decoration: none; color: white; padding: 12px 24px; font-weight: 600 !important; font-size: 16px;letter-spacing:0px; !important" 1290 class="buy-btn btn btn-primary" 1291 title="<@- item['spayee:resource']['spayee:title'] @>" 1292 amplitude-event="buy_now_tapped_course_checkout" 1293 amplitude-payload='{"plan_name": "<@- planName @>", "price": <@- price @>, "currency": "USD", "course_id": "<@- courseId @>", "is_package": <@- isPackage @>, "package_id": "<@- packageId @>"}' 1294 href="<@ print(getCourseLandingPageUrl(item._id, item['spayee:resource']['spayee:courseUrl'])) @>"> 1295 Enroll for <@ print(getCourseDisplayPrice('$', sessionCountry, item, '0.0', '', false)) @> 1296 </a> 1297 </div> 1298 </div> 1299 </div> 1300 </div> 1301 </script>
1301 1302 1303 1304 1305 <!--Dusk Course-13--> 1306
1306<script type="text/template" id="spcoursecard-13-template" > 1307 <div class="column third text-center course-card-fixed-height" style="padding-left: 1rem; padding-right: 1rem; margin-bottom: 2rem; text-align:left;"> 1308 <div style="border:0px; border-radius:16px; padding-bottom: 20px; height: 100%; display: flex; flex-direction: column;"> 1309 <@ var curl = "https://d502jbuhuh9wk.cloudfront.net/courses/"+ item._id +"/"+ item._id +"_scaled_cover.jpg?v=" + item['spayee:resource']['spayee:coverVersion']; if(isNaN(item['spayee:resource']['spayee:coverVersion'])) { curl = showCourseDefaultCover(null, item._id); } @> 1310 <@ var planName = getCoursePlanName(sessionCountry, item), price = getCoursePrice(sessionCountry, item, '0.0', ''), isPackage = item['spayee:resource']['spayee.courseType'] == 'package', courseId = isPackage ? '' : item._id, packageId = isPackage ? item._id : ''; @> 1311 1312 <a style="color:black; text-align:left;" title="<@- item['spayee:resource']['spayee:title'] @>" href="<@ print(getCourseLandingPageUrl(item._id, item['spayee:resource']['spayee:courseUrl'])) @>" amplitude-event="buy_now_tapped_course_checkout" amplitude-payload='{"plan_name": "<@- planName @>", "price": <@- price @>, "currency": "USD", "course_id": "<@- courseId @>", "is_package": <@- isPackage @>, "package_id": "<@- packageId @>"}'> 1313 <img style="height:240px; width:100%; object-fit:fill; margin:0px 0px; border-radius:16px; " class="lazy" data-src="<@- curl @>" alt="<@- item['spayee:resource']['spayee:title'] @> cover" onerror="showCourseDefaultCover(this, '<@- item._id @>')"> 1314 </a> 1315 1316 <div style="padding:10px 0px; flex-grow: 1; display: flex; flex-direction: column;" class="course-card-content"> 1317 <h3 1318 class="size-18 text-left" 1319 title="<@- item['spayee:resource']['spayee:title'] @>" 1320 style="white-space: nowrap; overflow: hidden; text-overflow: ellipsis; width: 100%; display: block; margin-bottom: 12px; color: black;" 1321 > 1322 <b style="color:black;"><@- item['spayee:resource']['spayee:title'] @></b> 1323 </h3> 1324 1325 <div 1326 class="size-16 text-ellipsis course-card-text" 1327 title="<@= (item['spayee:resource']['spayee:shortDescription'] || ' ').replace(/<[^>]*>/g, '') @>" 1328 style="max-height: 3rem; min-height: 3rem; margin-bottom: 12px; overflow: hidden; display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 1;" 1329 > 1330 <@= (item['spayee:resource']['spayee:shortDescription'] || '').replace(/<[^>]*>/g, '') @> 1331 </div> 1332 </div> 1333 1334 1335 1336 <div style="margin-top: auto; margin-left:0px;"> 1337 <a style="background-color:#282400 !important;border:0px ; border-radius:41px !important; padding:10px 24px !important; width: fit-content; display: inline-block; text-decoration: none; color: white; padding: 12px 24px; font-weight: 600 !important; font-size: 16px;letter-spacing:0px; !important" 1338 class="buy-btn btn btn-primary" 1339 title="<@- item['spayee:resource']['spayee:title'] @>" 1340 amplitude-event="buy_now_tapped_course_checkout" 1341 amplitude-payload='{"plan_name": "<@- planName @>", "price": <@- price @>, "currency": "USD", "course_id": "<@- courseId @>", "is_package": <@- isPackage @>, "package_id": "<@- packageId @>"}' 1342 href="<@ print(getCourseLandingPageUrl(item._id, item['spayee:resource']['spayee:courseUrl'])) @>"> 1343 Enroll for <@ print(getCourseDisplayPrice('$', sessionCountry, item, '0.0', '', false)) @> 1344 </a> 1345 </div> 1346 </div> 1347 </div> 1348 </div> 1349 </script>
1349 1350 1351 1352 1353 1354 1355 1356 1357 1358 1359<!-- Curriculum 1st Template -->
1360<script type="text/template" id="coursecurr-1-template"> 1361 <table class="table courseContents"> 1362 <thead> 1363 <tr> 1364 <td style="width: 50px;"></td> 1365 <td style="width: 50px;"></td> 1366 <td></td> 1367 </tr> 1368 </thead> 1369 <tbody> 1370 <@ $.each(item, function(index, value) { @> 1371 <tr> 1372 <td><i class="material-icons courseItemIcon" data-type="<@- value.type @>"></i></td> 1373 <td colspan="2"> 1374 <@- value.title @> 1375 <@ if(value.type == 'aiheading') { @> 1376 <small>(coming soon)</small><@ } @> 1377 <@ if(assetInfo && value.type == 'video' && value.duration !== undefined && value.duration > 0) { @> 1378 <small>(<@ print(Math.floor(value.duration)) @>:00)</small><@ } @> 1379 <@ if(assetInfo && value.type == 'pdf' && value.pages !== undefined && value.pages > 0) { @> 1380 <small>(<@- value.pages @> pages)</small> 1381 <@ } @> 1382 </td> 1383 </tr> 1384 <@ if(value.items != undefined) { @> <@ $.each(value['items'], function(index1, value1) { @> 1385 <tr> 1386 <td></td> 1387 <td><i class="material-icons courseItemIcon" data-type="<@- value1.type @>"></i></td> 1388 <td> 1389 <@- value1.title @> 1390 <@ if(assetInfo && value.type == 'video' && value1.duration !== undefined && value1.duration > 0) { @><small>(<@ print(Math.floor(value1.duration)) @>:00)</small><@ } @> 1391 <@ if(assetInfo && value1.type =='pdf' && value1.pages !== undefined && value1.pages > 0) { @><small>(<@- value1.pages @> pages)</small><@ } @> 1392 <@ if(value1.type =='aiheading') { @><small>(coming soon)</small><@ } @> 1393 </td> 1394 </tr> 1395 <@ }); @> <@ } @> <@ }); @> 1396 </tbody> 1397 </table> 1398</script>
1398 1399 1400 1401<!-- Curriculum 2nd Template -->
1402<script type="text/template" id="coursecurr-2-template"> 1403 <div class="column full curriculum2" spellcheck="false"> 1404 <div class="course-content1" > 1405 <p style="font-size: 15px; font-weight: 400; margin-top: 0px;"> 1406 <@if(summary.modules && summary.modules>0){@> 1407 <@print(summary.modules)@> Modules <i class="icon ion-android-folder-open"></i> <@if(summary.sessions && summary.sessions>0 && curriculumAssetInfo){@>|<@}@> 1408 <@}@> 1409 <@if(summary.sessions && summary.sessions>0 && curriculumAssetInfo){@> 1410 <@print(summary.sessions)@> Sessions <i class="icon ion-android-laptop"></i> <@if(summary.durations && summary.durations>0 && curriculumAssetInfo){@>|<@}@> 1411 <@}@> 1412 <@if(summary.durations && summary.durations>0 && curriculumAssetInfo){@> 1413 <@print(millisecondsToHHMMSSStr(summary.durations))@> Total Time <i class="icon ion-ios-clock-outline"></i> 1414 <@}@> 1415 </p> 1416 </div> 1417 1418 1419 <@ $.each(item, function(index, value) { @> 1420 <div class="course-course-content-box" > 1421 <div class="course-content-blue-title <@if(value && value.contents){@> bg-primary <@}else if($('#'+id).closest('div.is-section').hasClass("is-bg-grey")){@>bg-white<@}else{@>is-bg-grey<@}@>" > 1422 <span class="title-icon"> 1423 <span class="material-icons <@if(value && !value.contents){@> text-primary <@}@>"><@ print(getCourseAssetIcon(value.type))@></span> 1424 </span> 1425 <div class="titl5b" > 1426 <h3 class="<@if(value && !value.contents){@> text-primary <@}@>"> 1427 <@print(value.title)@> <@ if(curriculumAssetInfo && value.type == 'pdf' && value.pages !== undefined && value.pages > 0) { @><small>(<@- value.pages @> pages)</small><@ } @> 1428 <@if(summary.sampleAvailable && summary.sampleSectionIds.includes(value.id)){@> 1429 <a href="/s/preview/courses/<@print(decodeURIComponent(summary.courseUrl).replace(/ /g,"-"))@>-<@- courseId @>#<@print(value.id)@>" class="previewBtn"><span class="<@if(value && !value.contents){@> text-primary <@}@>">Preview</span></a> 1430 <@}@> 1431 </h3> 1432 <p class="<@if(value && !value.contents){@> text-primary <@}@>"><@if(value && value.contents && curriculumAssetInfo){@> 1433 Sessions: <@print(value.contents)@> 1434 <@}@> 1435 <@if(value.moduleDurations && curriculumAssetInfo){@><@if(value && value.contents){@>|<@}@> 1436 Time: <@print(millisecondsToHHMMSSStr(value.moduleDurations))@> 1437 <@}@> 1438 <@if(value && value.contents>0){@><span class="material-icons">expand_more</span><@}@> </p> 1439 </div> 1440 </div> 1441 <@if(value && value.items){@> 1442 <@ $.each(value['items'], function(index1, value1) { @> 1443 <div class="course-content-body <@if(index==0){@>showing<@ }@>" > 1444 <div class="desc1 " > 1445 <div class="is-box-9" > 1446 <div class="boxa1" > 1447 <span class="material-icons text-primary"><@ print(getCourseAssetIcon(value1.type))@></span> 1448 <p> <@print(value1.title)@> <@ if(curriculumAssetInfo && value1.type == 'pdf' && value1.pages !== undefined && value1.pages > 0) { @><small>(<@- value1.pages @> pages)</small><@ } @> 1449 <@ if(value1.type == 'aiheading') { @><small>(coming soon)</small><@ } @> 1450 </p> 1451 1452 </div> 1453 </div> 1454 <div class="is-box-1" > 1455 <div class="boxa2" > 1456 <@if(summary.sampleAvailable && summary.sampleSectionIds.includes(value1.id)){@> 1457 <a href="/s/preview/courses/<@print(decodeURIComponent(summary.courseUrl).replace(/ /g,"-"))@>#<@print(value1.id)@>"> 1458 <@ if(value1.type == 'video') { @> Watch <@ } else {@> Preview <@ } @> 1459 </a> 1460 <@}@> 1461 </div> 1462 </div> 1463 <div class="is-box-2" > 1464 <div class="boxa2" > 1465 <p class="duration"><@if(value1.duration && curriculumAssetInfo){@><@print(millisecondsToHHMMSSStr(value1.duration))@><@}@></p> 1466 </div> 1467 </div> 1468 </div> 1469 </div> 1470 <@ }); @> 1471 <@}@> 1472 </div> 1473 <@ }); @> 1474 1475 </div> 1476</script>
1476 1477 1478 1479 1480 1481 1482<!-- Curriculum 3rd Template -->
1483<script type="text/template" id="coursecurr-3-template"> 1484 <div class="column full" spellcheck="false" data-gramm="false"> 1485 <div class="accordion-syllabus" > 1486 <@ $.each(item, function(index, value) { @> 1487 <div class="accordion-syllabus-item"> 1488 <header class="accordion-syllabus-header"> 1489 <h4 class="accordion-syllabus-header__title"> 1490 <span class="text-primary"> 1491 <@if(index<9){@> 1492 0<@print(index+1)@> 1493 <@ } else {@> 1494 <@print(index+1)@> 1495 <@ } @> 1496 </span> 1497 <p><@print(value.title)@> <span class="text-primary show-sm" style="font-size: 14px;"> 1498 <@if(value && value.items){@> 1499 <@ print(value.items.length) @> attachment(s) 1500 <@}@> 1501 <@if(value.moduleDurations && curriculumAssetInfo){@> 1502 <@if(value && value.contents){@> ⢠<@}@> 1503 <@print(millisecondsToHHMMSSStr(value.moduleDurations))@> 1504 <@}@> 1505 </span></p> 1506 1507 </h4> 1508 <div class="accordion-syllabus-header__info"> 1509 <p class="text-primary hide-sm"> 1510 <@if(value && value.items){@> 1511 <@ print(value.items.length) @> attachment(s) 1512 <@}@> 1513 <@if(value.moduleDurations && curriculumAssetInfo){@> 1514 <@if(value && value.contents){@> ⢠<@}@> 1515 <@print(millisecondsToHHMMSSStr(value.moduleDurations))@> 1516 <@}@> 1517 </p> 1518 <@if(value && value.items){@> 1519 <div class="accordion-syllabus-header__icon text-primary"> 1520 <i class="fa fa-angle-left" aria-hidden="true"></i> 1521 </div> 1522 <@}@> 1523 </div> 1524 </header> 1525 <@if(value && value.items){@> 1526 <div class="accordion-content" style=""> 1527 <div class="accordian-content-block"> 1528 <ul class="accordian-list"> 1529 <@ $.each(value['items'], function(index1, value1) { @> 1530 <li class="accordian-list__item"> 1531 <div class="accordian-content-card"> 1532 <div class="accordian-content-card__info"> 1533 <div class="accordian-content-card__ico"> 1534 <@ if(value1.type == 'code'){ @> 1535 <img src="/resources/images/CodeIcon.svg"> 1536 <@ } else { @> 1537 <span class="material-icons text-primary"> 1538 <@ print(getCourseAssetIcon(value1.type))@> 1539 </span> 1540 <@ } @> 1541 </div> 1542 <div class="accordian-content-card__title"> 1543 <@print(value1.title)@> <@ if(curriculumAssetInfo && value1.type == 'pdf' && value1.pages !== undefined && value1.pages > 0) { @><small>(<@- value1.pages @> pages)</small><@ } @> 1544 <@ if(value1.type == 'aiheading') { @><small>(coming soon)</small><@ } @> 1545 </div> 1546 </div> 1547 <div class="accordian-content-card__link"> 1548 <@if(summary.sampleAvailable && summary.sampleSectionIds.includes(value1.id)){@> 1549 <a href="/s/preview/courses/<@print(decodeURIComponent(summary.courseUrl).replace(/ /g,"-"))@>-<@- courseId @>#<@print(value1.id)@>" class="previewBtn"> 1550 <span class="text-primary"> 1551 <@ if(value1.type == 'video') { @> Watch <@ } else {@> Preview <@ } @><span style="color:#000"><i class="fa fa-solid fa-arrow-up-right"></i></span> 1552 </span> 1553 </a> 1554 <@}@> 1555 </div> 1556 </div> 1557 </li> 1558 <@ }); @> 1559 </ul> 1560 </div> 1561 </div> 1562 <@ } @> 1563 </div> 1564 <@ }); @> 1565 </div> 1566 </div> 1567</script>
1567 1568 1569 1570 1571<!-- Curriculum 4th Template -->
1572<script type="text/template" id="coursecurr-4-template"> 1573 <div class="column full coursecurr4"> 1574 <@ $.each(item, function(index, value) { @> 1575 <div class="accordion-syllabus-item"> 1576 <header class="accordion-syllabus-header" > 1577 <h4 class="accordion-syllabus-header__title"> 1578 <span> 1579 <@if(index<9){@>0<@print(index+1)@><@ } else {@> <@print(index+1)@> <@ } @> 1580 </span> 1581 <div class="accordion-syllabus-header__title-block" > 1582 <p style="font-size: 20px; font-weight: 700;"> 1583 <@print(value.title)@> 1584 </p> 1585 <p class="text-primary" style="font-weight: 500; font-size: 14px; line-height: 150%; margin-top: 10px; "> 1586 <@if(value && value.type == 'aiheading'){@> 1587 (coming soon) 1588 <@}@> 1589 <@if(value && value.items){@> 1590 <@ print(value.items.length) @> attachment(s) 1591 <@}@> 1592 <@if(value.moduleDurations && curriculumAssetInfo){@><@if(value && value.contents){@> ⢠<@}@> 1593 <@print(millisecondsToHHMMSSStr(value.moduleDurations))@> 1594 <@}@> 1595 </p> 1596 </div> 1597 </h4> 1598 <@if(value && value.items){@> 1599 <div class="accordion-syllabus-header__info" > 1600 <div class="accordion-syllabus-header__icon" > 1601 <i class="fa fa-angle-left" aria-hidden="true"></i> 1602 </div> 1603 </div> 1604 <@ } @> 1605 </header> 1606 <@if(value && value.items){@> 1607 <div class="accordion-content" style=""> 1608 <div class="accordian-content-block" > 1609 <ul class="accordian-list"> 1610 <@ $.each(value['items'], function(index1, value1) { @> 1611 <li class="accordian-list__item"> 1612 <div class="accordian-content-card" > 1613 <div class="accordian-content-card__info" > 1614 <div class="accordian-content-card__ico" > 1615 <@ if(value1.type == 'code'){ @> 1616 <img src="/resources/images/CodeIcon.svg"> 1617 <@ } else { @> 1618 <span class="material-icons text-primary"> 1619 <@ print(getCourseAssetIcon(value1.type))@>262 1620 </span> 1621 <@ } @> 1622 </div> 1623 <div class="accordian-content-card__title" > 1624 <@print(value1.title)@> <@ if(curriculumAssetInfo && value1.type == 'pdf' && value1.pages !== undefined && value1.pages > 0) { @><small>(<@- value1.pages @> pages)</small><@ } @> 1625 <@ if(value1.type == 'aiheading') { @><small>(coming soon)</small><@ } @> 1626 </div> 1627 </div> 1628 <div class="accordian-content-card__link" > 1629 <@if(summary.sampleAvailable && summary.sampleSectionIds.includes(value1.id)){@> 1630 <a href="/s/preview/courses/<@print(decodeURIComponent(summary.courseUrl).replace(/ /g,"-"))@>-<@- courseId @>#<@print(value1.id)@>" class="previewBtn"> 1631 <span class="text-primary"> 1632 <@ if(value1.type == 'video') { @> Watch <@ } else {@> Preview <@ } @> <span style="color:#000"><i class="fa fa-solid fa-arrow-up-right"></i></span> 1633 </span> 1634 </a> 1635 <@ } @> 1636 </div> 1637 </div> 1638 </li> 1639 <@ }); @> 1640 </ul> 1641 </div> 1642 </div> 1643 <@ } @> 1644 </div> 1645 <@ }); @> 1646 </div> 1647 </script>
1647 1648 1649 <!-- vegas curriculum-5--> 1650
1650<script> 1651 // Simple responsive positioning 1652 function updatePosition() { 1653 const element = document.getElementById('totalTimeElement'); 1654 if(element){ 1655 if (window.innerWidth > 768) { 1656 element.style.position = 'absolute'; 1657 element.style.top = "5px"; 1658 element.style.right = '122px'; 1659 } else { 1660 element.style.position = 'static'; 1661 element.style.margin = '0 0'; 1662 } 1663 } 1664 } 1665 1666 // Run on load and resize 1667 window.addEventListener('load', updatePosition); 1668 window.addEventListener('resize', updatePosition); 1669 </script>
1669 1670
1670<script type="text/template" id="coursecurr-5-template"> 1671 <div class="total-time" id="totalTimeElement" style=" 1672 font-size: 18px; 1673 font-weight: 600; 1674 color: #FB5607; 1675 padding: 8px 12px; 1676 border-radius: 4px; 1677 white-space: nowrap;"> 1678 <@if(summary.durations && summary.durations>0 && curriculumAssetInfo){@> 1679 <@print(millisecondsToHHMMSSStr(summary.durations))@> 1680 <@}@> 1681</div> 1682 1683<div class="accordion-syllabus" style="max-width:1000px !important"> 1684 <@ $.each(item, function(index, value) { @> 1685 <div class="accordion-syllabus-item" style="<@ if(index >= 5) { @> display: none; <@ } @>"> 1686 <header class="accordion-syllabus-header" style="background:#F5F5F5 !important; border-radius:0px;box-shadow:none;padding:0.5rem !important"> 1687 <h4 class="accordion-syllabus-header__title"> 1688 <span class="text-primary" style="font-size:18px ; font-weight:600; color:black;"> 1689 <@if(index < 9) {@> 1690 Week <@print(index + 1)@>: 1691 <@ } else {@> 1692 Week <@print(index + 1)@>: 1693 <@ } @> 1694 </span> 1695 <p style="font-size:18px ; font-weight:600;"><@print(value.title)@> <span class="text-primary show-sm" style="font-size: 14px;"> 1696 <@if(value && value.items){@> 1697 <@ print(value.items.length) @> attachment(s) 1698 <@} else {@> 1699 1 attachment(s) 1700 <@}@> 1701 <@if(value.moduleDurations && curriculumAssetInfo){@> 1702 ⢠<@print(millisecondsToHHMMSSStr(value.moduleDurations))@> 1703 <@}@> 1704 </span></p> 1705 </h4> 1706 1707 <div class="accordion-syllabus-header__info"> 1708 <p class="text-primary hide-sm" style="color:#FB5607 !important;"> 1709 <@if(value && value.items){@> 1710 <@ print(value.items.length) @> attachment(s) 1711 <@} else {@> 1712 1 attachment(s) 1713 <@}@> 1714 <@if(value.moduleDurations && curriculumAssetInfo){@> 1715 ⢠<@print(millisecondsToHHMMSSStr(value.moduleDurations))@> 1716 <@}@> 1717 </p> 1718 <div class="accordion-syllabus-header__icon text-primary"> 1719 <i class="fa fa-angle-left" aria-hidden="true" style="color:#FB5607;"></i> 1720 </div> 1721 </div> 1722 </header> 1723 <div class="accordion-content" style="filter:none;"> 1724 <div class="accordian-content-block" style="background:#F5F5F5 !important;box-shadow:none;padding:16px 66px 3px 69px !important;"> 1725 <ul class="accordian-list"> 1726 <@ var itemsCount = value['items'] ? value['items'].length : 0; @> 1727 <@ if(value['items'] && value['items'].length > 0) { @> 1728 <@ $.each(value['items'], function(index1, value1) { @> 1729 <li class="accordian-list__item" style="padding:0px 0px !important;<@ if(index1 >= 5) { @> display: none; <@ } @>"> 1730 <style> 1731 @media (max-width: 768px) { 1732 .accordian-content-card { 1733 flex-direction: column !important; 1734 align-items: stretch !important; 1735 } 1736 1737 .accordian-content-card__top { 1738 flex-direction: row !important; 1739 justify-content: space-between !important; 1740 align-items: center !important; 1741 width: 100% !important; 1742 } 1743 1744 .accordian-content-card__title { 1745 flex: 1 !important; 1746 margin: 0 10px !important; 1747 white-space: nowrap; 1748 overflow: hidden; 1749 text-overflow: ellipsis; 1750 } 1751 1752 .accordian-content-card__bottom { 1753 flex-direction: row !important; 1754 justify-content: space-between !important; 1755 align-items: center !important; 1756 width: 100% !important; 1757 margin-top: 6px !important; 1758 } 1759 1760 .accordian-content-card__link { 1761 flex: 1 !important; 1762 min-width: 0 !important; 1763 text-align: left !important; 1764 } 1765 1766 .accordian-content-card__time { 1767 flex-shrink: 0 !important; 1768 text-align: right !important; 1769 } 1770 } 1771 </style> 1772 1773 <div class="accordian-content-card" 1774 style="display: flex; flex-wrap: nowrap; align-items: center; justify-content: space-between; padding: 10px 0; width: 100%; box-sizing: border-box; border-bottom: 1px solid #eee;"> 1775 1776 1777 <!-- Row 1: Icon + Title + Collapse Icon --> 1778 <div class="accordian-content-card__top" 1779 style="display: flex; align-items: center; justify-content: space-between; width: 100%;"> 1780 1781 <!-- Icon --> 1782 <div class="accordian-content-card__ico" style="flex-shrink: 0;"> 1783 <@ if(value1.type == 'code'){ @> 1784 <img src="/resources/images/CodeIcon.svg" style="width: 24px; height: 24px;"> 1785 <@ } else { @>
1786 <span class="material-icons text-primary" style="color:#FB5607; font-size: 24px;"> 1787 <@ print(getCourseAssetIcon(value1.type))@> 1788 </span> 1789 <@ } @> 1790 </div> 1791 1792 <!-- Title --> 1793 <div class="accordian-content-card__title" 1794 style="font-weight: 400; font-size: 14px; color: #333; margin: 0 10px; flex: 1; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;"> 1795 <@print(value1.title)@> 1796 </div> 1797 1798 <!-- Collapse Icon (optional) --> 1799 <div class="accordian-content-card__collapse" style="flex-shrink: 0;"> 1800 <!-- Example placeholder, add real icon if needed --> 1801 <!-- <i class="fa fa-chevron-down" style="font-size: 16px;"></i> --> 1802 </div> 1803 </div> 1804 1805 <!-- Row 2: Preview Button and Time --> 1806 <div class="accordian-content-card__bottom" 1807 style="display: flex; justify-content: space-between; align-items: center; width: 100%; margin-top: 6px; flex-wrap: nowrap;"> 1808 1809 <!-- Preview Button --> 1810 <div class="accordian-content-card__link" style="flex: 1; min-width: 0; text-align: left;"> 1811 <@if(summary.sampleAvailable && summary.sampleSectionIds.includes(value1.id)){@> 1812 <a href="/s/preview/courses/<@print(decodeURIComponent(summary.courseUrl).replace(/ /g,'-'))@>-<@- courseId @>#<@print(value1.id)@>" 1813 class="previewBtn" 1814 style="font-size: 14px; font-weight: 500; text-decoration: none; color: #FB5607; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; display: inline-block;"> 1815 <span class="text-primary" style="color:#FB5607;"> 1816 <@ if(value1.type == 'video') { @> Watch <@ } else {@> Preview <@ } @> 1817 <span style="color:#000"><i class="fa fa-solid fa-arrow-up-right" style="color:#FB5607;"></i></span> 1818 </span> 1819 </a> 1820 <@}@> 1821 </div> 1822 1823 <!-- Time --> 1824 <div class="accordian-content-card__time" style="flex-shrink: 0; text-align: right;"> 1825 <p class="text-primary course-asset-time" 1826 style="font-size: 14px; font-weight: 500; color:#FB5607 !important; margin: 0;"> 1827 <@ if(value1.duration && value1.duration > 0) { @> 1828 <@ print(millisecondsToHHMMSSStr(value1.duration)) @> 1829 <@ } else { @> 1830 -- 1831 <@ } @> 1832 </p> 1833 </div> 1834 1835 </div> 1836 </div> 1837 1838 1839 </li> 1840 <@ }); @> 1841 <@ } else { @> 1842 <li class="accordian-list__item" style="padding:0px 0px !important;"> 1843 <div class="accordian-content-card" 1844 style="display: flex; flex-wrap: nowrap; align-items: center; justify-content: space-between; padding: 10px 0; width: 100%; box-sizing: border-box; border-bottom: 1px solid #eee;"> 1845 1846 <!-- Row 1: Icon + Title + Collapse Icon --> 1847 <div class="accordian-content-card__top" 1848 style="display: flex; align-items: center; justify-content: space-between; width: 100%;"> 1849 1850 <!-- Icon --> 1851 <div class="accordian-content-card__ico" style="flex-shrink: 0;"> 1852 <@ if(value.type == 'code'){ @> 1853 <img src="/resources/images/CodeIcon.svg" style="width: 24px; height: 24px;"> 1854 <@ } else { @> 1855 <span class="material-icons text-primary" style="color:#FB5607; font-size: 24px;"> 1856 <@ print(getCourseAssetIcon(value.type))@> 1857 </span> 1858 <@ } @> 1859 </div> 1860 1861 <!-- Title --> 1862 <div class="accordian-content-card__title" 1863 style="font-weight: 400; font-size: 14px; color: #333; margin: 0 10px; flex: 1; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;"> 1864 <@print(value.title)@> 1865 </div> 1866 1867 <!-- Collapse Icon (optional) --> 1868 <div class="accordian-content-card__collapse" style="flex-shrink: 0;"> 1869 <!-- Example placeholder, add real icon if needed --> 1870 <!-- <i class="fa fa-chevron-down" style="font-size: 16px;"></i> --> 1871 </div> 1872 </div> 1873 1874 <!-- Row 2: Preview Button and Time --> 1875 <div class="accordian-content-card__bottom" 1876 style="display: flex; justify-content: space-between; align-items: center; width: 100%; margin-top: 6px; flex-wrap: nowrap;"> 1877 1878 <!-- Preview Button --> 1879 <div class="accordian-content-card__link" style="flex: 1; min-width: 0; text-align: left;"> 1880 <@if(summary.sampleAvailable && summary.sampleSectionIds.includes(value.id)){@> 1881 <a href="/s/preview/courses/<@print(decodeURIComponent(summary.courseUrl).replace(/ /g,'-'))@>-<@- courseId @>#<@print(value.id)@>" 1882 class="previewBtn" 1883 style="font-size: 14px; font-weight: 500; text-decoration: none; color: #FB5607; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; display: inline-block;">
1884 <span class="text-primary" style="color:#FB5607;"> 1885 <@ if(value.type == 'video') { @> Watch <@ } else {@> Preview <@ } @> 1886 <span style="color:#000"><i class="fa fa-solid fa-arrow-up-right" style="color:#FB5607;"></i></span> 1887 </span> 1888 </a> 1889 <@}@> 1890 </div> 1891 1892 <!-- Time --> 1893 <div class="accordian-content-card__time" style="flex-shrink: 0; text-align: right;"> 1894 <p class="text-primary course-asset-time" 1895 style="font-size: 14px; font-weight: 500; color:#FB5607 !important; margin: 0;"> 1896 <@ if(value.duration && value.duration > 0) { @> 1897 <@ print(millisecondsToHHMMSSStr(value.duration)) @> 1898 <@ } else { @> 1899 -- 1900 <@ } @> 1901 </p> 1902 </div> 1903 </div> 1904 </div> 1905 </li> 1906 <@ } @> 1907 </ul> 1908 1909 <@ if(itemsCount > 5) { @> 1910 <div style="text-align: center; margin-top: 10px;"> 1911 <button style="background-color: #FB5607; color: white; padding: 4px 28px; border: none; cursor: pointer; font-size: 16px; border-radius: 24px;" 1912 onclick=" 1913 var parentAccordion = this.closest('.accordion-content'); 1914 parentAccordion.style.maxHeight = 'none'; 1915 this.closest('.accordian-content-block').querySelectorAll('.accordian-list__item').forEach(el => el.style.display = 'block'); 1916 this.style.display = 'none'; 1917 "> 1918 View All 1919 </button> 1920 </div> 1921 <@ } @> 1922 </div> 1923 </div> 1924 </div> 1925 <@ }); @> 1926 <@ if(item.length > 5) { @> 1927 <div style="text-align: center; margin-top: 10px;margin-bottom: 20px;"> 1928 <button style="background-color: #FB5607; color: white; padding: 8px 32px; border: none; cursor: pointer; font-size: 16px; border-radius: 24px;" 1929 onclick="document.querySelectorAll('.accordion-syllabus-item').forEach(el => el.style.display = 'block'); this.style.display = 'none';"> 1930 View All Sessions 1931 </button> 1932 </div> 1933 <@ } @> 1934</div> 1935 </div> 1936</script>
1936 1937 1938 1939<!--Blaze-Curriculum-6-->
1940<script type="text/template" id="coursecurr-6-template"> 1941 <div class="column full" spellcheck="false" data-gramm="false"> 1942 <div class="total-time" id="totalTimeElement" style=" 1943 font-size: 18px; 1944 font-weight: 600; 1945 color: #D8FD46; 1946 padding: 8px 12px; 1947 border-radius: 4px; 1948 white-space: nowrap; 1949 background: #232323; 1950 margin-bottom: 20px;"> 1951 <@if(summary.durations && summary.durations>0 && curriculumAssetInfo){@> 1952 <@print(millisecondsToHHMMSSStr(summary.durations))@> 1953 <@}@> 1954 </div> 1955 1956 <div class="accordion-syllabus"> 1957 <@ $.each(item, function(index, value) { @> 1958 <div class="accordion-syllabus-item" style="<@ if(index >= 5) { @> display: none; <@ } @>"> 1959 <header class="accordion-syllabus-header" style="background:#232323 !important; border-radius:0px;box-shadow:none;padding:20px 20px !important"> 1960 <h4 class="accordion-syllabus-header__title"> 1961 <span class="text-primary" style="font-size:18px ; font-weight:600; color:white;"> 1962 <@if(index < 9) {@> 1963 Week <@print(index + 1)@>: 1964 <@ } else {@> 1965 Week <@print(index + 1)@>: 1966 <@ } @> 1967 </span> 1968 <p style="font-size:18px ; font-weight:600;color:white;"><@print(value.title)@> <span class="text-primary show-sm" style="font-size: 14px;color:#D8FD46 !important;"> 1969 <@if(value && value.items){@> 1970 <@ print(value.items.length) @> attachment(s) 1971 <@} else {@> 1972 1 attachment(s) 1973 <@}@> 1974 <@if(value.moduleDurations && curriculumAssetInfo){@> 1975 ⢠<@print(millisecondsToHHMMSSStr(value.moduleDurations))@> 1976 <@}@> 1977 </span></p> 1978 </h4> 1979 <div class="accordion-syllabus-header__info"> 1980 <p class="text-primary hide-sm" style="color:#D8FD46 !important;"> 1981 <@if(value && value.items){@> 1982 <@ print(value.items.length) @> attachment(s) 1983 <@} else {@> 1984 1 attachment(s) 1985 <@}@> 1986 <@if(value.moduleDurations && curriculumAssetInfo){@> 1987 ⢠<@print(millisecondsToHHMMSSStr(value.moduleDurations))@> 1988 <@}@> 1989 </p> 1990 <div class="accordion-syllabus-header__icon text-primary"> 1991 <i class="fa fa-angle-left" aria-hidden="true" style="color:#D8FD46;"></i> 1992 </div> 1993 </div> 1994 </header> 1995 <div class="accordion-content" style="filter:none;background:#181818;"> 1996 <div class="accordian-content-block" style="box-shadow:none;padding:16px 20px !important;background:transparent !important;"> 1997 <ul class="accordian-list"> 1998 <@ var itemsCount = value['items'] ? value['items'].length : 0; @> 1999 <@ if(value['items'] && value['items'].length > 0) { @> 2000 <@ $.each(value['items'], function(index1, value1) { @> 2001 <li class="accordian-list__item" style="padding:0px 0px !important;<@ if(index1 >= 5) { @> display: none; <@ } @>"> 2002 <style> 2003 @media (max-width: 768px) { 2004 .accordian-content-card { 2005 flex-direction: column !important; 2006 align-items: stretch !important; 2007 } 2008 2009 .accordian-content-card__top { 2010 flex-direction: row !important; 2011 justify-content: space-between !important; 2012 align-items: center !important; 2013 width: 100% !important; 2014 } 2015 2016 .accordian-content-card__title { 2017 flex: 1 !important; 2018 margin: 0 10px !important; 2019 white-space: nowrap; 2020 overflow: hidden; 2021 text-overflow: ellipsis; 2022 } 2023 2024 .accordian-content-card__bottom { 2025 flex-direction: row !important; 2026 justify-content: space-between !important; 2027 align-items: center !important; 2028 width: 100% !important; 2029 margin-top: 6px !important; 2030 } 2031 2032 .accordian-content-card__link { 2033 flex: 1 !important; 2034 min-width: 0 !important; 2035 text-align: left !important; 2036 } 2037 2038 .accordian-content-card__time { 2039 flex-shrink: 0 !important; 2040 text-align: right !important; 2041 } 2042 } 2043 </style> 2044 2045 <div class="accordian-content-card" 2046 style="display: flex; flex-wrap: nowrap; align-items: center; justify-content: space-between; padding: 10px 0; width: 100%; box-sizing: border-box; "> 2047 2048 <!-- Row 1: Icon + Title + Collapse Icon --> 2049 <div class="accordian-content-card__top" 2050 style="display: flex; align-items: center; justify-content: space-between; width: 100%;"> 2051 2052 <!-- Icon --> 2053 <div class="accordian-content-card__ico" style="flex-shrink: 0;"> 2054 <@ if(value1.type == 'code'){ @> 2055 <img src="/resources/images/CodeIcon.svg" style="width: 24px; height: 24px; filter: invert(1);"> 2056 <@ } else { @>
2057 <span class="material-icons text-primary" style="color:#D8FD46; font-size: 24px;"> 2058 <@ print(getCourseAssetIcon(value1.type))@> 2059 </span> 2060 <@ } @> 2061 </div> 2062 2063 <!-- Title --> 2064 <div class="accordian-content-card__title" 2065 style="font-weight: 400; font-size: 14px; color: white; margin: 0 10px; flex: 1; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;"> 2066 <@print(value1.title)@> 2067 <!-- <@ if(curriculumAssetInfo && value1.type == 'pdf' && value1.pages !== undefined && value1.pages > 0) { @> 2068 <small style="color: #999;">(<@- value1.pages @> pages)</small> 2069 <@ } @> 2070 <@ if(value1.type == 'aiheading') { @> 2071 <small style="color: #999;">(coming soon)</small> 2072 <@ } @> --> 2073 </div> 2074 2075 <!-- Collapse Icon --> 2076 <div class="accordian-content-card__collapse" style="flex-shrink: 0;"> 2077 </div> 2078 </div> 2079 2080 <!-- Row 2: Preview Button and Time --> 2081 <div class="accordian-content-card__bottom" 2082 style="display: flex; justify-content: space-between; align-items: center; width: 100%; margin-top: 6px; flex-wrap: nowrap;"> 2083 2084 <!-- Preview Button --> 2085 <div class="accordian-content-card__link" style="flex: 1; min-width: 0; text-align: left;"> 2086 <@if(summary.sampleAvailable && summary.sampleSectionIds.includes(value1.id)){@> 2087 <a href="/s/preview/courses/<@print(decodeURIComponent(summary.courseUrl).replace(/ /g,'-'))@>-<@- courseId @>#<@print(value1.id)@>" 2088 class="previewBtn" 2089 style="font-size: 14px; font-weight: 500; text-decoration: none; color: #D8FD46 !important; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; display: inline-block;"> 2090 <span class="text-primary" style="color:#D8FD46;"> 2091 <@ if(value1.type == 'video') { @> Watch <@ } else {@> Preview <@ } @> 2092 <span style="color:#000"><i class="fa fa-solid fa-arrow-up-right" style="color:#D8FD46;"></i></span> 2093 </span> 2094 </a> 2095 <@}@> 2096 </div> 2097 2098 <!-- Time --> 2099 <div class="accordian-content-card__time" style="flex-shrink: 0; text-align: right;"> 2100 <p class="text-primary course-asset-time" 2101 style="font-size: 14px; font-weight: 500; color:#D8FD46 !important; margin: 0;"> 2102 <@ if(value1.duration && value1.duration > 0) { @> 2103 <@ print(millisecondsToHHMMSSStr(value1.duration)) @> 2104 <@ } else { @> 2105 -- 2106 <@ } @> 2107 </p> 2108 </div> 2109 </div> 2110 </div> 2111 </li> 2112 <@ }); @> 2113 <@ } else { @> 2114 <li class="accordian-list__item" style="padding:0px 0px !important;"> 2115 <div class="accordian-content-card" 2116 style="display: flex; flex-wrap: nowrap; align-items: center; justify-content: space-between; padding: 10px 0; width: 100%; box-sizing: border-box; "> 2117 2118 <!-- Row 1: Icon + Title + Collapse Icon --> 2119 <div class="accordian-content-card__top" 2120 style="display: flex; align-items: center; justify-content: space-between; width: 100%;"> 2121 2122 <!-- Icon --> 2123 <div class="accordian-content-card__ico" style="flex-shrink: 0;"> 2124 <@ if(value.type == 'code'){ @> 2125 <img src="/resources/images/CodeIcon.svg" style="width: 24px; height: 24px; filter: invert(1);"> 2126 <@ } else { @> 2127 <span class="material-icons text-primary" style="color:#D8FD46; font-size: 24px;"> 2128 <@ print(getCourseAssetIcon(value.type))@> 2129 </span> 2130 <@ } @> 2131 </div> 2132 2133 <!-- Title --> 2134 <div class="accordian-content-card__title" 2135 style="font-weight: 400; font-size: 14px; color: white; margin: 0 10px; flex: 1; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;"> 2136 <@print(value.title)@> 2137 </div> 2138 2139 <!-- Collapse Icon (optional) --> 2140 <div class="accordian-content-card__collapse" style="flex-shrink: 0;"> 2141 <!-- Example placeholder, add real icon if needed --> 2142 <!-- <i class="fa fa-chevron-down" style="font-size: 16px;"></i> --> 2143 </div> 2144 </div> 2145 2146 <!-- Row 2: Preview Button and Time --> 2147 <div class="accordian-content-card__bottom" 2148 style="display: flex; justify-content: space-between; align-items: center; width: 100%; margin-top: 6px; flex-wrap: nowrap;"> 2149 2150 <!-- Preview Button --> 2151 <div class="accordian-content-card__link" style="flex: 1; min-width: 0; text-align: left;"> 2152 <@if(summary.sampleAvailable && summary.sampleSectionIds.includes(value.id)){@> 2153 <a href="/s/preview/courses/<@print(decodeURIComponent(summary.courseUrl).replace(/ /g,'-'))@>-<@- courseId @>#<@print(value.id)@>" 2154 class="previewBtn" 2155 style="font-size: 14px; font-weight: 500; text-decoration: none; color: #D8FD46 !important; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; display: inline-block;"> 2156 <span class="text-primary" style="color:#D8FD46;"> 2157 <@ if(value.type == 'video') { @> Watch <@ } else {@> Preview <@ } @> 2158 <span style="color:#000"><i class="fa fa-solid fa-arrow-up-right" style="color:#D8FD46;"></i></span> 2159 </span> 2160 </a> 2161 <@}@> 2162 </div> 2163 2164 <!-- Time --> 2165 <div class="accordian-content-card__time" style="flex-shrink: 0; text-align: right;"> 2166 <p class="text-primary course-asset-time" 2167 style="font-size: 14px; font-weight: 500; color:#D8FD46 !important; margin: 0;"> 2168 <@ if(value.duration && value.duration > 0) { @> 2169 <@ print(millisecondsToHHMMSSStr(value.duration)) @> 2170 <@ } else { @> 2171 -- 2172 <@ } @> 2173 </p> 2174 </div> 2175 </div> 2176 </div> 2177 </li> 2178 <@ } @> 2179 </ul> 2180 2181 <@ if(itemsCount > 5) { @> 2182 <div style="text-align: center; margin-top: 10px;"> 2183 <button style="background-color: #D8FD46; color: black; padding: 4px 28px; border: none; cursor: pointer; font-size: 16px; border-radius: 0px;" 2184 onclick=" 2185 var parentAccordion = this.closest('.accordion-content'); 2186 parentAccordion.style.maxHeight = 'none'; 2187 this.closest('.accordian-content-block').querySelectorAll('.accordian-list__item').forEach(el => el.style.display = 'block'); 2188 this.style.display = 'none'; 2189 "> 2190 View All 2191 </button> 2192 </div> 2193 <@ } @> 2194 </div> 2195 </div> 2196 </div> 2197 <@ }); @> 2198 <@ if(item.length > 5) { @> 2199 <div style="text-align: center; margin-top: 10px;margin-bottom: 20px;"> 2200 <button style="background-color: #D8FD46; color: black; padding: 8px 32px; border: none; cursor: pointer; font-size: 16px; border-radius: 0px;" 2201 onclick="document.querySelectorAll('.accordion-syllabus-item').forEach(el => el.style.display = 'block'); this.style.display = 'none';"> 2202 View All Sessions 2203 </button> 2204 </div> 2205 <@ } @> 2206 </div> 2207 </div> 2208</script>
2208 2209
2210<script> 2211 // Simple responsive positioning (same as Vegas) 2212 function updatePosition() { 2213 const element = document.getElementById('totalTimeElement'); 2214 if(element){ 2215 if (window.innerWidth > 768) { 2216 element.style.position = 'absolute'; 2217 element.style.top = "5px"; 2218 element.style.right = '122px'; 2219 } else { 2220 element.style.position = 'static'; 2221 element.style.margin = '0 0'; 2222 } 2223 } 2224 } 2225 2226 // Run on load and resize 2227 window.addEventListener('load', updatePosition); 2228 window.addEventListener('resize', updatePosition); 2229</script>
2229 2230 2231 2232 2233 2234<!--Nebula Curriculum 7--> 2235 2236
2237<script> 2238 // Simple responsive positioning 2239 function updatePosition() { 2240 const element = document.getElementById('totalTimeElement'); 2241 if(element){ 2242 if (window.innerWidth > 768) { 2243 element.style.position = 'absolute'; 2244 element.style.top = "5px"; 2245 element.style.right = '122px'; 2246 } else { 2247 element.style.position = 'static'; 2248 element.style.margin = '0 0'; 2249 } 2250 } 2251 } 2252 2253 // Run on load and resize 2254 window.addEventListener('load', updatePosition); 2255 window.addEventListener('resize', updatePosition); 2256 </script>
2256 2257
2257<script type="text/template" id="coursecurr-7-template"> 2258 <div class="total-time" id="totalTimeElement" style=" 2259 font-size: 18px; 2260 font-weight: 600; 2261 color: #6715FF; 2262 padding: 8px 12px; 2263 border-radius: 4px; 2264 white-space: nowrap;"> 2265 <@if(summary.durations && summary.durations>0 && curriculumAssetInfo){@> 2266 <@print(millisecondsToHHMMSSStr(summary.durations))@> 2267 <@}@> 2268</div> 2269 2270<div class="accordion-syllabus" style="max-width:1000px !important"> 2271 <@ $.each(item, function(index, value) { @> 2272 <div class="accordion-syllabus-item" style="<@ if(index >= 5) { @> display: none; <@ } @>"> 2273 <header class="accordion-syllabus-header" style="background:#F1ECFB !important; border-radius16px;box-shadow:none;padding:20px !important"> 2274 <h4 class="accordion-syllabus-header__title"> 2275 <span class="text-primary" style="font-size:18px ; font-weight:600; color:black;"> 2276 <@if(index < 9) {@> 2277 Week <@print(index + 1)@>: 2278 <@ } else {@> 2279 Week <@print(index + 1)@>: 2280 <@ } @> 2281 </span> 2282 <p style="font-size:18px ; font-weight:600;"><@print(value.title)@> <span class="text-primary show-sm" style="font-size: 14px;"> 2283 <@if(value && value.items){@> 2284 <@ print(value.items.length) @> attachment(s) 2285 <@} else {@> 2286 1 attachment(s) 2287 <@}@> 2288 <@if(value.moduleDurations && curriculumAssetInfo){@> 2289 ⢠<@print(millisecondsToHHMMSSStr(value.moduleDurations))@> 2290 <@}@> 2291 </span></p> 2292 </h4> 2293 2294 <div class="accordion-syllabus-header__info"> 2295 <p class="text-primary hide-sm" style="color:#6715FF !important;"> 2296 <@if(value && value.items){@> 2297 <@ print(value.items.length) @> attachment(s) 2298 <@} else {@> 2299 1 attachment(s) 2300 <@}@> 2301 <@if(value.moduleDurations && curriculumAssetInfo){@> 2302 ⢠<@print(millisecondsToHHMMSSStr(value.moduleDurations))@> 2303 <@}@> 2304 </p> 2305 <div class="accordion-syllabus-header__icon text-primary"> 2306 <i class="fa fa-angle-left" aria-hidden="true" style="color:#6715FF;"></i> 2307 </div> 2308 </div> 2309 </header> 2310 <div class="accordion-content" style="filter:none;background:transparent !important;"> 2311 <div class="accordian-content-block" style="background:transparent !important;box-shadow:none;padding:16px 66px 3px 69px !important;"> 2312 <ul class="accordian-list"> 2313 <@ var itemsCount = value['items'] ? value['items'].length : 0; @> 2314 <@ if(value['items'] && value['items'].length > 0) { @> 2315 <@ $.each(value['items'], function(index1, value1) { @> 2316 <li class="accordian-list__item" style="padding:0px 0px !important;<@ if(index1 >= 5) { @> display: none; <@ } @>"> 2317 <style> 2318 @media (max-width: 768px) { 2319 .accordian-content-card { 2320 flex-direction: column !important; 2321 align-items: stretch !important; 2322 } 2323 2324 .accordian-content-card__top { 2325 flex-direction: row !important; 2326 justify-content: space-between !important; 2327 align-items: center !important; 2328 width: 100% !important; 2329 } 2330 2331 .accordian-content-card__title { 2332 flex: 1 !important; 2333 margin: 0 10px !important; 2334 white-space: nowrap; 2335 overflow: hidden; 2336 text-overflow: ellipsis; 2337 } 2338 2339 .accordian-content-card__bottom { 2340 flex-direction: row !important; 2341 justify-content: space-between !important; 2342 align-items: center !important; 2343 width: 100% !important; 2344 margin-top: 6px !important; 2345 } 2346 2347 .accordian-content-card__link { 2348 flex: 1 !important; 2349 min-width: 0 !important; 2350 text-align: left !important; 2351 } 2352 2353 .accordian-content-card__time { 2354 flex-shrink: 0 !important; 2355 text-align: right !important; 2356 } 2357 } 2358 </style> 2359 2360 <div class="accordian-content-card" 2361 style="display: flex; flex-wrap: nowrap; align-items: center; justify-content: space-between; padding: 10px 0; width: 100%; box-sizing: border-box; border-bottom: 1px solid #eee;"> 2362 2363 2364 <!-- Row 1: Icon + Title + Collapse Icon --> 2365 <div class="accordian-content-card__top" 2366 style="display: flex; align-items: center; justify-content: space-between; width: 100%;"> 2367 2368 <!-- Icon --> 2369 <div class="accordian-content-card__ico" style="flex-shrink: 0;"> 2370 <@ if(value1.type == 'code'){ @> 2371 <img src="/resources/images/CodeIcon.svg" style="width: 24px; height: 24px;"> 2372 <@ } else { @>
2373 <span class="material-icons text-primary" style="color:#6715FF; font-size: 24px;"> 2374 <@ print(getCourseAssetIcon(value1.type))@> 2375 </span> 2376 <@ } @> 2377 </div> 2378 2379 <!-- Title --> 2380 <div class="accordian-content-card__title" 2381 style="font-weight: 400; font-size: 14px; color: #333; margin: 0 10px; flex: 1; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;"> 2382 <@print(value1.title)@> 2383 </div> 2384 2385 <!-- Collapse Icon (optional) --> 2386 <div class="accordian-content-card__collapse" style="flex-shrink: 0;"> 2387 <!-- Example placeholder, add real icon if needed --> 2388 <!-- <i class="fa fa-chevron-down" style="font-size: 16px;"></i> --> 2389 </div> 2390 </div> 2391 2392 <!-- Row 2: Preview Button and Time --> 2393 <div class="accordian-content-card__bottom" 2394 style="display: flex; justify-content: space-between; align-items: center; width: 100%; margin-top: 6px; flex-wrap: nowrap;"> 2395 2396 <!-- Preview Button --> 2397 <div class="accordian-content-card__link" style="flex: 1; min-width: 0; text-align: left;"> 2398 <@if(summary.sampleAvailable && summary.sampleSectionIds.includes(value1.id)){@> 2399 <a href="/s/preview/courses/<@print(decodeURIComponent(summary.courseUrl).replace(/ /g,'-'))@>-<@- courseId @>#<@print(value1.id)@>" 2400 class="previewBtn" 2401 style="font-size: 14px; font-weight: 500; text-decoration: none; color: #6715FF; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; display: inline-block;"> 2402 <span class="text-primary" style="color:#6715FF;"> 2403 <@ if(value1.type == 'video') { @> Watch <@ } else {@> Preview <@ } @> 2404 <span style="color:#000"><i class="fa fa-solid fa-arrow-up-right" style="color:#6715FF;"></i></span> 2405 </span> 2406 </a> 2407 <@}@> 2408 </div> 2409 2410 <!-- Time --> 2411 <div class="accordian-content-card__time" style="flex-shrink: 0; text-align: right;"> 2412 <p class="text-primary course-asset-time" 2413 style="font-size: 14px; font-weight: 500; color:#6715FF !important; margin: 0;"> 2414 <@ if(value1.duration && value1.duration > 0) { @> 2415 <@ print(millisecondsToHHMMSSStr(value1.duration)) @> 2416 <@ } else { @> 2417 -- 2418 <@ } @> 2419 </p> 2420 </div> 2421 2422 </div> 2423 </div> 2424 2425 2426 </li> 2427 <@ }); @> 2428 <@ } else { @> 2429 <li class="accordian-list__item" style="padding:0px 0px !important;"> 2430 <div class="accordian-content-card" 2431 style="display: flex; flex-wrap: nowrap; align-items: center; justify-content: space-between; padding: 10px 0; width: 100%; box-sizing: border-box; border-bottom: 1px solid #eee;"> 2432 2433 <!-- Row 1: Icon + Title + Collapse Icon --> 2434 <div class="accordian-content-card__top" 2435 style="display: flex; align-items: center; justify-content: space-between; width: 100%;"> 2436 2437 <!-- Icon --> 2438 <div class="accordian-content-card__ico" style="flex-shrink: 0;"> 2439 <@ if(value.type == 'code'){ @> 2440 <img src="/resources/images/CodeIcon.svg" style="width: 24px; height: 24px;"> 2441 <@ } else { @> 2442 <span class="material-icons text-primary" style="color:#6715FF; font-size: 24px;"> 2443 <@ print(getCourseAssetIcon(value.type))@> 2444 </span> 2445 <@ } @> 2446 </div> 2447 2448 <!-- Title --> 2449 <div class="accordian-content-card__title" 2450 style="font-weight: 400; font-size: 14px; color: #333; margin: 0 10px; flex: 1; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;"> 2451 <@print(value.title)@> 2452 </div> 2453 2454 <!-- Collapse Icon (optional) --> 2455 <div class="accordian-content-card__collapse" style="flex-shrink: 0;"> 2456 <!-- Example placeholder, add real icon if needed --> 2457 <!-- <i class="fa fa-chevron-down" style="font-size: 16px;"></i> --> 2458 </div> 2459 </div> 2460 2461 <!-- Row 2: Preview Button and Time --> 2462 <div class="accordian-content-card__bottom" 2463 style="display: flex; justify-content: space-between; align-items: center; width: 100%; margin-top: 6px; flex-wrap: nowrap;"> 2464 2465 <!-- Preview Button --> 2466 <div class="accordian-content-card__link" style="flex: 1; min-width: 0; text-align: left;"> 2467 <@if(summary.sampleAvailable && summary.sampleSectionIds.includes(value.id)){@> 2468 <a href="/s/preview/courses/<@print(decodeURIComponent(summary.courseUrl).replace(/ /g,'-'))@>-<@- courseId @>#<@print(value.id)@>" 2469 class="previewBtn" 2470 style="font-size: 14px; font-weight: 500; text-decoration: none; color: #6715FF; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; display: inline-block;">
2471 <span class="text-primary" style="color:#6715FF;"> 2472 <@ if(value.type == 'video') { @> Watch <@ } else {@> Preview <@ } @> 2473 <span style="color:#000"><i class="fa fa-solid fa-arrow-up-right" style="color:#6715FF;"></i></span> 2474 </span> 2475 </a> 2476 <@}@> 2477 </div> 2478 2479 <!-- Time --> 2480 <div class="accordian-content-card__time" style="flex-shrink: 0; text-align: right;"> 2481 <p class="text-primary course-asset-time" 2482 style="font-size: 14px; font-weight: 500; color:#6715FF !important; margin: 0;"> 2483 <@ if(value.duration && value.duration > 0) { @> 2484 <@ print(millisecondsToHHMMSSStr(value.duration)) @> 2485 <@ } else { @> 2486 -- 2487 <@ } @> 2488 </p> 2489 </div> 2490 </div> 2491 </div> 2492 </li> 2493 <@ } @> 2494 </ul> 2495 2496 <@ if(itemsCount > 5) { @> 2497 <div style="text-align: center; margin-top: 10px;"> 2498 <button style="background-color: #6715FF; color: white; padding: 4px 28px; border: none; cursor: pointer; font-size: 16px; border-radius: 24px;" 2499 onclick=" 2500 var parentAccordion = this.closest('.accordion-content'); 2501 parentAccordion.style.maxHeight = 'none'; 2502 this.closest('.accordian-content-block').querySelectorAll('.accordian-list__item').forEach(el => el.style.display = 'block'); 2503 this.style.display = 'none'; 2504 "> 2505 View All 2506 </button> 2507 </div> 2508 <@ } @> 2509 </div> 2510 </div> 2511 </div> 2512 <@ }); @> 2513 <@ if(item.length > 5) { @> 2514 <div style="text-align: center; margin-top: 10px;margin-bottom: 20px;"> 2515 <button style="background-color: #6715FF; color: white; padding: 8px 32px; border: none; cursor: pointer; font-size: 16px; border-radius: 24px;" 2516 onclick="document.querySelectorAll('.accordion-syllabus-item').forEach(el => el.style.display = 'block'); this.style.display = 'none';"> 2517 View All Sessions 2518 </button> 2519 </div> 2520 <@ } @> 2521</div> 2522 </div> 2523</script>
2523 2524 2525 2526 2527<!--Olive Curriculum 8-->
2528<script> 2529 // Simple responsive positioning 2530 function updatePosition() { 2531 const element = document.getElementById('totalTimeElement'); 2532 if(element){ 2533 if (window.innerWidth > 768) { 2534 element.style.position = 'absolute'; 2535 element.style.top = "5px"; 2536 element.style.right = '122px'; 2537 } else { 2538 element.style.position = 'static'; 2539 element.style.margin = '0 0'; 2540 } 2541 } 2542 } 2543 2544 // Run on load and resize 2545 window.addEventListener('load', updatePosition); 2546 window.addEventListener('resize', updatePosition); 2547 </script>
2547 2548
2548<script type="text/template" id="coursecurr-8-template"> 2549 <div class="total-time" id="totalTimeElement" style=" 2550 font-size: 18px; 2551 font-weight: 600; 2552 color: #064400; 2553 padding: 8px 12px; 2554 border-radius: 4px; 2555 white-space: nowrap;"> 2556 <@if(summary.durations && summary.durations>0 && curriculumAssetInfo){@> 2557 <@print(millisecondsToHHMMSSStr(summary.durations))@> 2558 <@}@> 2559</div> 2560 2561<div class="accordion-syllabus" style="max-width:1000px !important"> 2562 <@ $.each(item, function(index, value) { @> 2563 <div class="accordion-syllabus-item" style="<@ if(index >= 5) { @> display: none; <@ } @>"> 2564 <header class="accordion-syllabus-header" style="background:#E5E5E5 !important; border-radius16px;box-shadow:none;padding:20px !important"> 2565 <h4 class="accordion-syllabus-header__title"> 2566 <span class="text-primary" style="font-size:18px ; font-weight:600; color:black;"> 2567 <@if(index < 9) {@> 2568 Week <@print(index + 1)@>: 2569 <@ } else {@> 2570 Week <@print(index + 1)@>: 2571 <@ } @> 2572 </span> 2573 <p style="font-size:18px ; font-weight:600;"><@print(value.title)@> <span class="text-primary show-sm" style="font-size: 14px;"> 2574 <@if(value && value.items){@> 2575 <@ print(value.items.length) @> attachment(s) 2576 <@} else {@> 2577 1 attachment(s) 2578 <@}@> 2579 <@if(value.moduleDurations && curriculumAssetInfo){@> 2580 ⢠<@print(millisecondsToHHMMSSStr(value.moduleDurations))@> 2581 <@}@> 2582 </span></p> 2583 </h4> 2584 2585 <div class="accordion-syllabus-header__info"> 2586 <p class="text-primary hide-sm" style="color:#064400 !important;"> 2587 <@if(value && value.items){@> 2588 <@ print(value.items.length) @> attachment(s) 2589 <@} else {@> 2590 1 attachment(s) 2591 <@}@> 2592 <@if(value.moduleDurations && curriculumAssetInfo){@> 2593 ⢠<@print(millisecondsToHHMMSSStr(value.moduleDurations))@> 2594 <@}@> 2595 </p> 2596 <div class="accordion-syllabus-header__icon text-primary"> 2597 <i class="fa fa-angle-left" aria-hidden="true" style="color:#064400;"></i> 2598 </div> 2599 </div> 2600 </header> 2601 <div class="accordion-content" style="filter:none;background:transparent !important;"> 2602 <div class="accordian-content-block" style="background:transparent !important;box-shadow:none;padding:16px 66px 3px 69px !important;"> 2603 <ul class="accordian-list"> 2604 <@ var itemsCount = value['items'] ? value['items'].length : 0; @> 2605 <@ if(value['items'] && value['items'].length > 0) { @> 2606 <@ $.each(value['items'], function(index1, value1) { @> 2607 <li class="accordian-list__item" style="padding:0px 0px !important;<@ if(index1 >= 5) { @> display: none; <@ } @>"> 2608 <style> 2609 @media (max-width: 768px) { 2610 .accordian-content-card { 2611 flex-direction: column !important; 2612 align-items: stretch !important; 2613 } 2614 2615 .accordian-content-card__top { 2616 flex-direction: row !important; 2617 justify-content: space-between !important; 2618 align-items: center !important; 2619 width: 100% !important; 2620 } 2621 2622 .accordian-content-card__title { 2623 flex: 1 !important; 2624 margin: 0 10px !important; 2625 white-space: nowrap; 2626 overflow: hidden; 2627 text-overflow: ellipsis; 2628 } 2629 2630 .accordian-content-card__bottom { 2631 flex-direction: row !important; 2632 justify-content: space-between !important; 2633 align-items: center !important; 2634 width: 100% !important; 2635 margin-top: 6px !important; 2636 } 2637 2638 .accordian-content-card__link { 2639 flex: 1 !important; 2640 min-width: 0 !important; 2641 text-align: left !important; 2642 } 2643 2644 .accordian-content-card__time { 2645 flex-shrink: 0 !important; 2646 text-align: right !important; 2647 } 2648 } 2649 </style> 2650 2651 <div class="accordian-content-card" 2652 style="display: flex; flex-wrap: nowrap; align-items: center; justify-content: space-between; padding: 10px 0; width: 100%; box-sizing: border-box; border-bottom: 1px solid #eee;"> 2653 2654 2655 <!-- Row 1: Icon + Title + Collapse Icon --> 2656 <div class="accordian-content-card__top" 2657 style="display: flex; align-items: center; justify-content: space-between; width: 100%;"> 2658 2659 <!-- Icon --> 2660 <div class="accordian-content-card__ico" style="flex-shrink: 0;"> 2661 <@ if(value1.type == 'code'){ @> 2662 <img src="/resources/images/CodeIcon.svg" style="width: 24px; height: 24px;"> 2663 <@ } else { @>
2664 <span class="material-icons text-primary" style="color:#064400; font-size: 24px;"> 2665 <@ print(getCourseAssetIcon(value1.type))@> 2666 </span> 2667 <@ } @> 2668 </div> 2669 2670 <!-- Title --> 2671 <div class="accordian-content-card__title" 2672 style="font-weight: 400; font-size: 14px; color: #333; margin: 0 10px; flex: 1; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;"> 2673 <@print(value1.title)@> 2674 </div> 2675 2676 <!-- Collapse Icon (optional) --> 2677 <div class="accordian-content-card__collapse" style="flex-shrink: 0;"> 2678 <!-- Example placeholder, add real icon if needed --> 2679 <!-- <i class="fa fa-chevron-down" style="font-size: 16px;"></i> --> 2680 </div> 2681 </div> 2682 2683 <!-- Row 2: Preview Button and Time --> 2684 <div class="accordian-content-card__bottom" 2685 style="display: flex; justify-content: space-between; align-items: center; width: 100%; margin-top: 6px; flex-wrap: nowrap;"> 2686 2687 <!-- Preview Button --> 2688 <div class="accordian-content-card__link" style="flex: 1; min-width: 0; text-align: left;"> 2689 <@if(summary.sampleAvailable && summary.sampleSectionIds.includes(value1.id)){@> 2690 <a href="/s/preview/courses/<@print(decodeURIComponent(summary.courseUrl).replace(/ /g,'-'))@>-<@- courseId @>#<@print(value1.id)@>" 2691 class="previewBtn" 2692 style="font-size: 14px; font-weight: 500; text-decoration: none; color: #064400; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; display: inline-block;"> 2693 <span class="text-primary" style="color:#064400;"> 2694 <@ if(value1.type == 'video') { @> Watch <@ } else {@> Preview <@ } @> 2695 <span style="color:#000"><i class="fa fa-solid fa-arrow-up-right" style="color:#064400;"></i></span> 2696 </span> 2697 </a> 2698 <@}@> 2699 </div> 2700 2701 <!-- Time --> 2702 <div class="accordian-content-card__time" style="flex-shrink: 0; text-align: right;"> 2703 <p class="text-primary course-asset-time" 2704 style="font-size: 14px; font-weight: 500; color:#064400 !important; margin: 0;"> 2705 <@ if(value1.duration && value1.duration > 0) { @> 2706 <@ print(millisecondsToHHMMSSStr(value1.duration)) @> 2707 <@ } else { @> 2708 -- 2709 <@ } @> 2710 </p> 2711 </div> 2712 2713 </div> 2714 </div> 2715 2716 2717 </li> 2718 <@ }); @> 2719 <@ } else { @> 2720 <li class="accordian-list__item" style="padding:0px 0px !important;"> 2721 <div class="accordian-content-card" 2722 style="display: flex; flex-wrap: nowrap; align-items: center; justify-content: space-between; padding: 10px 0; width: 100%; box-sizing: border-box; border-bottom: 1px solid #eee;"> 2723 2724 <!-- Row 1: Icon + Title + Collapse Icon --> 2725 <div class="accordian-content-card__top" 2726 style="display: flex; align-items: center; justify-content: space-between; width: 100%;"> 2727 2728 <!-- Icon --> 2729 <div class="accordian-content-card__ico" style="flex-shrink: 0;"> 2730 <@ if(value.type == 'code'){ @> 2731 <img src="/resources/images/CodeIcon.svg" style="width: 24px; height: 24px;"> 2732 <@ } else { @> 2733 <span class="material-icons text-primary" style="color:#064400; font-size: 24px;"> 2734 <@ print(getCourseAssetIcon(value.type))@> 2735 </span> 2736 <@ } @> 2737 </div> 2738 2739 <!-- Title --> 2740 <div class="accordian-content-card__title" 2741 style="font-weight: 400; font-size: 14px; color: #333; margin: 0 10px; flex: 1; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;"> 2742 <@print(value.title)@> 2743 </div> 2744 2745 <!-- Collapse Icon (optional) --> 2746 <div class="accordian-content-card__collapse" style="flex-shrink: 0;"> 2747 <!-- Example placeholder, add real icon if needed --> 2748 <!-- <i class="fa fa-chevron-down" style="font-size: 16px;"></i> --> 2749 </div> 2750 </div> 2751 2752 <!-- Row 2: Preview Button and Time --> 2753 <div class="accordian-content-card__bottom" 2754 style="display: flex; justify-content: space-between; align-items: center; width: 100%; margin-top: 6px; flex-wrap: nowrap;"> 2755 2756 <!-- Preview Button --> 2757 <div class="accordian-content-card__link" style="flex: 1; min-width: 0; text-align: left;"> 2758 <@if(summary.sampleAvailable && summary.sampleSectionIds.includes(value.id)){@> 2759 <a href="/s/preview/courses/<@print(decodeURIComponent(summary.courseUrl).replace(/ /g,'-'))@>-<@- courseId @>#<@print(value.id)@>" 2760 class="previewBtn" 2761 style="font-size: 14px; font-weight: 500; text-decoration: none; color: #064400; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; display: inline-block;">
2762 <span class="text-primary" style="color:#064400;"> 2763 <@ if(value.type == 'video') { @> Watch <@ } else {@> Preview <@ } @> 2764 <span style="color:#000"><i class="fa fa-solid fa-arrow-up-right" style="color:#064400;"></i></span> 2765 </span> 2766 </a> 2767 <@}@> 2768 </div> 2769 2770 <!-- Time --> 2771 <div class="accordian-content-card__time" style="flex-shrink: 0; text-align: right;"> 2772 <p class="text-primary course-asset-time" 2773 style="font-size: 14px; font-weight: 500; color:#064400 !important; margin: 0;"> 2774 <@ if(value.duration && value.duration > 0) { @> 2775 <@ print(millisecondsToHHMMSSStr(value.duration)) @> 2776 <@ } else { @> 2777 -- 2778 <@ } @> 2779 </p> 2780 </div> 2781 </div> 2782 </div> 2783 </li> 2784 <@ } @> 2785 </ul> 2786 2787 <@ if(itemsCount > 5) { @> 2788 <div style="text-align: center; margin-top: 10px;"> 2789 <button style="background-color: #064400; color: white; padding: 4px 28px; border: none; cursor: pointer; font-size: 16px; border-radius: 24px;" 2790 onclick=" 2791 var parentAccordion = this.closest('.accordion-content'); 2792 parentAccordion.style.maxHeight = 'none'; 2793 this.closest('.accordian-content-block').querySelectorAll('.accordian-list__item').forEach(el => el.style.display = 'block'); 2794 this.style.display = 'none'; 2795 "> 2796 View All 2797 </button> 2798 </div> 2799 <@ } @> 2800 </div> 2801 </div> 2802 </div> 2803 <@ }); @> 2804 <@ if(item.length > 5) { @> 2805 <div style="text-align: center; margin-top: 10px;margin-bottom: 20px;"> 2806 <button style="background-color: #064400; color: white; padding: 8px 32px; border: none; cursor: pointer; font-size: 16px; border-radius: 24px;" 2807 onclick="document.querySelectorAll('.accordion-syllabus-item').forEach(el => el.style.display = 'block'); this.style.display = 'none';"> 2808 View All Sessions 2809 </button> 2810 </div> 2811 <@ } @> 2812</div> 2813 </div> 2814</script>
2814 2815 2816 2817 2818<!--Dusk Curriculum 9-->
2819<script> 2820 // Simple responsive positioning 2821 function updatePosition() { 2822 const element = document.getElementById('totalTimeElement'); 2823 if(element){ 2824 if (window.innerWidth > 768) { 2825 element.style.position = 'absolute'; 2826 element.style.top = "5px"; 2827 element.style.right = '122px'; 2828 } else { 2829 element.style.position = 'static'; 2830 element.style.margin = '0 0'; 2831 } 2832 } 2833 } 2834 2835 // Run on load and resize 2836 window.addEventListener('load', updatePosition); 2837 window.addEventListener('resize', updatePosition); 2838 </script>
2838 2839
2839<script> 2840 // Simple responsive positioning 2841 function updatePosition() { 2842 const element = document.getElementById('totalTimeElement'); 2843 if(element){ 2844 if (window.innerWidth > 768) { 2845 element.style.position = 'absolute'; 2846 element.style.top = "5px"; 2847 element.style.right = '122px'; 2848 } else { 2849 element.style.position = 'static'; 2850 element.style.margin = '0 0'; 2851 } 2852 } 2853 } 2854 2855 // Run on load and resize 2856 window.addEventListener('load', updatePosition); 2857 window.addEventListener('resize', updatePosition); 2858 </script>
2858 2859
2859<script type="text/template" id="coursecurr-9-template"> 2860 <div class="total-time" id="totalTimeElement" style=" 2861 font-size: 18px; 2862 font-weight: 600; 2863 color: #282400; 2864 padding: 8px 12px; 2865 border-radius: 4px; 2866 white-space: nowrap;"> 2867 <@if(summary.durations && summary.durations>0 && curriculumAssetInfo){@> 2868 <@print(millisecondsToHHMMSSStr(summary.durations))@> 2869 <@}@> 2870</div> 2871 2872<div class="accordion-syllabus" style="max-width:1000px !important"> 2873 <@ $.each(item, function(index, value) { @> 2874 <div class="accordion-syllabus-item" style="<@ if(index >= 5) { @> display: none; <@ } @>"> 2875 <header class="accordion-syllabus-header" style="background:#F5F5F5 !important; border-radius:8px;box-shadow:none;padding:20px !important"> 2876 <h4 class="accordion-syllabus-header__title"> 2877 <span class="text-primary" style="font-size:18px ; font-weight:600; color:black;"> 2878 <@if(index < 9) {@> 2879 Week <@print(index + 1)@>: 2880 <@ } else {@> 2881 Week <@print(index + 1)@>: 2882 <@ } @> 2883 </span> 2884 <p style="font-size:18px ; font-weight:600;"><@print(value.title)@> <span class="text-primary show-sm" style="font-size: 14px;"> 2885 <@if(value && value.items){@> 2886 <@ print(value.items.length) @> attachment(s) 2887 <@} else {@> 2888 1 attachment(s) 2889 <@}@> 2890 <@if(value.moduleDurations && curriculumAssetInfo){@> 2891 ⢠<@print(millisecondsToHHMMSSStr(value.moduleDurations))@> 2892 <@}@> 2893 </span></p> 2894 </h4> 2895 2896 <div class="accordion-syllabus-header__info"> 2897 <p class="text-primary hide-sm" style="color:#282400 !important;"> 2898 <@if(value && value.items){@> 2899 <@ print(value.items.length) @> attachment(s) 2900 <@} else {@> 2901 1 attachment(s) 2902 <@}@> 2903 <@if(value.moduleDurations && curriculumAssetInfo){@> 2904 ⢠<@print(millisecondsToHHMMSSStr(value.moduleDurations))@> 2905 <@}@> 2906 </p> 2907 <div class="accordion-syllabus-header__icon text-primary"> 2908 <i class="fa fa-angle-left" aria-hidden="true" style="color:#282400;"></i> 2909 </div> 2910 </div> 2911 </header> 2912 <div class="accordion-content" style="filter:none;background:transparent !important;"> 2913 <div class="accordian-content-block" style="background:transparent !important;box-shadow:none;padding:16px 66px 3px 69px !important;"> 2914 <ul class="accordian-list"> 2915 <@ var itemsCount = value['items'] ? value['items'].length : 0; @> 2916 <@ if(value['items'] && value['items'].length > 0) { @> 2917 <@ $.each(value['items'], function(index1, value1) { @> 2918 <li class="accordian-list__item" style="padding:0px 0px !important;<@ if(index1 >= 5) { @> display: none; <@ } @>"> 2919 <style> 2920 @media (max-width: 768px) { 2921 .accordian-content-card { 2922 flex-direction: column !important; 2923 align-items: stretch !important; 2924 } 2925 2926 .accordian-content-card__top { 2927 flex-direction: row !important; 2928 justify-content: space-between !important; 2929 align-items: center !important; 2930 width: 100% !important; 2931 } 2932 2933 .accordian-content-card__title { 2934 flex: 1 !important; 2935 margin: 0 10px !important; 2936 white-space: nowrap; 2937 overflow: hidden; 2938 text-overflow: ellipsis; 2939 } 2940 2941 .accordian-content-card__bottom { 2942 flex-direction: row !important; 2943 justify-content: space-between !important; 2944 align-items: center !important; 2945 width: 100% !important; 2946 margin-top: 6px !important; 2947 } 2948 2949 .accordian-content-card__link { 2950 flex: 1 !important; 2951 min-width: 0 !important; 2952 text-align: left !important; 2953 } 2954 2955 .accordian-content-card__time { 2956 flex-shrink: 0 !important; 2957 text-align: right !important; 2958 } 2959 } 2960 </style> 2961 2962 <div class="accordian-content-card" 2963 style="display: flex; flex-wrap: nowrap; align-items: center; justify-content: space-between; padding: 10px 0; width: 100%; box-sizing: border-box; border-bottom: 1px solid #eee;"> 2964 2965 2966 <!-- Row 1: Icon + Title + Collapse Icon --> 2967 <div class="accordian-content-card__top" 2968 style="display: flex; align-items: center; justify-content: space-between; width: 100%;"> 2969 2970 <!-- Icon --> 2971 <div class="accordian-content-card__ico" style="flex-shrink: 0;"> 2972 <@ if(value1.type == 'code'){ @> 2973 <img src="/resources/images/CodeIcon.svg" style="width: 24px; height: 24px;"> 2974 <@ } else { @>
2975 <span class="material-icons text-primary" style="color:#282400; font-size: 24px;"> 2976 <@ print(getCourseAssetIcon(value1.type))@> 2977 </span> 2978 <@ } @> 2979 </div> 2980 2981 <!-- Title --> 2982 <div class="accordian-content-card__title" 2983 style="font-weight: 400; font-size: 14px; color: #333; margin: 0 10px; flex: 1; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;"> 2984 <@print(value1.title)@> 2985 </div> 2986 2987 <!-- Collapse Icon (optional) --> 2988 <div class="accordian-content-card__collapse" style="flex-shrink: 0;"> 2989 <!-- Example placeholder, add real icon if needed --> 2990 <!-- <i class="fa fa-chevron-down" style="font-size: 16px;"></i> --> 2991 </div> 2992 </div> 2993 2994 <!-- Row 2: Preview Button and Time --> 2995 <div class="accordian-content-card__bottom" 2996 style="display: flex; justify-content: space-between; align-items: center; width: 100%; margin-top: 6px; flex-wrap: nowrap;"> 2997 2998 <!-- Preview Button --> 2999 <div class="accordian-content-card__link" style="flex: 1; min-width: 0; text-align: left;"> 3000 <@if(summary.sampleAvailable && summary.sampleSectionIds.includes(value1.id)){@> 3001 <a href="/s/preview/courses/<@print(decodeURIComponent(summary.courseUrl).replace(/ /g,'-'))@>-<@- courseId @>#<@print(value1.id)@>" 3002 class="previewBtn" 3003 style="font-size: 14px; font-weight: 500; text-decoration: none; color: #282400; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; display: inline-block;"> 3004 <span class="text-primary" style="color:#282400;"> 3005 <@ if(value1.type == 'video') { @> Watch <@ } else {@> Preview <@ } @> 3006 <span style="color:#000"><i class="fa fa-solid fa-arrow-up-right" style="color:#282400;"></i></span> 3007 </span> 3008 </a> 3009 <@}@> 3010 </div> 3011 3012 <!-- Time --> 3013 <div class="accordian-content-card__time" style="flex-shrink: 0; text-align: right;"> 3014 <p class="text-primary course-asset-time" 3015 style="font-size: 14px; font-weight: 500; color:#282400 !important; margin: 0;"> 3016 <@ if(value1.duration && value1.duration > 0) { @> 3017 <@ print(millisecondsToHHMMSSStr(value1.duration)) @> 3018 <@ } else { @> 3019 -- 3020 <@ } @> 3021 </p> 3022 </div> 3023 3024 </div> 3025 </div> 3026 3027 3028 </li> 3029 <@ }); @> 3030 <@ } else { @> 3031 <li class="accordian-list__item" style="padding:0px 0px !important;"> 3032 <div class="accordian-content-card" 3033 style="display: flex; flex-wrap: nowrap; align-items: center; justify-content: space-between; padding: 10px 0; width: 100%; box-sizing: border-box; border-bottom: 1px solid #eee;"> 3034 3035 <!-- Row 1: Icon + Title + Collapse Icon --> 3036 <div class="accordian-content-card__top" 3037 style="display: flex; align-items: center; justify-content: space-between; width: 100%;"> 3038 3039 <!-- Icon --> 3040 <div class="accordian-content-card__ico" style="flex-shrink: 0;"> 3041 <@ if(value.type == 'code'){ @> 3042 <img src="/resources/images/CodeIcon.svg" style="width: 24px; height: 24px;"> 3043 <@ } else { @> 3044 <span class="material-icons text-primary" style="color:#282400; font-size: 24px;"> 3045 <@ print(getCourseAssetIcon(value.type))@> 3046 </span> 3047 <@ } @> 3048 </div> 3049 3050 <!-- Title --> 3051 <div class="accordian-content-card__title" 3052 style="font-weight: 400; font-size: 14px; color: #333; margin: 0 10px; flex: 1; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;"> 3053 <@print(value.title)@> 3054 </div> 3055 3056 <!-- Collapse Icon (optional) --> 3057 <div class="accordian-content-card__collapse" style="flex-shrink: 0;"> 3058 <!-- Example placeholder, add real icon if needed --> 3059 <!-- <i class="fa fa-chevron-down" style="font-size: 16px;"></i> --> 3060 </div> 3061 </div> 3062 3063 <!-- Row 2: Preview Button and Time --> 3064 <div class="accordian-content-card__bottom" 3065 style="display: flex; justify-content: space-between; align-items: center; width: 100%; margin-top: 6px; flex-wrap: nowrap;"> 3066 3067 <!-- Preview Button --> 3068 <div class="accordian-content-card__link" style="flex: 1; min-width: 0; text-align: left;"> 3069 <@if(summary.sampleAvailable && summary.sampleSectionIds.includes(value.id)){@> 3070 <a href="/s/preview/courses/<@print(decodeURIComponent(summary.courseUrl).replace(/ /g,'-'))@>-<@- courseId @>#<@print(value.id)@>" 3071 class="previewBtn" 3072 style="font-size: 14px; font-weight: 500; text-decoration: none; color: #282400; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; display: inline-block;">
3073 <span class="text-primary" style="color:#282400;"> 3074 <@ if(value.type == 'video') { @> Watch <@ } else {@> Preview <@ } @> 3075 <span style="color:#000"><i class="fa fa-solid fa-arrow-up-right" style="color:#282400;"></i></span> 3076 </span> 3077 </a> 3078 <@}@> 3079 </div> 3080 3081 <!-- Time --> 3082 <div class="accordian-content-card__time" style="flex-shrink: 0; text-align: right;"> 3083 <p class="text-primary course-asset-time" 3084 style="font-size: 14px; font-weight: 500; color:#282400 !important; margin: 0;"> 3085 <@ if(value.duration && value.duration > 0) { @> 3086 <@ print(millisecondsToHHMMSSStr(value.duration)) @> 3087 <@ } else { @> 3088 -- 3089 <@ } @> 3090 </p> 3091 </div> 3092 </div> 3093 </div> 3094 </li> 3095 <@ } @> 3096 </ul> 3097 3098 <@ if(itemsCount > 5) { @> 3099 <div style="text-align: center; margin-top: 10px;"> 3100 <button style="background-color: #282400; color: white; padding: 4px 28px; border: none; cursor: pointer; font-size: 16px; border-radius: 24px;" 3101 onclick=" 3102 var parentAccordion = this.closest('.accordion-content'); 3103 parentAccordion.style.maxHeight = 'none'; 3104 this.closest('.accordian-content-block').querySelectorAll('.accordian-list__item').forEach(el => el.style.display = 'block'); 3105 this.style.display = 'none'; 3106 "> 3107 View All 3108 </button> 3109 </div> 3110 <@ } @> 3111 </div> 3112 </div> 3113 </div> 3114 <@ }); @> 3115 <@ if(item.length > 5) { @> 3116 <div style="text-align: center; margin-top: 10px;margin-bottom: 20px;"> 3117 <button style="background-color: #282400; color: white; padding: 8px 32px; border: none; cursor: pointer; font-size: 16px; border-radius: 24px;" 3118 onclick="document.querySelectorAll('.accordion-syllabus-item').forEach(el => el.style.display = 'block'); this.style.display = 'none';"> 3119 View All Sessions 3120 </button> 3121 </div> 3122 <@ } @> 3123</div> 3124 </div> 3125</script>
3125 3126 3127 3128 3129 3130 3131 3132<!-- Feedback Template First -->
3133<script type="text/template" id="widget-1-template"> 3134<div class="column full feedbackContainer feedback1 spectre"> 3135<@if(msg){@> 3136 <h4 style="letter-spacing: 2px; text-align: center;"><@print(msg)@></h4> 3137<@}else{@> 3138<div class="avgratingbox"> 3139 <div class="flex-row" > 3140 <div class="is-box-2" > 3141 <p style="color: rgb(247, 247, 247); font-weight: 700!important; font-size: 40px!important; text-align: center; letter-spacing: 3px; padding-bottom: 0px; margin-bottom: 0px; line-height: 1; margin-top: 0px;"> 3142 <@ if(ratings && ratings.avgRating) {@> 3143 <@ print(parseFloat(ratings.avgRating.toFixed(1))) @> 3144 <@}else{@> 3145 0 3146 <@}@> 3147 </p> 3148 <h5 class="ratings1" style="text-align: center; margin-bottom: 0px; margin-top: 0px; line-height: 1;"> 3149 <@ for (ratingsSize = 1; ratingsSize <= 5; ratingsSize++) {@> 3150 <@if(ratings){@> 3151 <@ if(ratings.avgRating >= ratingsSize) {@> 3152 <i class="icon ion-android-star"></i> 3153 <@ } else if(ratings.avgRating > ratingsSize-1 && ratings.avgRating < ratingsSize) { @> 3154 <i class="icon ion-android-star-half"></i> 3155 <@ } else { @> 3156 <i class="icon ion-android-star-outline"></i> 3157 <@ } @> 3158 <@} else {@> 3159 <i class="icon ion-android-star-outline"></i> 3160 <@}@> 3161 <@}@> 3162 </h5> 3163 <p style="margin: 10px 0 0 !important;text-align: center;line-height: 1;font-size: 30px!important;"><i class="fa-light fa-users t-white"></i> </p> 3164 <p style="margin-bottom: 10px; margin-top: 0px; font-size: 12px!important; letter-spacing: 1px; font-weight: 500!important; color: rgb(247, 247, 247); text-align: center;"> 3165 Total <@ if(ratings){print(ratings.total) }else{0}@> Reviews 3166 </p> 3167 </div> 3168 <div class="is-box-9"> 3169 <@ for (i = 0; i < 5; i++) {@> 3170 <div class="box7878"> 3171 <div style="flex:1;"> 3172 <div class="meter <@print(ratingsPer[(parseInt(i)+1)+'-star'].cls)@> nostripes"> 3173 <span style="width: <@print(ratingsPer[(parseInt(i)+1)+'-star'].rates)@>%"></span> 3174 </div> 3175 </div> 3176 <div id="ratingbox"> 3177 <p class="ratings2" style=" line-height: 1;"> 3178 <@ for (ratingsSize = 5; ratingsSize >=1; ratingsSize--) {@> 3179 <@if(ratingsSize>i){@> 3180 <i class="fa fa-solid fa-star-sharp text-primary"></i> 3181 <@} else {@> 3182 <i class="fa fa-solid fa-star-sharp"></i> 3183 <@}@> 3184 <@}@> 3185 <span class="t-white"> 3186 <@ if(ratings && ratings.ratingsCount){print(ratings.ratingsCount[(parseInt(5)-i)+'-stars'])}else{0} @> 3187 </span> 3188 </p> 3189 3190 </div> 3191 </div> 3192 <@}@> 3193 </div> 3194 </div> 3195</div> 3196 <div class="bg-secondary" style="padding:15px 15px;border-radius:10px;border-top-right-radius: 0;border-top-left-radius: 0;" > 3197 <p 3198 style="font-size: 16px!important; font-weight: 500!important; letter-spacing: 1px;" class="text-primary"> 3199 Reviews 3200 </p> 3201 3202<div class="review-box" id="createCustomReview" style="display:none"> 3203<div class="flex-row"> 3204 <div class="is-box-2 centerbox"> 3205 <div class="spectre"> 3206 <figure data-initial="<@if(typeof SPUSER !== 'undefined'){print(SPUSER.email.substring(0, 1))}else{@>Me<@}@>" class="uppercase avatar avatar-lg figsize" > 3207 <img src="/s/profile/thumb" alt="" class="review-pic" onerror="profileImageError(this)" data-mhash="<@ if(typeof SPUSER !== 'undefined'){print(SPUSER.mhash)} @>"> 3208 </figure> 3209 <@if(typeof SPUSER !== 'undefined'){ @><p class="review-name"><@ print(SPUSER.name) @> </p><@ } @> 3210 </div> 3211 </div> 3212 <div class="is-box-10"> 3213 <textarea rows="3" class="form-input" 3214 placeholder="Add your review here"></textarea> 3215 <div class="rating3"> 3216 <p id="rating-stars"> 3217 <@ for (ratingsSize = 1; ratingsSize <= 5; ratingsSize++) {@> <i 3218 class="fa fa-solid fa-star-sharp text-primary rating-star" data-value='<@- ratingsSize @>'></i> <@}@> 3219 </p> 3220 3221 <button class="btn btn-primary <@ if(typeof SPUSER !== 'undefined'){ print('createCustomReviewBtn') }else { print('loginBtn') } @>" 3222 data-reviewData="reviewlist" 3223 style="padding: 2px 28px; text-transform: uppercase; border-radius: 40px;">Post</button> 3224 </div> 3225 </div> 3226</div> 3227</div> 3228 3229 <div id="reviewlist"> 3230 <@ $.each(items, function(index, item) { @> 3231 <div class="review-box reviewcontainer <@ if(typeof SPUSER !== 'undefined' && item["userId"] === SPUSER.id) { @>selfreview<@ } @>"> 3232 <@ if(typeof SPUSER !== 'undefined' && item["userId"] === SPUSER.id) { @> 3233 <a class="btn btn-link float-right deleteCurrentReviewBtn" data-id="<@ print(item['_id']) @>"><i class="material-icons">delete</i></a> 3234 <@ } @> 3235 <div class="flex-row"> 3236 <div class="is-box-2 centerbox"> 3237 <div class="spectre"> 3238 <@ if(typeof SPUSER !== 'undefined' && item["userId"] === SPUSER.id) { @> 3239 <figure data-initial="<@if(typeof SPUSER !== 'undefined'){print(SPUSER.email.substring(0, 1))}else{@>Me<@}@>" class="uppercase avatar avatar-lg figsize" > 3240 <img src="/s/profile/thumb" alt="" class="review-pic" onerror="profileImageError(this)" data-mhash="<@ if(typeof SPUSER !== 'undefined'){print(SPUSER.mhash)} @>"> 3241 <@ } else {@> 3242 <figure data-initial="<@ print(getUserInitial(null, item.userName)) @>" class="uppercase avatar avatar-lg figsize" > 3243 <img src="/s/profile/<@- item.userId @>/thumb" alt="" class="review-pic" onerror="profileImageError(this)" data-mhash="<@ item.mhash @>"> 3244 <@ } @> 3245 </figure> 3246 <p class="review-name"><@ if(typeof SPUSER !== 'undefined' && item["userId"] === SPUSER.id) { @><@ print(SPUSER.name) @><@ } else {@> <@ print(item.userName) @><@ } @> </p> 3247 </div> 3248 </div> 3249 <div class="is-box-10"> 3250 <div class="rating4"> 3251 <p> 3252 <@ for (ratingsSize = 1; ratingsSize <= 5; ratingsSize++) {@> <@ 3253 if(item.rating >= ratingsSize) {@> 3254 <i class="fa fa-solid fa-star-sharp text-primary"></i> 3255 <@ } else if(item.rating > ratingsSize-1 && item.rating < ratingsSize) { @> 3256 <i class="fa fa-solid fa-star-sharp-half text-primary"></i> 3257 <@ } else { @> 3258 <i class="fa fa-solid fa-star-sharp"></i> 3259 <@}@> 3260 <@ }@> 3261 </p> 3262 <p 3263 style="font-size: 13px!important; color: rgb(174, 170, 170); font-weight: 600!important; margin-top: 4px;"> 3264 <time class="timestamp"
3265 datetime="<@ print((new Date(item.createdDate.$date)).toISOString()) @>"><@ 3266 print(parseDate(item.createdDate.$date)) @></time> 3267 </p> 3268 </div> 3269 <p class="reviewTxt" 3270 style="color: rgb(102, 102, 102); font-weight: 500!important; font-size: 13px!important; margin-bottom: 10px;"><@ 3271 print(item.reviewtext.replace(/</g,'<').replace(/>/g,'>')) @></p> 3272 <div class="comment-tag"> 3273 <@ if(item.isFeatured) {@><span>Featured Review </span><@ } @><@ if(item.isVerifiedPurchase) {@> <span>Verified Purchase </span><@ } @> 3274 </div> 3275 </div> 3276 </div> 3277 </div> 3278 <@ }); @> 3279 </div> 3280 <button class="bg-primary loadMoreReviewsBtn reviewLMbtn" data-itemTemplate="feedback-1-item-template" data-reviewData="reviewlist" >Load More Reviews</button> 3281</div> 3282<@}@> 3283</script>
3283 3284 3285
3286<script type="text/template" id="feedback-1-item-template"> 3287<div class="review-box reviewcontainer <@ if(typeof SPUSER !== 'undefined' && item["userId"] === SPUSER.id) { @>selfreview<@ } @>""> 3288<@ if(typeof SPUSER !== 'undefined' && item["userId"] === SPUSER.id) { @> 3289 <a class="btn btn-link float-right deleteCurrentReviewBtn" data-id="<@ print(item['_id']) @>"><i class="material-icons">delete</i></a> 3290<@ } @> 3291<div class="flex-row"> 3292 <div class="is-box-2 centerbox"> 3293 <div class="spectre"> 3294 <@ if(typeof SPUSER !== 'undefined' && item["userId"] === SPUSER.id) { @> 3295 <figure data-initial="<@if(typeof SPUSER !== 'undefined'){print(SPUSER.email.substring(0, 1))}else{@>Me<@}@>" class="avatar avatar-lg figsize" > 3296 <img src="/s/profile/thumb" alt="" class="review-pic" onerror="profileImageError(this)" data-mhash="<@ if(typeof SPUSER !== 'undefined'){print(SPUSER.mhash)} @>"> 3297 <@ } else {@> 3298 <figure data-initial="<@ print(getUserInitial(null, item.userName)) @>" class="avatar avatar-lg figsize" > 3299 <img src="/s/profile/<@- item.userId @>/thumb" alt="" class="review-pic" onerror="profileImageError(this)" data-mhash="<@ item.mhash @>"> 3300 <@ } @> 3301 </figure> 3302 <p class="review-name"><@ if(typeof SPUSER !== 'undefined' && item["userId"] === SPUSER.id) { @><@ print(SPUSER.name) @><@ } else {@> <@ print(item.userName) @><@ } @> </p> 3303 </div> 3304 </div> 3305 <div class="is-box-10"> 3306 <div class="rating4"> 3307 <p> 3308 <@ for (ratingsSize = 1; ratingsSize <= 5; ratingsSize++) {@> <@ 3309 if(item.rating >= ratingsSize) {@> 3310 <i class="fa fa-solid fa-star-sharp text-primary"></i> 3311 <@ } else if(item.rating > ratingsSize-1 && item.rating < ratingsSize) { @> 3312 <i class="fa fa-solid fa-star-sharp-half text-primary"></i> 3313 <@ } else { @> 3314 <i class="fa fa-solid fa-star-sharp-outline"></i> 3315 <@}@> 3316 <@ } @> 3317 </p> 3318 <p 3319 style="font-size: 13px!important; color: rgb(174, 170, 170); font-weight: 600!important; margin-top: 4px;"> 3320 <time class="timestamp" 3321 datetime="<@ print((new Date(item.createdDate.$date)).toISOString()) @>"><@ 3322 print(parseDate(item.createdDate.$date)) @></time> 3323 </p> 3324 </div> 3325 <p class="reviewTxt" 3326 style="color: rgb(102, 102, 102); font-weight: 500!important; font-size: 13px!important; margin-bottom: 10px;"><@ 3327 print(item.reviewtext.replace(/</g,'<').replace(/>/g,'>')) @></p> 3328 <div class="comment-tag"> 3329 <@ if(item.isFeatured) {@><span>Featured Review </span><@ } @><@ if(item.isVerifiedPurchase) {@> <span>Verified Purchase </span><@ } @> 3330 </div> 3331 </div> 3332</div> 3333</div> 3334</script>
3334 3335 3336 3337<!-- Feedback Template Second -->
3338<script type="text/template" id="feedback-2-template"> 3339<div class="column full feedbackContainer feedback2 spectre <@- total @>" style="padding: 0;"> 3340<@if(msg){@> 3341 <h4 style="letter-spacing: 2px; text-align: center;"><@print(msg)@></h4> 3342<@}else{@> 3343<@ if(total > 0 && ratings && ratings.avgRating) {@> 3344<div class="avgratingbox"> 3345<div class="column third"> 3346 <div class="is-card avgRatingContainer" > 3347 <div class="avgRatingInnerContainer"> 3348 <h3 style="font-weight: 800; font-size: 12px; line-height: 1.3; margin-bottom: 0px;">Customer ratings</h3> 3349 <div style="display: flex; flex-direction: row; align-items: center; justify-content: center;"> 3350 <i class="icon ion-android-star text-primary" style="font-size: 80px;"></i> 3351 <div style="margin-left: 25px;"> 3352 <span style="display: flex; justify-content: flex-start; align-items: baseline;"> 3353 <h3 style="margin-top: 0px; margin-bottom: 0px; font-size: 32px; font-weight: 800; color: var(--themeColor); line-height: 1.3;"> 3354 <@ if(ratings && ratings.avgRating) {@> 3355 <@ print(parseFloat(ratings.avgRating.toFixed(1))) @> 3356 <@}else{@> 3357 0 3358 <@}@> 3359 </h3> 3360 <p class="avgRatingReviews">/5</p> 3361 </span> 3362 <p class="avgRatingReviews"> 3363 <@ if(ratings){print(ratings.total) }else{0}@> reviews 3364 </p> 3365 </div> 3366 </div> 3367 </div> 3368 </div> 3369</div> 3370</div> 3371<@ } @> 3372<div id="feedback2Reviewlist" class="reviewslist"> 3373 <@ $.each(items, function(index, item) { @> 3374 <@ var template = _.template($("#feedback-2-item-template").html()); print(template({item: item})) @> 3375 <@ }); @> 3376 <@}@> 3377</div> 3378<div class="row clearfix"> 3379 <div class="column full"> 3380 <p class="loadMoreReviewsBtn reviewLMbtn text-primary" data-itemTemplate="feedback-2-item-template" data-reviewData="feedback2Reviewlist" style="text-align: right; font-size: 14px; font-weight: 500;cursor: pointer;line-height: 1.5;display: none;"> 3381 View more 3382 </p> 3383 </div> 3384</div> 3385</script>
3385 3386
3387<script type="text/template" id="feedback-2-item-template"> 3388 <div class="column third reviewcontainer <@ if(typeof SPUSER !== 'undefined' && item["userId"] === SPUSER.id) { @>selfreview<@ } @>"> 3389 <div class="is-card avgRatingContainer"> 3390 <div style="text-align: center; display: flex; flex-direction: column; align-items: flex-start;" > 3391 <@ if(typeof SPUSER !== 'undefined' && item["userId"] === SPUSER.id) { @> 3392 <a class="btn btn-link float-right deleteCurrentReviewBtn" data-id="<@ print(item['_id']) @>"><i class="material-icons">delete</i></a> 3393 <@ } @> 3394 <p class="reviewTxt" style="font-size: 14px; font-weight: 400; line-height: 1.5; margin-bottom: 25px; margin-top: 0px; min-height: 80px; max-height: 80px; overflow: hidden;"> 3395 <@ print(item.reviewtext.replace(/</g,'<').replace(/>/g,'>')) @> 3396 </p> 3397 <div class="reviewerName"> 3398 <p style="font-size: 12px; font-weight: 500; line-height: 1.3; text-align: left; padding-top: 0px; margin:0px;"> 3399 <@ print(item.userName) @> 3400 </p></div> 3401 3402 <p style="margin: 0px;"> 3403 <@ for (ratingsSize = 1; ratingsSize <= 5; ratingsSize++) {@> 3404 <@ if(item.rating >= ratingsSize) {@> 3405 <i class="fa fa-solid fa-star-sharp text-primary"></i> 3406 <@ } else if(item.rating > ratingsSize-1 && item.rating < ratingsSize) { @> 3407 <i class="fa fa-solid fa-star-sharp-half text-primary"></i> 3408 <@ } @> 3409 <@ }@> 3410 </p> 3411 3412 </div> 3413 </div> 3414 </div> 3415</script>
vendor: 1 bytes, line 3415
3415
3416<script type="text/template" id="feedback-2-createTemplate"> 3417 <div data-cat="1" class="is-section is-box is-section-20" id="createCustomReview" style="display: none;" data-id="<@- parentId @>"> 3418 <div class="is-boxes"> 3419 <div class="is-box-centered"> 3420 <div class="is-container container" style="max-width: 940px;"> 3421 3422 <div class="review-box review-add-box"> 3423 <div class="is-container container is-content-800" > 3424 <div class="row clearfix" > 3425 <div class="column full" > 3426 <h1 style="text-align: center; font-size: 28px; line-height: 1.1; font-weight: 700; letter-spacing: 0px; color: var(--themeColor); margin-bottom: 44px;">Add a review</h1> 3427 </div> 3428 </div> 3429 <div class="textarea-cont"> 3430 <div class="review-star text-primary" style="display: flex; flex-direction: row; align-items: center; padding-top: 0px; margin-top: 0px;"> 3431 <span id="rating-stars"> 3432 <@ for (ratingsSize = 1; ratingsSize <= 5; ratingsSize++) {@> <i 3433 class="fa fa-solid fa-star-sharp rating-star" data-value='<@- ratingsSize @>'></i> <@}@> 3434 </span> 3435 </div> 3436 <textarea class="add-review-textarea" id="reviewText" style="background: transparent;width: 100%; border-width: 0px; padding-right: 28px; padding-bottom: 28px; min-height: 150px; font-size: 14px; font-weight: 500; line-height: 1.5; padding-top: 10px;" placeholder="Add your review here"></textarea> 3437 <@ if(typeof SPUSER !== 'undefined' && SPUSER.name.length > 0) { @> 3438 <p style="font-weight: 400; font-size: 10px; line-height: 1.3; color: rgba(255, 255, 255, 0.5); margin-top: 0px;"><@ print(SPUSER.name) @></p> 3439 <@ } @> 3440 </div> 3441 <div style="margin-top: 20px; display: flex; justify-content: flex-end;"> 3442 <button id="reviewSubmitBtn" class="btn btn-primary <@ if(typeof SPUSER !== 'undefined'){ print('createCustomReviewBtn') }else { print('loginBtn') } @>" 3443 data-reviewData="feedback2Reviewlist" disabled >Submit</button> 3444 </div> 3445 </div> 3446 </div> 3447 </div> 3448 </div> 3449 </div> 3450</div> 3451</script>
3451 3452 3453<!-- Vegas 4th feedback Template--> 3454 3455
3456<script type="text/template" id="feedback-4-template"> 3457 <div class="column full feedbackContainer feedback2 spectre <@- total @>" style="padding: 0;"> 3458 <@if(msg){@> 3459 <h4 style="letter-spacing: 2px; text-align: center;"><@print(msg)@></h4> 3460 <@}else{@> 3461 <@ if(total > 0 && ratings && ratings.avgRating) {@> 3462 <div class="avgratingbox"> 3463 <div class="column third"> 3464 <div class="is-card avgRatingContainer" style="border-radius:16px !important ; padding:20px ;border:1px solid #E5E5E5 !important;" > 3465 <div class="avgRatingInnerContainer"> 3466 <h3 style="font-weight: 800; font-size: 12px; line-height: 1.3; margin-bottom: 0px;">Customer ratings</h3> 3467 <div style="display: flex; flex-direction: row; align-items: center; justify-content: center;"> 3468 <i class="icon ion-android-star text-primary" style="font-size: 80px;"></i> 3469 <div style="margin-left: 25px;"> 3470 <span style="display: flex; justify-content: flex-start; align-items: baseline;"> 3471 <h3 style="margin-top: 0px; margin-bottom: 0px; font-size: 32px; font-weight: 800; color: var(--themeColor); line-height: 1.3;"> 3472 <@ if(ratings && ratings.avgRating) {@> 3473 <@ print(parseFloat(ratings.avgRating.toFixed(1))) @> 3474 <@}else{@> 3475 0 3476 <@}@> 3477 </h3> 3478 <p class="avgRatingReviews">/5</p> 3479 </span> 3480 <p class="avgRatingReviews"> 3481 <@ if(ratings){print(ratings.total) }else{0}@> reviews 3482 </p> 3483 </div> 3484 </div> 3485 </div> 3486 </div> 3487 </div> 3488 </div> 3489 <@ } @> 3490 <div id="feedback4Reviewlist" class="reviewslist"> 3491 <@ $.each(items, function(index, item) { @> 3492 <@ var template = _.template($("#feedback-4-item-template").html()); print(template({item: item})) @> 3493 <@ }); @> 3494 <@}@> 3495 </div> 3496 <div class="row clearfix"> 3497 <div class="column full" style="text-align: center;"> 3498 <a class="loadMoreReviewsBtn reviewLMbtn text-primary" data-itemTemplate="feedback-4-item-template" data-reviewData="feedback4Reviewlist" style="text-align: center; font-size: 16px; font-weight: 500;cursor: pointer;line-height: 1.5;display: none; background:#FB5607; color:white; padding:12px 28px; border-radius:24px;text-decoration:none;"> 3499 View All Reviews 3500 </a> 3501 </div> 3502 </div> 3503 </script>
3503 3504 3505
3505<script type="text/template" id="feedback-4-item-template"> 3506 <div class="column third reviewcontainer <@ if(typeof SPUSER !== 'undefined' && item["userId"] === SPUSER.id) { @>selfreview<@ } @>"> 3507 <div class="is-card avgRatingContainer" style="border:1px solid #E5E5E5 !important; border-radius:16px !important;background:white; padding:20px; "> 3508 <div style="text-align: center; display: flex; flex-direction: column; align-items: flex-start;" > 3509 <@ if(typeof SPUSER !== 'undefined' && item["userId"] === SPUSER.id) { @> 3510 <a style="color:#FB5607 !important;" class="btn btn-link float-right deleteCurrentReviewBtn" data-id="<@ print(item['_id']) @>"><i class="material-icons">delete</i></a> 3511 <@ } @> 3512 <p class="reviewTxt" style="font-size: 14px; font-weight: 400; line-height: 1.5; margin-bottom: 25px; margin-top: 0px; min-height: 82px; max-height: 80px; overflow: hidden;"> 3513 <@ print(item.reviewtext.replace(/</g,'<').replace(/>/g,'>')) @> 3514 </p> 3515 <div class="reviewerName"> 3516 <p style="font-size: 12px; font-weight: 500; line-height: 1.3; text-align: left; padding-top: 0px; margin:0px; opacity:0.5;"> 3517 <@ print(item.userName) @> 3518 </p></div> 3519 3520 <p style="margin: 0px;"> 3521 <@ for (ratingsSize = 1; ratingsSize <= 5; ratingsSize++) {@> 3522 <@ if(item.rating >= ratingsSize) {@> 3523 <i class="fa fa-solid fa-star-sharp text-primary" style="color:#FB5607 !important;"></i> 3524 <@ } else if(item.rating > ratingsSize-1 && item.rating < ratingsSize) { @> 3525 <i class="fa fa-solid fa-star-sharp-half text-primary" style="color:#FB5607 !important;"></i> 3526 <@ } @> 3527 <@ }@> 3528 </p> 3529 3530 </div> 3531 </div> 3532 </div> 3533 </script>
3533 3534
3534<script type="text/template" id="feedback-4-createTemplate"> 3535 <div data-cat="1" class="is-section is-box is-section-20" id="createCustomReview" style="display: none;" data-id="<@- parentId @>"> 3536 <div class="is-boxes"> 3537 <div class="is-box-centered"> 3538 <div class="is-container container" style="max-width: 1200px;"> 3539 3540 <div class="review-box review-add-box"> 3541 <div class="is-container container is-content-1200" > 3542 <div class="row clearfix" > 3543 <div class="column full" > 3544 <h1 style="text-align: left; font-size: 32px; line-height: 1.1; font-weight: 600; letter-spacing: 0px; color: black; ">Add a review</h1> 3545 </div> 3546 </div> 3547 <div class="textarea-cont"> 3548 <div style="display:flex; gap:30px;"> 3549 <div><h3 style="font-size:18px;font-weight:600;">Overall Rating</h3></div> 3550 <div class="review-star1 text-primary" 3551 style="display: flex; flex-direction: row; align-items: center; padding-top: 0px; margin-top: 0px;margin-left:0px !important;margin:0px !important"> 3552 <span id="rating-stars" > 3553 <@ for (ratingsSize = 1; ratingsSize <= 5; ratingsSize++) {@> 3554 <i class="fa fa-solid fa-star-sharp rating-star" 3555 data-value='<@- ratingsSize @>' 3556 style="width: 20px; height: 20px; text-align: center; flex-shrink: 0; margin: 0; padding: 0;"></i> 3557 <@}@> 3558 </span> 3559 </div> 3560 <style></style> 3561 3562 3563 </div> 3564 <textarea class="add-review-textarea" id="reviewText" style="background:#E5E5E5;width: 100%; border: 1px solid #E5E5E5; padding-right: 28px; padding-bottom: 28px; min-height: 180px; font-size: 14px; font-weight: 500; line-height: 1.5; padding-top: 10px;border-radius:16px !important" placeholder="Add your review here"></textarea> 3565 <@ if(typeof SPUSER !== 'undefined' && SPUSER.name.length > 0) { @> 3566 <p style="font-weight: 400; font-size: 10px; line-height: 1.3; color: rgba(255, 255, 255, 0.5); margin-top: 0px;"><@ print(SPUSER.name) @></p> 3567 <@ } @> 3568 </div> 3569 <div style=" display: flex; justify-content: center;"> 3570 <button style="letter-spacing:0px !important ; background-color:#FB5607;padding:12px 28px !important;" id="reviewSubmitBtn" class="btn btn-primary <@ if(typeof SPUSER !== 'undefined'){ print('createCustomReviewBtn') }else { print('loginBtn') } @>" 3571 data-reviewData="feedback4Reviewlist" disabled >Submit</button> 3572 </div> 3573 </div> 3574 </div> 3575 </div> 3576 </div> 3577 </div> 3578 </div> 3579 </script>
3579 3580 3581 3582 3583 3584<!-- Blaze 5th feedback Template-->
3585<script type="text/template" id="feedback-5-template"> 3586 <div class="column full feedbackContainer feedback2 spectre <@- total @>" style="padding: 0;"> 3587 <@if(msg){@> 3588 <h4 style="letter-spacing: 2px; text-align: center;"><@print(msg)@></h4> 3589 <@}else{@> 3590 <@ if(total > 0 && ratings && ratings.avgRating) {@> 3591 <div class="avgratingbox"> 3592 <div class="column third"> 3593 <div class="is-card avgRatingContainer" style="background:#232323; border-radius:0px;padding:21px;" > 3594 <div class="avgRatingInnerContainer"> 3595 <h3 style="font-weight: 800; font-size: 12px; line-height: 1.3; margin-bottom: 0px;color:white;">Customer ratings</h3> 3596 <div style="display: flex; flex-direction: row; align-items: center; justify-content: center;"> 3597 <i class="icon ion-android-star text-primary" style="font-size: 80px;color:rgb(216, 253, 70);"></i> 3598 <div style="margin-left: 25px;"> 3599 <span style="display: flex; justify-content: flex-start; align-items: baseline;"> 3600 <h3 style="margin-top: 0px; margin-bottom: 0px; font-size: 32px; font-weight: 800; color: rgb(216, 253, 70); line-height: 1.3;"> 3601 <@ if(ratings && ratings.avgRating) {@> 3602 <@ print(parseFloat(ratings.avgRating.toFixed(1))) @> 3603 <@}else{@> 3604 0 3605 <@}@> 3606 </h3> 3607 <p class="avgRatingReviews" style="color:white;">/5</p> 3608 </span> 3609 <p class="avgRatingReviews" style="color:white;"> 3610 <@ if(ratings){print(ratings.total) }else{0}@> reviews 3611 </p> 3612 </div> 3613 </div> 3614 </div> 3615 </div> 3616 </div> 3617 </div> 3618 <@ } @> 3619 <div id="feedback5Reviewlist" class="reviewslist"> 3620 <@ $.each(items, function(index, item) { @> 3621 <@ var template = _.template($("#feedback-5-item-template").html()); print(template({item: item})) @> 3622 <@ }); @> 3623 <@}@> 3624 </div> 3625 <div class="row clearfix"> 3626 <div class="column full" style="text-align: center;"> 3627 <a class="loadMoreReviewsBtn reviewLMbtn text-primary" data-itemTemplate="feedback-5-item-template" data-reviewData="feedback5Reviewlist" style="text-align: center; font-size: 16px; font-weight: 500;cursor: pointer;line-height: 1.5;display: none; background:#D8FD46; color:black; padding:12px 28px; border-radius:0px;text-decoration:none;"> 3628 View All Reviews 3629 </a> 3630 </div> 3631 </div> 3632 </script>
3632 3633 3634 3635
3635<script type="text/template" id="feedback-5-item-template"> 3636 <style> 3637 .template5-review .reviewTxt{ 3638 color:white !important; 3639 } 3640 .template5-review .reviewerName p{ 3641 color:white !important; 3642 } 3643 </style> 3644 <div class="column third reviewcontainer template5-review <@ if(typeof SPUSER !== 'undefined' && item["userId"] === SPUSER.id) { @> selfreview <@ } @>"> 3645 <div class="is-card avgRatingContainer" style="border:1px solid #232323;padding:20px;"> 3646 <div style="text-align: center; display: flex; flex-direction: column; align-items: flex-start;"> 3647 <@ if(typeof SPUSER !== 'undefined' && item["userId"] === SPUSER.id) { @> 3648 <a style="color:#D8FD46 !important;" class="btn btn-link float-right deleteCurrentReviewBtn" data-id="<@ print(item['_id']) @>"> 3649 <i class="material-icons">delete</i> 3650 </a> 3651 <@ } @> 3652 <p class="reviewTxt" style="font-size: 14px; font-weight: 400; line-height: 1.5; margin-bottom: 25px; margin-top: 0px; min-height: 82px; max-height: 80px; overflow: hidden;"> 3653 <@ print(item.reviewtext.replace(/</g,'<').replace(/>/g,'>')) @> 3654 </p> 3655 <div class="reviewerName"> 3656 <p style="font-size: 12px; font-weight: 500; line-height: 1.3; text-align: left; padding-top: 0px; margin:0px; opacity:0.5; "> 3657 <@ print(item.userName) @> 3658 </p> 3659 </div> 3660 3661 <p style="margin: 0px;"> 3662 <@ for (ratingsSize = 1; ratingsSize <= 5; ratingsSize++) { @> 3663 <@ if(item.rating >= ratingsSize) { @> 3664 <i class="fa fa-solid fa-star-sharp text-primary" style="color:#D8FD46 !important;"></i> 3665 <@ } else if(item.rating > ratingsSize - 1 && item.rating < ratingsSize) { @> 3666 <i class="fa fa-solid fa-star-sharp-half text-primary" style="color:#D8FD46 !important;"></i> 3667 <@ } @> 3668 <@ } @> 3669 </p> 3670 </div> 3671 </div> 3672 </div> 3673 </script>
3673 3674 3675
3675<script type="text/template" id="feedback-5-createTemplate"> 3676 <div data-cat="1" class="is-section is-box is-section-20" id="createCustomReview" style="display: none;" data-id="<@- parentId @>"> 3677 <div class="is-boxes"> 3678 <div class="is-box-centered" style="background:#181818;"> 3679 <div class="is-container container" style="max-width: 1200px;"> 3680 3681 <div class="review-box review-add-box"> 3682 <div class="is-container container is-content-1200" > 3683 <div class="row clearfix" > 3684 <div class="column full" > 3685 <h1 style="text-align: left; font-size: 32px; line-height: 1.1; font-weight: 600; letter-spacing: 0px; color: white; ">Add a review</h1> 3686 </div> 3687 </div> 3688 <div class="textarea-cont" style="background:transparent"> 3689 <div style="display:flex; gap:30px;"> 3690 <div><h3 style="font-size:18px;font-weight:600; color:white;">Overall Rating</h3></div> 3691 <div class="review-star text-primary" 3692 style="display: flex; flex-direction: row; align-items: center; padding-top: 0px; margin-top: 0px;margin-left:0px !important;margin:0px !important"> 3693 <span id="rating-stars" > 3694 <@ for (ratingsSize = 1; ratingsSize <= 5; ratingsSize++) {@> 3695 <i class="fa fa-solid fa-star-sharp rating-star" 3696 data-value='<@- ratingsSize @>' 3697 style="width: 20px; height: 20px; text-align: center; flex-shrink: 0; margin: 0; padding: 0;"></i> 3698 <@}@> 3699 </span> 3700 </div> 3701 3702 3703 </div> 3704 <textarea class="add-review-textarea" id="reviewText" style="color:white;background:#232323;width: 100%; border: 1px solid #636363; padding: 28px; min-height: 180px; font-size: 14px; font-weight: 500; line-height: 1.5; padding-top: 10px;border-radius:0px !important" placeholder="Add your review here"></textarea> 3705 <@ if(typeof SPUSER !== 'undefined' && SPUSER.name.length > 0) { @> 3706 <p style="font-weight: 400; font-size: 10px; line-height: 1.3; color: rgba(255, 255, 255, 0.5); margin-top: 0px;"><@ print(SPUSER.name) @></p> 3707 <@ } @> 3708 </div> 3709 <div style=" display: flex; justify-content: center;margin-top:20px;"> 3710 <button style="letter-spacing:0px !important ; background-color:#D8FD46;padding:12px 28px !important; border-radius:0px !important; color:black;" id="reviewSubmitBtn" class="btn btn-primary <@ if(typeof SPUSER !== 'undefined'){ print('createCustomReviewBtn') }else { print('loginBtn') } @>" 3711 data-reviewData="feedback5Reviewlist" disabled >Submit</button> 3712 </div> 3713 </div> 3714 </div> 3715 </div> 3716 </div> 3717 </div> 3718 </div> 3719 </script>
3719 3720 3721 3722 3723 3724 3725 3726 3727 3728 3729 3730 3731 3732 3733 3734 3735<!-- Nebula Feedback 6--> 3736
3737<script type="text/template" id="feedback-6-template"> 3738 <div class="column full feedbackContainer feedback2 spectre <@- total @>" style="padding: 0;"> 3739 <@if(msg){@> 3740 <h4 style="letter-spacing: 2px; text-align: center;"><@print(msg)@></h4> 3741 <@}else{@> 3742 <@ if(total > 0 && ratings && ratings.avgRating) {@> 3743 <div class="avgratingbox"> 3744 <div class="column third"> 3745 <div class="is-card avgRatingContainer" style="border-radius:16px !important ; padding:20px ;border:1px solid #E5E5E5 !important;" > 3746 <div class="avgRatingInnerContainer"> 3747 <h3 style="font-weight: 800; font-size: 12px; line-height: 1.3; margin-bottom: 0px;">Customer ratings</h3> 3748 <div style="display: flex; flex-direction: row; align-items: center; justify-content: center;"> 3749 <i class="icon ion-android-star text-primary" style="font-size: 80px; color: #6715FF !important;"></i> 3750 <div style="margin-left: 25px;"> 3751 <span style="display: flex; justify-content: flex-start; align-items: baseline;"> 3752 <h3 style="margin-top: 0px; margin-bottom: 0px; font-size: 32px; font-weight: 800; color: #6715FF !important; line-height: 1.3;"> 3753 <@ if(ratings && ratings.avgRating) {@> 3754 <@ print(parseFloat(ratings.avgRating.toFixed(1))) @> 3755 <@}else{@> 3756 0 3757 <@}@> 3758 </h3> 3759 <p class="avgRatingReviews">/5</p> 3760 </span> 3761 <p class="avgRatingReviews"> 3762 <@ if(ratings){print(ratings.total) }else{0}@> reviews 3763 </p> 3764 </div> 3765 </div> 3766 </div> 3767 </div> 3768 </div> 3769 </div> 3770 <@ } @> 3771 <div id="feedback6Reviewlist" class="reviewslist"> 3772 <@ $.each(items, function(index, item) { @> 3773 <@ var template = _.template($("#feedback-6-item-template").html()); print(template({item: item})) @> 3774 <@ }); @> 3775 <@}@> 3776 </div> 3777 <div class="row clearfix"> 3778 <div class="column full" style="text-align: center;"> 3779 <a class="loadMoreReviewsBtn reviewLMbtn text-primary" data-itemTemplate="feedback-6-item-template" data-reviewData="feedback6Reviewlist" style="text-align: center; font-size: 16px; font-weight: 500;cursor: pointer;line-height: 1.5;display: none; background:#6715FF; color:white; padding:12px 28px; border-radius:24px;text-decoration:none;"> 3780 View All Reviews 3781 </a> 3782 </div> 3783 </div> 3784 </script>
3784 3785 3786
3786<script type="text/template" id="feedback-6-item-template"> 3787 <div class="column third reviewcontainer <@ if(typeof SPUSER !== 'undefined' && item["userId"] === SPUSER.id) { @>selfreview<@ } @>"> 3788 <div class="is-card avgRatingContainer" style="border:1px solid #E5E5E5 !important; border-radius:16px !important;background:white; padding:20px; "> 3789 <div style="text-align: center; display: flex; flex-direction: column; align-items: flex-start;" > 3790 <@ if(typeof SPUSER !== 'undefined' && item["userId"] === SPUSER.id) { @> 3791 <a style="color:#6715FF !important;" class="btn btn-link float-right deleteCurrentReviewBtn" data-id="<@ print(item['_id']) @>"><i class="material-icons">delete</i></a> 3792 <@ } @> 3793 <p class="reviewTxt" style="font-size: 14px; font-weight: 400; line-height: 1.5; margin-bottom: 25px; margin-top: 0px; min-height: 82px; max-height: 80px; overflow: hidden;"> 3794 <@ print(item.reviewtext.replace(/</g,'<').replace(/>/g,'>')) @> 3795 </p> 3796 <div class="reviewerName"> 3797 <p style="font-size: 12px; font-weight: 500; line-height: 1.3; text-align: left; padding-top: 0px; margin:0px; opacity:0.5;"> 3798 <@ print(item.userName) @> 3799 </p></div> 3800 3801 <p style="margin: 0px;"> 3802 <@ for (ratingsSize = 1; ratingsSize <= 5; ratingsSize++) {@> 3803 <@ if(item.rating >= ratingsSize) {@> 3804 <i class="fa fa-solid fa-star-sharp text-primary" style="color:#6715FF !important;"></i> 3805 <@ } else if(item.rating > ratingsSize-1 && item.rating < ratingsSize) { @> 3806 <i class="fa fa-solid fa-star-sharp-half text-primary" style="color:#6715FF !important;"></i> 3807 <@ } @> 3808 <@ }@> 3809 </p> 3810 3811 </div> 3812 </div> 3813 </div> 3814 </script>
3814 3815
3815<script type="text/template" id="feedback-6-createTemplate"> 3816 <div data-cat="1" class="is-section is-box is-section-20" id="createCustomReview" style="display: none;" data-id="<@- parentId @>"> 3817 <div class="is-boxes"> 3818 <div class="is-box-centered"> 3819 <div class="is-container container" style="max-width: 1200px;"> 3820 3821 <div class="review-box review-add-box"> 3822 <div class="is-container container is-content-1200" > 3823 <div class="row clearfix" > 3824 <div class="column full" > 3825 <h1 style="text-align: left; font-size: 32px; line-height: 1.1; font-weight: 600; letter-spacing: 0px; color: black; ">Add a review</h1> 3826 </div> 3827 </div> 3828 <div class="textarea-cont" style="background:transparent"> 3829 <div style="display:flex; gap:30px;"> 3830 <div><h3 style="font-size:18px;font-weight:600;">Overall Rating</h3></div> 3831 <div class="review-star1 text-primary" 3832 style="display: flex; flex-direction: row; align-items: center; padding-top: 0px; margin-top: 0px;margin-left:0px !important;margin:0px !important"> 3833 <span id="rating-stars" > 3834 <@ for (ratingsSize = 1; ratingsSize <= 5; ratingsSize++) {@> 3835 <i class="fa fa-solid fa-star-sharp rating-star" 3836 data-value='<@- ratingsSize @>' 3837 style="width: 20px; height: 20px; text-align: center; flex-shrink: 0; margin: 0; padding: 0;"></i> 3838 <@}@> 3839 </span> 3840 </div> 3841 <style></style> 3842 3843 3844 </div> 3845 <textarea class="add-review-textarea" id="reviewText" style="background:white;width: 100%; border: 1px solid #c3c0c0; padding-right: 28px; padding-bottom: 28px;padding-left:20px; min-height: 180px; font-size: 14px; font-weight: 500; line-height: 1.5; padding-top: 10px;border-radius:16px !important" placeholder="Add your review here"></textarea> 3846 <@ if(typeof SPUSER !== 'undefined' && SPUSER.name.length > 0) { @> 3847 <p style="font-weight: 400; font-size: 10px; line-height: 1.3; color: grey; margin-top: 0px;"><@ print(SPUSER.name) @></p> 3848 <@ } @> 3849 </div> 3850 <div style=" display: flex; justify-content: center;"> 3851 <button style="letter-spacing:0px !important ; background-color:#6715FF;padding:12px 28px !important;margin-top:30px;" id="reviewSubmitBtn" class="btn btn-primary <@ if(typeof SPUSER !== 'undefined'){ print('createCustomReviewBtn') }else { print('loginBtn') } @>" 3852 data-reviewData="feedback6Reviewlist" disabled >Submit</button> 3853 </div> 3854 </div> 3855 </div> 3856 </div> 3857 </div> 3858 </div> 3859 </div> 3860 </script>
3860 3861 3862 3863 3864 3865 3866<!-- Olive Feedback 7-->
3867<script type="text/template" id="feedback-7-template"> 3868 <div class="column full feedbackContainer feedback2 spectre <@- total @>" style="padding: 0;"> 3869 <@if(msg){@> 3870 <h4 style="letter-spacing: 2px; text-align: center;"><@print(msg)@></h4> 3871 <@}else{@> 3872 <@ if(total > 0 && ratings && ratings.avgRating) {@> 3873 <div class="avgratingbox"> 3874 <div class="column third"> 3875 <div class="is-card avgRatingContainer" style="border-radius:16px !important ; padding:20px ;border:1px solid #E5E5E5 !important;" > 3876 <div class="avgRatingInnerContainer"> 3877 <h3 style="font-weight: 800; font-size: 12px; line-height: 1.3; margin-bottom: 0px;">Customer ratings</h3> 3878 <div style="display: flex; flex-direction: row; align-items: center; justify-content: center;"> 3879 <i class="icon ion-android-star text-primary" style="font-size: 80px; color: #064400 !important;"></i> 3880 <div style="margin-left: 25px;"> 3881 <span style="display: flex; justify-content: flex-start; align-items: baseline;"> 3882 <h3 style="margin-top: 0px; margin-bottom: 0px; font-size: 32px; font-weight: 800; color: #064400 !important; line-height: 1.3;"> 3883 <@ if(ratings && ratings.avgRating) {@> 3884 <@ print(parseFloat(ratings.avgRating.toFixed(1))) @> 3885 <@}else{@> 3886 0 3887 <@}@> 3888 </h3> 3889 <p class="avgRatingReviews">/5</p> 3890 </span> 3891 <p class="avgRatingReviews"> 3892 <@ if(ratings){print(ratings.total) }else{0}@> reviews 3893 </p> 3894 </div> 3895 </div> 3896 </div> 3897 </div> 3898 </div> 3899 </div> 3900 <@ } @> 3901 <div id="feedback7Reviewlist" class="reviewslist"> 3902 <@ $.each(items, function(index, item) { @> 3903 <@ var template = _.template($("#feedback-7-item-template").html()); print(template({item: item})) @> 3904 <@ }); @> 3905 <@}@> 3906 </div> 3907 <div class="row clearfix"> 3908 <div class="column full" style="text-align: center;"> 3909 <a class="loadMoreReviewsBtn reviewLMbtn text-primary" data-itemTemplate="feedback-7-item-template" data-reviewData="feedback7Reviewlist" style="text-align: center; font-size: 16px; font-weight: 500;cursor: pointer;line-height: 1.5;display: none; background:#064400; color:white; padding:12px 28px; border-radius:24px;text-decoration:none;"> 3910 View All Reviews 3911 </a> 3912 </div> 3913 </div> 3914 </script>
3914 3915 3916
3916<script type="text/template" id="feedback-7-item-template"> 3917 <div class="column third reviewcontainer <@ if(typeof SPUSER !== 'undefined' && item["userId"] === SPUSER.id) { @>selfreview<@ } @>"> 3918 <div class="is-card avgRatingContainer" style="border:1px solid #E5E5E5 !important; border-radius:16px !important;background:white; padding:20px; "> 3919 <div style="text-align: center; display: flex; flex-direction: column; align-items: flex-start;" > 3920 <@ if(typeof SPUSER !== 'undefined' && item["userId"] === SPUSER.id) { @> 3921 <a style="color:#064400 !important;" class="btn btn-link float-right deleteCurrentReviewBtn" data-id="<@ print(item['_id']) @>"><i class="material-icons">delete</i></a> 3922 <@ } @> 3923 <p class="reviewTxt" style="font-size: 14px; font-weight: 400; line-height: 1.5; margin-bottom: 25px; margin-top: 0px; min-height: 82px; max-height: 80px; overflow: hidden;"> 3924 <@ print(item.reviewtext.replace(/</g,'<').replace(/>/g,'>')) @> 3925 </p> 3926 <div class="reviewerName"> 3927 <p style="font-size: 12px; font-weight: 500; line-height: 1.3; text-align: left; padding-top: 0px; margin:0px; opacity:0.5;"> 3928 <@ print(item.userName) @> 3929 </p></div> 3930 3931 <p style="margin: 0px;"> 3932 <@ for (ratingsSize = 1; ratingsSize <= 5; ratingsSize++) {@> 3933 <@ if(item.rating >= ratingsSize) {@> 3934 <i class="fa fa-solid fa-star-sharp text-primary" style="color:#064400 !important;"></i> 3935 <@ } else if(item.rating > ratingsSize-1 && item.rating < ratingsSize) { @> 3936 <i class="fa fa-solid fa-star-sharp-half text-primary" style="color:#064400 !important;"></i> 3937 <@ } @> 3938 <@ }@> 3939 </p> 3940 3941 </div> 3942 </div> 3943 </div> 3944 </script>
3944 3945
3945<script type="text/template" id="feedback-7-createTemplate"> 3946 <div data-cat="1" class="is-section is-box is-section-20" id="createCustomReview" style="display: none;" data-id="<@- parentId @>"> 3947 <div class="is-boxes"> 3948 <div class="is-box-centered"> 3949 <div class="is-container container" style="max-width: 1200px;"> 3950 3951 <div class="review-box review-add-box"> 3952 <div class="is-container container is-content-1200" > 3953 <div class="row clearfix" > 3954 <div class="column full" > 3955 <h1 style="text-align: left; font-size: 32px; line-height: 1.1; font-weight: 600; letter-spacing: 0px; color: black; ">Add a review</h1> 3956 </div> 3957 </div> 3958 <div class="textarea-cont"> 3959 <div style="display:flex; gap:30px;"> 3960 <div><h3 style="font-size:18px;font-weight:600;">Overall Rating</h3></div> 3961 <div class="review-star1 text-primary" 3962 style="display: flex; flex-direction: row; align-items: center; padding-top: 0px; margin-top: 0px;margin-left:0px !important;margin:0px !important"> 3963 <span id="rating-stars" > 3964 <@ for (ratingsSize = 1; ratingsSize <= 5; ratingsSize++) {@> 3965 <i class="fa fa-solid fa-star-sharp rating-star" 3966 data-value='<@- ratingsSize @>' 3967 style="width: 20px; height: 20px; text-align: center; flex-shrink: 0; margin: 0; padding: 0;"></i> 3968 <@}@> 3969 </span> 3970 </div> 3971 <style></style> 3972 3973 3974 </div> 3975 <textarea class="add-review-textarea" id="reviewText" style="background:#E5E5E5;width: 100%; border: 1px solid #E5E5E5; padding-right: 28px; padding-bottom: 28px;padding-left:20px; min-height: 180px; font-size: 14px; font-weight: 500; line-height: 1.5; padding-top: 10px;border-radius:16px !important" placeholder="Add your review here"></textarea> 3976 <@ if(typeof SPUSER !== 'undefined' && SPUSER.name.length > 0) { @> 3977 <p style="font-weight: 400; font-size: 10px; line-height: 1.3; color: rgba(255, 255, 255, 0.5); margin-top: 0px;"><@ print(SPUSER.name) @></p> 3978 <@ } @> 3979 </div> 3980 <div style=" display: flex; justify-content: center;"> 3981 <button style="letter-spacing:0px !important ; background-color:#064400;padding:12px 28px !important;" id="reviewSubmitBtn" class="btn btn-primary <@ if(typeof SPUSER !== 'undefined'){ print('createCustomReviewBtn') }else { print('loginBtn') } @>" 3982 data-reviewData="feedback7Reviewlist" disabled >Submit</button> 3983 </div> 3984 </div> 3985 </div> 3986 </div> 3987 </div> 3988 </div> 3989 </div> 3990 </script>
3990 3991 3992 3993 3994 3995 <!--Dusk Feedback-8--> 3996
3996<script type="text/template" id="feedback-8-template"> 3997 <div class="column full feedbackContainer feedback2 spectre <@- total @>" style="padding: 0;"> 3998 <@if(msg){@> 3999 <h4 style="letter-spacing: 2px; text-align: center;"><@print(msg)@></h4> 4000 <@}else{@> 4001 <@ if(total > 0 && ratings && ratings.avgRating) {@> 4002 <div class="avgratingbox"> 4003 <div class="column third"> 4004 <div class="is-card avgRatingContainer" style="border-radius:16px !important ; padding:20px ;border:1px solid #E5E5E5 !important;background:#F5F5F5;" > 4005 <div class="avgRatingInnerContainer"> 4006 <h3 style="font-weight: 800; font-size: 12px; line-height: 1.3; margin-bottom: 0px;">Customer ratings</h3> 4007 <div style="display: flex; flex-direction: row; align-items: center; justify-content: center;"> 4008 <i class="icon ion-android-star text-primary" style="font-size: 80px; color: #282400 !important;"></i> 4009 <div style="margin-left: 25px;"> 4010 <span style="display: flex; justify-content: flex-start; align-items: baseline;"> 4011 <h3 style="margin-top: 0px; margin-bottom: 0px; font-size: 32px; font-weight: 800; color: #282400 !important; line-height: 1.3;"> 4012 <@ if(ratings && ratings.avgRating) {@> 4013 <@ print(parseFloat(ratings.avgRating.toFixed(1))) @> 4014 <@}else{@> 4015 0 4016 <@}@> 4017 </h3> 4018 <p class="avgRatingReviews">/5</p> 4019 </span> 4020 <p class="avgRatingReviews"> 4021 <@ if(ratings){print(ratings.total) }else{0}@> reviews 4022 </p> 4023 </div> 4024 </div> 4025 </div> 4026 </div> 4027 </div> 4028 </div> 4029 <@ } @> 4030 <div id="feedback8Reviewlist" class="reviewslist"> 4031 <@ $.each(items, function(index, item) { @> 4032 <@ var template = _.template($("#feedback-8-item-template").html()); print(template({item: item})) @> 4033 <@ }); @> 4034 <@}@> 4035 </div> 4036 <div class="row clearfix"> 4037 <div class="column full" style="text-align: center;"> 4038 <a class="loadMoreReviewsBtn reviewLMbtn text-primary" data-itemTemplate="feedback-8-item-template" data-reviewData="feedback8Reviewlist" style="text-align: center; font-size: 16px; font-weight: 500;cursor: pointer;line-height: 1.5;display: none; background:#282400; color:white; padding:12px 28px; border-radius:24px;text-decoration:none;"> 4039 View All Reviews 4040 </a> 4041 </div> 4042 </div> 4043 </script>
4043 4044 4045
4045<script type="text/template" id="feedback-8-item-template"> 4046 <div class="column third reviewcontainer <@ if(typeof SPUSER !== 'undefined' && item["userId"] === SPUSER.id) { @>selfreview<@ } @>"> 4047 <div class="is-card avgRatingContainer" style="border:1px solid #E5E5E5 !important; border-radius:16px !important;background:#F5F5F5; padding:20px; "> 4048 <div style="text-align: center; display: flex; flex-direction: column; align-items: flex-start;" > 4049 <@ if(typeof SPUSER !== 'undefined' && item["userId"] === SPUSER.id) { @> 4050 <a style="color:#282400 !important;" class="btn btn-link float-right deleteCurrentReviewBtn" data-id="<@ print(item['_id']) @>"><i class="material-icons">delete</i></a> 4051 <@ } @> 4052 <p class="reviewTxt" style="font-size: 14px; font-weight: 400; line-height: 1.5; margin-bottom: 25px; margin-top: 0px; min-height: 82px; max-height: 80px; overflow: hidden;"> 4053 <@ print(item.reviewtext.replace(/</g,'<').replace(/>/g,'>')) @> 4054 </p> 4055 <div class="reviewerName"> 4056 <p style="font-size: 12px; font-weight: 500; line-height: 1.3; text-align: left; padding-top: 0px; margin:0px; opacity:0.5;"> 4057 <@ print(item.userName) @> 4058 </p></div> 4059 4060 <p style="margin: 0px;"> 4061 <@ for (ratingsSize = 1; ratingsSize <= 5; ratingsSize++) {@> 4062 <@ if(item.rating >= ratingsSize) {@> 4063 <i class="fa fa-solid fa-star-sharp text-primary" style="color:#282400 !important;"></i> 4064 <@ } else if(item.rating > ratingsSize-1 && item.rating < ratingsSize) { @> 4065 <i class="fa fa-solid fa-star-sharp-half text-primary" style="color:#282400 !important;"></i> 4066 <@ } @> 4067 <@ }@> 4068 </p> 4069 4070 </div> 4071 </div> 4072 </div> 4073 </script>
4073 4074
4074<script type="text/template" id="feedback-8-createTemplate"> 4075 <div data-cat="1" class="is-section is-box is-section-20" id="createCustomReview" style="display: none;" data-id="<@- parentId @>"> 4076 <div class="is-boxes"> 4077 <div class="is-box-centered"> 4078 <div class="is-container container" style="max-width: 1200px;"> 4079 4080 <div class="review-box review-add-box"> 4081 <div class="is-container container is-content-1200" > 4082 <div class="row clearfix" > 4083 <div class="column full" > 4084 <h1 style="text-align: left; font-size: 32px; line-height: 1.1; font-weight: 600; letter-spacing: 0px; color: black; ">Add a review</h1> 4085 </div> 4086 </div> 4087 <div class="textarea-cont"> 4088 <div style="display:flex; gap:30px;"> 4089 <div><h3 style="font-size:18px;font-weight:600;">Overall rating</h3></div> 4090 <div class="review-star1 text-primary" 4091 style="display: flex; flex-direction: row; align-items: center; padding-top: 0px; margin-top: 0px;margin-left:0px !important;margin:0px !important"> 4092 <span id="rating-stars" > 4093 <@ for (ratingsSize = 1; ratingsSize <= 5; ratingsSize++) {@> 4094 <i class="fa fa-solid fa-star-sharp rating-star" 4095 data-value='<@- ratingsSize @>' 4096 style="width: 20px; height: 20px; text-align: center; flex-shrink: 0; margin: 0; padding: 0;"></i> 4097 <@}@> 4098 </span> 4099 </div> 4100 <style></style> 4101 4102 4103 </div> 4104 <textarea class="add-review-textarea" id="reviewText" style="background:#E5E5E5;width: 100%; border: 1px solid #E5E5E5; padding-right: 28px; padding-bottom: 28px;padding-left:20px; min-height: 180px; font-size: 14px; font-weight: 500; line-height: 1.5; padding-top: 10px;border-radius:16px !important" placeholder="Add your review here"></textarea> 4105 <@ if(typeof SPUSER !== 'undefined' && SPUSER.name.length > 0) { @> 4106 <p style="font-weight: 400; font-size: 10px; line-height: 1.3; color: rgba(255, 255, 255, 0.5); margin-top: 0px;"><@ print(SPUSER.name) @></p> 4107 <@ } @> 4108 </div> 4109 <div style=" display: flex; justify-content: center;"> 4110 <button style="letter-spacing:0px !important ; background-color:#282400;padding:12px 28px !important;" id="reviewSubmitBtn" class="btn btn-primary <@ if(typeof SPUSER !== 'undefined'){ print('createCustomReviewBtn') }else { print('loginBtn') } @>" 4111 data-reviewData="feedback8Reviewlist" disabled >Submit</button> 4112 </div> 4113 </div> 4114 </div> 4115 </div> 4116 </div> 4117 </div> 4118 </div> 4119 </script>
4119 4120 4121 4122 4123<div class="spectre"> 4124<div class="modal" id="reviewModal"> 4125 <a href="javascript:void(0);" class="modal-overlay close" 4126 aria-label="Close"></a> 4127 <div class="modal-container"> 4128 <div class="modal-header"> 4129 <a href="javascript:void(0);" 4130 class="close btn btn-clear float-right" aria-label="Close"></a> 4131 <div class="modal-title h5">Review</div> 4132 </div> 4133 <div class="modal-body" style="max-height: 90vh;padding-top: 0;"> 4134 </div> 4135 </div> 4136 4137 4138 4139</div> 4140 4141 4142</div> 4143 4144 4145 4146 4147 4148 4149 4150 4151 4152 4153 4154 4155 4156 4157
4158<script> 4159 var created_date = `Created Date`; 4160 var uname_msg = `Name`; 4161 var email_msg = `Email`; 4162 var has_web_token = `Has Web Token`; 4163 var has_mobile_token = `Has Mobile Token`; 4164 var actions_msg = `Actions`; 4165 var delete_user = `Delete User`; 4166 var create_target_audience = `Create Target Audience`; 4167 var msg_now = `NOW`; 4168 var msg_now_2 = `Now`; 4169 var msg_scheduled = `SCHEDULED`; 4170 var msg_recurring = `RECURRING`; 4171 var msg_weeks = `weeks`; 4172 var msg_months = `month(s)`; 4173 var msg_days = `days`; 4174 var notification_screen = `Notification Screen`; 4175 var coursepackagelandingpage = `Course/Package landing page`; 4176 var search_course_name = `Search by course/package name`; 4177 var webinar_landing_page = `Webinar landing page`; 4178 var search_by_webinar_name = `Search by webinar name`; 4179 var categorypage = `Category Page`; 4180 var custompage = `Custom Page`; 4181 var blogpage = `Blog Page`; 4182 var customlink = `Custom Link`; 4183 var homepage_msg = `Homepage`; 4184 var search_category = `Search category`; 4185 var search_page_title = `Search by Page title`; 4186 var search_blog_title = `Search by Blog title`; 4187 var enter_the_link = `Enter the link`; 4188 var membership_page = `Membership page`; 4189 var pick_a_date = `Pick a date`; 4190 var pick_first_push_date = `Pick a first push date`; 4191 var every_msg = `Every`; 4192 var starting_msg = `Starting`; 4193 var msg_published = `Published`; 4194 var msg_unpublished = `Unpublished`; 4195 var msg_customize = `Customize`; 4196 var msg_edit = `Edit`; 4197 var msg_featured_image = `Featured Image`; 4198 var msg_preview = `Preview`; 4199 var msg_delete = `Delete`; 4200 var msg_unpublish = `Unpublish`; 4201 var msg_publish = `Publish `; 4202 var msg_question= `questions`; 4203 var try_new_coding_assignment= `Try new coding assignment`; 4204 var change_enrollment_date = `Change Enrollment Date`; 4205 var change_expiry = `Change Expiry`; 4206 var change_remanining_time = `Change Remaining Time`; 4207 var remove_from_course = `Remove From Course`; 4208 var reset_course_progress = `Reset Course Progress`; 4209 var complete_report = `Complete Report`; 4210 var msg_progress = `Progress`; 4211 var timetaken = `Time Taken`; 4212 var msg_user_details = `User Details`; 4213 var graphy_platform_fees_note = `Amount after deducting Graphy platform fees. This does not include your payment gateway charges.`; 4214 var final_price_note = `Final payable price by learners`; 4215 var save_alert_message = `Save progress before moving forward.`; 4216 var no_chapter_alert_message = `Please add at least one chapter in the course.`; 4217 var download_msg = `Download`; 4218 var revoke_msg = `Revoke`; 4219 var yes_msg = `Yes`; 4220 var no_msg = `No`; 4221 var details_hover = `Details`; 4222 var hide_notification = `Hide Notification`; 4223 var notify_learners_hover = `Notify Learners`; 4224 var search_course_package = `Search Courses to add in this package.`; 4225 var bulk_delete = `Bulk Delete`; 4226 var scheduled_msg = `Scheduled`; 4227 var inprogress_msg = `In Progress`; 4228 var completed_msg = `Completed`; 4229 var yes_all_caps = `YES`; 4230 var no_all_caps = `NO`; 4231 var discount_msg = `Discount`; 4232 var max_discount = `Max Discount`; 4233 var min_cart = `Min Cart`; 4234 var delete_bookmark = `Delete Bookmark`; 4235 var view_question = `View question`; 4236 var msg_free = `Free`; 4237 var membership_expiration_note = `Membership will be canceled on next billing date.`; 4238 var msg_active = `Active`; 4239 var msg_inactive = `Inactive`; 4240 var delete_hover = `Delete`; 4241 var view_hover = `View`; 4242 var coursewise = `Course Wise`; 4243 var learner_wise = `Learner wise`; 4244 var segment_wise = `Segment wise`; 4245 var unregistered_msg = `Unregistered`; 4246 var target_audience_deleted = `Target Audience Deleted`; 4247 var courses_msg = `course(s)`; 4248 var learners_msg = `learner(s)`; 4249 var unregistered_learners = `Unregistered Learner`; 4250 var all_learners = `All Learners`; 4251 var course_wise_learners = `Course wise Learners`; 4252 var segment_wise_learners = `Segment wise Learners`; 4253 var with_token = `with token`; 4254 var segments_msg = `segments`; 4255 var add_users_msg = `Add Users`; 4256 var approx_msg = `Approx`; 4257 var revoke_cancellation_request = `Revoke Cancellation request.`; 4258 var remove_scheduled_membership_cancellation = `Remove Scheduled Membership Cancellation`; 4259 var schedule_to_stop_subscription = `Schedule to stop Subscription`; 4260 var stop_subscription = `Stop subscription`; 4261 var available_for_review_all_caps = `AVAILABLE FOR REVIEW`; 4262 var reviewed_all_caps = `REVIEWED`; 4263 var rejected_all_caps = `REJECTED`; 4264 var preview_code = `Preview Code`; 4265 var approve_msg = `Approve`; 4266 var reject_msg = `Reject`; 4267 var history_msg = `History`; 4268 var message_hover= `Message`; 4269 var remove_msg= `Remove`; 4270 var enroll_msg= `Enroll`; 4271 var change_validity= `Change Validity`; 4272 var learners_selected= `learner(s) selected`; 4273 var select_all_msg= `Select all`; 4274 var do_you_want_to_delete_course= `Do you really want to delete this course?`; 4275 var do_you_want_to_revoke_this_certificate= `Do you really want to revoke this certificate?`; 4276 var do_you_want_to_revoke_entry= `Do you really want to revoke this entry?`; 4277 var do_you_want_to_edit_enrollment_date= `Do you really want to edit enrollment date of all learners?`; 4278 var do_you_want_to_edit_enrollment_date_for_selected= `Do you really want to edit enrollment date of selected learners?`; 4279 var do_you_want_to_edit_course_validity= `Do you really want to edit course validity of all learners?`; 4280 var do_you_want_to_edit_course_validity_for_selected= `Do you really want to edit course validity of selected learners?`; 4281 var do_you_want_to_remove_selected= `Do you really want to remove selected learners?`; 4282 var do_you_want_to_remove_all= `Do you really want to remove all learners?`; 4283 var do_you_want_to_create_zip= `Do you really want to create zip for this course?`; 4284 var do_you_want_to_deactivate= `Do you really want to deactivate?`; 4285 var successfully_done_alert= `Successfully Done.`; 4286 var please_select_atleast_1_learner= `Please select atleast 1 learner !`; 4287 var on_msg= `On`; 4288 var single_correct_option = `Single Correct Option`; 4289 var multiple_correct_options = `Multiple Correct Options`; 4290 var numerical_Fill_in_the_Blank = `Numerical/Fill in the Blank`; 4291 var match_the_Column = `Match the Column`; 4292 var subjective = `Subjective`; 4293 var your_target_audience_appear= `Your target audience user(s) will appear here`; 4294 var your_upcoming_campaign= `Your upcoming campaign will appear here`; 4295 var status_msg= `Status`; 4296 var stop_campaign= `Stop Campaign`; 4297 var copy_campaign= `Copy Campaign`; 4298 var platform_fee_tax = `platform fees including taxes`; 4299 var pg_fees_taxes = `payment gateway fees including taxes`; 4300 var msg_quiz = `Quiz`; 4301 var msg_livetest = `Live test`; 4302 var msg_heading = `Heading`; 4303 var msg_text = `Text`; 4304 var msg_form = `Form`; 4305 var msg_live_class = `Live class`; 4306 var msg_live_class_rec = `live class recording`; 4307 var msg_code = `Code`; 4308 var msg_assignment = `Assignment`; 4309 var msg_added = `added`; 4310 var msg_about = `About`; 4311 var msg_year = `year`;
4312 var msg_month = `Month`; 4313 var msg_day = `day`; 4314 //var msg_hour = `hh`; 4315 //var msg_minute = `mm`; 4316 //var msg_seconds = `seconds`; 4317 var msg_month_l = `month`; 4318 var msg_day_l = `day`; 4319 var msg_hour_l = `hour`; 4320 var msg_minute_l = `minute`; 4321 var msg_second_l = `second`; 4322 var mobile_number=`Mobile Number`; 4323 var status_android =`Status (ANDROID)`; 4324 var status_ios =`Status (IOS)`; 4325 var delivery_time=`Delivery Time`; 4326 var sure_unhide=`Are you sure you want to unhide this course ?`; 4327 var become_a_partner=`Become a Partner`; 4328 var failed_msg=`Failed`; 4329 var sent_msg=`Sent`; 4330 var pending_msg=`Pending`; 4331 var running_msg=`Running`; 4332 var add_pricing_plan = `Add pricing plan`; 4333 var msg_add = `Add`; 4334 var of_msg = `of`; 4335 var items_msg = `items` 4336 var ago_msg = `ago` 4337 var items_msg = `items`; 4338 4339 var january_msg = `January`; 4340 var february_msg = `February`; 4341 var march_msg = `March`; 4342 var april_msg = `April`; 4343 var may_msg = `May`; 4344 var june_msg = `June`; 4345 var july_msg = `July`; 4346 var august_msg = `August`; 4347 var september_msg = `September`; 4348 var october_msg = `October`; 4349 var november_msg = `November`; 4350 var december_msg = `December`; 4351 var sunday_msg = `Sunday`; 4352 var monday_msg = `Monday`; 4353 var tuesday_msg = `Tuesday`; 4354 var wednesday_msg = `Wednesday`; 4355 var thursday_msg = `Thursday`; 4356 var friday_msg = `Friday`; 4357 var saturday_msg = `Saturday`; 4358 var at_msg = `at`; 4359 var generate_outline = `Generate outline using AI`; 4360 var it_take_min = `It may take a min.`; 4361 var msg_ok = `OK`; 4362 var edit_pricing_plan = `Edit pricing plan`; 4363 4364</script>
4364 4365 4366 4367 4368 4369 4370 4371
4372<script src="https://d502jbuhuh9wk.cloudfront.net/resources/js/jquery-2.0.3.min.js"></script>
4372 4373
4374<script src="https://d502jbuhuh9wk.cloudfront.net/resources/js/underscore-min.js?v=1.9.1"></script>
4374 4375
4376<script src="https://d502jbuhuh9wk.cloudfront.net/resources/js/jquery.form.js"></script>
vendor: 1 bytes, line 4376
4376
4377<script async src="https://d502jbuhuh9wk.cloudfront.net/resources/js/jquery.noty.packaged.min.js"></script>
vendor: 1 bytes, line 4377
4377
4378<script src="https://d502jbuhuh9wk.cloudfront.net/resources/js/jquery-ui.min.js"></script>
vendor: 1 bytes, line 4378
4378
4379<script src="https://d502jbuhuh9wk.cloudfront.net/resources/js/jquery.timeago.js"></script>
vendor: 1 bytes, line 4379
4379
4380<script src="https://d502jbuhuh9wk.cloudfront.net/resources/js/js-webshim/minified/extras/modernizr-custom.js"></script>
vendor: 1 bytes, line 4380
4380
4381<script src="https://d502jbuhuh9wk.cloudfront.net/resources/js/jquery.datetimepicker.js"></script>
4381 4382 4383 4384 4385 4386 4387 4388 4389
4390<script src="https://d502jbuhuh9wk.cloudfront.net/resources/js/aes.js"></script>
vendor: 1 bytes, line 4390
4390
4391<script src="https://d502jbuhuh9wk.cloudfront.net/resources/js/mode-ecb-min.js"></script>
vendor: 1 bytes, line 4391
4391
4392<script src="https://d502jbuhuh9wk.cloudfront.net/resources/js/pad-nopadding-min.js"></script>
4392 4393 4394<!--
4394<script src="https://unpkg.com/@popperjs/core@2"></script>
vendor: 1 bytes, line 4394
4394
4395<script src="https://unpkg.com/tippy.js@6"></script>
4395 -->
4396<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/2.3.3/umd/popper.js" integrity="sha512-jSMYzs1Iebw2Uew+Y9karoqkqTDEzbqkdttIkHJKh3auQ6aGV7p8b7A3Yo9k/LsMvUFqWt5AV66hfo1OwH4Jjg==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
vendor: 1 bytes, line 4396
4396
4397<script src="https://cdnjs.cloudflare.com/ajax/libs/tippy.js/6.0.0/tippy-bundle.umd.js"></script>
4397 4398
4399<script type="text/javascript"> 4400 var passwordPolicyRequired = false; 4401 var checkoutV2 = true; 4402 var primaryFieldPhoneEnabled = false; 4403 var orgLanguageCode = ""; 4404 var SPEERESCDN = "https://d502jbuhuh9wk.cloudfront.net"; 4405</script>
4405 4406 4407
4407<script type="text/javascript"> 4408 var newCheckoutFlowParams = "FREE"; 4409 </script>
4409 4410
4411<script src="https://d502jbuhuh9wk.cloudfront.net/staticfiles/resources/scripts/sutils_919c30bb7230024efec7b939763642a2.js"></script>
vendor: 1 bytes, line 4411
4411
4412<script src="https://d502jbuhuh9wk.cloudfront.net/staticfiles/resources/scripts/utils/dateUtils_f53456b03f1287667a7b24fb63b367ce.js"></script>
vendor: 1 bytes, line 4412
4412
4413<script type="text/javascript"> 4414 // Make org object globally available for dateUtils 4415 window.org = window.org || {}; 4416 window.org.currencyCode = "false"=='true'?'USD':'INR'; 4417 var websiteV3Org = false; 4418 var orgCreatedDate = {"$date":"2026-01-12T14:16:34.079Z"}; 4419</script>
4419 4420 4421
4421<script src="https://d502jbuhuh9wk.cloudfront.net/staticfiles/resources/scripts/talk_b564486691065235006e186474078666.js"></script>
4421 4422 4423 4424 4425 4426
4427<script type="text/javascript"> 4428 var trialExpired = "false"; 4429 var planCancelled = "false"; 4430 var isFreePlan = false; 4431 4432</script>
vendor: 1 bytes, line 4432
4432
4433<script type="text/javascript" id="dsf239df"> 4434 var ctx = "/s", 4435 isFirstLogin = "", cjs = CryptoJS; 4436 4437 var defaultCoreColor = "#5755d9", theme1CoreColor = "#572b7a", theme2CoreColor = "#3f51b5", theme3CoreColor = "#009051", 4438 theme4CoreColor = "#596439", theme5CoreColor = "#F0591D", theme6CoreColor = "#28a745", theme7CoreColor = "#1bbc9b", 4439 theme8CoreColor = "#f38f20", apkId = "6231373436231373432363038663465653864613523630386634656538646135", theme9CoreColor = "#c0af01", theme10CoreColor = "#e8d3a4", 4440 webColor = defaultCoreColor, 4441 CFCDN = "https://d502jbuhuh9wk.cloudfront.net", mobileNotification = false, webNotification = false, 4442 iosPlayVideo = false, 4443 chromeDrmPlayback = false, 4444 gaType = "ga4"; 4445 4446 4447 4448 $("#dsf239df").remove(); 4449</script>
4449 4450 4451 4452 4453 4454 4455 4456 4457 4458 <input type="hidden" id="orgCurrencyCode" value="USD" /> 4459 4460 4461 4462 4463 4464
4464<script src="https://d502jbuhuh9wk.cloudfront.net/resources/js/detect-private-browsing.js"></script>
4464 4465
4465<script type="text/javascript"> 4466 detectPrivateMode( 4467 function(is_private) { 4468 if(typeof is_private !== 'undefined' && is_private) { 4469 $("input[name=privateMode]").val("private"); 4470 } 4471 } 4472 ); 4473 </script>
4473 4474 4475 4476 4477 4478 4479
4479<script type="text/javascript" 4480 src="https://d502jbuhuh9wk.cloudfront.net/resources/js/intlTelInput.min.js"></script>
4480 4481
4481<script type="text/javascript"> 4482 4483 var ipInfo = localStorage.getItem('ipInfo'); 4484 if(!ipInfo) { 4485 $.get("https://ipinfo.io", function() {}, "jsonp").always(function(resp) { 4486 if(resp) { 4487 var ipInfoStr = JSON.stringify(resp); 4488 var ipInfoField = document.getElementById("ipInfo"); 4489 var countryCode = (resp.country) ? resp.country : "in"; 4490 sessionStorage.setItem('countryCode', countryCode); 4491 if('statusText' in resp) { 4492 if((resp['statusText'] !== 'error') && ('ip' in resp)) { 4493 localStorage.setItem('ipInfo', ipInfoStr); 4494 if(ipInfoField) { 4495 ipInfoField.value = ipInfoStr; 4496 } 4497 } 4498 } 4499 else if('ip' in resp) { 4500 localStorage.setItem('ipInfo', ipInfoStr); 4501 if(ipInfoField) { 4502 ipInfoField.value = ipInfoStr; 4503 } 4504 } 4505 } 4506 }) 4507 } 4508 4509 $("#sphone").intlTelInput({ 4510 initialCountry: "auto", 4511 geoIpLookup: function(callback) { 4512 var scountryCode = sessionStorage.getItem('countryCode'); 4513 4514 if(scountryCode !== null) { 4515 callback(scountryCode); 4516 }else { 4517 $.get("https://ipinfo.io", function() {}, "jsonp").always(function(resp) { 4518 var countryCode = (resp && resp.country) ? resp.country : "in"; 4519 callback(countryCode); 4520 sessionStorage.setItem('countryCode', countryCode); 4521 }); 4522 } 4523 }, 4524 preferredCountries: ["in", "us"], 4525 separateDialCode: true, 4526 utilsScript: "/resources/js/intlUtils.js" 4527 }); 4528 4529 </script>
4529 4530 4531 4532 4533 4534<div class="spectre"> 4535 4536 4537 4538 4539 4540
4540<script type="text/javascript"> 4541 if(top != self) { 4542 //iframe 4543 $(".toast").remove(); 4544 } 4545 </script>
4545 4546 4547 4548</div> 4549 4550
4550<script> 4551(function () { 4552 function openRegisterForm() { 4553 const btn = document.querySelector( 4554 'button.webinar-action-button[data-id="6965305fc8a87e6284abbda5"]' 4555 ); 4556 4557 if (btn) { 4558 btn.click(); 4559 } else { 4560 // Retry until Graphy finishes rendering 4561 setTimeout(openRegisterForm, 300); 4562 } 4563 } 4564 4565 window.addEventListener("load", function () { 4566 setTimeout(openRegisterForm, 500); 4567 }); 4568})(); 4569</script>
4569 4570 4571<input type="hidden" id="orgCreditAlias" 4572 value="Meenakshi Jain Coins" /> 4573 4574 4575 4576 4577 4578
4579<script> 4580 4581 4582 4583 4584 var orgTaxLabel = ""; 4585 4586 4587 4588 var sessionCountry = ""; 4589 4590 $(document).ready(function() { 4591 $("input[name='userMobileVerify']").change(function(data){ 4592 var uniqueMobileSwitch = $('#uniqueMobileId'); 4593 if(data.target.value==='true'){ 4594 $('input[name=uniqueMobile]').prop('checked', true) 4595 $('#uniqueMobileLabelId').show(); 4596 }else{ 4597 $('input[name=uniqueMobile]').prop('checked', false) 4598 $('#uniqueMobileLabelId').hide(); 4599 } 4600 }); 4601 }); 4602 4603 4604 4605 4606 localStorage.removeItem('microserviceAuthToken'); 4607 4608 4609 4610 4611 4612 4613 localStorage.removeItem('communityToken'); 4614 4615 4616 4617 4618 4619 4620 localStorage.removeItem('chatRefreshToken'); 4621 4622 4623 4624 4625 4626 4627 localStorage.removeItem('refreshToken'); 4628 4629 4630 4631</script>
4631 4632 4633 4634<!-- amplitude script start --> 4635 4636 4637 4638
4638<script type="text/javascript"> 4639 window.localStorage.removeItem('loginAmplitudeEventSent'); 4640 </script>
4640 4641 4642 4643<!-- amplitude script end --> 4644 4645 4646 4647 <div id="template-container"></div> 4648 4649 4650 4651 4652 4653 4654 4655 4656 4657 <div class="spectre is-wrapper clearfix courseDescriptionCont" 4658 style=""> 4659 <html> 4660 <head></head> 4661 <body> 4662 <div id="1768469016303d" data-cat="1" class="is-section is-section-100 is-shadow-1 is-bg-grey courselandingpage" data-id="696cecf361729d185b1c7649"> 4663 <div data-coursid="696505334ff3a72bff9061ef" class="courselandingpage is-boxes"> 4664 <div data-coursid="696505334ff3a72bff9061ef" class="courselandingpage is-box is-bg-light is-dark-text is-box-12"> 4665 <div data-coursid="696505334ff3a72bff9061ef" class="courselandingpage is-boxes"> 4666 <div data-coursid="696505334ff3a72bff9061ef" class="courselandingpage is-box-centered"> 4667 <div class="is-container is-content-640 container"> 4668 <div class="row clearfix" draggable="false"> 4669 <div class="column full"> 4670 <h1 class="size-14" style="font-family: Poppins, sans-serif;"><b class="size-32">CHECKOUT SUMMMARY</b></h1> 4671 </div> 4672 </div> 4673 <div class="row clearfix" draggable="false"> 4674 <div class="column full"> 4675 <h1 class="size-14"><b class="size-18">Order Details:</b></h1> 4676 </div> 4677 </div> 4678 <div class="row clearfix"> 4679 <div class="column full"> 4680 <h1 class="size-18"><b class="size-21">Microsoft Excel - Excel from Beginner to Advanced</b></h1> 4681 <p class="size-16">All-in-One Excel Training: Transform Your Skills with Hands-On Projects and Real-World Applications!</p> 4682 <p class="size-16">Students Enrolled: 5,389</p> 4683 <p class="size-16">Last Updated: 05-January-2026</p> 4684 </div> 4685 </div> 4686 <div class="row clearfix"> 4687 <div class="column full"> 4688 <h1 class="size-18"><b class="size-21">This course Includes</b></h1> 4689 </div> 4690 </div> 4691 <div class="row clearfix"> 4692 <div class="column half"> 4693 <p class="size-16"><i class="icon ion-android-film"></i> 4+ Hours On Demand Videos</p> 4694 <p class="size-16"><i class="icon ion-android-archive"></i> 8+ Downloadable Resources</p> 4695 <p class="size-16"><i class="icon ion-android-bookmark"></i> Certificate of Completion</p> 4696 </div> 4697 <div class="column half"> 4698 <p class="size-16"><i class="icon ion-android-hand"></i> Instructor Q&A Support</p> 4699 <p class="size-16"><i class="icon ion-archive"></i> AI Formulas Writer ADD-IN</p> 4700 <p class="size-16"><i class="icon ion-android-people"></i> Join Excel Community</p> 4701 </div> 4702 </div> 4703 <div class="row clearfix"> 4704 <div> 4705 <form class="pricing text-center" name="planForm"> 4706
4706<script> 4707function getFormattedCurrentDate() { 4708 try { 4709 var today = new Date(); 4710 var options = { year: 'numeric', month: 'short', day: 'numeric' }; 4711 return today.toLocaleDateString('en-US', options); 4712 } catch (e) { 4713 console.error('[PRICING] Error formatting current date:', e); 4714 return 'Purchase date'; 4715 } 4716} 4717function getFormattedDateWithOffset(days) { 4718 try { 4719 var date = new Date(); 4720 date.setDate(date.getDate() + days); 4721 var options = { year: 'numeric', month: 'short', day: 'numeric' }; 4722 return date.toLocaleDateString('en-US', options); 4723 } catch (e) { 4724 console.error('[PRICING] Error formatting date with offset:', e); 4725 return 'Purchase date'; 4726 } 4727} 4728 4729function updateButtonTextForPlan(planId) { 4730 var productVariantsData = window.productVariantsData || []; 4731 var selectedPlan = productVariantsData.find(function(p) { return p.id === planId; }); 4732 4733 if (!selectedPlan || !selectedPlan.validityVariants || selectedPlan.validityVariants.length === 0) { 4734 return; 4735 } 4736 4737 var vv = selectedPlan.validityVariants[0]; 4738 var currencySymbol = '$'; 4739 var buttonText = ''; 4740 4741 if (vv.type === 'FREE') { 4742 buttonText = 'Buy now for FREE'; 4743 } else if (vv.recurPeriod === 'custom') { 4744 buttonText = 'Buy now'; 4745 } else { 4746 var price = vv.price || 0; 4747 buttonText = 'Buy now for ' + currencySymbol + price.toFixed(2); 4748 } 4749 4750 // Update both main and sticky buttons 4751 var buttons = document.querySelectorAll('.plan-enroll-btn.product-enroll'); 4752 buttons.forEach(function(btn) { 4753 btn.textContent = buttonText; 4754 btn.innerHTML = buttonText; 4755 btn.setAttribute('data-pid', planId); 4756 btn.setAttribute('data-plantype', vv.type); 4757 }); 4758 4759} 4760 4761document.addEventListener('DOMContentLoaded', function() { 4762 // Handle plan card selection 4763 var planCards = document.querySelectorAll('.product.card input[type="radio"]'); 4764 planCards.forEach(function(radio) { 4765 radio.addEventListener('change', function() { 4766 if (this.checked) { 4767 var planId = this.value; 4768 updateButtonTextForPlan(planId); 4769 } 4770 }); 4771 }); 4772 4773}); 4774</script>
4774 4775 <div style="display: block; margin-bottom: 38px;"> 4776 <div class="plan-grid"> 4777 </div> 4778 </div> 4779 <div class="center mt-20 cartBtns buyBtnWeb" style="display: flex; justify-content: center;"> 4780 <button data-purchasetype="singlecheckout" class="btn btn-primary btn-price plan-enroll-btn product-enroll addToLibrary" data-id="696cecf361729d185b1c7649" data-pid="p1" data-title="Learn Excel from Basics to AI â FREE" data-coursecategory="Software & Technology" name="commit" type="submit" value="Enroll" data-plantype="FREE" data-price="0.0" data-setupfee="">Buy now for FREE</button> 4781 </div> 4782 <div class="buyBtnSticky cartBtns"> 4783 <div class=""> 4784 <div class="container"> 4785 <div class="buyBtnStickyPriceCont"> 4786 <p class="price"> FREE </p> 4787 <p class="mrp"> </p> 4788 </div> 4789 <button data-purchasetype="singlecheckout" class="btn btn-primary btn-price plan-enroll-btn product-enroll buyBtnStickyBtn addToLibrary" data-id="696cecf361729d185b1c7649" data-pid="p1" data-title="Learn Excel from Basics to AI â FREE" data-coursecategory="Software & Technology" name="commit" type="submit" value="Enroll" data-plantype="FREE" data-price="0.0" data-setupfee="">Buy now for FREE</button> 4790 </div> 4791 </div> 4792 </div> 4793 </form> 4794
4794<script type="text/javascript"> 4795 // Log the full productVariants data from API response 4796 var productVariantsData = [ 4797 { 4798 id: 'p1', 4799 productType: 'Free', 4800 validityVariants: [ 4801 { 4802 type: 'FREE', 4803 label: 'Lifetime', 4804 price: 0, 4805 mrp: 0, 4806 totalPayments: 0, 4807 recurPeriod: '', 4808 oneTimePrice: 0, 4809 instalmentItem: null 4810 } 4811 ] 4812 } 4813 ]; 4814 4815 // Global function to handle info icon clicks - called directly from onclick attribute 4816 window.gphPricingHandleInfoIconClick = function(event) { 4817 event.preventDefault(); 4818 event.stopPropagation(); 4819 4820 var infoIcon = event.target; 4821 4822 var wrapper = infoIcon.closest('.gph-pricing-instalment-info-wrapper'); 4823 4824 if (!wrapper) { 4825 console.error('[PRICING] â Wrapper not found!'); 4826 return false; 4827 } 4828 4829 // Get the wrapper ID to find the associated popover 4830 var wrapperId = wrapper.getAttribute('data-wrapper-id'); 4831 4832 // Find popover by matching data-wrapper-id attribute 4833 var popover = null; 4834 if (wrapperId) { 4835 popover = document.querySelector('.gph-pricing-instalment-popover[data-wrapper-id="' + wrapperId + '"]'); 4836 } 4837 4838 // Fallback: try to find popover as child of wrapper 4839 if (!popover) { 4840 popover = wrapper.querySelector('.gph-pricing-instalment-popover'); 4841 } 4842 4843 if (!popover) { 4844 console.error('[PRICING] â Popover not found!'); 4845 return false; 4846 } 4847 4848 var isOpen = popover.style.display === 'block'; 4849 4850 // Close all other popovers 4851 document.querySelectorAll('.gph-pricing-instalment-popover').forEach(function(p) { 4852 p.style.display = 'none'; 4853 }); 4854 4855 // Toggle current popover 4856 if (!isOpen) { 4857 // Try to resolve data from productVariantsData using wrapper-id 4858 var wrapperId = wrapper.getAttribute('data-wrapper-id'); 4859 var planId = wrapperId ? wrapperId.replace('wrapper-', '') : null; 4860 var pvData = Array.isArray(productVariantsData) ? productVariantsData.find(function(p){ return p.id === planId; }) : null; 4861 var currencySymbol = '$'; 4862 4863 if (pvData && pvData.validityVariants && pvData.validityVariants.length > 0) { 4864 var vv = pvData.validityVariants[0]; 4865 // Determine total price to show 4866 var price = vv.type === 'INSTALMENT' 4867 ? (vv.oneTimePrice && vv.oneTimePrice > 0 ? vv.oneTimePrice : (vv.price || 0) * (vv.totalPayments || 0)) 4868 : (vv.price || 0); 4869 // Update total 4870 var totalElement = popover.querySelector('.gph-pricing-product-total'); 4871 if (totalElement) { 4872 totalElement.textContent = currencySymbol + Number(price).toFixed(2); 4873 } 4874 // Build instalments 4875 var instalmentList = popover.querySelector('.gph-pricing-instalment-list'); 4876 if (instalmentList) { 4877 instalmentList.innerHTML = ''; 4878 var instalments = []; 4879 if (vv.type === 'INSTALMENT') { 4880 // Priority 1: Use instalmentItem if available (custom instalment) 4881 if (vv.instalmentItem && Array.isArray(vv.instalmentItem) && vv.instalmentItem.length > 0) { 4882 var currentDate = getFormattedCurrentDate(); 4883 instalments = vv.instalmentItem.map(function(item, index) { 4884 var ordinal = (index === 0 ? 'st' : index === 1 ? 'nd' : index === 2 ? 'rd' : 'th'); 4885 // Calculate exact due date for each instalment 4886 var today = new Date(); 4887 var dueDate = index === 0 ? today : (function() { 4888 var date = new Date(today); 4889 if (item.unit === 'days') date.setDate(date.getDate() + item.dueOffset); 4890 else if (item.unit === 'months') date.setMonth(date.getMonth() + item.dueOffset); 4891 else if (item.unit === 'years') date.setFullYear(date.getFullYear() + item.dueOffset); 4892 return date; 4893 })(); 4894 // Format date as "Month Day, Year" (e.g., "Jan 30, 2025") 4895 var formattedDate = dueDate.toLocaleDateString('en-US', { year: 'numeric', month: 'short', day: 'numeric' }); 4896 var timingDisplay = (index === 0 ? 'Today, ' : '') + formattedDate; 4897 return { 4898 label: (index + 1) + ordinal + ' instalment', 4899 amount: item.price, 4900 timing: timingDisplay 4901 }; 4902 }); 4903 } else { 4904 // Priority 2: Calculate based on totalPayments (standard instalment) 4905 var totalPayments = vv.totalPayments || 0; 4906 var totalPrice = vv.oneTimePrice && vv.oneTimePrice > 0 ? vv.oneTimePrice : (vv.price || 0) * totalPayments; 4907 var perAmount = Math.round(totalPrice / totalPayments); 4908 var currentDate = getFormattedCurrentDate(); 4909 4910 // Determine offset interval based on recurPeriod 4911 var offsetInterval = 30; // default to 30 days (monthly) 4912 var unitLabel = 'days'; 4913 if (vv.recurPeriod === 'weekly') { 4914 offsetInterval = 7; 4915 unitLabel = 'days'; 4916 } else if (vv.recurPeriod === 'monthly') { 4917 offsetInterval = 30; 4918 unitLabel = 'days'; 4919 } 4920 4921 for (var i = 0; i < totalPayments; i++) { 4922 var ordinal = (i === 0 ? 'st' : i === 1 ? 'nd' : i === 2 ? 'rd' : 'th'); 4923 var offset = i === 0 ? 0 : (i * offsetInterval); 4924 // Build timing display: "Today, currentDate" for first, "currentDate + offset + unit" for others 4925 var timingDisplay = i === 0 ? 'Today, ' + currentDate : currentDate + ' + ' + offset + ' ' + unitLabel; 4926 instalments.push({ label: (i+1) + ordinal + ' instalment', amount: perAmount, timing: timingDisplay }); 4927 } 4928 } 4929 } 4930 // Render
4931 instalments.forEach(function(inst, index) { 4932 var li = document.createElement('li'); 4933 li.style.cssText = 'display:flex;align-items:flex-start;justify-content:space-between;color:#374151;margin:0px;background:#ffffff;'; 4934 if (index === instalments.length - 1) { 4935 li.style.marginBottom = '0px'; 4936 } 4937 li.innerHTML = '<div style="width:100%;margin-bottom:6px;">' + 4938 '<div style="display:flex;justify-content:space-between;align-items:flex-start;background:#ffffff;">' + 4939 '<span style="font-weight:500;font-size:16px;background:#ffffff;">' + inst.label + '</span>' + 4940 '<span style="font-weight:600;font-size:14px;background:#ffffff;">' + currencySymbol + inst.amount.toFixed(2) + '</span>' + 4941 '</div>' + 4942 '<span style="display:block;color:#9ca3af;font-size:12px;font-color:#878C90;margin-top:-4px;background:#ffffff;">' + inst.timing + '</span>' + 4943 '</div>'; 4944 instalmentList.appendChild(li); 4945 }); 4946 } 4947 } else { 4948 // Fallback to existing priceStr based percentages if no pv data 4949 // Populate dynamic values 4950 var priceStr = wrapper.getAttribute('data-price'); 4951 if (priceStr) { 4952 // Decode HTML entities 4953 var textarea = document.createElement('textarea'); 4954 textarea.innerHTML = priceStr; 4955 priceStr = textarea.value; 4956 // Extract numeric value from price string (e.g., "â¹320" -> 320) 4957 var priceMatch = priceStr.match(/[\d,]+\.?\d*/); 4958 var price = priceMatch ? parseFloat(priceMatch[0].replace(/,/g, '')) : 0; 4959 var currencySymbol = priceStr.replace(/[\d,.\s]/g, ''); 4960 // Calculate installments (50%, 30%, 20%) 4961 var instalments = [ 4962 { percentage: 0.5, label: '1st instalment', timing: 'Today, ' + getFormattedCurrentDate() }, 4963 { percentage: 0.3, label: '2nd instalment', timing: getFormattedDateWithOffset(30) }, 4964 { percentage: 0.2, label: '3rd instalment', timing: getFormattedDateWithOffset(60) } 4965 ]; 4966 // Update total 4967 var totalElement = popover.querySelector('.gph-pricing-product-total'); 4968 if (totalElement) { 4969 totalElement.textContent = currencySymbol + price.toFixed(2); 4970 } 4971 // Render 4972 var instalmentList = popover.querySelector('.gph-pricing-instalment-list'); 4973 if (instalmentList) { 4974 instalmentList.innerHTML = ''; 4975 instalments.forEach(function(inst, index) { 4976 var amount = Math.round(price * inst.percentage); 4977 var li = document.createElement('li'); 4978 li.style.cssText = 'display:flex;align-items:flex-start;justify-content:space-between;color:#374151;margin:0px;background:#ffffff;'; 4979 if (index === instalments.length - 1) { 4980 li.style.marginBottom = '0px'; 4981 } 4982 li.innerHTML = '<div style="width:100%;">' + 4983 '<div style="display:flex;justify-content:space-between;align-items:flex-start;background:#ffffff;">' + 4984 '<span style="font-weight:500;font-size:16px;background:#ffffff;">' + inst.label + '</span>' + 4985 '<span style="font-weight:600;font-size:14px;background:#ffffff;">' + currencySymbol + amount + '</span>' + 4986 '</div>' + 4987 '<span style="display:block;color:#9ca3af;font-size:12px;font-color:#878C90;background:#ffffff;">' + inst.timing + '</span>' + 4988 '</div>'; 4989 instalmentList.appendChild(li); 4990 }); 4991 } 4992 } 4993 } 4994 4995 // Position the fixed popover relative to the icon 4996 var iconRect = infoIcon.getBoundingClientRect(); 4997 var wrapperRect = wrapper.getBoundingClientRect(); 4998 4999 // Detect mobile screen 5000 var isMobile = window.innerWidth <= 768; // you can tweak breakpoint 5001 5002 // Choose offset based on device 5003 var leftOffset = isMobile ? 170 : 40; 5004 popover.style.top = (iconRect.bottom - wrapperRect.top + 6) + 'px'; 5005 popover.style.left = (iconRect.right - wrapperRect.left - leftOffset) + 'px'; 5006 popover.style.display = 'block'; 5007 } else { 5008 popover.style.display = 'none'; 5009 } 5010 5011 return false; 5012 }; 5013 5014 // Handle close button clicks 5015 document.addEventListener('click', function(e) { 5016 var closeBtn = e.target.closest('.gph-pricing-instalment-popover-close'); 5017 if (closeBtn) { 5018 e.preventDefault(); 5019 e.stopPropagation(); 5020 var popover = closeBtn.closest('.gph-pricing-instalment-popover'); 5021 if (popover) { 5022 popover.style.display = 'none'; 5023 } 5024 return false;
5025 } 5026 5027 // Close popover if clicking outside 5028 if (!e.target.closest('.gph-pricing-instalment-info-wrapper')) { 5029 document.querySelectorAll('.gph-pricing-instalment-popover').forEach(function(p) { 5030 p.style.display = 'none'; 5031 }); 5032 } 5033 }); 5034 document.addEventListener('wheel', function(e) { 5035 var scroller = e.target.closest('.gph-pricing-instalment-popover'); 5036 if (scroller) { 5037 e.stopPropagation(); 5038 } 5039 }, { passive: false }); 5040</script>
5040 5041
5041<script> 5042function attachPopoverScrollLock(popover) { 5043 const scroller = popover.querySelector('.gph-popover-scroll'); 5044 if (!scroller) return; 5045 5046 // Prevent scroll from bubbling to page 5047 scroller.addEventListener('wheel', function (e) { 5048 const delta = e.deltaY; 5049 const atTop = scroller.scrollTop <= 0; 5050 const atBottom = scroller.scrollHeight - scroller.scrollTop <= scroller.clientHeight + 1; 5051 5052 if ((delta < 0 && atTop) || (delta > 0 && atBottom)) { 5053 e.preventDefault(); // stop page scroll at edges 5054 } 5055 5056 e.stopPropagation(); // always stop bubbling 5057 }, { passive: false }); 5058 5059 let startY = 0; 5060 5061 scroller.addEventListener('touchstart', function (e) { 5062 startY = e.touches[0].clientY; 5063 }, { passive: true }); 5064 5065 scroller.addEventListener('touchmove', function (e) { 5066 const delta = startY - e.touches[0].clientY; 5067 const atTop = scroller.scrollTop <= 0; 5068 const atBottom = scroller.scrollHeight - scroller.scrollTop <= scroller.clientHeight + 1; 5069 5070 if ((delta < 0 && atTop) || (delta > 0 && atBottom)) { 5071 e.preventDefault(); 5072 } 5073 5074 e.stopPropagation(); 5075 }, { passive: false }); 5076} 5077 5078// Attach when popover becomes visible 5079const observer = new MutationObserver(() => { 5080 document.querySelectorAll('.gph-pricing-instalment-popover').forEach(popover => { 5081 if (popover.style.display === 'block' && !popover.dataset.scrollLock) { 5082 attachPopoverScrollLock(popover); 5083 popover.dataset.scrollLock = 'true'; 5084 } 5085 }); 5086}); 5087 5088observer.observe(document.body, { attributes: true, subtree: true, attributeFilter: ['style'] }); 5089</script>
5089 5090 </div> 5091 </div> 5092 </div> 5093 <link href="//fonts.googleapis.com/css?family=Poppins:400,600" rel="stylesheet" property="stylesheet" type="text/css"> 5094 </div> 5095 </div> 5096 </div> 5097 </div> 5098 <div class="is-box-img is-box is-dark-text is-box-1" style="background-color: rgba(0, 0, 0, 0.7);"> 5099 <div class="is-overlay"> 5100 <div class="is-overlay-content"></div> 5101 </div> 5102 </div> 5103 </div> 5104 <div id="1768479463956d" data-cat="115" class="is-section is-section-100 is-box is-dark-text"> 5105 <div class="is-boxes"> 5106 <div class="is-box-centered"> 5107 <div class="is-container container" style="max-width: 880px;"> 5108 <div class="row clearfix"> 5109 <div class="column full center"> 5110 <h1 class="size-48" style="letter-spacing: 2px; font-weight: bold;">FAQs</h1> 5111 </div> 5112 </div> 5113 <div class="row clearfix"> 5114 <div class="column full center"> 5115 <div class="spacer height-40"></div> 5116 </div> 5117 </div> 5118 <div class="row clearfix"> 5119 <div class="column full"> 5120 <h3 class="size-24"> 5121 <ul> 5122 <li>What exactly is this Excel training program?</li> 5123 </ul></h3> 5124 <blockquote style="margin: 0 0 0 40px; border: none; padding: 0px;"> 5125 <p class="size-18">This is a <em data-start="608" data-end="649">Complete Microsoft Excel Expert Program</em> that takes you from basics to advanced Excel skills â including formulas, data visualization, automation (VBA), Power Query, and AI-assisted tools â through self-paced online lessons with real-world case studies</p> 5126 </blockquote> 5127 </div> 5128 </div> 5129 <div class="row clearfix"> 5130 <div class="column full"> 5131 <h3 class="size-24"> 5132 <ul> 5133 <li>Is this a one-time payment or a subscription?</li> 5134 </ul></h3> 5135 <blockquote style="margin: 0 0 0 40px; border: none; padding: 0px;"> 5136 <p class="size-18">Yes, this is a <strong data-start="230" data-end="255">one-time payment only</strong>. You pay once and get <strong data-start="278" data-end="297">lifetime access</strong> to the complete Excel training, bonus courses, tools, updates, and community â <strong data-start="377" data-end="406">no monthly or yearly fees</strong>.</p> 5137 </blockquote> 5138 </div> 5139 </div> 5140 <div class="row clearfix"> 5141 <div class="column full"> 5142 <h3 class="size-24"> 5143 <ul> 5144 <li>Who is this course designed for?</li> 5145 </ul></h3> 5146 <blockquote style="margin: 0 0 0 40px; border: none; padding: 0px;"> 5147 <p class="size-18">Itâs suitable for <strong data-start="969" data-end="1021">beginners, intermediate users, and professionals</strong> who want to improve productivity, automate routine work, build dashboards, analyze data, and become confident working with Excel in the real world. There are <em data-start="1180" data-end="1198">no prerequisites</em>. </p> 5148 </blockquote> 5149 </div> 5150 </div> 5151 <div class="row clearfix"> 5152 <div class="column full"> 5153 <h3 class="size-24"> 5154 <ul> 5155 <li>How is the training delivered and accessed?</li> 5156 </ul></h3> 5157 <blockquote style="margin: 0 0 0 40px; border: none; padding: 0px;"> 5158 <p class="size-18">The course is <strong data-start="1800" data-end="1830">100% online and self-paced</strong> â with recorded video lessons, downloadable practice files, and syllabus guides. You can access it from your dashboard anytime after enrollment. </p> 5159 </blockquote> 5160 </div> 5161 </div> 5162 <div class="row clearfix"> 5163 <div class="column full"> 5164 <h3 class="size-24"> 5165 <ul> 5166 <li>Do I get any certificates?</li> 5167 </ul></h3> 5168 <blockquote style="margin: 0 0 0 40px; border: none; padding: 0px;"> 5169 <p class="size-18">Yes â upon successful completion, you receive a <strong data-start="2106" data-end="2121">certificate</strong> that you can share on LinkedIn or include in your resume to demonstrate your Excel proficiency. </p> 5170 </blockquote> 5171 </div> 5172 </div> 5173 <div class="row clearfix"> 5174 <div class="column full"> 5175 <h3 class="size-24"> 5176 <ul> 5177 <li>
5177Do I need to install Excel on my computer to take this?</li> 5178 </ul></h3> 5179 <blockquote style="margin: 0 0 0 40px; border: none; padding: 0px;"> 5180 <p class="size-18">Yes â a local installation of Microsoft Excel is recommended to practice the lessons effectively. Newer versions (Excel 365) are ideal to access the latest functions, though many topics work on older versions too. </p> 5181 </blockquote> 5182 </div> 5183 </div> 5184 <div class="row clearfix"> 5185 <div class="column full"> 5186 <h3 class="size-24"> 5187 <ul> 5188 <li>What support is available if I get stuck?</li> 5189 </ul></h3> 5190 <blockquote style="margin: 0 0 0 40px; border: none; padding: 0px;"> 5191 <p class="size-18">Students get access to <strong data-start="3623" data-end="3641">expert support</strong>, a members-only community for Q&A, and periodic live sessions. Youâre not left alone while learning tricky topics like macros or Power Query. </p> 5192 </blockquote> 5193 </div> 5194 </div> 5195 <div class="row clearfix"> 5196 <div class="column full"> 5197 <h3 class="size-24"> 5198 <ul> 5199 <li>How do I enroll and start learning?</li> 5200 </ul></h3> 5201 <blockquote style="margin: 0 0 0 40px; border: none; padding: 0px;"> 5202 <p class="size-18">Click the <strong data-start="3888" data-end="3904">âEnroll Nowâ</strong> button on the page, complete checkout, and youâll be granted instant access via your student dashboard. Learning begins the moment you log in. </p> 5203 </blockquote> 5204 </div> 5205 </div> 5206 <div class="row clearfix"> 5207 <div class="column full"> 5208 <h3 class="size-24"> 5209 <ul> 5210 <li>Can I preview any lessons before buying?</li> 5211 </ul></h3> 5212 <blockquote style="margin: 0 0 0 40px; border: none; padding: 0px;"> 5213 <p class="size-18">Yes â the landing page provides <em data-start="4179" data-end="4213">sample videos and free resources</em> (shortcuts, productivity tricks) so you can test the teaching style before committing. </p> 5214 </blockquote> 5215 </div> 5216 </div> 5217 </div> 5218 </div> 5219 </div> 5220 </div> 5221 <!--OTHERS---> 5222 <link href="//fonts.googleapis.com/css?family=Poppins:400,600" rel="stylesheet" property="stylesheet" type="text/css"> 5223 <link href="//fonts.googleapis.com/css?family=Poppins:400,600" rel="stylesheet" property="stylesheet" type="text/css"> 5224 <link href="//fonts.googleapis.com/css?family=Poppins:400,600" rel="stylesheet" property="stylesheet" type="text/css"> 5225 <div id="1768750982332"> 5226 <form class="pricing text-center" name="planForm"> 5227
5227<script> 5228function getFormattedCurrentDate() { 5229 try { 5230 var today = new Date(); 5231 var options = { year: 'numeric', month: 'short', day: 'numeric' }; 5232 return today.toLocaleDateString('en-US', options); 5233 } catch (e) { 5234 console.error('[PRICING] Error formatting current date:', e); 5235 return 'Purchase date'; 5236 } 5237} 5238function getFormattedDateWithOffset(days) { 5239 try { 5240 var date = new Date(); 5241 date.setDate(date.getDate() + days); 5242 var options = { year: 'numeric', month: 'short', day: 'numeric' }; 5243 return date.toLocaleDateString('en-US', options); 5244 } catch (e) { 5245 console.error('[PRICING] Error formatting date with offset:', e); 5246 return 'Purchase date'; 5247 } 5248} 5249 5250function updateButtonTextForPlan(planId) { 5251 var productVariantsData = window.productVariantsData || []; 5252 var selectedPlan = productVariantsData.find(function(p) { return p.id === planId; }); 5253 5254 if (!selectedPlan || !selectedPlan.validityVariants || selectedPlan.validityVariants.length === 0) { 5255 return; 5256 } 5257 5258 var vv = selectedPlan.validityVariants[0]; 5259 var currencySymbol = '$'; 5260 var buttonText = ''; 5261 5262 if (vv.type === 'FREE') { 5263 buttonText = 'Buy now for FREE'; 5264 } else if (vv.recurPeriod === 'custom') { 5265 buttonText = 'Buy now'; 5266 } else { 5267 var price = vv.price || 0; 5268 buttonText = 'Buy now for ' + currencySymbol + price.toFixed(2); 5269 } 5270 5271 // Update both main and sticky buttons 5272 var buttons = document.querySelectorAll('.plan-enroll-btn.product-enroll'); 5273 buttons.forEach(function(btn) { 5274 btn.textContent = buttonText; 5275 btn.innerHTML = buttonText; 5276 btn.setAttribute('data-pid', planId); 5277 btn.setAttribute('data-plantype', vv.type); 5278 }); 5279 5280} 5281 5282document.addEventListener('DOMContentLoaded', function() { 5283 // Handle plan card selection 5284 var planCards = document.querySelectorAll('.product.card input[type="radio"]'); 5285 planCards.forEach(function(radio) { 5286 radio.addEventListener('change', function() { 5287 if (this.checked) { 5288 var planId = this.value; 5289 updateButtonTextForPlan(planId); 5290 } 5291 }); 5292 }); 5293 5294}); 5295</script>
5295 5296 <div style="display: block; margin-bottom: 38px;"> 5297 <div class="plan-grid"> 5298 </div> 5299 </div> 5300 <div class="center mt-20 cartBtns buyBtnWeb" style="display: flex; justify-content: center;"> 5301 <button data-purchasetype="singlecheckout" class="btn btn-primary btn-price plan-enroll-btn product-enroll addToLibrary" data-id="696cecf361729d185b1c7649" data-pid="p1" data-title="Learn Excel from Basics to AI â FREE" data-coursecategory="Software & Technology" name="commit" type="submit" value="Enroll" data-plantype="FREE" data-price="0.0" data-setupfee="">Buy now for FREE</button> 5302 </div> 5303 <div class="buyBtnSticky cartBtns"> 5304 <div class=""> 5305 <div class="container"> 5306 <div class="buyBtnStickyPriceCont"> 5307 <p class="price"> FREE </p> 5308 <p class="mrp"> </p> 5309 </div> 5310 <button data-purchasetype="singlecheckout" class="btn btn-primary btn-price plan-enroll-btn product-enroll buyBtnStickyBtn addToLibrary" data-id="696cecf361729d185b1c7649" data-pid="p1" data-title="Learn Excel from Basics to AI â FREE" data-coursecategory="Software & Technology" name="commit" type="submit" value="Enroll" data-plantype="FREE" data-price="0.0" data-setupfee="">Buy now for FREE</button> 5311 </div> 5312 </div> 5313 </div> 5314 </form> 5315
5315<script type="text/javascript"> 5316 // Log the full productVariants data from API response 5317 var productVariantsData = [ 5318 { 5319 id: 'p1', 5320 productType: 'Free', 5321 validityVariants: [ 5322 { 5323 type: 'FREE', 5324 label: 'Lifetime', 5325 price: 0, 5326 mrp: 0, 5327 totalPayments: 0, 5328 recurPeriod: '', 5329 oneTimePrice: 0, 5330 instalmentItem: null 5331 } 5332 ] 5333 } 5334 ]; 5335 5336 // Global function to handle info icon clicks - called directly from onclick attribute 5337 window.gphPricingHandleInfoIconClick = function(event) { 5338 event.preventDefault(); 5339 event.stopPropagation(); 5340 5341 var infoIcon = event.target; 5342 5343 var wrapper = infoIcon.closest('.gph-pricing-instalment-info-wrapper'); 5344 5345 if (!wrapper) { 5346 console.error('[PRICING] â Wrapper not found!'); 5347 return false; 5348 } 5349 5350 // Get the wrapper ID to find the associated popover 5351 var wrapperId = wrapper.getAttribute('data-wrapper-id'); 5352 5353 // Find popover by matching data-wrapper-id attribute 5354 var popover = null; 5355 if (wrapperId) { 5356 popover = document.querySelector('.gph-pricing-instalment-popover[data-wrapper-id="' + wrapperId + '"]'); 5357 } 5358 5359 // Fallback: try to find popover as child of wrapper 5360 if (!popover) { 5361 popover = wrapper.querySelector('.gph-pricing-instalment-popover'); 5362 } 5363 5364 if (!popover) { 5365 console.error('[PRICING] â Popover not found!'); 5366 return false; 5367 } 5368 5369 var isOpen = popover.style.display === 'block'; 5370 5371 // Close all other popovers 5372 document.querySelectorAll('.gph-pricing-instalment-popover').forEach(function(p) { 5373 p.style.display = 'none'; 5374 }); 5375 5376 // Toggle current popover 5377 if (!isOpen) { 5378 // Try to resolve data from productVariantsData using wrapper-id 5379 var wrapperId = wrapper.getAttribute('data-wrapper-id'); 5380 var planId = wrapperId ? wrapperId.replace('wrapper-', '') : null; 5381 var pvData = Array.isArray(productVariantsData) ? productVariantsData.find(function(p){ return p.id === planId; }) : null; 5382 var currencySymbol = '$'; 5383 5384 if (pvData && pvData.validityVariants && pvData.validityVariants.length > 0) { 5385 var vv = pvData.validityVariants[0]; 5386 // Determine total price to show 5387 var price = vv.type === 'INSTALMENT' 5388 ? (vv.oneTimePrice && vv.oneTimePrice > 0 ? vv.oneTimePrice : (vv.price || 0) * (vv.totalPayments || 0)) 5389 : (vv.price || 0); 5390 // Update total 5391 var totalElement = popover.querySelector('.gph-pricing-product-total'); 5392 if (totalElement) { 5393 totalElement.textContent = currencySymbol + Number(price).toFixed(2); 5394 } 5395 // Build instalments 5396 var instalmentList = popover.querySelector('.gph-pricing-instalment-list'); 5397 if (instalmentList) { 5398 instalmentList.innerHTML = ''; 5399 var instalments = []; 5400 if (vv.type === 'INSTALMENT') { 5401 // Priority 1: Use instalmentItem if available (custom instalment) 5402 if (vv.instalmentItem && Array.isArray(vv.instalmentItem) && vv.instalmentItem.length > 0) { 5403 var currentDate = getFormattedCurrentDate(); 5404 instalments = vv.instalmentItem.map(function(item, index) { 5405 var ordinal = (index === 0 ? 'st' : index === 1 ? 'nd' : index === 2 ? 'rd' : 'th'); 5406 // Calculate exact due date for each instalment 5407 var today = new Date(); 5408 var dueDate = index === 0 ? today : (function() { 5409 var date = new Date(today); 5410 if (item.unit === 'days') date.setDate(date.getDate() + item.dueOffset); 5411 else if (item.unit === 'months') date.setMonth(date.getMonth() + item.dueOffset); 5412 else if (item.unit === 'years') date.setFullYear(date.getFullYear() + item.dueOffset); 5413 return date; 5414 })(); 5415 // Format date as "Month Day, Year" (e.g., "Jan 30, 2025") 5416 var formattedDate = dueDate.toLocaleDateString('en-US', { year: 'numeric', month: 'short', day: 'numeric' }); 5417 var timingDisplay = (index === 0 ? 'Today, ' : '') + formattedDate; 5418 return { 5419 label: (index + 1) + ordinal + ' instalment', 5420 amount: item.price, 5421 timing: timingDisplay 5422 }; 5423 }); 5424 } else { 5425 // Priority 2: Calculate based on totalPayments (standard instalment) 5426 var totalPayments = vv.totalPayments || 0; 5427 var totalPrice = vv.oneTimePrice && vv.oneTimePrice > 0 ? vv.oneTimePrice : (vv.price || 0) * totalPayments; 5428 var perAmount = Math.round(totalPrice / totalPayments); 5429 var currentDate = getFormattedCurrentDate(); 5430 5431 // Determine offset interval based on recurPeriod 5432 var offsetInterval = 30; // default to 30 days (monthly) 5433 var unitLabel = 'days'; 5434 if (vv.recurPeriod === 'weekly') { 5435 offsetInterval = 7; 5436 unitLabel = 'days'; 5437 } else if (vv.recurPeriod === 'monthly') { 5438 offsetInterval = 30; 5439 unitLabel = 'days'; 5440 } 5441 5442 for (var i = 0; i < totalPayments; i++) { 5443 var ordinal = (i === 0 ? 'st' : i === 1 ? 'nd' : i === 2 ? 'rd' : 'th'); 5444 var offset = i === 0 ? 0 : (i * offsetInterval); 5445 // Build timing display: "Today, currentDate" for first, "currentDate + offset + unit" for others 5446 var timingDisplay = i === 0 ? 'Today, ' + currentDate : currentDate + ' + ' + offset + ' ' + unitLabel; 5447 instalments.push({ label: (i+1) + ordinal + ' instalment', amount: perAmount, timing: timingDisplay }); 5448 } 5449 } 5450 } 5451 // Render
5452 instalments.forEach(function(inst, index) { 5453 var li = document.createElement('li'); 5454 li.style.cssText = 'display:flex;align-items:flex-start;justify-content:space-between;color:#374151;margin:0px;background:#ffffff;'; 5455 if (index === instalments.length - 1) { 5456 li.style.marginBottom = '0px'; 5457 } 5458 li.innerHTML = '<div style="width:100%;margin-bottom:6px;">' + 5459 '<div style="display:flex;justify-content:space-between;align-items:flex-start;background:#ffffff;">' + 5460 '<span style="font-weight:500;font-size:16px;background:#ffffff;">' + inst.label + '</span>' + 5461 '<span style="font-weight:600;font-size:14px;background:#ffffff;">' + currencySymbol + inst.amount.toFixed(2) + '</span>' + 5462 '</div>' + 5463 '<span style="display:block;color:#9ca3af;font-size:12px;font-color:#878C90;margin-top:-4px;background:#ffffff;">' + inst.timing + '</span>' + 5464 '</div>'; 5465 instalmentList.appendChild(li); 5466 }); 5467 } 5468 } else { 5469 // Fallback to existing priceStr based percentages if no pv data 5470 // Populate dynamic values 5471 var priceStr = wrapper.getAttribute('data-price'); 5472 if (priceStr) { 5473 // Decode HTML entities 5474 var textarea = document.createElement('textarea'); 5475 textarea.innerHTML = priceStr; 5476 priceStr = textarea.value; 5477 // Extract numeric value from price string (e.g., "â¹320" -> 320) 5478 var priceMatch = priceStr.match(/[\d,]+\.?\d*/); 5479 var price = priceMatch ? parseFloat(priceMatch[0].replace(/,/g, '')) : 0; 5480 var currencySymbol = priceStr.replace(/[\d,.\s]/g, ''); 5481 // Calculate installments (50%, 30%, 20%) 5482 var instalments = [ 5483 { percentage: 0.5, label: '1st instalment', timing: 'Today, ' + getFormattedCurrentDate() }, 5484 { percentage: 0.3, label: '2nd instalment', timing: getFormattedDateWithOffset(30) }, 5485 { percentage: 0.2, label: '3rd instalment', timing: getFormattedDateWithOffset(60) } 5486 ]; 5487 // Update total 5488 var totalElement = popover.querySelector('.gph-pricing-product-total'); 5489 if (totalElement) { 5490 totalElement.textContent = currencySymbol + price.toFixed(2); 5491 } 5492 // Render 5493 var instalmentList = popover.querySelector('.gph-pricing-instalment-list'); 5494 if (instalmentList) { 5495 instalmentList.innerHTML = ''; 5496 instalments.forEach(function(inst, index) { 5497 var amount = Math.round(price * inst.percentage); 5498 var li = document.createElement('li'); 5499 li.style.cssText = 'display:flex;align-items:flex-start;justify-content:space-between;color:#374151;margin:0px;background:#ffffff;'; 5500 if (index === instalments.length - 1) { 5501 li.style.marginBottom = '0px'; 5502 } 5503 li.innerHTML = '<div style="width:100%;">' + 5504 '<div style="display:flex;justify-content:space-between;align-items:flex-start;background:#ffffff;">' + 5505 '<span style="font-weight:500;font-size:16px;background:#ffffff;">' + inst.label + '</span>' + 5506 '<span style="font-weight:600;font-size:14px;background:#ffffff;">' + currencySymbol + amount + '</span>' + 5507 '</div>' + 5508 '<span style="display:block;color:#9ca3af;font-size:12px;font-color:#878C90;background:#ffffff;">' + inst.timing + '</span>' + 5509 '</div>'; 5510 instalmentList.appendChild(li); 5511 }); 5512 } 5513 } 5514 } 5515 5516 // Position the fixed popover relative to the icon 5517 var iconRect = infoIcon.getBoundingClientRect(); 5518 var wrapperRect = wrapper.getBoundingClientRect(); 5519 5520 // Detect mobile screen 5521 var isMobile = window.innerWidth <= 768; // you can tweak breakpoint 5522 5523 // Choose offset based on device 5524 var leftOffset = isMobile ? 170 : 40; 5525 popover.style.top = (iconRect.bottom - wrapperRect.top + 6) + 'px'; 5526 popover.style.left = (iconRect.right - wrapperRect.left - leftOffset) + 'px'; 5527 popover.style.display = 'block'; 5528 } else { 5529 popover.style.display = 'none'; 5530 } 5531 5532 return false; 5533 }; 5534 5535 // Handle close button clicks 5536 document.addEventListener('click', function(e) { 5537 var closeBtn = e.target.closest('.gph-pricing-instalment-popover-close'); 5538 if (closeBtn) { 5539 e.preventDefault(); 5540 e.stopPropagation(); 5541 var popover = closeBtn.closest('.gph-pricing-instalment-popover'); 5542 if (popover) { 5543 popover.style.display = 'none'; 5544 } 5545 return false;
5546 } 5547 5548 // Close popover if clicking outside 5549 if (!e.target.closest('.gph-pricing-instalment-info-wrapper')) { 5550 document.querySelectorAll('.gph-pricing-instalment-popover').forEach(function(p) { 5551 p.style.display = 'none'; 5552 }); 5553 } 5554 }); 5555 document.addEventListener('wheel', function(e) { 5556 var scroller = e.target.closest('.gph-pricing-instalment-popover'); 5557 if (scroller) { 5558 e.stopPropagation(); 5559 } 5560 }, { passive: false }); 5561</script>
5561 5562
5562<script> 5563function attachPopoverScrollLock(popover) { 5564 const scroller = popover.querySelector('.gph-popover-scroll'); 5565 if (!scroller) return; 5566 5567 // Prevent scroll from bubbling to page 5568 scroller.addEventListener('wheel', function (e) { 5569 const delta = e.deltaY; 5570 const atTop = scroller.scrollTop <= 0; 5571 const atBottom = scroller.scrollHeight - scroller.scrollTop <= scroller.clientHeight + 1; 5572 5573 if ((delta < 0 && atTop) || (delta > 0 && atBottom)) { 5574 e.preventDefault(); // stop page scroll at edges 5575 } 5576 5577 e.stopPropagation(); // always stop bubbling 5578 }, { passive: false }); 5579 5580 let startY = 0; 5581 5582 scroller.addEventListener('touchstart', function (e) { 5583 startY = e.touches[0].clientY; 5584 }, { passive: true }); 5585 5586 scroller.addEventListener('touchmove', function (e) { 5587 const delta = startY - e.touches[0].clientY; 5588 const atTop = scroller.scrollTop <= 0; 5589 const atBottom = scroller.scrollHeight - scroller.scrollTop <= scroller.clientHeight + 1; 5590 5591 if ((delta < 0 && atTop) || (delta > 0 && atBottom)) { 5592 e.preventDefault(); 5593 } 5594 5595 e.stopPropagation(); 5596 }, { passive: false }); 5597} 5598 5599// Attach when popover becomes visible 5600const observer = new MutationObserver(() => { 5601 document.querySelectorAll('.gph-pricing-instalment-popover').forEach(popover => { 5602 if (popover.style.display === 'block' && !popover.dataset.scrollLock) { 5603 attachPopoverScrollLock(popover); 5604 popover.dataset.scrollLock = 'true'; 5605 } 5606 }); 5607}); 5608 5609observer.observe(document.body, { attributes: true, subtree: true, attributeFilter: ['style'] }); 5610</script>
5610 5611 </div> 5612 <p style="font-size: 14px; font-weight: 600; color: rgb(49, 122, 231); line-height: 1.5; margin-top: 36px;"><span style="margin-right: 12px;" id="instructorBlock">Instructor: excelsirji</span></p> 5613 <link href="//fonts.googleapis.com/css?family=Poppins:400,600" rel="stylesheet" property="stylesheet" type="text/css"> 5614 </body> 5615</html> 5616 5617 </div> 5618 5619 5620 5621 5622 5623 5624 5625 5626 5627 5628 5629 5630 5631 5632 5633 5634 5635 5636<div class="yogya-footer" style="display: flex !important;align-items:center;justify-content:center;clear:both;width: 100%;flex-direction: column; row-gap:30px; background: #F7F7F7; color: #232228; padding: 80px 10px;"> 5637 5638 5639 5640 5641 5642 5643 <a style="display: flex !important;align-items:center;justify-content:center;text-decoration: none !important;background: #000 !important;color: #fff !important;padding: 12px 20px !important;border-radius: 4px !important;font-size: 14px !important;font-weight: 600 !important;line-height: 20px !important;" rel="nofollow" href="https://graphy.com/products/create-and-sell-course-online?utm_campaign=meenakshijain&utm_source=gc&utm_device=website&gref=meenakshijain" target="_blank"><img alt="Launch your Graphy" style="height: 20px; width: 11px; margin-right: 12px;" src="/resources/images/grvector.svg">Launch your Graphy</a> 5644 <div class="text-center" style="font-size: 12px;font-weight: 400;line-height: 20px;letter-spacing: 0.015em;">100K+ creators trust <a href="https://graphy.com/products/create-and-sell-course-online?utm_campaign=meenakshijain&utm_source=gc&utm_device=website&gref=meenakshijain" target="_blank" rel="nofollow" style="color: #000 !important;text-decoration: underline !important;padding: 0 !important;font-size: inherit !important;">Graphy</a> to teach online</div> 5645 5646 5647 5648 5649 <div style="display: flex !important;align-items:center;justify-content:center;column-gap: 12px;"> 5650 5651 5652 5653 5654 <a href="https://www.youtube.com/c/GraphyUniversity" class="yPage" target="_blank" style="text-decoration: none !important;color:#000 !important;font-size: inherit !important;height:24px;width:24px;border: 1px solid #E5E5E5;display: flex;align-items:center;justify-content:center;" ><i class="fa-brands fa-youtube" style="font-size: 11px"></i></a> 5655 <a href="" class="telegramPage" target="_blank" style="text-decoration: none !important;color:#000 !important;font-size: inherit !important;height:24px;width:24px;border: 1px solid #E5E5E5;display: flex;align-items:center;justify-content:center;" ><i class="fa-brands fa-telegram" style="font-size: 11px"></i></a> 5656 </div> 5657 <div style="display: flex !important;align-items:center;justify-content:center;font-size: 14px;font-weight: 500;line-height: 20px;letter-spacing: 0.015em;column-gap: 12px;flex-wrap: wrap;"> 5658 <span>EXCELSIRJI <i class="fa-regular fa-copyright"></i> 2026</span> <i class="fa-solid fa-circle" style="font-size: 4px;"></i> 5659 <a href="/privacypolicy" style="color: #232228 !important; padding: 0 !important;font-size: inherit !important;text-decoration: underline !important">Privacy policy</a> <i class="fa-solid fa-circle" style="font-size: 4px;"></i> 5660 <a href="/termsofuse" style="color: #232228 !important;padding: 0 !important;font-size: inherit !important;text-decoration: underline !important">Terms of use</a> <i class="fa-solid fa-circle" style="font-size: 4px;"></i> 5661 <a href="/contactus" style="color: #232228 !important;padding: 0 !important;font-size: inherit !important;text-decoration: underline !important">Contact us</a> <i class="fa-solid fa-circle" style="font-size: 4px;"></i> 5662 <a href="/refundpolicy" style="color: #232228 !important;padding: 0 !important;font-size: inherit !important;text-decoration: underline !important">Refund policy</a> 5663 </div> 5664</div> 5665 5666 5667 5668 5669 5670 5671 5672 5673
5673<script type="text/javascript"> 5674 var newCheckoutFlowParams = "FREE"; 5675 </script>
5675 5676 5677 5678 5679 5680 5681
5681<script type="text/javascript"> 5682 var checkoutV2 = "true"; 5683 </script>
5683 5684 5685 5686
5686<script src="https://d502jbuhuh9wk.cloudfront.net/staticfiles/resources/scripts/sstore_5ffb558e86d7b5ef265e05fb0bfbef79.js"></script>
5686 5687
5687<script src="https://d502jbuhuh9wk.cloudfront.net/resources/js/jquery.star.rating.min.js"></script>
5687 5688
5688<script type="text/template" id="reviewTemplate"> 5689 <div class="tile mt-2 review"> 5690 <div class="tile-icon"> 5691 <figure class="avatar" data-initial="<@ print(item.userName.length > 0?item.userName[0].toUpperCase():"S") @>"> 5692 <img src="https://d502jbuhuh9wk.cloudfront.net/users/<@- item.userId @>/thumbnail.jpg" alt="" class="img-fit-cover" onerror="this.style.display='none'"> 5693 </figure> 5694 </div> 5695 <div class="tile-content"> 5696 <p class="tile-title text-bold mb-0 uppercase"> 5697 <@- item.userName @> <@ if(item.isFeatured !== undefined && item.isFeatured) { @><span class="chip">Featured Review</span><@ } @> 5698 5699 <@ if(item.isVerifiedPurchase !== undefined && item.isVerifiedPurchase) { @><span class="chip">Verified Purchase</span><@ } @> 5700 </p> 5701 <p style="font-size: small;" class="text-gray mt-2 mb-2"> 5702 <span class="d-inline-block icon-text"> 5703 <@ for(var i=1;i < 6;i++) { @> 5704 <@ if(i <= item.rating) { @> 5705 <i class="material-icons md-18 text-primary">star</i> 5706 <@ }else { @><i class="material-icons md-18">star_border</i><@ } @> 5707 <@ } @> 5708 </span> <span><time class="timeago" datetime="<@ print((new Date(item.createdDate.$date)).toISOString()) @>"><@ print(parseDate(item.createdDate.$date)) @></time></span> 5709 </p> 5710 <p class="tile-subtitle" style="font-size: small;"><@- item["reviewtext"] @></p> 5711 </div> 5712 </div> 5713 </script>
5713 5714 5715
5715<script type="text/javascript"> 5716 5717 5718 5719 window.planType = "FREE"; 5720 window.planPrice = "0"; 5721 window.planName = getCoursePlanNameByTypeOrPrice(window.planType, window.planPrice); 5722 window.planCourseId = ""; 5723 window.planPackageId = ""; 5724 5725 5726 window.planCourseId = "696cecf361729d185b1c7649"; 5727 5728 window.isPackage = false; 5729 5730 window.walletStatus="false"; 5731 window.category="Software & Technology"; 5732 5733 window.multiplePricingPlansExist = window.isMultiplePlansAvailable('',{"_id":"696cecf361729d185b1c7649","spayee:resource":{"spayee:title":"Learn Excel from Basics to AI â FREE","spayee:publisher":"excelsirji","spayee:published":true,"spayee:mrp":0,"spayee:price":0,"spayee:validityType":"none","spayee:description":"<p>This <strong>5-day free Excel course<\/strong> is designed for beginners and working professionals who want to <strong>learn Excel the right way — step by step<\/strong>, without feeling overwhelmed.<\/p>\n\n<p>Whether you have <strong>never used Excel before<\/strong> or feel confused by formulas, this course will help you build a <strong>strong foundation<\/strong>, gain confidence, and gradually move toward <strong>advanced Excel and AI-powered tools<\/strong> used in modern workplaces.<\/p>\n\n<p>No prior Excel or technical knowledge is required.<\/p>\n","spayee:productVariants":[{"id":"p1","productType":"Free","buyButtonLabel":"Buy now for FREE","archived":false,"validityVariants":[{"type":"FREE","validityType":"none","mrp":0,"price":0,"id":"v1-0-0","label":"Lifetime"}]}],"spayee:filter1":["Software & Technology"],"spayee:availableForAndroid":true,"spayee:availableForIOS":false,"spayee:availableForMarket":"true","spayee:courseUrl":"Learn-Excel-from-Basics-to-AI--FREE","spayee:seoTitle":"Learn Excel from Basics to AI â FREE","spayee:courseType":"normal","spayee:allowDiscussions":true,"spayee:curriculumAssetInfo":true,"spayee:courseAvailability":"all","spayee:appDeepLink":"https://learn.excelsirji.com/l/bVQ4u9q","spayee:items":[{"title":"Introduction","id":"pnc7vxzouu","type":"label","time":0,"items":[{"title":"Introduction","id":"6974e392080e35749e30436f","type":"video","videoType":"upload","time":0,"duration":2.65}]},{"title":"Getting Started with Excel Basics","id":"ty316ngtjj","type":"label","time":0,"items":[{"title":"Getting Started with Excel Basics","id":"696ceda580a74769b4273b7c","type":"video","videoType":"upload","time":0,"duration":48.6},{"title":"Resources - Practice Files","id":"696cf79b79762a5eed1bb0cd","type":"file","time":0}]},{"title":"Basic Excel Formulas and Functions","id":"7qj9pam8ej","type":"label","time":0,"items":[{"title":"Basic Excel Formulas and Functions","id":"696cedc19d0fed4b5662c37c","type":"video","videoType":"upload","time":0,"duration":58},{"title":"Resources - Practice Files","id":"696cf7c77e81ae727657bada","type":"file","time":0}]},{"title":"Excel Advanced Functions and Data Analysis","id":"5mgiehawzk","type":"label","time":0,"items":[{"title":"Excel Advanced Functions and Data Analysis","id":"696cee223105a646e0f59256","type":"video","videoType":"upload","time":0,"duration":52.083332},{"title":"Resources - Practice Files","id":"696cf7de3105a646e0f59562","type":"file","time":0}]},{"title":"Excel and AI","id":"o45p9wpi7l","type":"label","time":0,"items":[{"title":"Excel and AI - Makes You More Productive","id":"696cee468154c579ef660dc1","type":"video","videoType":"upload","time":0,"duration":51.85},{"title":"Resources - Practice Files","id":"696cf81872418936d40de744","type":"file","time":0}]}],"spayee:coverVersion":1,"spayee:courseCanonicalUrl":"","spayee:customScripts":"","spayee:keywords":"free excel course,excel course for beginners,excel basics course,excel training online,excel online course,excel course free,learn excel online,excel classes online,excel certification course,excel course in india","spayee:seoCategory":"","spayee:seoDescription":"Learn Excel from basics to AI in this free 5-day Excel course. Perfect for beginners, students, and professionals. No prior experience needed.","spayee:css":"","spayee:html":"<div id=\"1768469016303d\" data-cat=\"1\" class=\"is-section is-section-100 is-shadow-1 is-bg-grey\">\n\t<div data-coursid=\"696505334ff3a72bff9061ef\" class=\"courselandingpage is-boxes\">\n\t\t<div data-coursid=\"696505334ff3a72bff9061ef\" class=\"courselandingpage is-box is-bg-light is-dark-text is-box-12\">\n\t\t\t<div data-coursid=\"696505334ff3a72bff9061ef\" class=\"courselandingpage is-boxes\">\n\t\t\t\t<div data-coursid=\"696505334ff3a72bff9061ef\" class=\"courselandingpage is-box-centered\">
5733\n\t\t\t\t\t<div class=\"is-container is-content-640 container\">\n\t\t\t\t\t\t<div class=\"row clearfix\" draggable=\"false\"><div class=\"column full\"><h1 class=\"size-14\" style=\"font-family: Poppins, sans-serif;\"><b class=\"size-32\">CHECKOUT SUMMMARY<\/b><\/h1><\/div><\/div><div class=\"row clearfix\" draggable=\"false\"><div class=\"column full\"><h1 class=\"size-14\"><b class=\"size-18\">Order Details:<\/b><\/h1><\/div><\/div><div class=\"row clearfix\">\n\t\t\t\t\t\t\t<div class=\"column full\">\n\t\t\t\t\t\t\t\t<h1 class=\"size-18\"><b class=\"size-21\">Microsoft Excel - Excel from Beginner to Advanced<\/b><\/h1><p class=\"size-16\">All-in-One Excel Training: Transform Your Skills with Hands-On Projects and Real-World Applications!<\/p><p class=\"size-16\">Students Enrolled: 5,389<\/p><p class=\"size-16\">Last Updated: 05-January-2026<\/p>\n\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div><div class=\"row clearfix\">\n\t\t\t\t\t\t\t<div class=\"column full\">\n\t\t\t\t\t\t\t\t<h1 class=\"size-18\"><b class=\"size-21\">This course Includes<\/b><\/h1>\n\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div><div class=\"row clearfix\"><div class=\"column half\"><p class=\"size-16\"><i class=\"icon ion-android-film\"><\/i> 4+ Hours On Demand Videos<\/p><p class=\"size-16\"><i class=\"icon ion-android-archive\"><\/i> 8+ Downloadable Resources<\/p><p class=\"size-16\"><i class=\"icon ion-android-bookmark\"><\/i> Certificate of Completion<\/p><\/div><div class=\"column half\"><p class=\"size-16\"><i class=\"icon ion-android-hand\"><\/i> Instructor Q&A Support<\/p><p class=\"size-16\"><i class=\"icon ion-archive\"><\/i> AI Formulas Writer ADD-IN<\/p><p class=\"size-16\"><i class=\"icon ion-android-people\"><\/i> Join Excel Community<\/p><\/div><\/div><div class=\"row clearfix\"><div>{{PRICING}}<\/div><\/div><\/div>\n\t\t\t\t\t<link href=\"//fonts.googleapis.com/css?family=Poppins:400,600\" rel=\"stylesheet\" property=\"stylesheet\" type=\"text/css\"><\/div>\n\t\t\t\t<\/div>\n\t\t\t<\/div>\n\t\t<\/div>\n\t\t<div class=\"is-box-img is-box is-dark-text is-box-1\" style=\"background-color: rgba(0, 0, 0, 0.7);\">\n\t\t\t<div class=\"is-overlay\">\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t<div class=\"is-overlay-content\"><\/div>\n\t\t\t<\/div>\n\t\t<\/div>\n\t<\/div>\n\n<div id=\"1768479463956d\" data-cat=\"115\" class=\"is-section is-section-100 is-box is-dark-text\">\n\t<div class=\"is-boxes\">\n\t\t<div class=\"is-box-centered\">\n\t\t\t<div class=\"is-container container\" style=\"max-width: 880px;\">\n\t\t\t\t<div class=\"row clearfix\">\n\t\t\t\t\t<div class=\"column full center\">\n\t\t\t\t\t\t<h1 class=\"size-48\" style=\"letter-spacing: 2px; font-weight: bold;\">FAQs<\/h1>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"row clearfix\">\n\t\t\t\t\t<div class=\"column full center\">\n\t\t\t\t\t\t<div class=\"spacer height-40\"><\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"row clearfix\">\n\t\t\t\t\t<div class=\"column full\">\n\t\t\t\t\t\t<h3 class=\"size-24\"><ul><li>What exactly is this Excel training program?<\/li><\/ul><\/h3>\n\t\t\t\t\t\t<blockquote style=\"margin: 0 0 0 40px; border: none; padding: 0px;\"><p class=\"size-18\">This is a <em data-start=\"608\" data-end=\"649\">Complete Microsoft Excel Expert Program<\/em> that takes you from basics to advanced Excel skills â including formulas, data visualization, automation (VBA), Power Query, and AI-assisted tools â through self-paced online lessons with real-world case studies<\/p><\/blockquote>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div><div class=\"row clearfix\">\n\t\t\t\t\t<div class=\"column full\">\n\t\t\t\t\t\t<h3 class=\"size-24\"><ul><li>Is this a one-time payment or a subscription?<\/li><\/ul><\/h3>\n\t\t\t\t\t\t<blockquote style=\"margin: 0 0 0 40px; border: none; padding: 0px;\"><p class=\"size-18\">Yes, this is a <strong data-start=\"230\" data-end=\"255\">one-time payment only<\/strong>. You pay once and get <strong data-start=\"278\" data-end=\"297\">lifetime access<\/strong> to the complete Excel training, bonus courses, tools, updates, and community â <strong data-start=\"377\" data-end=\"406\">no monthly or yearly fees<\/strong>.<\/p><\/blockquote>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div><div class=\"row clearfix\">\n\t\t\t\t\t<div class=\"column full\">\n\t\t\t\t\t\t<h3 class=\"size-24\"><ul><li>Who is this course designed for?<\/li><\/ul><\/h3>\n\t\t\t\t\t\t<blockquote style=\"margin: 0 0 0 40px; border: none; padding: 0px;\"><p class=\"size-18\">Itâs suitable for <strong data-start=\"969\" data-end=\"1021\">beginners, intermediate users, and professionals<\/strong> who want to improve productivity, automate routine work, build dashboards, analyze data, and become confident working with Excel in the real world. There are <em data-start=\"1180\" data-end=\"1198\">no prerequisites<\/em>. <\/p><\/blockquote>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div><div class=\"row clearfix\">\n\t\t\t\t\t<div class=\"column full\">\n\t\t\t\t\t\t<h3 class=\"size-24\"><ul><li>How is the training delivered and accessed?<\/li><\/ul><\/h3>\n\t\t\t\t\t\t<blockquote style=\"margin: 0 0 0 40px; border: none; padding: 0px;\"><p class=\"size-18\">The course is <strong data-start=\"1800\" data-end=\"1830\">100% online and self-paced<\/strong> â with recorded video lessons, downloadable practice files, and syllabus guides. You can access it from your dashboard anytime after enrollment. <\/p><\/blockquote>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div><div class=\"row clearfix\">\n\t\t\t\t\t<div class=\"column full\">\n\t\t\t\t\t\t<h3 class=\"size-24\"><ul><li>Do I get any certificates?<\/li><\/ul><\/h3>\n\t\t\t\t\t\t<blockquote style=\"margin: 0 0 0 40px; border: none; padding: 0px;\"><p class=\"size-18\">Yes â upon successful completion, you receive a <strong data-start=\"2106\" data-end=\"2121\">certificate<\/strong> that you can share on LinkedIn or include in your resume to demonstrate your Excel proficiency. <\/p><\/blockquote>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div><div class=\"row clearfix\">\n\t\t\t\t\t<div class=\"column full\">\n\t\t\t\t\t\t<h3 class=\"size-24\"><ul><li>
5733Do I need to install Excel on my computer to take this?<\/li><\/ul><\/h3>\n\t\t\t\t\t\t<blockquote style=\"margin: 0 0 0 40px; border: none; padding: 0px;\"><p class=\"size-18\">Yes â a local installation of Microsoft Excel is recommended to practice the lessons effectively. Newer versions (Excel 365) are ideal to access the latest functions, though many topics work on older versions too. <\/p><\/blockquote>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div><div class=\"row clearfix\">\n\t\t\t\t\t<div class=\"column full\">\n\t\t\t\t\t\t<h3 class=\"size-24\"><ul><li>What support is available if I get stuck?<\/li><\/ul><\/h3>\n\t\t\t\t\t\t<blockquote style=\"margin: 0 0 0 40px; border: none; padding: 0px;\"><p class=\"size-18\">Students get access to <strong data-start=\"3623\" data-end=\"3641\">expert support<\/strong>, a members-only community for Q&A, and periodic live sessions. Youâre not left alone while learning tricky topics like macros or Power Query. <\/p><\/blockquote>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div><div class=\"row clearfix\">\n\t\t\t\t\t<div class=\"column full\">\n\t\t\t\t\t\t<h3 class=\"size-24\"><ul><li>How do I enroll and start learning?<\/li><\/ul><\/h3>\n\t\t\t\t\t\t<blockquote style=\"margin: 0 0 0 40px; border: none; padding: 0px;\"><p class=\"size-18\">Click the <strong data-start=\"3888\" data-end=\"3904\">âEnroll Nowâ<\/strong> button on the page, complete checkout, and youâll be granted instant access via your student dashboard. Learning begins the moment you log in. <\/p><\/blockquote>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div><div class=\"row clearfix\">\n\t\t\t\t\t<div class=\"column full\">\n\t\t\t\t\t\t<h3 class=\"size-24\"><ul><li>Can I preview any lessons before buying?<\/li><\/ul><\/h3>\n\t\t\t\t\t\t<blockquote style=\"margin: 0 0 0 40px; border: none; padding: 0px;\"><p class=\"size-18\">Yes â the landing page provides <em data-start=\"4179\" data-end=\"4213\">sample videos and free resources<\/em> (shortcuts, productivity tricks) so you can test the teaching style before committing. <\/p><\/blockquote>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\n\t\t\t\t\n\t\t\t<\/div>\n\t\t<\/div>\n\t<\/div>\n<\/div>\n\n<!---OTHERS--->\n<link href=\"//fonts.googleapis.com/css?family=Poppins:400,600\" rel=\"stylesheet\" property=\"stylesheet\" type=\"text/css\"><link href=\"//fonts.googleapis.com/css?family=Poppins:400,600\" rel=\"stylesheet\" property=\"stylesheet\" type=\"text/css\"><link href=\"//fonts.googleapis.com/css?family=Poppins:400,600\" rel=\"stylesheet\" property=\"stylesheet\" type=\"text/css\"><div id=\"1768750982332\">\n {{PRICING}}\n <\/div><p style=\"font-size: 14px; font-weight: 600; color: rgb(49, 122, 231); line-height: 1.5; margin-top: 36px;\"><span style=\"margin-right: 12px;\" id=\"instructorBlock\">Instructor: {{INSTRUCTOR}}<\/span><span style=\"margin-left: 12px;\" id=\"languageBlock\">Language: {{LANGUAGE}}<\/span><\/p><link href=\"//fonts.googleapis.com/css?family=Poppins:400,600\" rel=\"stylesheet\" property=\"stylesheet\" type=\"text/css\">","spayee:htmlText":"CHECKOUT SUMMMARY Order Details: Microsoft Excel - Excel from Beginner to Advanced All-in-One Excel Training: Transform Your Skills with Hands-On Projects and Real-World Applications! Students Enrolled: 5,389 Last Updated: 05-January-2026 This course Includes 4+ Hours On Demand Videos 8+ Downloadable Resources Certificate of Completion Instructor Q&A Support AI Formulas Writer ADD-IN Join Excel Community {{PRICING}} FAQs What exactly is this Excel training program? This is a Complete Microsoft Excel Expert Program that takes you from basics to advanced Excel skills â including formulas, data visualization, automation (VBA), Power Query, and AI-assisted tools â through self-paced online lessons with real-world case studies Is this a one-time payment or a subscription? Yes, this is a one-time payment only. You pay once and get lifetime access to the complete Excel training, bonus courses, tools, updates, and community â no monthly or yearly fees. Who is this course designed for? Itâs suitable for beginners, intermediate users, and professionals who want to improve productivity, automate routine work, build dashboards, analyze data, and become confident working with Excel in the real world. There are no prerequisites. How is the training delivered and accessed? The course is 100% online and self-paced â with recorded video lessons, downloadable practice files, and syllabus guides. You can access it from your dashboard anytime after enrollment. Do I get any certificates? Yes â upon successful completion, you receive a certificate that you can share on LinkedIn or include in your resume to demonstrate your Excel proficiency. Do I need to install E
5733xcel on my computer to take this? Yes â a local installation of Microsoft Excel is recommended to practice the lessons effectively. Newer versions (Excel 365) are ideal to access the latest functions, though many topics work on older versions too. What support is available if I get stuck? Students get access to expert support, a members-only community for Q&A, and periodic live sessions. Youâre not left alone while learning tricky topics like macros or Power Query. How do I enroll and start learning? Click the âEnroll Nowâ button on the page, complete checkout, and youâll be granted instant access via your student dashboard. Learning begins the moment you log in. Can I preview any lessons before buying? Yes â the landing page provides sample videos and free resources (shortcuts, productivity tricks) so you can test the teaching style before committing. {{PRICING}} Instructor: Language:"},"from":{"createdBy":["696502429e49c234f6d30d1f"],"org-courses":["696502429e49c234f6d30d1e"],"circle-courses":["696d0119bf45a5567ad80637"]},"faq":[{"question":"How can I enrol in a course?","answer":"Enrolling in a course is simple! Just browse through our website, select the course you're interested in, and click on the \"Enrol Now\" button. Follow the prompts to complete the enrolment process, and you'll gain immediate access to the course materials."},{"question":"Can I access the course materials on any device?","answer":"Yes, our platform is designed to be accessible on various devices, including computers, laptops, tablets, and smartphones. You can access the course materials anytime, anywhere, as long as you have an internet connection."},{"question":"How can I access the course materials?","answer":"Once you enrol in a course, you will gain access to a dedicated online learning platform. All course materials, including video lessons, lecture notes, and supplementary resources, can be accessed conveniently through the platform at any time."},{"question":"Can I interact with the instructor during the course?","answer":"Absolutely! we are committed to providing an engaging and interactive learning experience. You will have opportunities to interact with them through our community. Take full advantage to enhance your understanding and gain insights directly from the expert."}],"firebaseVersion":8,"aiGeneratedSections":[],"resetUsersCount":false}); 5734 5735 store.getRelatedContent(); 5736 store.bindEvents(); 5737 5738 var contentTitle = decodeHtmlEntities('Learn Excel from Basics to AI â FREE'), content_category = ''; 5739 5740 var fbprice = 0; 5741 var gaprice = parseFloat(fbprice); 5742 5743 if(typeof ga !== "undefined") { 5744 ga('require', 'ec'); 5745 ga('set', 'currencyCode', $("#orgCurrencyCode").val()); 5746 ga('ec:addImpression', { 5747 'id': '696cecf361729d185b1c7649', 5748 'name': contentTitle, 5749 'category': content_category, 5750 'list': 'Related Products', 5751 'price': fbprice 5752 }); 5753 ga('send', 'pageview'); 5754 } 5755 5756 if(typeof gtag !== "undefined") { 5757 5758 var item = { 5759 price: fbprice, 5760 currency: $("#orgCurrencyCode").val(), 5761 quantity: 1 5762 }; 5763 5764 if(gaType === "ga4") { 5765 item.item_id = "696cecf361729d185b1c7649"; 5766 item.item_name = contentTitle; 5767 item.item_category = "Software & Technology"; 5768 }else { 5769 item.id = "696cecf361729d185b1c7649"; 5770 item.name = contentTitle; 5771 item.category = "Software & Technology"; 5772 } 5773 5774 gtag('event', 'view_item', { 5775 currency: $("#orgCurrencyCode").val(), 5776 items: [item], 5777 value: fbprice 5778 }); 5779 5780 } 5781 5782 if (typeof dataLayer !== "undefined") { 5783 var item = { 5784 price: fbprice, 5785 currency: $("#orgCurrencyCode").val(), 5786 quantity: 1 5787 }; 5788 5789 dataLayer.push({ 5790 Â event: "view_item", 5791 Â ecommerce: { 5792 currency: $("#orgCurrencyCode").val(), 5793 value: fbprice, 5794 Â Â items: [item] 5795 Â } 5796 }); 5797 } 5798 5799 var setPHash = true, setVHash = true; 5800 5801 $("#productVariants").on("change", function(e) { 5802 var validityCont = $(".validityTypes").find(".validityVariants").hide().siblings("."+$(this).val()).show(); 5803 5804 if(validityCont.find("select").length > 0) { 5805 validityCont.find("select")[0].selectedIndex = 0; 5806 } 5807 5808 $(".productPricing").find(".vvpricing").hide(); 5809 var price = $(".productPricing").find("."+$(this).val()+":eq(0)").show().data("price"); 5810 var buttonLabel = $(".productPricing").find("."+$(this).val()+":eq(0)").data("buybuttonlabel"); 5811 window.recurSubscriptionSelected = validityCont.data("type") == "RECURRING"; 5812 showHideCartBtns(price, buttonLabel) 5813 $(".buyBtn, .addToLibrary, a[href^='#purchasebutton']").data("pid", $(this).val()).removeData("vid"); 5814 if(setPHash) { 5815 setHashParam("product", $(this).val()); 5816 }else { 5817 setPHash = true; 5818 } 5819 }); 5820 5821 $(".validityVariants select").on("change", function(e) { 5822 var price = $(".productPricing").find(".vvpricing").hide().siblings("."+$(this).val().replace(/[.]/g, "-")+"."+$(this).data("pid")+":eq(0)").show().data("price"); 5823 var buttonLabel = $(".productPricing").find("."+$(this).val()+":eq(0)").data("buybuttonlabel"); 5824 showHideCartBtns(price, buttonLabel); 5825 5826 $(".buyBtn, .addToLibrary, a[href^='#purchasebutton']").data("vid", $(this).val()); 5827 5828 if(setVHash) { 5829 setHashParam("variant", $(this).val()); 5830 }else { 5831 setVHash = true; 5832 } 5833 5834 }); 5835 5836 function showHideCartBtns(price, newButtonLabel) { 5837 var buyButtonLabel; 5838 5839 if(price === 0){ 5840 buyButtonLabel = "Buy now for FREE"; 5841 5842 if(newButtonLabel){ 5843 buyButtonLabel = newButtonLabel; 5844 } 5845 5846 }else{ 5847 buyButtonLabel = "Buy now for "+"$"+price; 5848 var final_price = "$"+price; 5849 5850 if(newButtonLabel){ 5851 buyButtonLabel = newButtonLabel; 5852 } 5853 buyButtonLabel = buyButtonLabel.replace('{{final_price}}',final_price); 5854 } 5855 5856 if(price === 0) { 5857 $(".previewBtn, #previewBtn").hide(); 5858 $(".buyBtn").addClass("addToLibrary").removeClass("buyBtn").each(function() { 5859 var btn = $(this), btnTxt = $.trim(btn.text()).toLowerCase(); 5860 if(["buy now", "add to cart"].indexOf(btnTxt) > -1) { 5861 if(!buyButtonLabel){ 5862 btn.text("Free").removeClass("btn-primary").addClass("btn-success"); 5863 }else{ 5864 btn.text(buyButtonLabel).removeClass("btn-primary").addClass("btn-success"); 5865 } 5866 } 5867 if(buyButtonLabel){ 5868 btn.text(buyButtonLabel); 5869 } 5870 }); 5871 5872 $(".addToLibrary").each(function() { 5873 var btn = $(this); 5874 if(buyButtonLabel){ 5875 btn.text(buyButtonLabel); 5876 } 5877 }); 5878 5879 $("a[href=#purchasebutton]").attr("href", "#freebutton"); 5880 }else { 5881 $(".previewBtn, #previewBtn").show(); 5882 $(".addToLibrary").addClass("buyBtn").removeClass("addToLibrary").each(function() { 5883 var btn = $(this), btnTxt = $.trim(btn.text()).toLowerCase(); 5884 if(["free"].indexOf(btnTxt) > -1) { 5885 if(btn.data("purchasetype") === "singlecheckout") { 5886 if(!buyButtonLabel){ 5887 btn.text("Buy Now"); 5888 }else{ 5889 btn.text(buyButtonLabel); 5890 } 5891 5892 }else { 5893 if(!buyButtonLabel){ 5894 btn.text("Buy Now"); 5895 }else{ 5896 btn.text(buyButtonLabel); 5897 } 5898 } 5899 btn.removeClass("btn-success").addClass("btn-primary"); 5900 } 5901 }); 5902 if(window.recurSubscriptionSelected){ 5903 $(".buyBtn").each(function() { 5904 var btn = $(this), btnTxt = $.trim(btn.text()).toLowerCase(); 5905 if(!buyButtonLabel){ 5906 btn.text("Buy Now"); 5907 }else{ 5908 btn.text(buyButtonLabel); 5909 } 5910 }); 5911 } else { 5912 $(".buyBtn").each(function() { 5913 var btn = $(this), btnTxt = $.trim(btn.text()).toLowerCase(); 5914 if(!buyButtonLabel){ 5915 btn.text("Add to Cart"); 5916 }else{ 5917 btn.text(buyButtonLabel); 5918 } 5919 }); 5920 } 5921 5922 $("a[href=#freebutton]").attr("href", "#purchasebutton"); 5923 } 5924 } 5925 5926 function setHashParam(key, value) { 5927 var fakeUrl = new URL('https://test.com'); 5928 fakeUrl.search = new URL(location.href).hash.substring(1); 5929 fakeUrl.searchParams.set(key, value); 5930 5931 if(key === "product") { 5932 fakeUrl.searchParams.delete("variant"); 5933 } 5934 5935 location.hash = fakeUrl.searchParams; 5936 } 5937 5938 function getHashParam(key) { 5939 var fakeUrl = new URL('https://test.com'); 5940 fakeUrl.search = new URL(location.href).hash.substring(1); 5941 return fakeUrl.searchParams.get(key); 5942 } 5943 5944 window.recurSubscriptionSelected = false;
5945 5946 var product = getHashParam("product"), variant = getHashParam("variant"); 5947 5948 if(product !== null && product !== "") { 5949 setPHash = false; 5950 $("#productVariants").val(product).trigger("change"); 5951 5952 if(variant !== null && variant !== "") { 5953 setVHash = false; 5954 $(".validityTypes").find(".validityVariants").hide().siblings("."+product).show().find("select").val(variant).trigger("change"); 5955 } 5956 5957 }else if(variant !== null && variant !== "") { 5958 setVHash = false; 5959 $(".validityVariants:eq(0) select").val(variant).trigger("change"); 5960 } 5961 5962 5963 $(".tab a[href^=#]").on( 5964 "click", 5965 function(e) { 5966 e.preventDefault(); 5967 5968 $(this).closest("li").addClass("active") 5969 .siblings(".active").removeClass("active"); 5970 5971 var hash = $(this).attr("href").split("#")[1]; 5972 location.hash = hash; 5973 5974 $("#tabs").find(".tab-content").hide().filter(function() { 5975 return $(this).data("id") === hash; 5976 }).show(); 5977 5978 return false; 5979 }); 5980 5981 $(".courseItemIcon").each(function() { 5982 if($(this).data('type') == 'code'){ 5983 $(this).append('<img src="/resources/images/' + getCourseAssetIconV1($(this).data("type")) + '" />'); 5984 } else { 5985 $(this).text(getCourseAssetIcon($(this).data("type"))); 5986 } 5987 }); 5988 5989 5990 5991 $('.rating').addRating({ 5992 max: 5, 5993 selectedRatings: 0 5994 }); 5995 5996 var reviews = (function() { 5997 5998 var isContentLoading = false, cont = null, skip = 0, template = _.template($("#reviewTemplate").html()); 5999 6000 function init() { 6001 cont = $("#reviewsCont"); 6002 6003 if(cont.length > 0) { 6004 loadNewData(); 6005 6006 $(".loadMoreReviewsBtn").on("click", function(e) { 6007 $(this).addClass("loading"); 6008 loadNewData(); 6009 }); 6010 } 6011 } 6012 6013 function loadNewData() { 6014 if(isContentLoading) { 6015 return false; 6016 } 6017 6018 getNewData(); 6019 } 6020 6021 function getNewData() { 6022 isContentLoading = true; 6023 6024 var packet = { 6025 url: ctx + "/store/courses/696cecf361729d185b1c7649/description/reviews/get", 6026 data: {limit: 5, skip: skip}, 6027 success: function(data, params) { 6028 6029 var html = "", items = data.data; 6030 6031 if(data.userReview !== undefined) { 6032 html = html + template( {item: data.userReview}); 6033 $("#createReview").hide(); 6034 }else if(skip === 0) { 6035 $("#createReview").show(); 6036 } 6037 6038 for(var i = 0;i < items.length; i++){ 6039 html = html + template( {item:items[i]}); 6040 } 6041 6042 skip = skip + items.length; 6043 6044 cont.children(".loading").before(html); 6045 6046 if(data.total === 0 || data.total === skip) { 6047 $(".loadMoreReviewsBtn").hide(); 6048 } 6049 6050 if(cont.find(".review").length === 0) { 6051 $("#createReview").find("textarea").attr("placeholder", "No Reviews yet. Be the first one to review this course."); 6052 } 6053 6054 cont.find("time.timeago").timeago(); 6055 6056 cont.children(".loading").removeClass("loading"); 6057 6058 isContentLoading = false; 6059 } 6060 }; 6061 6062 getData(packet, {}); 6063 } 6064 6065 return { 6066 init: init 6067 }; 6068 6069 })(); 6070 6071 reviews.init(); 6072 6073 $(".createReviewBtn").on("click", function(e) { 6074 e.preventDefault(); 6075 6076 if(typeof SPUSER === "undefined") { 6077 $(".loginBtn:eq(0)").trigger("click"); 6078 return; 6079 } 6080 6081 var rating = parseInt($("#rating").val()), rtext = $("#createReview").find("textarea").val(), packet; 6082 6083 if(rating < 1 || rating > 5) { 6084 showAlert("red", "Please choose a rating !!!"); 6085 return false; 6086 } 6087 6088 packet = { 6089 url: ctx + "/courses/696cecf361729d185b1c7649/review/add", 6090 data: {rating: rating, text: rtext}, 6091 success: function(data, params) { 6092 var template = _.template($("#reviewTemplate").html()); 6093 6094 $("#reviewsCont").prepend(template({item: {_id: data.id, rating: rating, reviewtext: rtext, userName: '', userId: "", createdDate: {"$date": (new Date()).getTime()}}})); 6095 $("#reviewsCont").find(".review:eq(0)").find("time.timeago").timeago(); 6096 $("#reviewsCont").find(".statusMsg").remove(); 6097 $("#createReview").hide(); 6098 } 6099 }; 6100 6101 postData(packet, {btn: $(this)}); 6102 6103 return false;
6104 }); 6105 6106 $(document).on("click", ".deleteMyReviewBtn", function(e) { 6107 e.preventDefault(); 6108 6109 if(!confirm("Are you sure?")) { 6110 return false; 6111 } 6112 6113 var packet = { 6114 url: ctx + "/courses/696cecf361729d185b1c7649/review/"+$(this).data('id')+"/delete", 6115 data: {}, 6116 success: function(data, params) { 6117 var template = _.template($("#reviewTemplate").html()); 6118 params.btn.closest(".review").remove(); 6119 6120 if($("#reviewsCont").find(".review").length === 0) { 6121 $("#reviewsCont").prepend("<div class='text-center p-2 h5 statusMsg'>No reviews</div>"); 6122 } 6123 6124 $("#createReview").show(); 6125 } 6126 }; 6127 6128 postData(packet, {btn: $(this)}); 6129 6130 return false; 6131 }); 6132 6133 6134 6135 $("#addToWishlistBtn").on("click", function(e) { 6136 if($(this).hasClass("loginBtn")) { 6137 return; 6138 } 6139 var packet = { 6140 url: ctx+"/wishlist/696cecf361729d185b1c7649/add", 6141 data: {}, 6142 success: function(data, params) { 6143 params.btn.hide().siblings("button").show(); 6144 showAlert("green", data.message); 6145 6146 //fb pixel event .. AddToWishlist 6147 if(typeof fbq !== "undefined") { 6148 fbq('track', 'AddToWishlist', {content_name: contentTitle, content_type: "Product", content_category: '', 6149 content_ids: ["696cecf361729d185b1c7649"], currency: $("#orgCurrencyCode").val(), value: fbprice}); 6150 } 6151 } 6152 } 6153 6154 postData(packet, {btn: $(this)}); 6155 6156 }); 6157 6158 $("#removeFromWishlistBtn").on("click", function(e) { 6159 if($(this).hasClass("loginBtn")) { 6160 return; 6161 } 6162 var packet = { 6163 url: ctx+"/wishlist/696cecf361729d185b1c7649/remove", 6164 data: {}, 6165 success: function(data, params) { 6166 params.btn.hide().siblings("button").show(); 6167 showAlert("green", data.message); 6168 } 6169 }; 6170 6171 postData(packet, {btn: $(this)}); 6172 6173 }); 6174 6175 $(".product-list").find("input[type=radio]").on("click", function(e) { 6176 var radio = $(this); 6177 if(radio.is(":checked")) { 6178 radio.closest(".product").addClass("selected border").siblings().removeClass("selected border"); 6179 gaprice= parseFloat(radio.closest(".product").find('.product-price').data('price')); 6180 } 6181 }); 6182 6183 $(".product-list").find("input[type=radio]:checked").trigger("click"); 6184 6185 6186 if (location.hash.indexOf("addtocart") > -1) { 6187 if($("#enrollBox .product-list .product").length > 1){ 6188 location.hash = "enrollBox" 6189 } else if($(".buyBtn").length > 0){ 6190 $(".buyBtn:visible").trigger("click"); 6191 location.hash = ""; 6192 } 6193 } 6194 6195 if (location.hash.indexOf("reviews") > -1) { 6196 if($(".is-section[data-cat=205]").length > 0){ 6197 window.scrollTo(0, $(".is-section[data-cat=205]:eq(0)").offset().top); 6198 } 6199 } 6200 6201 $(window).bind( "hashchange", function(e) { 6202 if (location.hash.indexOf("reviews") > -1) { 6203 if($(".is-section[data-cat=205]").length > 0){ 6204 window.scrollTo(0, $(".is-section[data-cat=205]:eq(0)").offset().top); 6205 } 6206 } 6207 }); 6208 6209 6210 6211 //fb pixel event .. ViewContent 6212 if(typeof fbq !== "undefined") { 6213 fbq('track', 'ViewContent', {content_name: contentTitle, content_type: "product", content_category: content_category, 6214 content_ids: ["696cecf361729d185b1c7649"], content_type: "Product", currency: $("#orgCurrencyCode").val(), value: fbprice}); 6215 } 6216 </script>
6216 6217 6218
6218<script src="https://d502jbuhuh9wk.cloudfront.net/resources/pagebuilder2/box/box.js" 6219 type="text/javascript"></script>
6219 6220 6221
6221<script type="text/javascript"> 6222 window.signupParams = {source: "course", platform: "web", sourceId: "696cecf361729d185b1c7649"}; 6223 6224 </script>
6224 6225 6226
6226<script src="https://d502jbuhuh9wk.cloudfront.net/static/files/lazyload.min.js"></script>
6226 6227
6227<script type="text/javascript"> 6228 var lazyLoadInstance = new LazyLoad({ 6229 unobserve_entered: true, 6230 callback_enter: function(element) { 6231 resizeCdnImage(element); 6232 } 6233 }); 6234 </script>
6234 6235</body> 6236</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.