PageSourceSearch

https://c3advertising.com/p7scs/p7SCSscripts.js

js c3advertising.com collected 2026-09-26 00:18:23 UTC 5,369 bytes, 230 lines download raw bytes

1
2/* 
3 ================================================
4 PVII Style Class Switcher scripts
5 Copyright (c) 2018 Project Seven Development
6 www.projectseven.com
7 Version: 1.1.3 -build 11
8 ================================================
9 
10 */
11var p7SCS = {
12	ctl: [],
13	once: false
14};
15function P7_SCSaddLoad(){
16	if (window.addEventListener) {
17		document.addEventListener("DOMContentLoaded", P7_SCSinit, false);
18		window.addEventListener("load", P7_SCSinit, false);
19	} else if (window.attachEvent) {
20		window.attachEvent("onload", P7_SCSinit);
21	}
22}
23
24P7_SCSaddLoad();
25function P7_SCSinit(){
26	var i, j, dT, tB, nL, el;
27	if (p7SCS.once) {
28		return;
29	}
30	p7SCS.once = true;
31	if (document.querySelectorAll) {
32		dT = document.querySelectorAll('*[data-scs]');
33	} else {
34		return;
35	}
36	for (j = 0; j < dT.length; j++) {
37		p7SCS.ctl.push(dT[j]);
38		tB = dT[j];
39		tB.scsOpt = tB.getAttribute('data-scs').split(',');
40		tB.scsState = 'off';
41		if (tB.scsOpt[3] && tB.scsOpt[3] !== '') {
42			tB.scsEl = document.getElementById(tB.scsOpt[3]);
43			P7_SCSremClass(document.getElementById(tB.scsOpt[3]), 'scs-noscript');
44		} else {
45			tB.scsEl = tB;
46		}
47		P7_SCSremClass(tB, 'scs-noscript');
48		P7_SCSbindPointer(tB);
49		P7_SCSaddEvent(tB, 'mousedown', function(evt){
50			if (!this.scsEl) {
51				return;
52			}
53			if (this.scsOpt[1] == 1 && this.scsState == 'on') {
54				P7_SCSswitch(this, 'off');
55			} else {
56				P7_SCSswitch(this, 'on');
57			}
58			return false;
59		});
60		if (tB.tagName && tB.tagName == 'A') {
61			P7_SCSaddEvent(tB, 'click', function(evt){
62				var m = false, wH = window.location.href;
63				if (this.href != wH && this.href != wH + '#') {
64					if (this.href.toLowerCase().indexOf('javascript:') == -1) {
65						m = true;
66					}
67				}
68				if (!m) {
69					evt.preventDefault();
70				}
71				return m;
72			});
73		}
74		if (tB.scsOpt[2] == 1) {
75			P7_SCSaddEvent(tB, 'mouseover', function(evt){
76				if (!this.scsEl) {
77					return;
78				}
79				if (this.scsPointer) {
80					return;
81				}
82				P7_SCSswitch(this, 'on');
83			});
84			if (tB.scsOpt[1] == 1) {
85				P7_SCSaddEvent(tB, 'mouseout', function(evt){
86					var tg, pp, m = true;
87					if (!this.scsEl) {
88						return;
89					}
90					if (this.scsPointer) {
91						return;
92					}
93					evt = (evt) ? evt : event;
94					tg = (evt.toElement) ? evt.toElement : evt.relatedTarget;
95					if (tg) {
96						pp = tg;
97						while (pp) {
98							if (pp == this) {
99								m = false;
100								break;
101							}
102							pp = pp.parentNode;
103						}
104						if (m) {
105							P7_SCSswitch(this, 'off');
106						}
107					}
108				});
109			}
110		}
111	}
112}
113
114function P7_SCSswitch(el, ac){
115	if (!el.scsEl) {
116		return;
117	}
118	if (ac == 'off') {
119		if (el.scsOpt[5] == 1) {
120			P7_SCSremClass(el, 'scs-active');
121		}
122		P7_SCSremClass(el.scsEl, el.scsOpt[0]);
123		el.scsState = 'off';
124	} else {
125		if (el.scsOpt[5] == 1) {
126			P7_SCSsetClass(el, 'scs-active');
127		}
128		if (el.scsOpt[6] && el.scsOpt[6] !== '') {
129			P7_SCStoggle(el, el.scsOpt[6]);
130		}
131		if (el.scsOpt[4] == 1) {
132			el.scsEl.className = el.scsOpt[0];
133		} else {
134			P7_SCSsetClass(el.scsEl, el.scsOpt[0]);
135		}
136		el.scsState = 'on';
137	}
138}
139
140function P7_SCStoggle(el, cl){
141	var i, j, cT, dT;
142	cT = document.querySelectorAll('.' + cl);
143	if (cT && cl && cl !== '') {
144		for (i = 0; i < cT.length; i++) {
145			dT = cT[i].querySelectorAll('*[data-scs]');
146			if (dT) {
147				for (j = 0; j < dT.length; j++) {
148					if (dT[j].scsState == 'on' && dT[j] != el) {
149						P7_SCSswitch(dT[j], 'off');
150					}
151				}
152			}
153		}
154	}
155}
156
157function P7_SCSsetClass(ob, cl){
158	if (ob) {
159		var cc, nc, r = /\s+/g;
160		cc = ob.className;
161		nc = cl;
162		if (cc && cc.length > 0) {
163			if (cc.indexOf(cl) == -1) {
164				nc = cc + ' ' + cl;
165			} else {
166				nc = cc;
167			}
168		}
169		nc = nc.replace(r, ' ');
170		ob.className = nc;
171	}
172}
173
174function P7_SCSremClass(ob, cl){
175	if (ob) {
176		var cc, nc;
177		cc = ob.className;
178		cl = cl.replace('-', '\-');
179		var re = new RegExp('\\b' + cl + '\\b');
180		if (re.test(cc)) {
181			nc = cc.replace(re, '');
182			nc = nc.replace(/\s+/g, ' ');
183			nc = nc.replace(/\s$/, '');
184			nc = nc.replace(/^\s/, '');
185			if (nc === '' || nc === ' ') {
186				ob.removeAttribute('class');
187			} else {
188				ob.className = nc;
189			}
190		}
191	}
192}
193
194function P7_SCSaddEvent(obj, evt, fn){
195	if (obj.addEventListener) {
196		obj.addEventListener(evt, fn, false);
197	} else if (obj.attachEvent) {
198		obj.attachEvent('on' + evt, fn);
199	}
200}
201
202function P7_SCSbindPointer(el){
203	if (typeof el.ontouchstart !== 'undefined') {
204		el.addEventListener('touchstart', P7_SCSsetPointer, false);
205	} else if (navigator.maxTouchPoints) {
206		el.addEventListener('pointerdown', P7_SCSsetPointer, false);
207		el.addEventListener('mouseover', P7_SCSsetPointer, false);
208		el.addEventListener('pointerout', P7_SCSsetPointer, false);
209		el.addEventListener('mouseout', P7_SCSsetPointer, false);
210	} else if (navigator.msMaxTouchPoints) {
211		el.addEventListener('MSPointerDown', P7_SCSsetPointer, false);
212		el.addEventListener('mouseover', P7_SCSsetPointer, false);
213		el.addEventListener('MSPointerOut', P7_SCSsetPointer, false);
214		el.addEventListener('mouseout', P7_SCSsetPointer, false);
215	}
216}
217
218function P7_SCSsetPointer(evt){
219	if (evt.pointerType) {
220		if (evt.MSPOINTER_TYPE_TOUCH || evt.pointerType == 'touch') {
221			this.scsPointer = true;
222		} else if (evt.MSPOINTER_TYPE_PEN || evt.pointerType == 'pen') {
223			this.scsPointer = true;
224		} else {
225			this.scsPointer = false;
226		}
227	} else if (this.ontouchstart !== undefined) {
228		this.scsPointer = true;
229	}
230}

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.