PageSourceSearch

https://bureau.ru/mod/news2/common.js?1

js bureau.ru collected 2026-10-02 03:02:47 UTC 8,693 bytes, 193 lines download raw bytes

1/* Объявление общих классов*/
2/*  Класс наблюдатель.
3	Являясь прототипом объекта, позволяет ему назначать себе наблюдателей и
4	оповещать их о происходящих событиях */
5function ClassObservable() {
6	// НЕЛЬЗЯ ДОБАВЛЯТЬ this.observers = [] В ПРОТОТИП!!! Иначе наблюдателем будут не объекты, а прототип
7	// Метод, добавляющий наблюдателя
8	this.addObserver = function ($event_type, $observer, $method){
9		if (!this.observers) this.observers = [];                    // Если у объекта ещё нет списка событий - создать его
10		$event_type = $event_type.toLowerCase();                     // Все события должны быть написаны в нижнем регистре для унификации
11		if (!this.observers[$event_type]) this.observers[$event_type] = []; // Если нет массива для данного типа событий, то необходимо его создать
12		$length = this.observers[$event_type].length;                       // Вычисляем длину массива
13		this.observers[$event_type][$length] = [];
14		this.observers[$event_type][$length].observer = $observer;                   // Добавляем наблюдатель в конец массива
15		if ($method) this.observers[$event_type][$length].method = $method;          // Добавляем наблюдатель в конец массива
16	}
17	this.detachObserver = function ($event, $observer) {
18
19		var $observers, $i, $length;
20		for ($i = 0, $observers = this.observers[$event], $lenght = $observers.length; $i < $lenght; $i++) {
21	    	if  ($observer == $observers[$i].observer) $observers.splice($i, 1);
22	    }
23	}
24	// Метод проверяет, являетсля ли уже объект наблюдателем данного события у данного объекта
25	this.exist = function ($event, $observer) {
26		var $observers, $i, $length;
27		for ($i = 0, $observers = this.observers[$event], $lenght = $observers.length; $i < $lenght; $i++) {
28	    	if  ($observer == $observers[$i]) return $i;
29	    }
30	    return false;
31	}
32	// Оповещает наблюдателей о происходящих событиях
33	this.notify = function ($event) {                 // $event - тип события
34		var $arguments, $observers, $observer, $i, $length;
35		$arguments = arguments;                       // Получаем массив аргументов, с которыми был вызван метод notify
36		$event = $event.toLowerCase();                // Для унификации переводим название события в нижний регистр
37		if (!this.observers) return false;            // Если нет массива обработчиков,
38		if (!this.observers[$event]) return false;    //  или нет массива для обработчиков данного типа - вернуть ложь
39		for ($i = 0, $observers = this.observers[$event], $length = $observers.length; $i < $length; $i++) {
40			$observer = $observers[$i];
41        	if ($observer.observer instanceof Function) $observer.observer($event, $arguments);
42			else if ($observer.observer[$observer.method] instanceof Function) $observer.observer[$observer.method]($event, $arguments);
43			else if ($observer.observer.update instanceof Function) $observer.observer.update($event, $arguments);
44		}
45	}
46}
47
48/*  Класс, представляющий из себя набор для работы элемента с DOM */
49function ClassDomObject() {
50	// Возворащает вертикальную координату объекта, относительно верхней границы страницы
51	this.getTopOffset = function ($object){
52		var $offset = 0;
53		this.topOffset = 0;
54		this.leftOffset = 0;
55		while ($object) {
56			$offset += $object.offsetTop;
57			this.topOffset += $object.offsetTop;
58			this.leftOffset += $object.offsetLeft;
59			$object = $object.offsetParent;
60		}
61		return $offset;
62	}
63	// Возворащает горизонтальную координату объекта, относительно левой границы страницы
64	this.getLeftOffset = function ($object){
65		var $offset = 0;
66		this.topOffset = 0;
67		this.leftOffset = 0;
68		while ($object) {			$offset += $object.offsetLeft;
69			this.topOffset += $object.offsetTop;
70			this.leftOffset += $object.offsetLeft;
71			$object = $object.offsetParent;
72		}
73		return $offset;
74	}
75	this.placeInto = function ($place, $this_body_object) {
76   		var $body = $this_body_object||this.body;
77   		this.body = $place.appendChild($body);
78		this.notify('onElementPlacedInDom');
79	}
80	this.placeBefore = function ($place, $this_body_object) {
81   		var $body = $this_body_object||this.body;
82		var $parent = $place.parentNode;
83   		this.body = $parent.insertBefore($body, $place);
84		this.notify('onElementPlacedInDom');
85	}
86	this.placeAfter = function ($place, $this_body_object) {
87   		var $body = $this_body_object||this.body;
88		var $parent = $place.parentNode;
89    	if ($next = $place.nextSibling) {
90    		this.body = $parent.insertBefore($body, $next);
91    	} else {
92    		this.body = $parent.appendChild($body);
93    	}
94		this.notify('onElementPlacedInDom');
95	}
96}
97ClassDomObject.prototype = new ClassObservable();
98
99// Treeton Style Studio Global Document Administrator
100// Глобальный объект для управления документом
101function ClassDocumentAdministrator () {
102    var $tdtime = new Date();
103    var oThis = this;
104    this.time = $tdtime.getTime();
105    this.id = 'TSSGDA';
106    this.init = function() {
107	    this.body = document.getElementsByTagName('body')[0];
108    	this.body.object = this;
109    	this.body.onmouseup = function () {this.object.relaseMouse();}
110    	this.body.onclick = function () {this.object.click();}
111	    this.body.onmouseover = function () {this.object.mouseover();}
112	    document.onkeypress = function (event)
113	    {
114	    	if (!event) event = window.event;
115	    	var key = event.keyCode ? event.keyCode : event.which ? event.which : null;
116			oThis.notify('onkeypress', key);
117		}
118    }
119    this.click = function () {
120    	this.notify('onClick');
121    }
122    this.relaseMouse = function () {
123    	this.notify('onMouseUp');
124    }
125    this.mouseover = function () {
126    	this.notify('onmouseover');
127    }
128	// Размещает узел объекта $body внутри элемента с ID = $id
129	this.placeIntoId = function ($body, $id) {
130		var $node = document.getElementById($id);
131   		$node.appendChild($body);
132		this.notify('onElementPlacedInDom');
133		this.notify('onAddedContent', $id);
134	}
135	// Размещает узел объекта $body до элемента с ID = $id
136	this.placeBeforeId = function ($body, $id) {
137		var $node = document.getElementById($id);
138		var $parent = document.getElementById($id).parentNode;
139   		$parent.insertBefore($body, $node);
140		this.notify('onElementPlacedInDom');
141	}
142	// Размещает узел объекта $body после элемента с ID = $id
143	this.placeAfterId = function ($body, $id) {
144		var $node = document.getElementById($id);
145		var $parent = document.getElementById($id).parentNode;
146    	if ($next = $node.nextSibling) {
147    		$parent.insertBefore($body, $next);
148    	} else {
149    		$parent.appendChild($body);
150    	}
151		this.notify('onElementPlacedInDom');
152	}
153}
154ClassDocumentAdministrator.prototype = new ClassDomObject();
155TSSGDA = new ClassDocumentAdministrator ();
156
157window.onload = init;
158
159function init() {
160/*	$ARTICLE = document.getElementById('article');
161	if ($ARTICLE) selectTermins ();
162	$SCHEME = document.getElementById('scheme');
163	if ($SCHEME) initScheme();
164	if (typeof(renderOrderForm) != "undefined") renderOrderForm();*/
165	TSSGDA.init();
166	TSSGDA.notify('onload');
167}
168
169function changeEnding(sStr, sNewEnding) {
170	return  sStr.replace( /-\w+($|\.\w{1,5}$)/, "-"+sNewEnding+"$1");
171}
172
173function getEnding(sStr) {
174	var r = /-(\w+)($|\.\w{1,5}$)/;
175	var arr = r.exec(sStr);
176	return arr[1];
177}
178
179
180function echo ($message) {	var $mw = document.getElementById('messagi');
181	if (!$mw) {		$mw = document.createElement('div');
182		$mw = document.body.appendChild($mw);
183		$mw.id = 'messagi';
184	}
185    $mw.innerHTML += $message + '<br/>';
186}
187
188function stopBubble(oEvent)
189{
190   	if (!oEvent) oEvent = window.event;
191	if (oEvent.stopPropagation) oEvent.stopPropagation(); // для DOM-совместимых браузеров
192	else window.event.cancelBubble = true; //для IE
193}

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.