PageSourceSearch

https://www.partytimeconnection.com/cp/resources/js/ajax_lib.js?md5=bc90e0da047f6f62f879480f7cc51c35

js partytimeconnection.com collected 2026-10-04 01:47:34 UTC 20,340 bytes, 753 lines download raw bytes

1ajax_callback_function		= "ajax_callback";
2extra_callback_function		= "";
3ajax_render_id				= "";
4override_ajax_response_url	= "";
5is_dev						= false;
6ajax_carry_value			= "";
7
8var eac_retry_info = {};
9var ERSHTTPRequests = {};
10
11function xmlhttpPost(strURL, querystr)
12{
13	var xmlHttpReq = false;
14	var self = this;
15	// Mozilla/Safari
16	if (window.XMLHttpRequest)
17	{
18		self.xmlHttpReq = new XMLHttpRequest();
19	}
20	// IE
21	else if (window.ActiveXObject)
22	{
23		self.xmlHttpReq = new ActiveXObject("Microsoft.XMLHTTP");
24	}
25	self.xmlHttpReq.open('POST', strURL, true);
26	self.xmlHttpReq.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
27    const r = ajax_link_resolver;
28	self.xmlHttpReq.onreadystatechange = function()
29	{
30		if (self.xmlHttpReq.readyState == 4)
31		{
32			process_ajax_callback(self.xmlHttpReq.responseText, strURL, querystr);
33            if (typeof r === "function") {
34                r(); // resolve the promise
35            }
36		}
37	};
38	self.xmlHttpReq.send(querystr);
39}
40
41retry_info = new Array();
42
43window.query_ajax_query = (function () {
44
45	window.callbacks = {};
46
47	function queryFunction(datastring, callback) {
48		if( callbacks[datastring] instanceof Array )
49			callbacks[datastring].push(callback);
50		else
51			callbacks[datastring] = [callback];
52		make_ajax_call("/ajax_query/", datastring, function(response) {
53			if( response.success === "1" ) {
54				while( current_cb = (callbacks[datastring]||[]).pop() )
55					current_cb(response);
56			} else {
57				throw new Error("XHR Request was unable to complete successfully.");
58			}
59		});
60	}
61
62	function getFunctionFromWindow(fname) {
63		if( fname in window && typeof window[fname] === "function" ) {
64			return window[fname];
65		} else {
66			throw new TypeError("query_ajax_query: 2nd parameter, \""+fname+"\", does not reference any function that exists in the global scope.");
67		}
68
69	}
70
71	return function entrypoint(request, callback) {
72		//initial function does validation and type-checking on the parameters.//
73		if( request instanceof Object ) {
74			var datastring = Object.keys(request).map(function(key) {
75				return key + "=" + request[key];
76			}).join("&");
77		} else if( typeof request === "string" ) {
78			var datastring = request;
79		} else {
80			throw new TypeError("query_ajax_query: 1st parameter, \"request\", must be string or object. Found \""+typeof request+"\".");
81		}
82
83		if( typeof callback === "string" )
84			callback = getFunctionFromWindow(callback);
85
86		if( typeof callback !== "function" )
87			throw new TypeError("query_ajax_query: 2nd parameter, \"callback\", must be string or function. Found \""+typeof callback+"\".");
88
89		return queryFunction(datastring, callback);
90	};
91
92})();
93
94function update_setting(settingName, settingValue, callback) {
95	callback = callback || "console.log";
96	var query = "cmd=update_setting&name="+settingName+"&value="+settingValue;
97	//make_ajax_call("/ajax_query/", query, callback);
98	query_ajax_query(query, callback);
99}
100
101function update_general_image(imageName, imageValue, callback) {
102	callback = callback || "console.log";
103	var query = "cmd=update_general_image&name="+imageName+"&value="+imageValue;
104	//make_ajax_call("/ajax_query/", query, callback);
105	query_ajax_query(query, callback);
106}
107
108
109function get_current_foldername(cb) {
110	query_ajax_query("cmd=get_current_foldername", function(data) {
111		if( typeof cb === "string" ) {
112			eval(cb)(data.foldername);
113		} else {
114			cb(data.foldername);
115		}
116	});
117}
118
119function make_ajax_call(strURL, querystr, callback, retry_times, retry_delay, retry_handle, override_content_type)
120{
121	var xmlHttpReq = false;
122	var self = this;
123
124	if (!retry_times) retry_times = 0;
125	if (!retry_delay) retry_delay = 2;
126	if (!retry_handle) retry_handle = "generic";
127	if (!override_content_type) override_content_type = "standard";
128
129	if (retry_times > 0)
130	{
131		//alert("fc for " + retry_handle + "\n" + strURL + "\n" + querystr + "\n" + callback + "\n" + retry_times + "\n" + retry_delay + "\n" + retry_handle);
132	}
133
134	retry_info[retry_handle] = new Array(1, strURL, querystr, callback, retry_times, retry_delay, retry_handle); // active, try count
135	if (retry_times > 0)
136	{
137		var call_retry_func = "verify_ajax_call('" + retry_handle + "')";
138		setTimeout(call_retry_func, retry_delay * 800);
139	}
140
141	// Mozilla/Safari
142	if (window.XMLHttpRequest)
143	{
144		xmlHttpReq = new XMLHttpRequest();
145	}
146	// IE
147	else if (window.ActiveXObject)
148	{
149		xmlHttpReq = new ActiveXObject("Microsoft.XMLHTTP");
150	}
151	xmlHttpReq.open('POST', strURL, true);
152	if (override_content_type == "multipart")
153	{
154		xmlHttpReq.setRequestHeader('Mime-Type', "multipart/form-data");
155		set_content_type = "false";
156	}
157	else
158	{
159		set_content_type = "application/x-www-form-urlencoded";
160	}
161	xmlHttpReq.setRequestHeader('Content-Type', set_content_type);
162	xmlHttpReq.onreadystatechange = function()
163	{
164		if(xmlHttpReq.readyState == 4)
165		{
166			retry_info[retry_handle] = new Array(0, "", "", "", 0, 0);
167			if (typeof callback === "function" )
168			{
169				callback(parse_ajax_response(xmlHttpReq.responseText));
170			}
171			else if (typeof callback === "string")
172			{
173				eval(callback + "(parse_ajax_response(xmlHttpReq.responseText))");
174			}
175			else
176			{
177				//console.log("callback is unknown");
178			}
179		}
180	};
181	xmlHttpReq.send(querystr);
182}
183
184function old_self_make_ajax_call(strURL, querystr, callback, retry_times, retry_delay, retry_handle, override_content_type)
185{
186	var xmlHttpReq = false;
187	var self = this;
188
189	if (!retry_times) retry_times = 0;
190	if (!retry_delay) retry_delay = 2;
191	if (!retry_handle) retry_handle = "generic";
192	if (!override_content_type) override_content_type = "standard";
193
194	if (retry_times > 0)
195	{
196		//alert("fc for " + retry_handle + "\n" + strURL + "\n" + querystr + "\n" + callback + "\n" + retry_times + "\n" + retry_delay + "\n" + retry_handle);
197	}
198
199	retry_info[retry_handle] = new Array(1, strURL, querystr, callback, retry_times, retry_delay, retry_handle); // active, try count
200	if (retry_times > 0)
201	{
202		var call_retry_func = "verify_ajax_call('" + retry_handle + "')";
203		setTimeout(call_retry_func, retry_delay * 800);
204	}
205
206	// Mozilla/Safari
207	if (window.XMLHttpRequest)
208	{
209		self.xmlHttpReq = new XMLHttpRequest();
210	}
211	// IE
212	else if (window.ActiveXObject)
213	{
214		self.xmlHttpReq = new ActiveXObject("Microsoft.XMLHTTP");
215	}
216	self.xmlHttpReq.open('POST', strURL, true);
217	if (override_content_type == "multipart")
218	{
219		self.xmlHttpReq.setRequestHeader('Mime-Type', "multipart/form-data");
220		set_content_type = "false";
221	}
222	else
223	{
224		set_content_type = "application/x-www-form-urlencoded";
225	}
226	self.xmlHttpReq.setRequestHeader('Content-Type', set_content_type);
227	self.xmlHttpReq.onreadystatechange = function()
228	{
229		if(self.xmlHttpReq.readyState == 4)
230		{
231			retry_info[retry_handle] = new Array(0, "", "", "", 0, 0);
232			if (typeof callback === "function" )
233			{
234				callback(parse_ajax_response(self.xmlHttpReq.responseText));
235			}
236			else if (typeof callback === "string")
237			{
238				eval(callback + "(parse_ajax_response(self.xmlHttpReq.responseText))");
239			}
240			else
241			{
242				//console.log("callback is unknown");
243			}
244		}
245	};
246	self.xmlHttpReq.send(querystr);
247}
248
249function verify_ajax_call(retry_handle)
250{
251	rih = retry_info[retry_handle];
252	rih_on = rih[0];
253	rih_strURL = rih[1];
254	rih_querystr = rih[2];
255	rih_callback = rih[3];
256	rih_retry_times = rih[4];
257	rih_retry_delay = rih[5];
258	rih_retry_handle = rih[6];
259
260	if (rih_on == 1)
261	{
262		rih_retry_times -= 1;
263		make_ajax_call(rih_strURL + "?rn=" + (Math.random() * 10000), rih_querystr, rih_callback, rih_retry_times, rih_retry_delay, rih_retry_handle);
264	}
265}
266
267function ers_ajax_call(strURL, querystr, callback, retry_times, retry_delay, retry_handle, override_content_type)
268{
269	var req_key = Date.now() + "-" + ersRandom();
270
271	if (!retry_times) retry_times = 0;
272	if (!retry_delay) retry_delay = 2;
273	if (!retry_handle) retry_handle = "generic_" + req_key;
274	if (!override_content_type) override_content_type = "standard";
275
276	eac_retry_info[retry_handle] = [ 1, strURL, querystr, callback, retry_times, retry_delay, retry_handle ];
277	if (retry_times > 0)
278	{
279		setTimeout("verify_ers_ajax_call('" + retry_handle + "', '" + req_key + "')", (retry_delay * 800));
280	}
281
282	var req = false;
283
284	// Mozilla/Safari
285	if (window.XMLHttpRequest)
286	{
287		req = new XMLHttpRequest();
288	}
289	// IE
290	else if (window.ActiveXObject)
291	{
292		req = new ActiveXObject("Microsoft.XMLHTTP");
293	}
294
295	if (!req)
296	{
297		return "";
298	}
299
300	req.open('POST', strURL, true);
301	if (override_content_type == "multipart")
302	{
303		req.setRequestHeader('Mime-Type', "multipart/form-data");
304		set_content_type = "false";
305	}
306	else
307	{
308		set_content_type = "application/x-www-form-urlencoded";
309	}
310
311	req.setRequestHeader('Content-Type', set_content_type);
312	req.onreadystatechange = function()
313	{
314		var this_req = ERSHTTPRequests[req_key];
315		if (!this_req)
316		{
317			delete ERSHTTPRequests[req_key];
318			return;
319		}
320
321		if (this_req.readyState == 4)
322		{
323			delete eac_retry_info[retry_handle];
324			if (typeof callback === "function")
325			{
326				callback(parse_ajax_response(this_req.responseText));
327			}
328			else if (typeof callback === "string")
329			{
330				eval(callback + "(parse_ajax_response(ERSHTTPRequests['" + req_key + "'].responseText))");
331			}
332			delete ERSHTTPRequests[req_key];
333		}
334	};
335	req.send(querystr);
336
337	ERSHTTPRequests[req_key] = req;
338
339	return req_key;
340}
341
342function verify_ers_ajax_call(retry_handle, req_key)
343{
344	var rih = eac_retry_info[retry_handle];
345	if (!rih)
346	{
347		return;
348	}
349	rih_on = rih[0];
350	rih_strURL = rih[1];
351	rih_querystr = rih[2];
352	rih_callback = rih[3];
353	rih_retry_times = rih[4];
354	rih_retry_delay = rih[5];
355	rih_retry_handle = rih[6];
356
357	if (rih_on == 1)
358	{
359		var this_req = ERSHTTPRequests[req_key];
360		if (this_req)
361		{
362			if (this_req.readyState >= 2)
363			{
364				return;
365			}
366
367			this_req.abort();
368		}
369
370		delete ERSHTTPRequests[req_key];
371
372		rih_retry_times -= 1;
373		ers_ajax_call(rih_strURL + "?rn=" + (Math.random() * 10000), rih_querystr, rih_callback, rih_retry_times, rih_retry_delay, rih_retry_handle);
374	}
375}
376
377aj_flexible_containers = new Array();
378
379function ajax_register_flexible_container(container_id)
380{
381	aj_flexible_containers[container_id] = container_id;
382}
383
384function parse_ajax_response(str)
385{
386	str = str.trim();
387
388	if (str.substring(0, 1) == '{')
389	{
390		var jrsp = JSON.parse(str);
391		if ("status" in jrsp)
392			return jrsp;
393	}
394
395	var rsp = new Array();
396	rsp['success'] = "0";
397
398	var str_parts = str.split("&");
399	for (var i = 0; i < str_parts.length; i++)
400	{
401		var var_parts = str_parts[i].split("=");
402		if (var_parts.length > 1)
403			rsp[var_parts[0]] = var_parts[1];
404	}
405
406	return rsp;
407}
408
409function process_ajax_callback(str, strURL, querystr)
410{
411	var sep = "<!--" + "AJAX" + " " + "RESPONSE" + "-->";
412	if (str.indexOf(sep) >= 0)
413		start_pos = str.indexOf(sep) + sep.length;
414	else
415		start_pos = 0;
416	eval(ajax_callback_function + "(str.substring(start_pos))");
417	if (extra_callback_function != "")
418	{
419		eval(extra_callback_function + "()");
420	}
421	window.dispatchEvent(new CustomEvent("ajax_callback_processed", {
422		detail: {
423			strURL: strURL,
424			querystr: querystr,
425		},
426	}));
427}
428
429function get_ajax_response(render_area, post_info)
430{
431	var winlocstr = "" + window.location + "";
432	var postrootstr = "";
433	if (winlocstr.indexOf("/view/ersadmin") > 0) {
434		postrootstr = "/cp/";
435	}
436	else if (winlocstr.indexOf("/view/") > 0) postrootstr = "/";
437	if(override_ajax_response_url && override_ajax_response_url.length > 5)
438		postrootstr = override_ajax_response_url;
439
440	// For WP Plugins
441	if(postrootstr.indexOf("ers-wp-plugin.php") > 0) {
442			winlocparts = winlocstr.split("?");
443			winlocvars = "";
444			if(winlocparts.length > 0) winlocvars = winlocparts[1];
445			postrootstr = winlocparts[0];
446	}
447
448	xmlhttpPost(postrootstr + "?render_frame=" + render_area.replace(/\?/ig, "&") + "&rnd=" + Math.random() + "&ajtype=inner", post_info);
449}
450
451window.find_and_eval_script_tags = function find_and_eval_script_tags(estr, script_start, script_end, special_script_type)
452{
453	if(!special_script_type)
454		special_script_type = "";
455
456	var rpcfnc	= new Array('set_txt_val','add_txt_select','get_moved_input_txt_coords');
457	var xhtml	= estr.split(script_start);
458
459	for (var n = 1; n < xhtml.length; n++)
460	{
461		var xhtml2 = xhtml[n].split(script_end);
462		if (xhtml2.length > 1)
463		{
464			run_xhtml = xhtml2[0];
465			if(special_script_type=="babel") {
466				eval(Babel.transform(run_xhtml,{presets: ['react']}).code);
467			} else {
468				for(var r=0; r<rpcfnc.length; r++) {
469					var rpcfncname = rpcfnc[r];
470					var reg = new RegExp("function " + rpcfncname + "\\(","g");
471					run_xhtml = run_xhtml.replace(reg, rpcfncname + " = function(");
472				}
473				var wlocstr = "" + window.location + "";
474				//if(wlocstr.indexOf('battlegr') > -1) {
475				//	console.log(run_xhtml);
476				//}
477				eval(run_xhtml);
478			}
479		}
480	}
481}
482
483render_ajax_template = "";
484
485function render_ajax_response(str)
486{
487	ersRemoveElement(ersDE("loading_spinner_div"));
488
489	var renderElem = ersDE(ajax_render_id);
490	if(renderElem) {
491		renderElem.className = "ajax_overlay";
492	}
493	if(str.indexOf("<wpers>") > 0) // Wordpress responses may include the wordpress template, and we only want what's in between the wpers tag
494	{
495		var strparts = str.split("<wp"+"ers>");
496		if(strparts.length > 1) {
497			strparts = strparts[1].split("</wp"+"ers>");
498			str = strparts[0];
499		}
500	}
501
502	var should_eval_script_tags = true;
503	var render_el = ersDE(ajax_render_id);
504	if (render_el)
505	{
506		if (render_ajax_template != "")
507		{
508			render_el.innerHTML = render_ajax_template.replace(/\[str\]/ig, str);
509		}
510		else
511		{
512			render_el.innerHTML = str;
513		}
514		window.setTimeout(function() { render_el.scrollTo(0, 0); }, 50);
515	}
516
517	if (ajax_render_id && ajax_render_id=="crm_billing_content")
518	{
519		if (typeof crm_2nd_billing_load !== "undefined" && crm_2nd_billing_load)
520		{
521			if (add_loaded_scripts_to_head(render_el))
522			{
523				should_eval_script_tags = false;
524			}
525		}
526		crm_2nd_billing_load = false;
527	}
528
529	//-------------- For fli
530	// What is fli?
531	// Yeah, what's fli??
532	// Who's asking? - JML 2020-10-06
533	var str2 = "";
534	for (var flc in aj_flexible_containers)
535	{
536		if (elementDescendedFrom(ajax_render_id, flc))
537		{
538			elem_desc = document.getElementById(flc);
539			for (var n = 0; n < elem_desc.childNodes.length; n++)
540			{
541				elem_ch = elem_desc.childNodes[n];
542				str2 += "descendent found (" + n + "/" + elem_desc.childNodes.length + ")\nparent:" + elem_desc.id + "\nchild:" + elem_ch.id + "\nwidth:" + elem_ch.offsetWidth + "\nheight:" + elem_ch.offsetHeight + "\n";
543			}
544		}
545	}
546
547	if (should_eval_script_tags)
548	{
549		eval_script_tags(str);
550	}
551}
552
553var ajax_link_resolver = () => {};
554function ajax_link(render_id, render_area, post_info, render_template, set_extra_callback_function, dev=false)
555{
556  return new Promise((resolve) => {
557    ajax_link_resolver = resolve;
558
559    window.dispatchEvent(new CustomEvent("ajax_link_start", {
560      detail: {
561        "render_id": render_id,
562        "render_area": render_area,
563        "post_info": post_info,
564        "render_template": render_template,
565        "set_extra_callback_function": set_extra_callback_function,
566      },
567    }));
568    is_dev = dev;
569    if (!post_info)
570      post_info = "";
571
572    if (!render_template)
573      render_template = "";
574
575    if (!set_extra_callback_function)
576      set_extra_callback_function = "";
577
578    render_ajax_template	= render_template;
579    ajax_callback_function	= "render_ajax_response";
580    extra_callback_function	= set_extra_callback_function;
581    ajax_render_id			= render_id;
582
583    ersRemoveElement(ersDE("loading_spinner_div"));
584
585    var elem = ersDE(render_id);
586	  if (elem) {
587		  elem.parentNode.appendChild(ers_spinner_div());
588		  elem.className = "ajax_overlay_greyed_out";
589	  }
590
591    get_ajax_response(render_area, post_info);
592  });
593}
594
595function ers_spinner_div(extra_class)
596{
597	if (!extra_class) extra_class = "";
598
599	var t = document.createElement("div");
600	t.id = "loading_spinner_div";
601	t.innerHTML = "<div class='ERS_loader_wrapper " + extra_class + "'><div class='ERS_loader'></div></div>";
602
603	return t;
604}
605
606function ajax_post(render_id, render_area, form_name, force_vals)
607{
608	var post_str = "";
609	var elem = document.forms[form_name].elements;
610	for (var i = 0; i < elem.length; i++)
611	{
612		var p_key = elem[i].name;
613		var p_val = elem[i].value;
614
615		if (typeof force_vals=="object" && p_key in force_vals)
616		{
617			p_val = force_vals[p_key];
618		}
619
620		if (post_str != "") post_str += "&";
621		post_str += p_key + "=" + encodeURIComponent(p_val);
622	}
623	if (render_id == "return_post_str")
624		return post_str;
625	return ajax_link(render_id, render_area, post_str);
626}
627
628function explain_price_received(rsp)
629{
630	if (rsp['success'] == '1')
631	{
632		var output = rsp['output'];
633		alert(unescape_decode(output));
634	}
635	else alert("Error Encountered");
636}
637
638function explain_price(server_host, for_order_id, for_item_id)
639{
640	make_ajax_call("//" + server_host + "/ajax_query/", "cmd=explain_price&order_id=" + for_order_id + "&explain_id=" + for_item_id, "explain_price_received");
641}
642
643window.addEventListener('popstate', function(e) {
644	if(e.state && e.state.type=='ajax_link' && e.state.render_target && e.state.render_area) {
645		if(e.state.btnid) {
646			if(element_exists(e.state.btnid)) {
647				var btnclickstr = '' + document.getElementById(e.state.btnid).onclick + '';
648				btnclickstr_parts = btnclickstr.split('set_subnav(');
649				if(btnclickstr_parts.length > 1) {
650					btninner_parts = btnclickstr_parts[1].split(')');
651					if(btninner_parts.length > 1) {
652						btninner_str = btninner_parts[0];
653						btnprop_parts = btninner_str.split(',');
654						if(btnprop_parts.length==3) {
655							var btnprop1 = btnprop_parts[0].replace(/['"]+/g, '');
656							var btnprop2 = btnprop_parts[1].replace(/['"]+/g, '');
657							var btnprop3 = btnprop_parts[2].replace(/['"]+/g, '');
658							set_subnav(btnprop1,btnprop2,btnprop3);
659						}
660					}
661				}
662			}
663		}
664		ajax_link(e.state.render_target,e.state.render_area,'','',e.state.callback_str);
665	}
666	// e.state is equal to the data-attribute of the last image we clicked
667});
668
669function extract_html_source(str) {
670	str = extract_ajax_response(str);
671	str = extract_wp_template_contents(str);
672	return str;
673}
674
675window.eval_script_tags = function eval_script_tags(str) {
676	find_and_eval_script_tags(str, "<" + "script language=\"javascript\"" + ">", "<" + "/script>");
677	find_and_eval_script_tags(str, "<" + "script language='javascript'" + ">", "<" + "/script>");
678	find_and_eval_script_tags(str, "<" + "script type=\"text/javascript\"" + ">", "<" + "/script>");
679	find_and_eval_script_tags(str, "<" + "script type='text/javascript'" + ">", "<" + "/script>");
680	find_and_eval_script_tags(str, "<" + "script type=\"text/babel\"" + ">", "<" + "/script>","babel");
681	find_and_eval_script_tags(str, "<" + "script type='text/babel'" + ">", "<" + "/script>","babel");
682	find_and_eval_script_tags(str, "<" + "script" + ">", "<" + "/script>");
683};
684
685function extract_wp_template_contents(str) {
686	if (str.indexOf("<wpers>") >= 0) {
687		// Wordpress responses may include the wordpress template, and we only want what's in between the wpers tag
688		let strparts = str.split("<wpers>");
689		if (strparts.length > 1) {
690			strparts = strparts[1].split("</wpers>");
691			str = strparts[0];
692		}
693	}
694	return str;
695}
696
697function extract_ajax_response(str) {
698	const sep = "<!--AJAX RESPONSE-->";
699	const parts = str.split(sep);
700	if (parts.length > 1) {
701		return parts.slice(1).join(sep);
702	}
703	return str;
704}
705
706function get_post_prefix() {
707	const winlocstr = window.location.toString();
708	let post_prefix = "";
709	if (winlocstr.indexOf("/view/ersadmin") > 0) {
710		post_prefix = "/cp/";
711	} else if (winlocstr.indexOf("/view/") > 0) {
712		post_prefix = "/";
713	}
714	if (typeof window.override_ajax_response_url === "string" && override_ajax_response_url.length > 5) {
715		post_prefix = override_ajax_response_url;
716	}
717	if (post_prefix.indexOf("ers-wp-plugin.php") > 0) {
718		window.winlocparts = winlocstr.split("?");
719		window.winlocvars = "";
720		if (window.winlocparts.length > 0) {
721			window.winlocvars = window.winlocparts[1];
722		}
723		post_prefix = window.winlocparts[0];
724	}
725	return post_prefix;
726}
727
728function add_loaded_scripts_to_head(el)
729{
730	if (!ersIsElement(el))
731	{
732		return false;
733	}
734
735	var scriptEls = el.getElementsByTagName("SCRIPT");
736
737	for (var i = 0; i < scriptEls.length; i++)
738	{
739		var scriptEl = document.createElement("SCRIPT");
740		scriptEl.type = "text/javascript";
741		if (!scriptEls[i].src)
742		{
743			scriptEl.innerHTML = scriptEls[i].innerHTML;
744		}
745		else
746		{
747			scriptEl.src = scriptEls[i].src;
748		}
749		document.head.appendChild(scriptEl);
750	}
751
752	return true;
753}

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.