PageSourceSearch

https://dnpcaliforniaedu.org/wp-content/plugins/xyz-schools/public/js/xyz-schools-public.js?ver=1.4.39

js dnpcaliforniaedu.org collected 2026-10-04 06:45:57 UTC 7,085 bytes, 222 lines download raw bytes

1var clickTrack = {
2	uniqueId: "",
3	rfc3986EncodeURIComponent: function(n) {
4		return encodeURIComponent(n).replace(/[!'()*]/g, escape)
5	},
6	isNullOrEmpty: function(n) {
7		return n == null || typeof n == "string" && n.trim() === "" || Array.isArray(n) && n.filter(Boolean).length === 0
8	},
9    generateUUID: function() {
10        // Fallback-safe UUID v4 generation
11        return "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx".replace(/x/g, function() {
12            var r;
13            try {
14                // Try crypto.getRandomValues first
15                r = (crypto.getRandomValues(new Uint8Array(1))[0] & 15);
16            } catch(e) {
17                // Fallback to Math.random for old WebViews
18                r = Math.random() * 16 | 0;
19            }
20            return r.toString(16);
21        });
22    },
23	getUniqueId: function() {
24        if (clickTrack.isNullOrEmpty(clickTrack.uniqueId)) {
25            clickTrack.uniqueId = clickTrack.generateUUID();
26        }
27        return clickTrack.uniqueId;
28	},
29	trackClickLinks: function(n) {
30		var t = clickTrack.getUniqueId(), r = clickTrack.isNullOrEmpty(n) ? clickTrack.rfc3986EncodeURIComponent(window.location.href) : clickTrack.rfc3986EncodeURIComponent(n), u = clickTrack.rfc3986EncodeURIComponent(navigator.userAgent), i;
31		jQuery(".fs-linkout-tr, .school-container a, .feat-school-list a, .fs-row-e a").each(function() {
32			var n = jQuery(this).attr("href"), i, r;
33			n && !n.match(/s2sId/) && (i = `s2sId=${t}`,
34				r = n + (n.match(/\?/) ? "&" : "?") + i,
35				jQuery(this).attr("href", r))
36		});
37		i = `https://tracking.xyzmedia.net/ClickTracker?uniqueId=${t}&pageUrl=${r}&userAgent=${u}`;
38		jQuery.ajax({
39			url: i,
40			method: "GET"
41		}).fail(function(n) {
42			console.error(n)
43		})
44	}
45};
46
47window.addEventListener('load', function() {
48	loadXYZSchoolListeners();
49	clickTrack.trackClickLinks();
50});
51
52
53function loadXYZSchoolListeners(){
54	loadFSBClickListeners()
55
56	jQuery('.more-sponsor').click(function(e) {
57		e.stopPropagation();
58		jQuery('.sponosor-extended').show();
59	});
60
61	jQuery('body').click(function(e) {
62		if (jQuery('.sponosor-extended').is(':visible')) {
63			e.stopPropagation();
64			jQuery('.sponosor-extended').hide();
65		}
66	});
67
68	jQuery('.show-more-btn').click(function(e) {
69		jQuery('.fs-hide-school').removeClass('fs-hide-school');
70		jQuery('.show-more-btn').hide();
71		sendEvent("Show More", "Click", "Featured School");
72	});
73
74	jQuery('.right').click(function(e) {
75		let iw = jQuery('.item-wrapper').first().width();
76		let move = jQuery('.carousel').scrollLeft() +iw + 50;
77		jQuery('.carousel').scrollLeft(move);
78	});
79
80	jQuery('.left').click(function(e) {
81		let iw = jQuery('.item-wrapper').first().width();
82		let move = jQuery('.carousel').scrollLeft() -iw -50;
83		jQuery('.carousel').scrollLeft(move);
84	});
85
86}
87
88function loadFSBClickListeners(){
89    jQuery('.fs-linkout-tr').click(function() {
90        var eventCat = 'fsb';
91        var eventAction = jQuery(this).attr("data-point");
92        var eventCode = jQuery(this).attr("data-code");
93        var eventOrder = jQuery(this).attr("data-order");
94        if(!eventOrder){
95            eventOrder = jQuery(this).parent().index();
96        }
97
98        sendEvent(eventCat, eventAction, eventCode, eventOrder);
99    });
100}
101
102function reLoadFSBClickListeners(){
103    loadFSBClickListeners();
104    clickTrack.trackClickLinks();
105}
106
107function sendEvent(eventCat, eventAction, eventLabel, eventOrder){
108
109	//Maybe we have 2 versions of this file one with and one without PPC GA Load
110	//GA
111	var useGA = xyzInfo.useGA == 1;
112	var payload = xyzInfo;
113	if (useGA){
114		if(typeof gtag === 'function') {
115			gtag('event', eventCat, {
116				component:eventAction,
117				component_value: eventLabel
118			});
119		}else if (typeof dataLayer === 'object'){
120			dataLayer.push({
121				'event':eventCat,
122				'component':eventAction,
123				'component_value': eventLabel
124			});
125		}
126	}
127
128	if(payload && eventCat === "fsb"){
129		//let endpoint = xyzInfo.endpoint
130		let endpoint = xyzInfo.endpoint;
131		let action = xyzInfo.event;
132		let advertiser;
133		if(eventLabel){
134			advertiser = eventLabel;
135		}else{
136			advertiser = eventLabel.replace(/\s+/g, "-").toLowerCase();
137		}
138		let payloadJson = {"action":action, "advertiser":advertiser, "pos":eventOrder, "clicktrack": clickTrack.uniqueId, "component": eventAction};
139
140		jQuery.ajax({
141				url: endpoint,
142				type: 'POST',
143				data: payloadJson,
144				error: function(error) {
145					console.error('Error:', error);
146				}
147			});
148	}
149
150	//matomo
151	_paq.push(['trackEvent',eventCat, eventAction, eventLabel]);
152}
153
154function decorateLink(url){
155	var tracker = ga.getAll()[0];
156	var linker = new window.gaplugins.Linker(tracker);
157	var destinationUrl = url;
158	if(linker){
159		destinationUrl = linker.decorate(destinationUrl);
160	}
161	return destinationUrl;
162}
163
164
165
166var widgetListener = false;
167var widgetClickListener = function() {
168	if(!widgetListener &&  jQuery('#btnSearchSchools')[0]){
169
170        jQuery('select[name="educationLevelId"]').on('change', function() {
171			var widLoc = getWidgetPosition(jQuery(this));
172            var eventCat =  'widget_interaction_' + widLoc;
173            var eventAction = 'education level';
174            var eventCode = this.value;
175            sendEvent(eventCat, eventAction, eventCode,null);
176        });
177
178        jQuery('select[name="outcomeIdList"]').on('change', function() {
179			var widLoc = getWidgetPosition(jQuery(this));
180            var eventCat =  'widget_interaction_' + widLoc;
181            var eventAction = 'outcome';
182            var eventCode = this.value;
183            sendEvent(eventCat, eventAction, eventCode,null);
184        });
185
186        jQuery('select[name="tags"]').on('change', function() {
187			var widLoc = getWidgetPosition(jQuery(this));
188            var eventCat =  'widget_interaction_' + widLoc;
189            var eventAction = 'tags';
190            var eventCode = this.value;
191            sendEvent(eventCat, eventAction, eventCode,null);
192        });
193
194		//jQuery('form[name="quickSearchWizardForm"]').on('submit', function() {
195        //jQuery('button[name="btnSearchSchools"]').click(function(e) {
196		jQuery('button[name="btnSearchSchools"]').on('click', function() {
197			var widLoc = getWidgetPosition(jQuery(this));
198            var levelId = jQuery('#educationLevelId').val();
199            var outcomeId = jQuery('#outcomeIdList').val();
200            var tags = jQuery('#tags').val();
201			var eventCode = levelId + "_" + outcomeId + "_" + tags;
202            var eventCat =  'widget_submit_' + widLoc;
203            var eventAction = 'button';
204            sendEvent(eventCat, eventAction, eventCode,null);
205        });
206        widgetListener = true;
207        window.removeEventListener('scroll',widgetClickListener);
208        window.removeEventListener('mousemove',widgetClickListener);
209    }
210};
211window.addEventListener('scroll', widgetClickListener);
212window.addEventListener('mousemove', widgetClickListener);
213
214function getWidgetPosition(elem){
215	var widLoc = "body";
216	if (elem.parents('.searchboxleftnav').length || elem.parents('.searchbox-nav').length) {
217		widLoc = "left_nav";
218	}else if(elem.parents('.searchbox-footer').length){
219		widLoc = "footer";
220	}
221	return widLoc;
222}

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.