UNPKG

22.4 kBHTMLView Raw
1<!DOCTYPE html>
2
3<html lang="en">
4<head>
5 <meta charset="utf-8">
6 <meta name="viewport" content="width=device-width">
7 <title>CrossBrowdy API documentation [printable] Source: CrossBase/net/sockets/CB_Net_Sockets.js</title>
8
9 <!--[if lt IE 9]>
10 <script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script>
11 <![endif]-->
12 <link type="text/css" rel="stylesheet" href="styles/sunlight.default.css">
13
14 <link type="text/css" rel="stylesheet" href="styles/site.yeti.css">
15
16</head>
17
18<body style="min-width:800px; overflow-wrap:break-word; word-wrap:break-word; word-break:break-word; line-break:strict; hyphens:none; -webkit-hyphens:none; -moz-hyphens:none;">
19
20<div class="navbar navbar-default navbar-fixed-top ">
21<div class="container">
22 <div class="navbar-header">
23 <a class="navbar-brand" href="index.html">CrossBrowdy API documentation [printable]</a>
24 <button class="navbar-toggle" type="button" data-toggle="collapse" data-target="#topNavigation">
25 <span class="icon-bar"></span>
26 <span class="icon-bar"></span>
27 <span class="icon-bar"></span>
28 </button>
29 </div>
30 <div class="navbar-collapse collapse" id="topNavigation">
31 <ul class="nav navbar-nav">
32
33 <li class="dropdown">
34 <a href="namespaces.list.html" class="dropdown-toggle" data-toggle="dropdown">Namespaces<b class="caret"></b></a>
35 <ul class="dropdown-menu inline">
36 <li><a href="CB_Arrays.html">CB_Arrays</a></li><li><a href="CB_AudioDetector.html">CB_AudioDetector</a></li><li><a href="CB_Client.html">CB_Client</a></li><li><a href="CB_Collisions.html">CB_Collisions</a></li><li><a href="CB_Configuration.html">CB_Configuration</a></li><li><a href="CB_Configuration.CrossBase.html">CB_Configuration.CrossBase</a></li><li><a href="CB_Configuration.CrossBrowdy.html">CB_Configuration.CrossBrowdy</a></li><li><a href="CB_Controllers.html">CB_Controllers</a></li><li><a href="CB_Controllers_Proprietary.html">CB_Controllers_Proprietary</a></li><li><a href="CB_Controllers_Proprietary.WII.html">CB_Controllers_Proprietary.WII</a></li><li><a href="CB_Controllers_Proprietary.WII_U.html">CB_Controllers_Proprietary.WII_U</a></li><li><a href="CB_Device.html">CB_Device</a></li><li><a href="CB_Device.AmbientLight.html">CB_Device.AmbientLight</a></li><li><a href="CB_Device.Battery.html">CB_Device.Battery</a></li><li><a href="CB_Device.Location.html">CB_Device.Location</a></li><li><a href="CB_Device.Motion.html">CB_Device.Motion</a></li><li><a href="CB_Device.Orientation.html">CB_Device.Orientation</a></li><li><a href="CB_Device.Proximity.html">CB_Device.Proximity</a></li><li><a href="CB_Device.Vibration.html">CB_Device.Vibration</a></li><li><a href="CB_Elements.html">CB_Elements</a></li><li><a href="CB_Events.html">CB_Events</a></li><li><a href="CB_Keyboard.html">CB_Keyboard</a></li><li><a href="CB_Keyboard.chars.html">CB_Keyboard.chars</a></li><li><a href="CB_Keyboard.extended.html">CB_Keyboard.extended</a></li><li><a href="CB_Keyboard.keys.html">CB_Keyboard.keys</a></li><li><a href="CB_Modules.html">CB_Modules</a></li><li><a href="CB_Mouse.html">CB_Mouse</a></li><li><a href="CB_Mouse.CursorImage.html">CB_Mouse.CursorImage</a></li><li><a href="CB_Net.html">CB_Net</a></li><li><a href="CB_Net.Fetch.html">CB_Net.Fetch</a></li><li><a href="CB_Net.REST.html">CB_Net.REST</a></li><li><a href="CB_Net.Sockets.html">CB_Net.Sockets</a></li><li><a href="CB_Net.Sockets.SockJS.html">CB_Net.Sockets.SockJS</a></li><li><a href="CB_Net.XHR.html">CB_Net.XHR</a></li><li><a href="CB_Pointer.html">CB_Pointer</a></li><li><a href="CB_Screen.html">CB_Screen</a></li><li><a href="CB_Speaker.html">CB_Speaker</a></li><li><a href="CB_Touch.html">CB_Touch</a></li><li><a href="CB_baseSymbols.html">CB_baseSymbols</a></li>
37 </ul>
38 </li>
39
40 <li class="dropdown">
41 <a href="classes.list.html" class="dropdown-toggle" data-toggle="dropdown">Classes<b class="caret"></b></a>
42 <ul class="dropdown-menu inline">
43 <li><a href="CB_AudioFile.html">CB_AudioFile</a></li><li><a href="CB_AudioFileCache.html">CB_AudioFileCache</a></li><li><a href="CB_AudioFileSprites.html">CB_AudioFileSprites</a></li><li><a href="CB_AudioFileSpritesPool.html">CB_AudioFileSpritesPool</a></li><li><a href="CB_AudioFile_API.AAPI.html">CB_AudioFile_API.AAPI</a></li><li><a href="CB_AudioFile_API.ACMP.html">CB_AudioFile_API.ACMP</a></li><li><a href="CB_AudioFile_API.SM2.html">CB_AudioFile_API.SM2</a></li><li><a href="CB_AudioFile_API.WAAPI.html">CB_AudioFile_API.WAAPI</a></li><li><a href="CB_Canvas.html">CB_Canvas</a></li><li><a href="CB_GraphicSprites.html">CB_GraphicSprites</a></li><li><a href="CB_GraphicSpritesScene.html">CB_GraphicSpritesScene</a></li>
44 </ul>
45 </li>
46
47 <li class="dropdown">
48 <a href="global.html" class="dropdown-toggle" data-toggle="dropdown">Global<b class="caret"></b></a>
49 <ul class="dropdown-menu inline">
50 <li><a href="global.html#CB_BASE_NAME">CB_BASE_NAME</a></li><li><a href="global.html#CB_CREDITS_DEFAULT">CB_CREDITS_DEFAULT</a></li><li><a href="global.html#CB_NAME">CB_NAME</a></li><li><a href="global.html#CB_OPTIONS">CB_OPTIONS</a></li><li><a href="global.html#CB_VERSION">CB_VERSION</a></li><li><a href="global.html#CB_addCredits">CB_addCredits</a></li><li><a href="global.html#CB_baseToBase">CB_baseToBase</a></li><li><a href="global.html#CB_baseToInt">CB_baseToInt</a></li><li><a href="global.html#CB_br2nl">CB_br2nl</a></li><li><a href="global.html#CB_brToNl">CB_brToNl</a></li><li><a href="global.html#CB_combineArraysOrObjects">CB_combineArraysOrObjects</a></li><li><a href="global.html#CB_combineAutomatically">CB_combineAutomatically</a></li><li><a href="global.html#CB_combineJSON">CB_combineJSON</a></li><li><a href="global.html#CB_combineURIParameters">CB_combineURIParameters</a></li><li><a href="global.html#CB_combineURLParameters">CB_combineURLParameters</a></li><li><a href="global.html#CB_console">CB_console</a></li><li><a href="global.html#CB_copyObject">CB_copyObject</a></li><li><a href="global.html#CB_countDecimalDigits">CB_countDecimalDigits</a></li><li><a href="global.html#CB_countDecimalPart">CB_countDecimalPart</a></li><li><a href="global.html#CB_countDecimals">CB_countDecimals</a></li><li><a href="global.html#CB_countIntegerDigits">CB_countIntegerDigits</a></li><li><a href="global.html#CB_countIntegerPart">CB_countIntegerPart</a></li><li><a href="global.html#CB_credits">CB_credits</a></li><li><a href="global.html#CB_forEach">CB_forEach</a></li><li><a href="global.html#CB_forceString">CB_forceString</a></li><li><a href="global.html#CB_getBase64StringObject">CB_getBase64StringObject</a></li><li><a href="global.html#CB_getCookie">CB_getCookie</a></li><li><a href="global.html#CB_getDatum">CB_getDatum</a></li><li><a href="global.html#CB_getJSONPropertyValue">CB_getJSONPropertyValue</a></li><li><a href="global.html#CB_getLZStringObject">CB_getLZStringObject</a></li><li><a href="global.html#CB_getValueIndex">CB_getValueIndex</a></li><li><a href="global.html#CB_getValuePath">CB_getValuePath</a></li><li><a href="global.html#CB_includeJSFile">CB_includeJSFile</a></li><li><a href="global.html#CB_indexOf">CB_indexOf</a></li><li><a href="global.html#CB_init">CB_init</a></li><li><a href="global.html#CB_intToBase">CB_intToBase</a></li><li><a href="global.html#CB_isArray">CB_isArray</a></li><li><a href="global.html#CB_isEmail">CB_isEmail</a></li><li><a href="global.html#CB_isFileLocal">CB_isFileLocal</a></li><li><a href="global.html#CB_isString">CB_isString</a></li><li><a href="global.html#CB_lastIndexOf">CB_lastIndexOf</a></li><li><a href="global.html#CB_ltrim">CB_ltrim</a></li><li><a href="global.html#CB_nl2br">CB_nl2br</a></li><li><a href="global.html#CB_nlToBr">CB_nlToBr</a></li><li><a href="global.html#CB_numberFormat">CB_numberFormat</a></li><li><a href="global.html#CB_numberOfDecimalDigits">CB_numberOfDecimalDigits</a></li><li><a href="global.html#CB_numberOfDecimals">CB_numberOfDecimals</a></li><li><a href="global.html#CB_numberOfIntegerDigits">CB_numberOfIntegerDigits</a></li><li><a href="global.html#CB_parseJSON">CB_parseJSON</a></li><li><a href="global.html#CB_parseString">CB_parseString</a></li><li><a href="global.html#CB_regularExpressionString">CB_regularExpressionString</a></li><li><a href="global.html#CB_renderString">CB_renderString</a></li><li><a href="global.html#CB_replaceAll">CB_replaceAll</a></li><li><a href="global.html#CB_rtrim">CB_rtrim</a></li><li><a href="global.html#CB_scriptPath">CB_scriptPath</a></li><li><a href="global.html#CB_scriptPathCalculate">CB_scriptPathCalculate</a></li><li><a href="global.html#CB_setCookie">CB_setCookie</a></li><li><a href="global.html#CB_setDatum">CB_setDatum</a></li><li><a href="global.html#CB_sizeOf">CB_sizeOf</a></li><li><a href="global.html#CB_sizeof">CB_sizeof</a></li><li><a href="global.html#CB_stringifyJSON">CB_stringifyJSON</a></li><li><a href="global.html#CB_symmetricCall">CB_symmetricCall</a></li><li><a href="global.html#CB_symmetricCallClear">CB_symmetricCallClear</a></li><li><a href="global.html#CB_this">CB_this</a></li><li><a href="global.html#CB_trim">CB_trim</a></li>
51 </ul>
52 </li>
53
54 </ul>
55
56 <div class="col-sm-3 col-md-3">
57 <form class="navbar-form" role="search">
58 <div class="input-group">
59 <input type="text" class="form-control" placeholder="Search" name="q" id="search-input">
60 <div class="input-group-btn">
61 <button class="btn btn-default" id="search-submit"><i class="glyphicon glyphicon-search"></i></button>
62 </div>
63 </div>
64 </form>
65 </div>
66
67 </div>
68
69</div>
70</div>
71
72
73<div class="container" id="toc-content" style="width:100%;">
74<div class="row" style="width:100%;">
75
76
77 <div class="col-md-12">
78
79 <div id="main">
80
81
82 <h1 class="page-title">Source: CrossBase/net/sockets/CB_Net_Sockets.js</h1>
83
84<section>
85 <article>
86 <pre
87 class="sunlight-highlight-javascript linenums">/**
88 * @file Sockets and related management. Contains the {@link CB_Net.Sockets} static class.
89 * @author Joan Alba Maldonado &lt;workindalian@gmail.com>
90 * @license Creative Commons Attribution 4.0 International. See more at {@link https://crossbrowdy.com/about#what_is_the_crossbrowdy_copyright_and_license}.
91 */
92
93
94if (typeof(CB_Net) === "undefined") { var CB_Net = function() { return CB_Net; }; }
95
96/**
97 * Static class to manage sockets and related. It will return itself if it is tried to be instantiated. It uses [SockJS-client]{@link https://github.com/sockjs/sockjs-client}.
98 * @namespace
99 */
100CB_Net.Sockets = function() { return CB_Net.Sockets; };
101{
102 CB_Net.Sockets.initialized = false; //It will tells whether the object has been initialized or not.
103
104 /**
105 Property that contains the functions and properties related with the [SockJS client]{@link https://github.com/sockjs/sockjs-client} library.
106 * @namespace CB_Net.Sockets.SockJS
107 */
108 CB_Net.Sockets.SockJS = {}; //Keeps the methods and properties related to SockJS library.
109
110 /**
111 * Keeps the last SockJS created.
112 * @var
113 * @readonly
114 * @type {Object|null}
115 * @default
116 */
117 CB_Net.Sockets.SockJS.websocketLast = null; //Keeps the last websocket object.
118
119
120 //Initializes all values:
121 CB_Net.Sockets.init = function()
122 {
123 if (CB_Net.Sockets.initialized) { return CB_Net.Sockets; }
124
125 //The object has been initialized:
126 CB_Net.Sockets.initialized = true;
127
128 //TODO.
129
130 return CB_Net.Sockets;
131 }
132
133
134 /**
135 * Alias for {@link CB_Net.Sockets.SockJS.listen}.
136 * @function CB_Net.Sockets.SockJS.open
137 * @see {@link CB_Net.Sockets.SockJS.listen}
138 */
139 /**
140 * Creates the websockets object and sets the listeners. Using the [SockJS client]{@link https://github.com/sockjs/sockjs-client} library internally.
141 * @function
142 * @param {string} serverURL - The URL of the SockJS server. This will be used as the first parameter when it calls the constructor of SockJS internally. Following the same rules as in the [SockJS client]{@link https://github.com/sockjs/sockjs-client} library documentation (the parameter is called "url").
143 * @param {function} [onOpen] - Function for the event "onopen" used by the SockJS object. Following the same rules as in the [SockJS client]{@link https://github.com/sockjs/sockjs-client} library documentation.
144 * @param {function} [onClose] - Function for the event "onclose" used by the SockJS object. Following the same rules as in the [SockJS client]{@link https://github.com/sockjs/sockjs-client} library documentation.
145 * @param {function} [onMessage] - Function for the event "onmessage" used by the SockJS object. Following the same rules as in the [SockJS client]{@link https://github.com/sockjs/sockjs-client} library documentation.
146 * @param {function} [onError] - Function for the event "onerror" used by the SockJS object. Following the same rules as in the [SockJS client]{@link https://github.com/sockjs/sockjs-client} library documentation.
147 * @param {Object} [options] - The desired options for the SockJS object. This will be used as the third parameter when it calls the constructor of SockJS internally. Following the same rules as in the [SockJS client]{@link https://github.com/sockjs/sockjs-client} library documentation (the parameter is called "options").
148 * @param {array} [protocols] - This will be used as the second parameter when it calls the constructor of SockJS internally. Following the same rules as in the [SockJS client]{@link https://github.com/sockjs/sockjs-client} library documentation (the parameter is called "_reserved").
149 * @returns {Object|null} Returns a SockJS object. Read the [SockJS client]{@link https://github.com/sockjs/sockjs-client} library documentation for more information. In the case of error, returns null.
150 */
151 CB_Net.Sockets.SockJS.listen = function(serverURL, onOpen, onClose, onMessage, onError, options, protocols)
152 {
153 try
154 {
155 var websocket = new SockJS(serverURL, protocols || undefined, options || undefined); //Creates the SockJS object.
156
157 if (typeof(websocket) === "undefined" || websocket === null)
158 {
159 if (typeof(onError) === "function") { onError({ "error" : "CANNOT OPEN THE CONNECTION TO " + serverURL }); }
160 return null;
161 }
162
163 if (typeof(onOpen) === "function") { websocket.onopen = onOpen; } //Example: function webSocketsOnOpen(evt) { CB_console(websocket.transport); }
164 if (typeof(onClose) === "function") { websocket.onclose = onClose; } //Example: function webSocketsOnClose(evt) { CB_console("Websocket closed. Reason: " + evt.reason); }
165 if (typeof(onMessage) === "function") { websocket.onmessage = onMessage; } //Example: function webSocketsOnMessage(evt) { CB_console(evt.data); }
166 if (typeof(onError) === "function") { websocket.onerror = onError; } //Example: function webSocketsOnError(evt) { CB_console("Websocket error: " + JSON.stringify(evt)); }
167
168 CB_Net.Sockets.SockJS.websocketLast = websocket; //Stores the object as the last one.
169
170 return websocket;
171 }
172 catch(E)
173 {
174 if (typeof(onError) === "function") { onError({ "error" : "ERROR CALLING 'listen': " + E }); }
175 return null;
176 }
177 }
178
179
180 /**
181 * Sends a websockets message. Using the [SockJS client]{@link https://github.com/sockjs/sockjs-client} library internally.
182 * @function
183 * @param {string} message - The message that we want to send. This will be used as the first and unique parameter when it calls the "send" function of the SockJS object internally. Following the same rules as in the [SockJS client]{@link https://github.com/sockjs/sockjs-client} library documentation.
184 * @param {function} [websocket={@link CB_Net.Sockets.SockJS.websocketLast}] - The SockJS object that we want to use. If not provided, it will try to use the last one created (if any) which is stored in {@link CB_Net.Sockets.SockJS.websocketLast}.
185 * @param {function} [onError] - Function for the event "onerror" used by the SockJS object. If provided, it will replace the previous one (if any). Following the same rules as in the [SockJS client]{@link https://github.com/sockjs/sockjs-client} library documentation.
186 * @returns {undefined|false} Returns undefined (the same as the "send" function of the SockJS object) if the SockJS has been used or false otherwise.
187 */
188 CB_Net.Sockets.SockJS.send = function(message, websocket, onError)
189 {
190 websocket = websocket || CB_Net.Sockets.SockJS.websocketLast;
191 if (typeof(websocket) !== "undefined" &amp;&amp; websocket !== null &amp;&amp; typeof(websocket.send) === "function")
192 {
193 if (typeof(onError) === "function") { websocket.onerror = onError; } //Example: function webSocketsOnError(evt) { CB_console("Websocket error: " + JSON.stringify(evt)); }
194 var returnValue = false;
195 try
196 {
197 returnValue = websocket.send(message);
198 }
199 catch(E)
200 {
201 if (typeof(onError) === "function") { onError({ "error" : "ERROR CALLING 'send': " + E }); }
202 returnValue = false;
203 }
204 return returnValue;
205 }
206 else
207 {
208 if (typeof(onError) === "function") { onError({ "error" : "CANNOT FIND WEBSOCKETS OBJECT" }); }
209 return false;
210 }
211 }
212
213
214 /**
215 * Tries to close the websockets connection. Using the [SockJS client]{@link https://github.com/sockjs/sockjs-client} library internally.
216 * @function
217 * @param {function} [websocket={@link CB_Net.Sockets.SockJS.websocketLast}] - The SockJS object that we want to use. If not provided, it will try to use the last one created (if any) which is stored in {@link CB_Net.Sockets.SockJS.websocketLast}.
218 * @param {function} [onError] - Function for the event "onerror" used by the SockJS object. If provided, it will replace the previous one (if any). Following the same rules as in the [SockJS client]{@link https://github.com/sockjs/sockjs-client} library documentation.
219 * @returns {undefined|false} Returns undefined (the same as the "close" function of the SockJS object) if the SockJS has been used or false otherwise.
220 */
221 CB_Net.Sockets.SockJS.close = function(websocket, onError)
222 {
223 websocket = websocket || CB_Net.Sockets.SockJS.websocketLast;
224 if (typeof(websocket) !== "undefined" &amp;&amp; websocket !== null &amp;&amp; typeof(websocket.close) === "function")
225 {
226 if (typeof(onError) === "function") { websocket.onerror = onError; } //Example: function webSocketsOnError(evt) { CB_console("Websocket error: " + JSON.stringify(evt)); }
227 var returnValue = false;
228 try
229 {
230 returnValue = websocket.close();
231 if (websocket === CB_Net.Sockets.SockJS.websocketLast) { CB_Net.Sockets.SockJS.websocketLast = null; }
232 }
233 catch(E)
234 {
235 if (typeof(onError) === "function") { onError({ "error" : "ERROR CALLING 'close': " + E }); }
236 returnValue = false;
237 }
238 return returnValue;
239 }
240 else
241 {
242 if (typeof(onError) === "function") { onError({ "error" : "CANNOT FIND WEBSOCKETS OBJECT" }); }
243 return false;
244 }
245 }
246
247}</pre>
248 </article>
249</section>
250
251
252
253
254
255 </div>
256 </div>
257
258 <div class="clearfix"></div>
259
260
261
262</div>
263</div>
264
265
266 <div class="modal fade" id="searchResults">
267 <div class="modal-dialog">
268 <div class="modal-content">
269 <div class="modal-header">
270 <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
271 <h4 class="modal-title">Search results</h4>
272 </div>
273 <div class="modal-body"></div>
274 <div class="modal-footer">
275 <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
276 </div>
277 </div><!-- /.modal-content -->
278 </div><!-- /.modal-dialog -->
279 </div>
280
281
282<footer>
283
284
285 <span class="copyright">
286 <span style="color:#000000">© <address style="display:inline; font-style:normal;"><a href="https://crossbrowdy.com/" target="_blank">CrossBrowdy</a> API documentation</address> by <a href="https://joanalbamaldonado.com/" target="_blank">Joan Alba Maldonado</a> - <a href="https://creativecommons.org/licenses/by/4.0/" target="_blank">Creative Commons Attribution 4.0 International</a><br />DocStrap Copyright © 2012-2015 The contributors to the JSDoc3 and DocStrap projects.</span>
287 </span>
288
289<span class="jsdoc-message">
290 Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.2</a>
291
292 on Wed Mar 22nd 2023
293
294 using the <a href="https://github.com/docstrap/docstrap">DocStrap template</a>.
295</span>
296</footer>
297
298<script src="scripts/docstrap.lib.js"></script>
299<script src="scripts/toc.js"></script>
300
301 <script type="text/javascript" src="scripts/fulltext-search-ui.js"></script>
302
303
304<script>
305$( function () {
306 $( "[id*='$']" ).each( function () {
307 var $this = $( this );
308
309 $this.attr( "id", $this.attr( "id" ).replace( "$", "__" ) );
310 } );
311
312 $( ".tutorial-section pre, .readme-section pre, pre.prettyprint.source" ).each( function () {
313 var $this = $( this );
314
315 var example = $this.find( "code" );
316 exampleText = example.html();
317 var lang = /{@lang (.*?)}/.exec( exampleText );
318 if ( lang && lang[1] ) {
319 exampleText = exampleText.replace( lang[0], "" );
320 example.html( exampleText );
321 lang = lang[1];
322 } else {
323 var langClassMatch = example.parent()[0].className.match(/lang\-(\S+)/);
324 lang = langClassMatch ? langClassMatch[1] : "javascript";
325 }
326
327 if ( lang ) {
328
329 $this
330 .addClass( "sunlight-highlight-" + lang )
331 .addClass( "linenums" )
332 .html( example.html() );
333
334 }
335 } );
336
337 Sunlight.highlightAll( {
338 lineNumbers : true,
339 showMenu : true,
340 enableDoclinks : true
341 } );
342
343 $.catchAnchorLinks( {
344 navbarOffset: 10
345 } );
346 $( "#toc" ).toc( {
347 anchorName : function ( i, heading, prefix ) {
348 return $( heading ).attr( "id" ) || ( prefix + i );
349 },
350 selectors : "#toc-content h1,#toc-content h2,#toc-content h3,#toc-content h4",
351 showAndHide : false,
352 smoothScrolling: true
353 } );
354
355 $( "#main span[id^='toc']" ).addClass( "toc-shim" );
356 $( '.dropdown-toggle' ).dropdown();
357
358 $( "table" ).each( function () {
359 var $this = $( this );
360 $this.addClass('table');
361 } );
362
363} );
364</script>
365
366
367
368<!--Navigation and Symbol Display-->
369
370
371<!--Google Analytics-->
372
373
374
375 <script type="text/javascript">
376 $(document).ready(function() {
377 SearcherDisplay.init();
378 });
379 </script>
380
381
382</body>
383</html>