PageSourceSearch

https://supreme-essay.com/files/common.js?v=460

js supreme-essay.com collected 2026-10-06 04:39:44 UTC 38,757 bytes, 1,478 lines download raw bytes

1var browser = {
2 msie: /MSIE/i.test(navigator.userAgent) && !/Opera/i.test(navigator.userAgent),
3 opera: /Opera/i.test(navigator.userAgent),
4 khtml: /Konqueror|Safari|KHTML/i.test(navigator.userAgent)
5}
6
7function create_element(type, container)
8{
9 var element = null;
10 if (document.createElementNS)
11  element = document.createElementNS("http://www.w3.org/1999/xhtml", type);
12 else
13  element = document.createElement(type);
14 if (typeof container != "undefined")
15  container.appendChild(element);
16 return element;
17}
18
19function create_elements(elements, container)
20{
21 var element;
22 for (var i in elements)
23 {
24  element = create_element(elements[i].type, container);
25  if (elements[i].content)
26   element.innerHTML = elements[i].content;
27  if (elements[i].attributes)
28   for (var j in elements[i].attributes)
29    element.setAttribute(j, elements[i].attributes[j]);
30  if (elements[i].style)
31   for (var j in elements[i].style)
32    element.style[j] = elements[i].style[j];
33  if (elements[i].events)
34   for (var j in elements[i].events)
35    add_event(element, j, elements[i].events[j]);
36  if (elements[i].childnodes)
37   create_elements(elements[i].childnodes, element);
38 }
39 return element;
40}
41
42function get_absolute_position(element)
43{
44 var sl = 0, st = 0;
45 var div = element.tagName == "DIV";
46 if (div && element.scrollLeft) sl = element.scrollLeft;
47 if (div && element.scrollTop) st = element.scrollTop;
48 var r = { x: element.offsetLeft - sl, y: element.offsetTop - st };
49 if (element.offsetParent)
50 {
51  var t = get_absolute_position(element.offsetParent);
52  r.x += t.x;
53  r.y += t.y;
54 }
55 return r;
56}
57
58function set_absolute_position(element, x, y)
59{
60 if (element.style.position != "absolute")
61  element.style.position = "absolute";
62 element.style.left = x + "px";
63 element.style.top = y + "px";
64}
65
66function get_size(element)
67{
68 var w = 0, h = 0;
69 if (typeof element.offsetWidth != "undefined" && typeof element.offsetHeight != "undefined")
70 {
71  w = element.offsetWidth;
72  h = element.offsetHeight;
73 }
74 else if (element.clip && typeof element.clip.width != "undefined" && typeof element.clip.height != "undefined")
75 {
76  w = element.clip.width;
77  h = element.clip.height;
78 }
79 else if (element.style && typeof element.style.pixelWidth != "undefined" && typeof element.style.pixelHeight != "undefined")
80 {
81  w = element.style.pixelWidth;
82  h = element.style.pixelHeight;
83 }
84 return {w: parseInt(w), h: parseInt(h)};
85}
86
87function get_window_size()
88{
89 var w = 0, h = 0;
90 if (typeof self.innerWidth != "undefined" && typeof self.innerHeight != "undefined")
91 {
92  w = self.innerWidth;
93  h = self.innerHeight;
94 }
95 else if (document.documentElement && typeof document.documentElement.clientWidth != "undefined" && typeof document.documentElement.clientHeight != "undefined")
96 {
97  w = document.documentElement.clientWidth;
98  h = document.documentElement.clientHeight;
99 }
100 else if (document.body)
101 {
102  w = document.body.clientWidth;
103  h = document.body.clientHeight;
104 }
105 return {w: w, h: h};
106}
107
108function get_parent_size(element)
109{
110 var parent = element.parentNode;
111 var w = 0, h = 0;
112 if (parent.tagName != "BODY")
113 {
114  if (typeof parent.clientWidth != "undefined" && typeof parent.clientHeight != "undefined")
115  {
116   w = parent.clientWidth;
117   h = parent.clientHeight;
118  }
119  else if (typeof parent.offsetWidth != "undefined" && typeof parent.offsetHeight != "undefined")
120  {
121   w = parent.offsetWidth;
122   h = parent.offsetHeight;
123  }
124  return {w: w, h: h};
125 }
126 else return get_window_size();
127}
128
129function get_scrolling(element)
130{
131 var x = 0, y = 0;
132 if (element && typeof element.scrollLeft != "undefined" && typeof element.scrollTop != "undefined")
133 {
134  x = element.scrollLeft;
135  y = element.scrollTop;
136 }
137 else if (typeof self.pageXOffset != "undefined" && typeof self.pageYOffset != "undefined")
138 {
139  x = self.pageXOffset;
140  y = self.pageYOffset;
141 }
142 else if (document.documentElement && typeof document.documentElement.scrollLeft != "undefined" && typeof document.documentElement.scrollTop != "undefined")
143 {
144  x = document.documentElement.scrollLeft;
145  y = document.documentElement.scrollTop;
146 }
147 else if (document.body && typeof document.body.scrollLeft != "undefined" && typeof document.body.scrollTop != "undefined")
148 {
149  x = document.body.scrollLeft;
150  y = document.body.scrollTop;
151 }
152 return {x: x, y: y};
153}
154
155function has_class(element, class_name)
156{
157 return element.className && (element.className == class_name || (new RegExp("(^|\\s)" + class_name + "(\\s|$)")).test(element.className));
158}
159
160function add_class(element, class_name) {
161 if (element === undefined)
162  return false;
163
164 if (element && typeof element == "object" && element.nodeType === 1) {
165  if (element.className) {
166   if (!(new RegExp("(^|\\s)" + class_name + "(\\s|$)")).test(element.className))
167    element.className += " " + class_name;
168  }
169  else
170   element.className = class_name;
171 }
172 else {
173  if(element && element.length !== undefined)
174  {
175   for(var i = 0; i <  element.length; i++)
176   {
177    if (element[i] && typeof element[i] == "object" && element[i].nodeType === 1) {
178     if (element[i].className) {
179      if (!(new RegExp("(^|\\s)" + class_name + "(\\s|$)")).test(element[i].className))
180       element[i].className += " " + class_name;
181     }
182     else
183      element[i].className = class_name;
184    }
185   }
186  }
187 }
188}
189
190function remove_class(element, class_name) {
191 if (element && typeof element == "object" && element.nodeType === 1) {
192  if (element.className) {
193   if (element.className == class_name)
194    element.className = ""; else if ((new RegExp("(^|\\s)" + class_name + "(\\s|$)")).test(element.className)) {
195    var c = element.className.split(" ");
196    for (var i = 0; i < c.length; i++)
197     if (c[i] == class_name) c.splice(i, 1);
198    element.className = c.join(" ");
199   }
200  }
201 }
202 else if(element && element.length !== undefined)
203 {
204  for(var i = 0; i <  element.length; i++)
205  {
206   if (element[i] && typeof element[i] == "object" && element[i].nodeType === 1)
207   {
208    if (element[i].className)
209    {
210     if (element[i].className == class_name)
211      element[i].className = "";
212     else if ((new RegExp("(^|\\s)" + class_name + "(\\s|$)")).test(element[i].className))
213     {
214      var c = element[i].className.split(" ");
215      for (var j = 0; j < c.length; j++)
216       if (c[j] == class_name)
217        c.splice(j, 1);
218
219      element[i].className = c.join(" ");
220     }
221    }
222   }
223  }
224 }
225}
226
227function toggle_class(element, class_name)
228{
229 if( has_class(element, class_name)) remove_class(element, class_name);
230 else add_class(element, class_name);
231}
232
233function get_event_target(e)
234{
235 if (browser.msie) e = window.event;
236 var element = browser.msie ? e.srcElement : e.target;
237 while (element && element.nodeType != 1)
238  element = element.parentNode;
239 return element;
240}
241
242function get_real_event_target(e)
243{
244 var element;
245 if (browser.msie)
246 {
247  e = window.event;
248  element = e.fromElement == e.toElement.parentNode ? e.fromElement : e.toElement;
249 }
250 else element = e.relatedTarget;
251 while (element && element.nodeType != 1)
252  element = element.parentNode;
253 return element;
254}
255
256function get_event_position(e)
257{
258 if (browser.msie) e = window.event;
259 return browser.msie ? {x: e.clientX + document.body.scrollLeft, y: e.clientY + document.body.scrollTop} : {x: e.pageX, y: e.pageY};
260}
261
262function stop_event(e)
263{
264 if (browser.msie)
265 {
266  e = window.event;
267  e.cancelBubble = true;
268  e.returnValue = false;
269 }
270 else
271 {
272  e.preventDefault();
273  e.stopPropagation();
274 }
275 return false;
276}
277
278function add_event(element, event_name, func)
279{
280 if (element.attachEvent)
281  element.attachEvent("on" + event_name, func);
282 else if (element.addEventListener)
283  element.addEventListener(event_name, func, true);
284 else
285  element["on" + event_name] = func;
286}
287
288function remove_event(element, event_name, func)
289{
290 if (element.detachEvent)
291  element.detachEvent("on" + event_name, func);
292 else if (element.removeEventListener)
293  element.removeEventListener(event_name, func, true);
294 else
295  element["on" + event_name] = null;
296}
297
298function create_event(element, event_name)
299{
300 if (browser.msie)
301 {
302  var e = document.createEventObject();
303  return element.fireEvent("on" + event_name, e);
304 }
305 else
306 {
307  var e = document.createEvent("HTMLEvents");
308  e.initEvent(event_name, true, true);
309  return !element.dispatchEvent(e);
310 }
311}
312
313///////////////////////////////
314
315function getDocumentScrolling()
316{
317 var html = document.documentElement, body = document.body;
318 return {
319  x: (html && html.scrollLeft || body && body.scrollLeft || 0) - (html && html.clientLeft || 0),
320  y: (html && html.scrollTop || body && body.scrollTop || 0) - (html && html.clientTop || 0)
321 };
322}
323
324function fixEvent(event)
325{
326 if (!event)
327  event = window.event;
328 if (!event.fixed)
329 {
330  if (typeof event.preventDefault == "undefined")
331   event.preventDefault = function() { this.returnValue = false; }
332  if (typeof event.stopPropagation == "undefined")
333   event.stopPropagation = function() { this.cancelBubble = true; }
334  if (typeof event.target == "undefined")
335   event.target = event.srcElement;
336  if (typeof event.relatedTarget == "undefined")
337   event.relatedTarget = event.fromElement ? (event.fromElement == event.target ? event.toElement : event.fromElement) : null;
338  if (typeof event.pageX == "undefined" && typeof event.pageY == "undefined")
339  {
340   var scrolling = getDocumentScrolling();
341   event.pageX = (event.clientX || 0) + scrolling.x;
342   event.pageY = (event.clientY || 0) + scrolling.y;
343  }
344  if (typeof event.which == "undefined")
345   event.which = event.button ? (event.button & 1 ? 1 : (event.button & 2 ? 3 : (event.button & 4 ? 2 : 0))) : 0;
346  event.fixed = true;
347 }
348 return event;
349}
350
351function handleEvent(event)
352{
353 event = fixEvent(event);
354 var handlers = this.events && this.events.list && this.events.list[event.type];
355 if (handlers)
356 {
357  var stop = false;
358  for (var i = 0; i < handlers.length; i++)
359   if (handlers[i].call(this, event) === false)
360    stop = true;
361  if (stop)
362  {
363   event.preventDefault();
364   event.stopPropagation();
365   return false;
366  }
367  return true;
368 }
369 return false;
370}
371
372function addEvent(element, type, handler)
373{
374 if (element.addEventListener)
375  return element.addEventListener(type, handler, false);
376 else if (element.attachEvent)
377 {
378  if (!element.events)
379  {
380   element.events = {
381    list: {},
382    handle: function() {
383     return handleEvent.call(element, window.event);
384    }
385   };
386  }
387  var result = true;
388  if (!element.events.list[type])
389  {
390   element.events.list[type] = [];
391   result = element.attachEvent("on" + type, element.events.handle);
392  }
393  var handlers = element.events.list[type];
394  for (var i = 0; i < handlers.length; i++)
395   if (handlers[i] == handler)
396    return result;
397  handlers.push(handler);
398  return result;
399 }
400 return false;
401}
402
403function removeEvent(element, type, handler)
404{
405 if (element.removeEventListener)
406  return element.removeEventListener(type, handler, false);
407 else if (element.detachEvent)
408 {
409  var i = 0, handlers = element.events && element.events.list[type];
410  while (i < handlers.length)
411   if (handlers[i] == handler)
412    handlers.splice(i, 1);
413   else i++;
414  if (handlers.length == 0)
415  {
416   delete element.events.list[type];
417   return element.detachEvent("on" + type, handler);
418  }
419  return true;
420 }
421 return false;
422}
423
424function createEvent(element, type)
425{
426 if (document.createEvent)
427 {
428  var e = document.createEvent("HTMLEvents");
429  e.initEvent(type, true, true);
430  return !element.dispatchEvent(e);
431 }
432 else if (document.createEventObject)
433 {
434  var e = document.createEventObject();
435  return element.fireEvent("on" + type, e);
436 }
437 return false;
438}
439
440
441/* JS window */
442var jswindows = {};
443
444function jswindow(id, container) {
445 while (!id || jswindows[id])
446  id = "jswindow" + rand(1, 999999);
447 if (!container) container = document.body;
448 var me = jswindows[id] = this;
449
450 var elements = {};
451 elements.main = create_element("div", container);
452 elements.main.className = "jswindow";
453 elements.main.id = id;
454 elements.main.innerHTML = "<table border=\"0\" cellpadding=\"0\" cellspacing=\"0\">" +
455     "<tr class=\"jswindow_title\" id=\"" + id + "_title\">" +
456     "<td class=\"jswindow_caption\" id=\"" + id + "_caption\">&nbsp;</td>" +
457     "<td class=\"jswindow_buttons\" id=\"" + id + "_buttons\"><a class=\"modal-close\" href=\"#close\" onclick=\"return false\"><img class=\"img-delete\" src=\"/files/images/buttons/close_60x60.png\" alt=\"Close\" border=\"0\"></a></td></tr>" +
458     "<tr class=\"jswindow_body\" id=\"" + id + "_body\">" +
459     "<td class=\"jswindow_content\" id=\"" + id + "_content\" colspan=\"2\">&nbsp;</td></tr></table>";
460
461 elements.title = document.getElementById(id + "_title");
462 elements.caption = document.getElementById(id + "_caption");
463 elements.buttons = document.getElementById(id + "_buttons");
464 elements.client = document.getElementById(id + "_client");
465 elements.content = document.getElementById(id + "_content");
466
467 add_event(elements.main, "mousedown", function (ev) {
468  me.bring_to_front();
469 });
470 add_event(elements.title, "mousedown", function (ev) {
471  var origin = get_absolute_position(elements.main);
472  var s = get_event_position(ev);
473  var drag = function (ev) {
474   var e = get_event_position(ev);
475   var x = origin.x + e.x - s.x;
476   var y = origin.y + e.y - s.y;
477   set_absolute_position(elements.main, x, y > 0 ? y : 0)
478  }
479  var end = function (ev) {
480   remove_event(document, "mousemove", drag);
481   remove_event(document, "mouseup", end);
482  }
483
484  add_event(document, "mousemove", drag);
485  add_event(document, "mouseup", end);
486  stop_event(ev);
487 });
488 add_event(elements.buttons.childNodes[0], "click", function () {
489  me.close();
490  remove_class(document.getElementsByTagName('body')[0], 'modal-overlay');
491  return false;
492 });
493 add_class(document.getElementsByTagName('body')[0], 'modal-overlay');
494
495 this.get_id = function () {
496  return id;
497 }
498
499 this.get_container = function () {
500  return elements.main.parentNode;
501 }
502
503 this.get_element = function (name) {
504  return elements[name];
505 }
506
507 this.set_caption = function (text) {
508  elements.caption.innerHTML = text;
509 }
510
511 this.set_content = function (text) {
512  elements.content.innerHTML = text;
513 }
514
515 this.move = function (x, y) {
516  elements.main.style.left = x + "px";
517  elements.main.style.top = y + "px";
518 }
519
520 this.center = function () {
521  this.move(0, 0);
522  var ws = get_window_size();
523  var ps = get_parent_size(elements.main);
524  var scr = get_scrolling();
525  var size = get_size(elements.main);
526  var x = size.w < ws.w ? Math.round(ps.w / 2 - size.w / 2 + scr.x) : scr.x;
527  var y = size.h < ws.h ? Math.round(ps.h / 2 - size.h / 2 + scr.y) : scr.y;
528  this.move(x > 0 ? x : 0, y > 0 ? y : 0);
529 }
530
531 this.resize = function (w, h) {
532  elements.main.style.width = typeof w == "integer" ? w + "px" : "";
533  elements.main.style.height = typeof h == "integer" ? h + "px" : "";
534 }
535
536 this.bring_to_front = function () {
537  var e, p, z = 0;
538  for (var i in jswindows) {
539   e = jswindows[i].get_element("main");
540   if (e != elements.main) {
541    p = e.style.zIndex ? parseInt(e.style.zIndex) : 0;
542    if (p > z) z = p;
543   }
544  }
545  p = elements.main.style.zIndex ? parseInt(elements.main.style.zIndex) : 0;
546  if (z >= p) elements.main.style.zIndex = z + 1;
547 }
548
549 this.send_to_back = function () {
550  var e, p, z = 0;
551  for (var i in jswindows) {
552   e = jswindows[i].get_element("main");
553   if (e != elements.main) {
554    p = e.style.zIndex ? parseInt(e.style.zIndex) : 0;
555    if (p < z) z = p;
556   }
557  }
558  p = elements.main.style.zIndex ? parseInt(elements.main.style.zIndex) : 0;
559  if (z <= p) elements.main.style.zIndex = z - 1;
560 }
561
562 this.minimize = function () {
563  elements.content.style.display = elements.content.style.display == "none" ? "" : "none";
564 }
565
566 this.close = function () {
567  delete jswindows[id];
568  elements.main.parentNode.removeChild(elements.main);
569
570  if(!jQuery('.jswindow > table').length)
571   remove_class(document.getElementsByTagName('body')[0], 'modal-overlay');
572 }
573
574 this.bring_to_front();
575}
576
577function get_parent_window(element) {
578 if (element)
579  do element = element.parentNode;
580  while (element && element.className != "jswindow");
581 return element && (element.id && jswindows[element.id]);
582}
583
584function close_parent_window(element) {
585 var w = get_parent_window(element);
586
587 if (w) w.close();
588 return false;
589}
590
591
592/* Ajax */
593var ansi = "������������������������?�������������������������������������������������������������������������������������������������������", ajax_base_href = "";
594
595var newXMLHttpRequest;
596if (window.XMLHttpRequest)
597 newXMLHttpRequest = function() { return new XMLHttpRequest(); }
598else if (window.ActiveXObject)
599 if (navigator.userAgent.indexOf("MSIE 5") >= 0)
600  newXMLHttpRequest = function() { return new ActiveXObject("Microsoft.XMLHTTP"); }
601 else
602  newXMLHttpRequest = function() { return new ActiveXObject("MSXML2.XMLHTTP"); }
603else newXMLHttpRequest = function() { return null; }
604
605function fix_ajax_url(url)
606{
607 if (ajax_base_href && url.indexOf(document.location.protocol) != 0)
608 {
609  if (url.charAt(0) == "/") url = url.substr(1);
610  url = ajax_base_href + url;
611 }
612 return url;
613}
614
615function ajax_request(data)
616{
617 var request, timer = null;
618 if (data.url && (request = newXMLHttpRequest()))
619 {
620  data.url = fix_ajax_url(data.url);
621  if (!data.post) data.post = null;
622  if (!data.charset) data.charset = "utf-8";
623  if (!data.headers) data.headers = {};
624  if (!data.timeout) data.timeout = 0;
625  request.onreadystatechange = function()
626  {
627   if (request.readyState == 4)
628   {
629    if (timer) clearTimeout(timer);
630    if (data.onsuccess && (request.status == 200 || request.status == 0))
631     data.onsuccess(request);
632    else if (data.onerror)
633     data.onerror(request);
634   }
635  }
636  var method = data.post ? "POST" : "GET";
637  request.open(method, data.url, true);
638  if (request.overrideMimeType)
639   request.overrideMimeType("text/plain");
640  if (method == "POST")
641   data.headers["Content-Type"] = "application/x-www-form-urlencoded; charset=" + data.charset;
642  for (var i in data.headers)
643   request.setRequestHeader(i, data.headers[i]);
644  request.send(data.post);
645  if (data.timeout) timer = setTimeout(function() { request.abort(); }, data.timeout);
646  return true;
647 } else return false;
648}
649
650function int2hex(x)
651{
652 var h = "0123456789ABCDEF", result = "";
653 while (x)
654 {
655  result = h.charAt(x & 15) + result;
656  x >>>= 4;
657 }
658 return result || "0";
659}
660
661function ansi2utf(s)
662{
663 var code, result = "";
664 for (var i = 0; i < s.length; i++)
665 {
666  code = s.charCodeAt(i);
667  if (code < 128 || code > 255) result += s.charAt(i);
668  else result += ansi.charAt(code - 128);
669 }
670 return result;
671}
672
673function utf2ansi(s)
674{
675 var char, n, result = "";
676 for (var i = 0; i < s.length; i++)
677 {
678  char = s.charAt(i);
679  if (s.charCodeAt(i) > 255)
680  {
681   n = ansi.indexOf(char);
682   if (n >= 0) char = String.fromCharCode(n + 128);
683  }
684  result += char;
685 }
686 return result;
687}
688
689function url_encode(s)
690{
691 return encodeURIComponent(s);
692
693 var skip = "!'()*-.0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz~", char, code, n, result = "";
694 if (typeof s != "string") s = s.toString();
695 for (var i = 0; i < s.length; i++)
696 {
697  char = s.charAt(i);
698  code = s.charCodeAt(i);
699  if (code > 255)
700  {
701   n = ansi.indexOf(char);
702   if (n >= 0)
703   {
704    code = n + 128;
705    char = String.fromCharCode(code);
706   }
707  }
708  if (code <= 255)
709   if (code >= 128 || skip.indexOf(char) == -1)
710    result += "%" + (code < 16 ? "0" : "") + int2hex(code);
711   else result += char;
712  else result += escape(char);
713 }
714 return result;
715}
716
717function url_encode_array(a)
718{
719 var result = [];
720 for (var i in a)
721  result.push(url_encode(i) + "=" + url_encode(a[i]));
722 return result ? result.join("&") : "";
723}
724
725function serialize_form(form)
726{
727 var element, values = [];
728 for (var i = 0; i < form.elements.length; i++)
729 {
730  element = form.elements[i];
731  if (element.name && !element.disabled)
732   switch (element.type)
733   {
734    case "checkbox":
735    case "radio":
736     if (element.checked)
737      values.push(url_encode(element.name) + "=" + url_encode(element.value));
738     break;
739    case "button":
740    case "submit":
741     /*if (form.clicked == element)
742      values.push(url_encode(element.name) + "=" + url_encode(element.value));*/
743     break;
744    case "image":
745     /*if (form.clicked == element)
746      values.push(url_encode(element.name + "_x") + "=" + url_encode(form.clicked_x),
747      url_encode(element.name + "_y") + "=" + url_encode(form.clicked_y));*/
748     break;
749    case "select-one":
750     if (element.selectedIndex > -1)
751      values.push(url_encode(element.name) + "=" + url_encode(element.value));
752     break;
753    case "select-multiple":
754     for (var j = 0; j < element.options.length; j++)
755      if (element.options[j].selected)
756       values.push(url_encode(element.name) + "=" + url_encode(element.options[j].value));
757     break;
758    case "reset":
759    case "file":
760     break;
761    default: values.push(url_encode(element.name) + "=" + url_encode(element.value));
762   }
763 }
764 return values.join("&");
765}
766
767/*function serialize_form(form)
768 {
769 var element, values = {};
770 for (var i = 0; i < form.elements.length; i++)
771 {
772 element = form.elements[i];
773 if (element.name)
774 switch (element.type)
775 {
776 case "checkbox": values[element.name] = element.checked ? element.value : ""; break;
777 case "radio": if (!values[element.name]) values[element.name] = element.checked ? element.value : ""; break;
778 default: values[element.name] = element.value;
779 }
780 }
781 return url_encode_array(values);
782 }*/
783
784function add_slashes(s)
785{
786 if (s) s = s.replace(/\\/g, "\\\\").replace(/"/g, "\\\"").replace(/\n/g, "\\n").replace(/\r/g, "\\r");
787 return s;
788}
789
790function serialize_object(obj)
791{
792 var result = "", first = true;
793 if (obj == null || obj == undefined) return result + obj;
794 switch (typeof obj)
795 {
796  case "boolean": result += obj; break;
797  case "number": result += obj; break;
798  case "string": result += "\"" + add_slashes(obj) + "\""; break;
799  case "object":
800   switch (obj.constructor)
801   {
802    case Array:
803     result += "[";
804     for (var i = 0; i < obj.length; i++)
805     {
806      if (!first) result += ", ";
807      result += serialize_object(obj[i]);
808      first = false;
809     }
810     result += "]";
811     break;
812    case Object:
813     result += "{";
814     for (var i in obj)
815     {
816      if (!first) result += ", ";
817      result += "\"" + i + "\": " + serialize_object(obj[i]);
818      first = false;
819     }
820     result += "}";
821   }
822 }
823 return result;
824}
825
826function GetXmlHttpObject(handler)
827{
828 var objXMLHttp=null
829 if (window.XMLHttpRequest)
830 {
831  objXMLHttp=new XMLHttpRequest()
832 }
833 else if (window.ActiveXObject)
834 {
835  objXMLHttp=new ActiveXObject("Microsoft.XMLHTTP")
836 }
837 return objXMLHttp
838}
839
840function stateChanged()
841{
842 if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete")
843 {
844  document.getElementById("txtResult").innerHTML = xmlHttp.responseText
845 }
846 else {
847
848 }
849}
850
851function htmlData(url, qStr)
852{
853 if (url.length==0)
854 {
855  document.getElementById("txtResult").innerHTML = "";
856  return;
857 }
858
859 xmlHttp = GetXmlHttpObject();
860
861 if (xmlHttp==null)
862 {
863  alert ("Browser does not support HTTP Request");
864  return;
865 }
866
867 url=url+"?"+qStr;
868 url=url+"&sid="+Math.random();
869 xmlHttp.onreadystatechange = stateChanged;
870 xmlHttp.open("GET",url,true) ;
871 xmlHttp.send(null);
872}
873
874(function()
875{
876 var base = document.getElementsByTagName("BASE");
877 if (base && base[0] && base[0].href)
878 {
879  var base_href = base[0].href;
880  var base_host = base_href.match("^" + document.location.protocol + "\/\/([^\/]+)");
881  if (base_host && base_host[1])
882  {
883   base_host = base_host[1];
884   if (document.location.host != base_host)
885    base_href = base_href.replace(base_host, document.location.host);
886  }
887  ajax_base_href = base_href.charAt(base_href.length - 1) == "/" ? base_href : base_href + "/";
888 }
889})();
890
891
892/* Common */
893var loading = "<center><img src=\"files/img/loading.gif\" border=\"0\" alt=\"Loading...\" /></center>";
894
895function get_element(id)
896{
897 return document.getElementById(id);
898}
899
900function $(element)
901{
902 return typeof element == "object" ? element : document.getElementById(element);
903}
904
905function show(element)
906{
907 if (element && typeof element == "object")
908  element.style.display = "";
909}
910
911function hide(element)
912{
913 if (element && typeof element == "object")
914  element.style.display = "none";
915}
916
917function show_hide(element)
918{
919 if (element && typeof element == "object")
920  element.style.display = element.style.display == "none" ? "" : "none";
921}
922
923function show_elements(element, class_name)
924{
925 if (element.className && element.className == class_name) element.style.display = ""; else
926 if (element.childNodes)
927  for (var i = 0; i < element.childNodes.length; i++)
928   show_elements(element.childNodes[i], class_name);
929}
930
931function hide_elements(element, class_name)
932{
933 if (element.className && element.className == class_name) element.style.display = "none"; else
934 if (element.childNodes)
935  for (var i = 0; i < element.childNodes.length; i++)
936   hide_elements(element.childNodes[i], class_name);
937}
938
939function set_table_style(element, r1, r1h, r2, r2h)
940{
941 while (element && element.nodeName != "TR")
942  element = element.childNodes.length ? element.childNodes[0] : element.nextSibling;
943 var n = 0;
944 while (element)
945 {
946  if (element.nodeName == "TR")
947  {
948   if (n % 2)
949   {
950    element.style.background = r1;
951    if (r1h)
952    {
953     element.onmouseover = function() { this.style.background = r1h; }
954     element.onmouseout = function() { this.style.background = r1; }
955    }
956   } else
957   {
958    element.style.background = r2;
959    if (r2h)
960    {
961     element.onmouseover = function() { this.style.background = r2h; }
962     element.onmouseout = function() { this.style.background = r2; }
963    }
964   }
965   n++;
966  }
967  element = element.nextSibling;
968 }
969}
970
971function set_table_classes(table, classes)
972{
973 if (table && classes)
974 {
975  var c = classes.length, i = 0;
976  for (var b = 0; b < table.tBodies.length; b++)
977   for (var r = 0; r < table.tBodies[b].rows.length; r++)
978   {
979    if (table.tBodies[b].rows[r].className)
980     for (var j = 0; j < c; j++)
981      remove_class(table.tBodies[b].rows[r], classes[j]);
982    add_class(table.tBodies[b].rows[r], table.tBodies[b].rows[r].style.display == "none" ? "" : classes[i++ % c]);
983   }
984 }
985}
986
987function set_content(element, content)
988{
989 if (element && typeof element == "object")
990  element.innerHTML = content;
991}
992
993function get_field(form, field)
994{
995 for (var i = 0; i < form.elements.length; i++)
996  if (form.elements[i].name == field)
997   return form.elements[i].value;
998}
999
1000function get_fields(form)
1001{
1002 var element, values = {};
1003 for (var i = 0; i < form.elements.length; i++)
1004 {
1005  element = form.elements[i];
1006  if (element.name)
1007   switch (element.type)
1008   {
1009    case "checkbox": values[element.name] = element.checked ? element.value : ""; break;
1010    case "radio": if (!values[element.name]) values[element.name] = element.checked ? element.value : ""; break;
1011    default: values[element.name] = element.value;
1012   }
1013 }
1014 return values;
1015}
1016
1017function set_fields(form, fields)
1018{
1019 for (var i = 0; i < form.elements.length; i++)
1020  if (typeof fields[form.elements[i].name] != "undefined")
1021   form.elements[i].value = fields[form.elements[i].name];
1022}
1023
1024function clear_fields(form)
1025{
1026 var element, radiobuttons = [];
1027 for (var i = 0; i < form.elements.length; i++)
1028 {
1029  element = form.elements[i];
1030  if (element.name)
1031   switch (element.type)
1032   {
1033    case "checkbox": element.checked = ""; break;
1034    case "radio": if (!in_array(radiobuttons, element.name)) { element.checked = "checked"; radiobuttons.push(element.name); }; break;
1035    case "select-one":
1036    case "select-multiple": element.selectedIndex = 0; break;
1037    default: element.value = "";
1038   }
1039 }
1040}
1041
1042function get_attribute(element, attribute)
1043{
1044 var node = element.getAttributeNode(attribute);
1045 return node ? node.value : "";
1046}
1047
1048function add_select_option(element, text, value, is_default_selected, is_selected)
1049{
1050 var option = new Option(text, value, is_default_selected, is_selected);
1051 element.options.add(option);
1052 return option;
1053}
1054
1055function add_select_options(element, list)
1056{
1057 for (var i in list)
1058  add_select_option(element, list[i], i, false, false);
1059 return false;
1060}
1061
1062function remove_select_option(element, i)
1063{
1064 element.remove(i);
1065 return false;
1066}
1067
1068function remove_select_options(element)
1069{
1070 for (var i = element.options.length - 1; i >= 0; i--)
1071  element.remove(i);
1072 for (var i = element.childNodes.length - 1; i >= 0; i--)
1073  element.removeChild(element.childNodes[i]);
1074 return false;
1075}
1076
1077function set_select_options(element, list)
1078{
1079 remove_select_options(element);
1080 add_select_options(element, list);
1081 return false;
1082}
1083
1084function set_select_options_ex(element, list)
1085{
1086 remove_select_options(element);
1087 var groups = {}, option;
1088 for (var i in list)
1089  if (typeof list[i] == "object")
1090  {
1091   option = add_select_option(element, list[i]["text"] || "", list[i]["value"] || i, list[i]["default"] || false, list[i]["selected"] || false);
1092   if (list[i]["title"])
1093    option.title = list[i]["title"];
1094   if (list[i]["group"])
1095   {
1096    if (!groups[list[i]["group"]])
1097     (groups[list[i]["group"]] = create_element("optgroup", element)).label = list[i]["group"];
1098    groups[list[i]["group"]].appendChild(option);
1099   }
1100  } else add_select_option(element, list[i], i, false, false);
1101 return false;
1102}
1103
1104function set_select_value(element, value, onchange)
1105{
1106 for (var i = 0; i < element.options.length; i++)
1107  if (element.options[i].value == value)
1108  {
1109   element.selectedIndex = i;
1110   if (onchange) {
1111    setTimeout(function () {
1112     create_event(element, "change");
1113    }, 1);
1114   }
1115   return i;
1116  }
1117 return false;
1118}
1119
1120function get_url_component(s, name)
1121{
1122 var p = s.indexOf("?" + name + "=");
1123 if (p == -1) p = s.indexOf("&" + name + "=");
1124 if (p >= 0)
1125 {
1126  p += name.length + 2;
1127  var e = s.indexOf("&", p);
1128  if (e == -1) e = s.length;
1129  return (p <= e) ? s.substring(p, e) : "";
1130 }
1131 else return "";
1132}
1133
1134function load_url(url, post, container, onsuccess, onerror)
1135{
1136 var loader = container;
1137
1138 if (container && window.jQuery) {
1139  if(jQuery(container).find('.loader').length)
1140   loader = jQuery(container).find('.loader')[0];
1141  else
1142   loader = container;
1143 }
1144
1145 if(loader)
1146  add_class(loader, 'loading');
1147
1148 ajax_request({
1149  url: url,
1150  post: post,
1151  onsuccess: function(request) {
1152   set_content(container, request.responseText);
1153   if (container)
1154    remove_class(loader, 'loading');
1155   if (typeof onsuccess == "function") onsuccess(request);
1156  },
1157  onerror: function(request) {
1158   //set_content(container, "Error " + request.status + ": " + request.statusText);
1159   if(container)
1160    remove_class(loader, 'loading');
1161   if (typeof onerror == "function") onerror(request);
1162  }
1163 });
1164 return false;
1165}
1166
1167function submit_form(form, container, onsuccess, onerror)
1168{
1169 if (get_attribute(form, "enctype") == "multipart/form-data")
1170 {
1171  if (container)
1172   add_class(container, 'loading');
1173
1174  var div = create_element("DIV", document.body);
1175  div.style.display = "none";
1176  var name = "loader" + rand(1, 999999);
1177  div.innerHTML = "<iframe name = \"" + name + "\"></iframe>";
1178  var iframe = div.childNodes[0];
1179  add_event(iframe, "load", function() {
1180   var doc = (iframe.contentWindow && iframe.contentWindow.document || iframe.contentDocument);
1181   if (doc && doc.location.href != "about:blank")
1182   {
1183    set_content(container, doc.body.innerHTML);
1184    if (container)
1185     remove_class(container, 'loading');
1186    setTimeout(function() { div.parentNode.removeChild(div); }, 1000);
1187    if (onsuccess) onsuccess(null);
1188   }
1189  });
1190  form.setAttribute("target", name);
1191  form.submit();
1192  //setTimeout(function() { set_content(container, loading); }, 1);
1193 }
1194 else
1195 {
1196  var url = get_attribute(form, "action"), post = null;
1197  if (get_attribute(form, "method").toLowerCase() == "post") post = serialize_form(form);
1198  else url += (url.indexOf("?") >= 0 ? "&" : "?") + serialize_form(form);
1199  if (url) load_url(url, post, container, onsuccess, onerror);
1200 }
1201 return false;
1202}
1203
1204function load_json(url, post, onload, onsuccess, onerror)
1205{
1206 ajax_request({
1207  url: url,
1208  post: post,
1209  onsuccess: function(request) {
1210   try { var jso = eval("(" + request.responseText + ")"); }
1211   catch (e) { jso = null; if (request.responseText) alert(request.responseText); };
1212   onload(jso);
1213   if (typeof onsuccess == "function") onsuccess(request);
1214  },
1215  onerror: function(request) {
1216   onload(null);
1217   if (typeof onerror == "function") onerror(request);
1218  }
1219 });
1220 return false;
1221}
1222
1223function load_select_options(url, post, element, onsuccess, onerror)
1224{
1225 set_select_options(element, ["..."]);
1226 ajax_request({
1227  url: url,
1228  post: post,
1229  onsuccess: function(request) {
1230   try { var jso = eval("(" + request.responseText + ")"); }
1231   catch (e) { jso = null; if (request.responseText) alert(request.responseText); };
1232   if (typeof jso == "object")
1233    set_select_options(element, jso);
1234   else
1235    set_select_options(element, [request.responseText]);
1236   if (typeof onsuccess == "function") onsuccess(request);
1237  },
1238  onerror: function(request) {
1239   set_select_options(element, ["Error " + request.status + ": " + request.statusText]);
1240   if (typeof onerror == "function") onerror(request);
1241  }
1242 });
1243 return false;
1244}
1245
1246function intval(value)
1247{
1248 return parseInt(value) || 0;
1249}
1250
1251function floatval(value)
1252{
1253 return parseFloat(value) || 0;
1254}
1255
1256function round(value, precision)
1257{
1258 if (precision && precision > 0)
1259 {
1260  var p = Math.pow(10, precision);
1261  return Math.round(value * p) / p;
1262 }
1263 else
1264  return Math.round(value);
1265}
1266
1267function in_array(array, element)
1268{
1269 for (var i in array)
1270  if (array[i] == element) return true;
1271 return false;
1272}
1273
1274function index_of(array, element)
1275{
1276 for (var i in array)
1277  if (array[i] == element) return i;
1278 return -1;
1279}
1280
1281function rand(a, b)
1282{
1283 var r = Math.random();
1284 if (typeof a == "undefined") return r;
1285 if (typeof b == "undefined") { b = a; a = 0; }
1286 return a + Math.floor(r * (b - a + 1));
1287}
1288
1289function trim(s)
1290{
1291 return s.replace(/(^\s+)|(\s+$)/g, "");
1292}
1293
1294function nl2br(s)
1295{
1296 return s.replace(/\n/g, "<br />\n");
1297}
1298
1299function html_special_chars(s)
1300{
1301 return s.replace(/&/g, "&amp;").replace(/"/g, "&quot;").replace(/</g, "&lt;").replace(/>/g, "&gt;");
1302}
1303
1304function clone(o)
1305{
1306 if (typeof o == "object")
1307 {
1308  var n = new o.constructor();
1309  for (var p in o)
1310   if (o.hasOwnProperty(p))
1311    n[p] = clone(o[p]);
1312  return n;
1313 }
1314 else return o;
1315}
1316
1317function set_cookie(name, value, expires, path, domain, secure)
1318{
1319 if (expires)
1320 {
1321  date = new Date();
1322  date.setTime(date.getTime() + expires * 1000);
1323  expires = date.toGMTString();
1324 }
1325 document.cookie = name + "=" + escape(value) +
1326     (expires ? ";expires=" + expires : "") +
1327     (path ? ";path=" + path : "") +
1328     (domain ? ";domain=" + domain : "") +
1329     (secure ? ";secure" : "");
1330 return true;
1331}
1332
1333function get_cookies()
1334{
1335 var cookies = document.cookie.split(";"), cookie, result = [];
1336 for (var i = 0; i < cookies.length; i++)
1337 {
1338  cookie = trim(cookies[i]).split("=");
1339  if (cookie.length == 2)
1340   result[cookie[0]] = unescape(cookie[1]);
1341 }
1342 return result;
1343}
1344
1345function get_cookie(name)
1346{
1347 var cookies = get_cookies();
1348 return cookies[name] || "";
1349}
1350
1351function delete_cookie(name, path, domain)
1352{
1353 var date = new Date(0), expires = date.toGMTString();
1354 document.cookie = name + "=" +
1355     ";expires=" + expires +
1356     (path ? ";path=" + path : "") +
1357     (domain ? ";domain=" + domain : "");
1358 return true;
1359}
1360function run_scripts(container) {
1361 if (container) {
1362  var scripts = container.getElementsByTagName("script"), content;
1363  if (scripts && scripts.length)
1364   for (var i = 0; i < scripts.length; i++)
1365    if (content = scripts[i].innerHTML)
1366     try {
1367      eval.call(window, content);
1368     } catch (e) {}
1369 }
1370 return false;
1371}
1372
1373function _submit_form(form, container, onsuccess, onerror)
1374{
1375 var url = get_attribute(form, "action"), post = null;
1376 if (get_attribute(form, "method").toLowerCase() == "post") post = serialize_form(form);
1377 else url += (url.indexOf("?") >= 0 ? "&" : "?") + serialize_form(form);
1378 if (url)
1379  _ajax(url, post, container, onsuccess, onerror);
1380
1381 return false;
1382}
1383
1384function _ajax(url, post, container, onsuccess, onerror)
1385{
1386 if(container)
1387  add_class(container, 'loading');
1388
1389 ajax_request({
1390  url: url,
1391  post: post,
1392  onsuccess: function(request) {
1393   set_content(container, request.responseText);
1394   if (typeof onsuccess == "function") onsuccess(request);
1395   run_scripts(container);
1396  },
1397  onerror: function(request) {
1398   set_content(container, "Error " + request.status + ": " + request.statusText);
1399   if (typeof onerror == "function") onerror(request);
1400  }
1401 });
1402
1403 if(container)
1404  remove_class(container, 'loading');
1405
1406 return false;
1407}
1408
1409function to_order_by_code() {
1410 load_url('/controller.php','action=TIMER_DISCOUNT_CODE',null, function(response) {
1411  window.location.href = "/order.html?userid="+response.responseText.toString()+'&?pk_campaign=timer&pk_source=internal&pk_medium='+(window.pk_medium?window.pk_medium:'')+'&pk_content=banner&pk_url='+location.pathname;
1412 });
1413}
1414
1415function run_timer(discount_code_timer) {
1416 load_url('/controller.php','action=TIMER_DISCOUNT_CODE',null, function(response){
1417  document.getElementById('discount_code_timer').innerHTML = response.responseText.toString();
1418  jQuery('#countdown_dashboard').css('display', 'block');
1419  jQuery(document).ready(function() {
1420
1421   var today = new Date();
1422   var end_date = new Date(today.getFullYear(),today.getMonth(),today.getDate()+(6-today.getDay()),18,30,0,0);
1423
1424   jQuery('#countdown_dashboard').countDown({
1425    targetDate: {
1426     //SET HERE DEADLINE
1427     'day': 		end_date.getDate(),
1428     'month': 	end_date.getMonth()+1,
1429     'year': 	end_date.getFullYear(),
1430     'hour': 	end_date.getHours(),
1431     'min': 		end_date.getMinutes(),
1432     'sec': 		end_date.getSeconds()
1433    },
1434    omitWeeks: true,
1435    onComplete: function() { jQuery('.slide').hide(); }
1436   });
1437  });
1438 });
1439}
1440
1441function file_name(self) {
1442 if(self.files&&self.files[0]&&self.files[0].name)
1443  jQuery(self).closest('.custom-file-upload').find('.file-name').val(self.files[0].name);
1444 else
1445  jQuery(self).closest('.custom-file-upload').find('.file-name').val(jQuery(this).val());
1446}
1447
1448function get_radio_value(elements)
1449{
1450 if (elements)
1451 {
1452  if (!elements.length) elements = [elements];
1453  for (var i = 0, l = elements.length; i < l; i++)
1454   if (elements[i].checked)
1455    return elements[i].value;
1456 }
1457 return false;
1458}
1459
1460function set_radio_value(elements, value, onchange)
1461{
1462 if (elements)
1463 {
1464  if (!elements.length) elements = [elements];
1465  for (var i = 0, l = elements.length; i < l; i++)
1466   if (elements[i].value == value)
1467   {
1468    elements[i].checked = true;
1469    if (onchange) {
1470     setTimeout(function () {
1471      create_event(element, "change");
1472     }, 1);
1473    }
1474    return i;
1475   }
1476 }
1477 return false;
1478}

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.