PageSourceSearch

https://www.narconon.org/theme/js/form.js?_=btTJR8n9

js narconon.org collected 2026-10-02 05:00:21 UTC 14,951 bytes, 419 lines download raw bytes

1
2//<script>
3
4
5
6$(document).ready(function() {
7
8    $(document).on('submit', '.more-info-form', function(e) {
9
10        
11        if ($(this).parents('.live-chat-form').length) return true;
12        
13        e.preventDefault;
14
15        
16        
17        var formVals = _.reduce($(this).find('input,textarea,select'), function(m, elem) {
18            if (elem.name == "") return m;
19            if (elem.type == 'checkbox') {
20                m[elem.name] = elem.checked;
21            } else {
22                m[elem.name] = elem.value;
23            }
24            if (elem.type == 'radio' && elem.checked) {
25                m[elem.name] = elem.value;
26            }
27            return m;
28        }, {});
29
30        $(this).find('[type="submit"]').addClass('submitting').attr('disabled', 'disabled');
31
32        
33        formVals['type'] = window.globalFormType ? globalFormType : 'nn_more_info_form';
34        formVals['typeClass'] = window.globalFormTypeClass ? globalFormTypeClass : 'nn_contact_form';
35        formVals['scheduleStatus'] = 'not_scheduled';
36        if(formVals.text) {
37            formVals['commStatus'] = 'needs_initial_answer';
38            formVals['workflowStatus'] = 'needs_answer';
39        }
40        else {
41            formVals['commStatus'] = 'no_comm_from_public';
42            formVals['workflowStatus'] = 'received';
43        }
44
45        var that = this;
46
47        email_validate(formVals.email, function() {
48            sendForm(that, formVals);
49        }, function() {
50            email_validation_error(formVals.email, that);
51        });
52
53        return false;
54
55    });
56
57    
58    function sendForm(that, formVals) {
59
60
61        if(window.location.pathname == '/get-help/orientation-link.action') {
62            formVals["nn-film-video-locale"] = formVals["nn-film-video-language"];
63            formVals["nn-film-video-language"] = $('[name="nn-film-video-language"] option:selected').text();
64
65            formVals["nn-film-link-expiration-time"] = formVals["nn-film-link-expiration"];
66            var expire = new Date( new Date().getTime() + $('[name="nn-film-link-expiration"]').val() * 60 * 60 * 1000);
67            formVals["nn-film-link-expiration"] = expire.toLocaleString();
68
69            var val = $('[name="countryCode"]').val();
70            if(val == "RU") {
71                formVals["nn-film-video-locale"] = $('[name="nn-film-video-language-b"]').val();
72                formVals["nn-film-video-id"] = "narconon-orientation-vers-b";
73            } else if(val == "GB" || val == "IE") {
74                formVals["nn-film-video-locale"] = $('[name="nn-film-video-language-c"]').val();
75                formVals["nn-film-video-id"] = "narconon-orientation-vers-c";
76            } else {
77                formVals["nn-film-video-locale"] = $('[name="nn-film-video-language-a"]').val();
78                formVals["nn-film-video-id"] = "narconon-orientation-vers-a";
79            }
80
81            $.ajax({
82                url: globalReachesEndpoint,
83                data: formVals,
84                dataType: 'json',
85                timeout: 15000,
86                success: function(data) {
87                    if($(that).hasClass("subscribe-more-info-form")) {
88                        $(that).addClass('success-message');
89                    }
90                                        
91                    $(that).find('[type="submit"]').removeClass('submitting').html(window._gcui_submitted ? _gcui_submitted : 'Submitted');
92                   console.log(data);
93                   $('.expiration-wrapper').removeClass('hidden');
94                   $('.expiration-wrapper pre').text(data.Link);
95
96                   var expire = new Date( new Date().getTime() + $('[name="nn-film-link-expiration"]').val() * 60 * 60 * 1000);
97                   $('.expiration-wrapper date').text(expire.toLocaleString());
98
99                   window.ga && ga('send', 'event', "Reached", formVals['type'], formVals['typeClass']);
100                   if (typeof centerMetaData != "undefined" && centerMetaData.GaAccount) {
101                       window.ga && ga('centerTracker.send', 'event', "Reached", formVals['type'], formVals['typeClass']);
102                   }
103                },
104                error: function() {
105                    formError(that, arguments);
106                }
107            });
108        } else {
109
110        $.ajax({
111            url: globalReachesEndpoint,
112            data: formVals,
113            dataType: 'jsonp',
114            timeout: 15000,
115            success: function(data) {
116                if (data && data.result && !data.error) {
117                    
118                    setTimeout(function() {
119                        $(that).find('[type="submit"]').removeClass('submitting').html(window._gcui_submitted ? _gcui_submitted : 'Submitted');
120                        $(that).addClass('success-message');
121                    }, 1000);
122
123                    window.globalFormSubmittionSuccess && globalFormSubmittionSuccess();
124
125                } else {
126                    
127                    formError(that, data);    
128                }
129            },
130            error: function() {
131                formError(that, arguments);
132            }
133        });
134
135        }
136
137    }
138
139    
140    var emailValidateSecondTry = false;
141
142    $(document).on('blur', 'input[name="email"]', function(e) {
143        emailValidateSecondTry = false;
144    });
145
146    function email_validate(email, successCallback, errorCallback) {
147        return successCallback();
148    }
149
150    
151    function email_validation_error(email, that) {
152        emailValidateSecondTry = true;
153        window.console && console.error && console.error('email validation error');
154        _tr.push(['_trackEvent', 'Errors', document.location + '', 'email did not validate (' + email + ')']);
155        alert('Sorry, your email address does not appear to be valid. Please review it and try again.');
156        $(that).find('[type="submit"]').removeClass('submitting').removeAttr('disabled');
157    }
158
159});
160
161function formError(formDom, data) {
162    window.console && console.error && console.error("form submission error:");
163    window.console && console.error && console.error(data);
164    alert('There was an error in submitting your form! Please try again later.');
165    $(formDom).find('[type="submit"]').removeClass('submitting').removeAttr('disabled');
166}
167
168$(document).ready(function() {
169
170    
171    var cc = 0;
172    $(document).on('keyup mouseup', function (e) {
173        if (cc++ == 2) $('[name=captcha]').val('V@3fsasdfasdfAAdgf9J*');
174    });
175
176    
177    $('.autowired input[type="text"], .autowired textarea, .autowired select').each(function() {
178        if (!$(this).attr('id') && $(this).attr('name')) $(this).attr('id', $(this).attr('name'));
179        if ($(this).attr('id') && !$(this).attr('name')) $(this).attr('name', $(this).attr('id'));
180    });
181
182    
183    var $countryElem = $('[name="countryCode"]');
184    var $stateElem = $('[name="stateProvince"]');
185    var defaultCountry = 'US';
186    var firstStateUpdate = true;
187
188    $countryElem.on('change', function(e) {
189        updateStateList();
190    });
191
192    setTimeout(function() {
193
194        if (window.globalGeolocationData) {
195            var defaultCountry = safeNav('globalGeolocationData.estimated_location.country_code');
196            if (defaultCountry) defaultCountry = defaultCountry.toUpperCase();
197            $countryElem.val(defaultCountry);
198            updateStateList();
199            _idmgr_org_pref_set_callback();
200        } else {
201            $(document).bind('geolocated', function() {
202                var defaultCountry = safeNav('globalGeolocationData.estimated_location.country_code');
203                if (defaultCountry) defaultCountry = defaultCountry.toUpperCase();
204                $countryElem.val(defaultCountry);
205                updateStateList();
206                _idmgr_org_pref_set_callback();
207            });
208        }
209
210    }, 500);
211
212    
213    $.getScript('/theme/js/polyfiller.js', function() {
214        
215        
216        webshim.setOptions('basePath', '/theme/js/shims/');
217        webshim.polyfill('forms');
218    });
219
220    $(document).on('keyup', 'input[type="text"],textarea', function(e) {
221        $(this).removeClass('errored');
222    });
223
224    
225    function updateStateList() {
226
227        if (!$countryElem.val()) return;
228
229        var countrySelected = $countryElem.val().toUpperCase();
230        
231        $.ajax({
232            url: _gcui_sd_url + '/lookups/state_list.html?countryCode=' + countrySelected,
233            dataType: 'jsonp',
234            cache: true,
235            jsonpCallback: 'state_list_lookup_callback',
236            success: function(data) {
237                $stateElem.html(_gcui_selectElem +
238                    _.reduce(data, function(m, v, k) {
239                        return m + '<option value="' + k + '">' + v + '</option>';
240                    }, '') +
241                    '<option data-other="true" value="other">' + _gcui_otherText + '</option>'
242                );
243                if (firstStateUpdate) {
244                    var defaultState = safeNav('globalGeolocationData.estimated_location.region_code');
245                    if (defaultState) defaultState = defaultState.toUpperCase();
246                    if (defaultState && $stateElem.find('[value="' + defaultCountry + '-' + defaultState + '"]').length) $stateElem.val(defaultCountry + '-' + defaultState);
247                    firstStateUpdate = false;
248                } else {
249                    $stateElem.find('[value=""]').attr('selected', 'selected');
250                }
251
252            },
253            error: function(xhr, status, error) {
254                var err = xhr.responseText;
255                window.console && console.error && console.error(err);
256                $stateElem.html(_gcui_selectElem + '<option data-other="true" value="other">' + _gcui_otherText + '</option>');
257            }
258        });
259    }
260
261});
262
263
264
265function safeNav(stringOfDotSeparatedParameters) {
266    var returnObject = window, parameters = stringOfDotSeparatedParameters.split('.'), i, parameter;
267    for (i = 0; i < parameters.length; i++) {
268        parameter = parameters[i];
269        returnObject = returnObject[parameter];
270        if (returnObject === undefined || returnObject === null) return returnObject;
271    }
272    return returnObject;
273};
274
275
276function safeNav2(obj, stringOfDotSeparatedParameters) {
277    var returnObject = obj, parameters = stringOfDotSeparatedParameters.split('.'), i, parameter;
278    for (i = 0; i < parameters.length; i++) {
279        parameter = parameters[i];
280        returnObject = returnObject[parameter];
281        if (returnObject === undefined || returnObject === null) return returnObject;
282    }
283    return returnObject;
284};
285
286
287
288
289function useTheNearestOrg(nearstOrg) {
290    if (nearstOrg) {
291        $('select[name="orgId"]').val(nearstOrg.Id);
292        $('input[name="missionId"]').val(nearstOrg.Id);
293        $('input[name="orgId"]').val(nearstOrg.Id);
294    } else {
295        if (window.globalNearestCenterFromDomain) {
296            $('select[name="orgId"]').val(globalNearestCenterFromDomain);
297            $('input[name="missionId"]').val(globalNearestCenterFromDomain);
298        } else {
299            window.console && console.error && console.error('unable to determine center ID');
300        }
301    }
302}
303
304var geoLocateScript;
305function getLocation() {
306    geoLocateScript = document.createElement('script');
307    geoLocateScript.type = 'text/javascript';
308    geoLocateScript.src = 'https://' + globaldata_domain3 + '/geolocate.action' +
309        '?campaign=narconon&results=5&callback=center_selected';
310    document.getElementsByTagName('head')[0].appendChild(geoLocateScript);
311}
312
313function center_selected(data) {
314
315    var nearstOrg;
316
317    
318    if ($('body').hasClass('locale-es') && !($('body').hasClass('narconon-center-site'))) { 
319
320        
321        var located_already = safeNav('globalGeolocationData.estimated_location');
322        if (located_already && located_already.latitude) {
323
324            gcui_log('already had geolocation data');
325            nearstOrg = global_geolocation_done_espanol({lat: located_already.latitude, lng: located_already.longitude});
326            if (nearstOrg) nearstOrg = nearstOrg.narconon;
327            useTheNearestOrg(nearstOrg);
328
329        } else {
330
331            
332            $(document).bind('gcui_org_preference_set', function(e, data) {
333
334                var located_already = safeNav2(data, 'result.estimated_location');
335                if (located_already && located_already.latitude) {
336
337                    gcui_log('already had geolocation data');
338                    nearstOrg = global_geolocation_done_espanol({lat: located_already.latitude, lng: located_already.longitude});
339                    if (nearstOrg) nearstOrg = nearstOrg.narconon;
340                    useTheNearestOrg(nearstOrg);
341                    
342                }
343
344            });
345
346        }
347
348    } else {
349
350        
351
352        gcui_log('geolocated data received:');
353        gcui_log(data);
354
355        globalNNGeodata = data;
356        if (window.map) {
357            map.setCenter({lat: globalNNGeodata.Location.Location.Latitude, lng: globalNNGeodata.Location.Location.Longitude});
358            map.setZoom(8);
359        }
360
361        
362        for (var i in globalNNGeodata.NearestOrgs) {
363            var center = globalNNGeodata.NearestOrgs[i].Org;
364            if (!nearstOrg && center.Type != 'drug_education_center' && center.Id != "narconon-ojai") {
365                nearstOrg = center;
366            }
367        }
368
369        if (nearstOrg || window.globalNearestCenterFromDomain) {
370            $('select[name="orgId"]').val(window.globalNearestCenterFromDomain ? globalNearestCenterFromDomain : nearstOrg.Id);
371            $('input[name="missionId"]').val(nearstOrg.Id);
372        }
373
374    }
375
376    
377    document.getElementsByTagName('head')[0].removeChild(geoLocateScript);
378    geoLocateScript = null;
379
380}
381
382if(document.querySelector('input[name="address_data_from_geolocation"]')) {
383    getLocation();
384}
385
386
387var form_location_data = form_location_data || {};
388
389function _idmgr_org_pref_set_callback() {
390
391    gcui_log('IDMGR: location detection callback called');
392
393    var org_data = {result: globalGeolocationData};
394
395    if (globalGeolocationData == null || org_data.result.estimated_location == null) {
396        
397        gcui_log('ERROR: IDMGR: no geolocation data available');        
398        return;
399    }
400
401    
402    form_location_data['latitude'] = org_data.result.estimated_location.latitude;
403    form_location_data['longitude'] = org_data.result.estimated_location.longitude;
404
405    form_location_data['address_data_from_geolocation'] = {
406        area_code: org_data.result.estimated_location.area_code,
407        city: org_data.result.estimated_location.city,
408        country_code: org_data.result.estimated_location.country_code,
409        postal_code: org_data.result.estimated_location.postal_code,
410        region_code: org_data.result.estimated_location.region_code
411    };
412
413    $('.edit-submitted-gcui-submit-data-hidden').val(JSON.stringify(form_location_data));
414    
415}
416
417
418
419//</script>

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.