PageSourceSearch

https://57hours.com/wp-content/themes/57hours/page-templates/2022/js/calendly.js?ver=06082026

js 57hours.com collected 2026-10-02 06:16:35 UTC 5,686 bytes, 144 lines download raw bytes

1;(function ($) {
2    $(document).ready(function () {
3        $(document).on('click', '.js-open-calendly', function (e) {
4            e.preventDefault()
5
6            //open link as fallback if Calendly is not loaded
7            if (typeof Calendly === 'undefined') {
8                window.open($(this).attr('href'))
9                return
10            }
11
12            var calendlyLink = $(this).attr('href')
13            var prefill = {}
14
15            if (typeof currentUser !== 'undefined' && currentUser !== null) {
16                prefill = {
17                    name:
18                        currentUser.data.firstName +
19                        ' ' +
20                        currentUser.data.lastName,
21                    email: currentUser.data.email,
22                }
23            }
24
25            Calendly.initPopupWidget({ url: calendlyLink, prefill: prefill })
26        })
27    })
28
29    function isCalendlyEvent(e) {
30        return (
31            e.origin === 'https://calendly.com' &&
32            e.data.event &&
33            e.data.event.indexOf('calendly.') === 0
34        )
35    }
36
37    function logCallBooked(payload) {
38        if (typeof F7HCalendly === 'undefined' || !F7HCalendly.enabled) {
39            return
40        }
41
42        if (!payload || !payload.event || !payload.invitee) {
43            return
44        }
45
46        var activity = '-'
47        var location = '-'
48
49        if (typeof adventureInfo !== 'undefined') {
50            if (adventureInfo.activity) {
51                activity = Array.isArray(adventureInfo.activity)
52                    ? adventureInfo.activity.join(', ') || '-'
53                    : adventureInfo.activity
54            }
55
56            if (adventureInfo.location) {
57                location = Array.isArray(adventureInfo.location)
58                    ? adventureInfo.location.join(', ') || '-'
59                    : adventureInfo.location
60            }
61        }
62
63        var data = {
64            action: 'f7h_log_call_booked',
65            nonce: F7HCalendly.nonce,
66            event_uri: payload.event.uri,
67            invitee_uri: payload.invitee.uri,
68            url: window.location.href,
69            path: window.location.pathname,
70            activity: activity,
71            location: location,
72        }
73
74        if (typeof adventureInfo !== 'undefined') {
75            data.adventure_id = adventureInfo.adventureId || ''
76            data.title = adventureInfo.title || ''
77            data.price = adventureInfo.price || ''
78            data.lead_value = typeof adventureInfo.leadValue === 'number' ? adventureInfo.leadValue : ''
79            data.inquiry_value = typeof adventureInfo.inquiryValue === 'number' ? adventureInfo.inquiryValue : ''
80            data.call_value = typeof adventureInfo.callValue === 'number' ? adventureInfo.callValue : ''
81        }
82
83        var params = new URLSearchParams(data).toString()
84
85        if (navigator.sendBeacon) {
86            var blob = new Blob([params], { type: 'application/x-www-form-urlencoded' })
87            if (navigator.sendBeacon(F7HCalendly.ajaxUrl, blob)) {
88                return
89            }
90        }
91
92        if (typeof fetch === 'function') {
93            fetch(F7HCalendly.ajaxUrl, {
94                method: 'POST',
95                headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
96                body: params,
97                keepalive: true,
98            })
99        } else {
100            jQuery.ajax({
101                url: F7HCalendly.ajaxUrl,
102                method: 'POST',
103                data: data,
104            })
105        }
106    }
107
108    window.addEventListener('message', function (e) {
109        if (isCalendlyEvent(e)) {
110            window.dataLayer = window.dataLayer || []
111
112            if (e.data.event === 'calendly.event_type_viewed') {
113                dataLayer.push({ event: 'BookACallClicked' })
114            } else if (e.data.event === 'calendly.date_and_time_selected') {
115                dataLayer.push({ event: 'BookACallTimeSelected' })
116            } else if (e.data.event === 'calendly.event_scheduled') {
117                // Call value is only present on adventure / premium adventure pages
118                var callValue = (typeof adventureInfo !== 'undefined' && typeof adventureInfo.callValue === 'number')
119                    ? adventureInfo.callValue
120                    : null
121
122                if (typeof f7hTracking !== 'undefined' && typeof f7hTracking.sendFacebookEvent === 'function') {
123                    if (typeof adventureInfo !== 'undefined' && typeof adventureInfo['inquiryValue'] !== 'undefined') { // we are on adventure or premium adventure page
124                        // A booked call is reported at the Call value on every event.
125                        // Falls back to the inquiry value when no Call value is set.
126                        f7hTracking.sendFacebookEvent(null, null, 'Purchase', callValue); // Purchase event - call value
127                        f7hTracking.sendFacebookEvent(null, null, 'Contact', callValue); // Contact event - call value
128                        f7hTracking.sendFacebookEvent(null, null, 'Call', callValue); // Call event - call value
129                    }
130                }
131
132                // Send the Call value through the existing inquiryValue field so GTM reports
133                // a booked call at its own value;
133 callValue is exposed for a cleaner mapping.
134                if (callValue !== null) {
135                    dataLayer.push({ event: 'CallBooked', inquiryValue: callValue, callValue: callValue })
136                } else {
137                    dataLayer.push({ event: 'CallBooked' })
138                }
139
140                logCallBooked(e.data.payload)
141            }
142        }
143    })
144})(jQuery)

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.