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.