PageSourceSearch

https://www.escoffieronline.com/wp-content/themes/jupiter-v5/onlin…/plattform-scripts.js?ver=1790927628

js escoffieronline.com collected 2026-10-02 09:54:04 UTC 22,661 bytes, 663 lines download raw bytes

1var ERROR_QUEUE = [];
2var ERROR_COUNTER = false;
3var ERROR_DISPLAY = function() {
4    window.clearTimeout(ERROR_COUNTER);
5    ERROR_COUNTER = false;
6    if (ERROR_QUEUE.length) {
7        window.alert(ERROR_QUEUE.join("\n"));
8    }
9    ERROR_QUEUE = [];
10}
11
12
13jQuery(window).load(function() {
14
15    //this applies a phone mask to any input with class="phone-input" on all devices except android
16    var ua = navigator.userAgent.toLowerCase();
17    var isAndroid = ua.indexOf("android") > -1; //&& ua.indexOf("mobile");
18    if(isAndroid) {
19        //jQuery(".phone-input, .date-input").attr('maxlength','10');
20        jQuery(".year-input").attr('maxlength','4');
21        jQuery('.date-input').mask("99/99/9999");
22        jQuery(".zip-input").attr('maxlength','5');
23        jQuery('#zip').mask('99999')
24    }
25    else {
26        //jQuery('.phone-input').mask('(999) 999-9999');
27        jQuery('.date-input').mask('99/99/9999');
28        jQuery('.year-input').mask('9999');
29        jQuery('.zip-input').mask('99999');
30        jQuery('#zip').mask('99999');
31
32    /* Added 2016-03-16 by AI-JW.
33     * Sets the cursor position to the start of the input
34     * for the phone field whenever the field is clicked.
35    */
36
37    /*
38    jQuery('.phone-input').click(function(){
39      jQuery('.phone-input').setCursorPosition(0);
40    });
41    */
42
43    }
44
45    jQuery('#quick-form, #quick-form2').keypress(function(event) {
46        if (event.keyCode == 13) {
47            event.preventDefault();
48        }
49    });
50
51    //remove the school name from the program select options
52    jQuery("#campus option").each(function() {
53        this.innerHTML = this.innerHTML.replace("School Name Goes Here - ","");
54      });
55
56
57    //only allows number for any input with class="number-input"
58    jQuery(".number-input").keydown(function(event) {
59        // Allow: backspace, delete, tab and escape
60        if ( event.keyCode == 46 || event.keyCode == 8 || event.keyCode == 9 || event.keyCode == 27 ||
61             // Allow: Ctrl+A
62            (event.keyCode == 65 && event.ctrlKey === true) ||
63             // Allow: home, end, left, right
64            (event.keyCode >= 35 && event.keyCode <= 39)) {
65                 // let it happen, don't do anything
66                 return;
67        }
68        else {
69            // Ensure that it is a number and stop the keypress
70            if ((event.keyCode < 48 || event.keyCode > 57) && (event.keyCode < 96 || event.keyCode > 105 )) {
71                event.preventDefault();
72            }
73        }
74    });
75
76    
77    
78
79    //make selects wider on click so that options aren't cut off in IE8
80    if (navigator.userAgent.match(/MSIE\s(?!9.0)/)) {
81        jQuery("#campus").mousedown(function(){
82                jQuery(this).css("width", "350px");
83            }).focusout(function(){
84                jQuery(this).css("width", "100%");
85            }).change(function(){
86                jQuery(this).css("width", "100%");
87            });
88        jQuery("#program").mousedown(function(){
89                jQuery(this).css("width", "350px");
90            }).focusout(function(){
91                jQuery(this).css("width", "100%");
92            }).change(function(){
93                jQuery(this).css("width", "100%");
94            });
95    }
96
97    jQuery("#quick-form input, #quick-form select, #quick-form1 input, #quick-form1 select, #quick-form2 input, #quick-form2 select").mouseenter(function() {
98        jQuery(this).next("label.error").fadeOut();
99    });
100
101    // Inline labels for inputs
102    /*
103    jQuery("#quick-form input[type=text], #quick-form1 input[type=text], #quick-form2 input[type=text]").attr('value', function(){return this.title}).addClass('unfilled');
104    jQuery("#quick-form input[type=text], #quick-form1 input[type=text], #quick-form2 input[type=text]").focus(function() {
105        if (this.value == this.title)
106            jQuery(this).val('').removeClass('unfilled');
107    });
108    jQuery("#quick-form input[type=text], #quick-form1 input[type=text], #quick-form2 input[type=text]").blur(function() {
109        if (this.value == '')
110            jQuery(this).attr('value', function(){return this.title}).addClass('unfilled');
111    });
112    */
113    
114
115    // Check input value against inline label
116    jQuery.validator.addMethod("checkLabel", function( value, element ) {
117        return this.optional(element) || value != element.title;
118    }, "Please enter a value.");
119
120    jQuery.validator.addMethod("checkPhoneValue", function(value) {
121         value = value.replace(/[^0-9]/g,'').replace(/^.*(.{10})$/,'$1');
122        if (10 != value.length) { return false; }
123        var invalidPhoneNumbers = ['(000) 000-0000', '(111) 111-1111', '(222) 222-2222', '(333) 333-3333', "(444) 444-4444", "(555) 555-5555", "(666) 666-6666", "(777) 777-7777", "(888) 888-8888", "(999) 999-9999", "(123) 456-7890",'0000000000', '1111111111', '2222222222', '3333333333', "4444444444", "5555555555", "6666666666", "7777777777", "8888888888", "9999999999", "1234567890"];
124        return jQuery.inArray(value, invalidPhoneNumbers) == -1;
125    }, 'Please enter valid phone number.');
126
127    jQuery.validator.addMethod("phoneGlobal", function(value, element) {
128        return this.optional( element ) || /^[\(\)\-\.\+ 0-9]{10,}$/.test( value );
129    }, "Please specify a valid phone number");
130
131    jQuery.validator.addMethod('checkPhoneValidAttr', function(value, element) {
132        return element.getAttribute('data-valid') === 'true';
133    }, 'Please enter a valid phone number.');
134
135
136
137    // Validation
138    jQuery("#quick-form").validate({
139        ignore: false,
140        onclick: false,
141        onfocusout: false,
142        onsubmit: true,
143        onkeyup: false,
144        onkeydown: false,
145        rules: {
146            campus: {
147                required: true
148            },
149            program: {
150                required: true
151            },
152            firstname: {
153                required: true,
154                checkLabel: true
155            },
156            lastname: {
157                required: true,
158                checkLabel: true
159            },
160            zip: {
161                required: true,
162                checkLabel: true
163            },
164            dayphone: {
165                required: true,
166                checkPhoneValidAttr: true
167            },
168            email: {
169                required: true,
170                email: true,
171                checkLabel: true
172            }
173        },
174        messages: {
175            campus: "Please select a campus.",
176            program: "Please select a program.",
177            firstname: "Please enter your first name.",
178            lastname: "Please enter your last name.",
179            dayphone: "Please enter a valid phone number.",
180            email: "Please enter a valid email address."
181        },
182        // Use this function to force alert-box errors instead of inline labels
183        showErrors: function(errorMap, errorList) {
184            jQuery.each(errorList, function(i, e) {
185                ERROR_QUEUE.push(e.message);
186            });
187
188            if (!ERROR_COUNTER) {
189                ERROR_COUNTER = window.setTimeout(ERROR_DISPLAY, 500);
190            }
191        }
192    });
193    
194    // Validation
195    jQuery("#quick-form1").validate({
196        ignore: false,
197        onclick: false,
198        onfocusout: false,
199        onsubmit: true,
200        onkeyup: false,
201        onkeydown: false,
202        rules: {
203            campus: {
204                required: true
205            },
206            program: {
207                required: true
208            },
209            firstname: {
210                required: true,
211                checkLabel: true
212            },
213            lastname: {
214                required: true,
215                checkLabel: true
216            },
217            dayphone: {
218                required: true,
219                checkPhoneValidAttr: true
220            },
221            email: {
222                required: true,
223                email: true,
224                checkLabel: true
225            }
226        },
227        messages: {
228            campus: "Please select a campus.",
229            program: "Please select a program.",
230            firstname: "Please enter your first name.",
231            lastname: "Please enter your last name.",
232            dayphone: "Please enter a valid phone number.",
233            email: "Please enter a valid email address."
234        },
235        // Use this function to force alert-box errors instead of inline labels
236        showErrors: function(errorMap, errorList) {
237            jQuery.each(errorList, function(i, e) {
238                ERROR_QUEUE.push(e.message);
239            });
240
241            if (!ERROR_COUNTER) {
242                ERROR_COUNTER = window.setTimeout(ERROR_DISPLAY, 500);
243            }
244        }
245    });
246
247    jQuery("[eo-lead-magnet-form]").validate({
248        ignore: false,
249        onclick: false,
250        onfocusout: false,
251        onsubmit: true,
252        onkeyup: false,
253        onkeydown: false,
254        rules: {
255            campus: {
256                required: true
257            },
258            program: {
259                required: true
260            },
261            firstname: {
262                required: true,
263                checkLabel: true
264            },
265            lastname: {
266                required: true,
267                checkLabel: true
268            },
269            dayphone: {
270                required: true,
271                checkPhoneValidAttr: true
272            },
273            email: {
274                required: true,
275                email: true,
276                checkLabel: true
277            }
278        },
279        messages: {
280            campus: "Please select a campus.",
281            program: "Please select a program.",
282            firstname: "Please enter your first name.",
283            lastname: "Please enter your last name.",
284            dayphone: "Please enter a valid phone number.",
285            email: "Please enter a valid email address."
286        },
287        // Use this function to force alert-box errors instead of inline labels
288        showErrors: function(errorMap, errorList) {
289            jQuery.each(errorList, function(i, e) {
290                ERROR_QUEUE.push(e.message);
291            });
292
293            if (!ERROR_COUNTER) {
294                ERROR_COUNTER = window.setTimeout(ERROR_DISPLAY, 500);
295            }
296        }
297    });
298
299    jQuery("#quick-form2").validate({
300        ignore: false,
301        onclick: false,
302        onfocusout: false,
303        onsubmit: true,
304        onkeyup: false,
305        onkeydown: false,
306        rules: {
307            campus: {
308                required: true
309            },
310            program: {
311                required: true
312            },
313            firstname: {
314                required: true,
315                checkLabel: true
316            },
317            lastname: {
318                required: true,
319                checkLabel: true
320            },
321            dayphone: {
322                required: true,
323                checkPhoneValidAttr: true
324            },
325            email: {
326                required: true,
327                email: true,
328                checkLabel: true
329            }
330        },
331        messages: {
332            campus: "Please select a campus.",
333            program: "Please select a program.",
334            firstname: "Please enter your first name.",
335            lastname: "Please enter your last name.",
336            dayphone: "Please enter a valid phone number.",
337            email: "Please enter a valid email address."
338        },
339        // Use this function to force alert-box errors instead of inline labels
340        showErrors: function(errorMap, errorList) {
341            jQuery.each(errorList, function(i, e) {
342                ERROR_QUEUE.push(e.message);
343            });
344
345            if (!ERROR_COUNTER) {
346                ERROR_COUNTER = window.setTimeout(ERROR_DISPLAY, 500);
347            }
348        }
349    });
350
351    jQuery("#request-form").validate({
352        ignore: false,
353        onclick: false,
354        onfocusout: false,
355        onsubmit: true,
356        onkeyup: false,
357        onkeydown: false,
358        rules: {
359            campus: {
360                required: true
361            },
362            program: {
363                required: true
364            },
365            firstname: {
366                required: true,
367                checkLabel: true
368            },
369            lastname: {
370                required: true,
371                checkLabel: true
372            },
373            dayphone: {
374                required: true,
375                checkPhoneValidAttr: true
376            },
377            email: {
378                required: true,
379                email: true,
380                checkLabel: true
381            }
382        },
383        messages: {
384            campus: "Please select a campus.",
385            program: "Please select a program.",
386            firstname: "Please enter your first name.",
387            lastname: "Please enter your last name.",
388            dayphone: "Please enter a valid phone number.",
389            email: "Please enter a valid email address."
390        },
391        // Use this function to force alert-box errors instead of inline labels
392        showErrors: function(errorMap, errorList) {
393            jQuery.each(errorList, function(i, e) {
394                ERROR_QUEUE.push(e.message);
395            });
396
397            if (!ERROR_COUNTER) {
398                ERROR_COUNTER = window.setTimeout(ERROR_DISPLAY, 500);
399            }
400        }
401    });
402
403
404    jQuery("form.request-info-form.contact-us-form.main-inline-form.main-popup-form").validate({
405        ignore: false,
406        onclick: false,
407        onfocusout: false,
408        onsubmit: true,
409        onkeyup: false,
410        onkeydown: false,
411        rules: {
412            campus: {
413                required: true
414            },
415            program: {
416                required: true
417            },
418            firstname: {
419                required: true
420            },
421            lastname: {
422                required: true
423            },
424            dayphone: {
425                required: true,
426                checkPhoneValidAttr: true
427            },
428            email: {
429                required: true,
430                email: true
431            }
432        },
433        messages: {
434            campus: "Please select a location of interest.",
435            program: "Please select a program of interest.",
436            firstname: "Please enter your first name.",
437            lastname: "Please enter your last name.",
438            dayphone: "Please enter a valid phone number.",
439            email: "Please enter a valid email address."
440        },
441        // Use this function to force alert-box errors instead of inline labels
442        showErrors: function(errorMap, errorList) {
443            jQuery.each(errorList, function(i, e) {
444                ERROR_QUEUE.push(e.message);
445            });
446
447            if (!ERROR_COUNTER) {
448                ERROR_COUNTER = window.setTimeout(ERROR_DISPLAY, 100);
449            }
450        }
451    });
452
453
454    jQuery("form.equest-info-form.contact-us-form.main-inline-form.inline").validate({
455        ignore: false,
456        onclick: false,
457        onfocusout: false,
458        onsubmit: true,
459        onkeyup: false,
460        onkeydown: false,
461        rules: {
462            campus: {
463                required: true
464            },
465            program: {
466                required: true
467            },
468            CurriculumID: {
469                required: true
470            },
471            firstname: {
472                required: true,
473            },
474            lastname: {
475                required: true,
476            },
477            dayphone: {
478                required: true,
479                checkPhoneValidAttr: true
480            },
481            email: {
482                required: true,
483                email: true
484            }
485        },
486        messages: {
487            campus: "Please select a location of interest.",
488            program: "Please select a program of interest.",
489            firstname: "Please enter your first name.",
490            lastname: "Please enter your last name.",
491            dayphone: "Please enter a valid phone number.",
492            email: "Please enter a valid email address."
493        },
494        // Use this function to force alert-box errors instead of inline labels
495        showErrors: function(errorMap, errorList) {
496            jQuery.each(errorList, function(i, e) {
497                ERROR_QUEUE.push(e.message);
498            });
499
500            if (!ERROR_COUNTER) {
501                ERROR_COUNTER = window.setTimeout(ERROR_DISPLAY, 100);
502            }
503        }
504    });
505
506    function escoffierSetCookie(cname, cvalue, exdays) {
507        var d = new Date();
508        d.setTime(d.getTime() + (exdays * 60 * 60 * 1000));
509        var expires = "expires="+d.toUTCString();
510        const safeValue = encodeURIComponent(cvalue);
511        document.cookie = `${cname}=${safeValue}; ${expires}; path=/;`;
512    }
513
514    function escoffierGetCookie(cname) {
515        const name = cname + "=";
516        const ca = document.cookie.split(';');
517        for (let i = 0; i < ca.length; i++) {
518            let c = ca[i];
519            while (c.charAt(0) === ' ') c = c.substring(1);
520            if (c.indexOf(name) === 0) {
521                const raw = c.substring(name.length, c.length);
522                return decodeURIComponent(raw);
523            }
524        }
525        return "";
526    }
527
528    async function escoffierFetchAndCacheVisitorLocationData() {
529        const cookieName = 'escoffierVisitorLocationData';
530        let visitorLocationData = escoffierGetCookie(cookieName);
531
532        if (visitorLocationData) {
533            return JSON.parse(visitorLocationData);
534        }
535
536        try {
537            const response = await fetch('https://ipwhois.pro/?key=9tZtvG1WqjWGXcP3');
538            const data = await response.json();
539
540            if(data.success == false){
541                const fallbackData = {
542                    'continent': 'North America',
543                    'continent_code': 'NA',
544                    'country': 'United States',
545                    'country_code': 'US',
546                    'region': 'Colorado',
547                    'region_code': 'CO',
548                    'city': 'Boulder'
549                };
550                escoffierSetCookie(cookieName, JSON.stringify(fallbackData), 720);
551                return fallbackData;
552            }
553            escoffierSetCookie(cookieName, JSON.stringify({
554                'continent': data.continent,
555                'continent_code': data.continent_code,
556                'country': data.country,
557                'country_code': data.country_code,
558                'region': data.region,
559                'region_code': data.region_code,
560                'city': data.city
561            }), 720);
562
563            return data;
564        } catch (error) {
565            console.error('Error fetching location IP data', error);
566            return false;
567        }
568    }
569
570    const input = '[action="#process-lead"] input[name="intl-tel"]';
571    document.querySelectorAll(input).forEach((phoneField) => {
572        const tel = window.intlTelInput(phoneField, {
573            loadUtils: () => import('https://cdn.jsdelivr.net/npm/[email protected]/build/js/utils.js'),
574            autoPlaceholder: '',
575            validationNumberTypes: null,
576            useFullscreenPopup: false,
577            initialCountry: 'auto',
578            geoIpLookup: callback => {
579                escoffierFetchAndCacheVisitorLocationData().then(data => {
580                    if(data){
581                        callback(data.country_code.toLowerCase());
582                    } else {
583                        callback('us');
584                    }
585                });
586            },
587        });
588        ['change', 'countrychange'].forEach(eventType => {
589            phoneField.addEventListener(eventType, (event) => {
590                const el = event.target,
591                    form = el.closest('form'),
592                    leadPhone = form && form.querySelector('[name="dayphone"]');
593                if (!leadPhone) {
594                    return;
595                }
596                const valid = (typeof tel.isValidNumberPrecise === 'function')
597                    ? !!tel.isValidNumberPrecise()
598                    : !!tel.isValidNumber();
599                leadPhone.setAttribute('data-valid', String(valid));
600                leadPhone.value = tel.getNumber();
601            });
602        });
603    });
604
605    //custom code
606    jQuery('.online-req-info').parents('#theme-page').addClass('theme-wrap');
607    jQuery('.online-req-info').parents('.column_container').addClass('left-column');
608
609    jQuery('.main-navigation-ul .menu-item').each(function(){
610        var getText = jQuery(this).find('a').text();
611        if(getText == 'Request Info'){
612            jQuery(this).addClass('quick-form-nav');
613        }
614    });
615
616    jQuery('.quick-form-nav').first().click(function(e){
617        if(jQuery('.popup-form').length > 0){
618            e.preventDefault();
619            jQuery('.popup-form').slideToggle();
620        }
621    });
622
623    jQuery('.disclosure-wrapper').click(function(e){
624        e.preventDefault();
625    });
626
627
628    
629    jQuery('.express-consent a').hover(
630    function(){
631
632        jQuery("#quick-form1 #disclosure-tooltip, #quick-form2 #disclosure-tooltip").stop(true,true).fadeIn('fast').animate({
633            opacity:'1'
634        });
635    },
636    function(){
637        jQuery("#quick-form1 #disclosure-tooltip, #quick-form2 #disclosure-tooltip").stop(true, true).animate({
638            opacity:'0'
639        }).fadeOut('fast');
640    }
641    );
642
643    jQuery.fn.setCursorPosition = function(pos) {
644      this.each(function(index, elem) {
645        if (elem.setSelectionRange) {
646          elem.setSelectionRange(pos, pos);
647        } else if (elem.createTextRange) {
648          var range = elem.createTextRange();
649          range.collapse(true);
650          range.moveEnd('character', pos);
651          range.moveStart('character', pos);
652          range.select();
653        }
654      });
655      return this;
656    };
657});
658
659jQuery(document).ready(function(){
660    jQuery('[eo-lead-magnet-next]').click(function(){
661        jQuery(this).closest('.eo-lead-magnet').addClass('step-form');
662    });
663});

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.