UNPKG

21.5 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/input/controllers/CB_Controllers_Proprietary_WII.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/input/controllers/CB_Controllers_Proprietary_WII.js</h1>
83
84<section>
85 <article>
86 <pre
87 class="sunlight-highlight-javascript linenums">/**
88 * @file Nintendo Wii remotes (Wiimotes) management. Contains the {@link CB_Controllers_Proprietary.WII} 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 /**
94 * Static class to manage proprietary controller APIs.
95 * @namespace CB_Controllers_Proprietary
96*/
97
98/**
99 * Static class to manage the Nintendo Wii remotes (Wiimotes). It will return itself if it is tried to be instantiated. It uses [wii-js]{@link https://github.com/ryanmcgrath/wii-js}. NOTE: This class is still under development.
100 * @namespace CB_Controllers_Proprietary.WII
101 * @todo Find a way to know how to check when a button is released.
102 * @todo Update values of CB_Controllers_Proprietary.WII._wiimotes[x].UP, etc.
103 * @todo Do not forget x and y properties (?).
104 */
105//* Source: https://github.com/ryanmcgrath/wii-js
106if (typeof(CB_Controllers_Proprietary) === "undefined") { var CB_Controllers_Proprietary = {}; }
107CB_Controllers_Proprietary.WII = function() { return CB_Controllers_Proprietary.WII; };
108{
109 CB_Controllers_Proprietary.WII.initialized = false; //It will tells whether the object has been initialized or not.
110
111 //Generic template object that represents the status of a Wiimote:
112 CB_Controllers_Proprietary.WII._wiimoteInfoTemplate = //For buttons: true = pressed, false = released, undefined = unknown.
113 {
114 usingPrototype: true, //This property will not exist in the case it is using the real API.
115
116 connected: false,
117
118 realObject: undefined,
119 id: undefined,
120
121 index: undefined,
122
123 buttons:
124 {
125 UP: { pressed: false, touched: false, value: 0 },
126 DOWN: { pressed: false, touched: false, value: 0 },
127 LEFT: { pressed: false, touched: false, value: 0 },
128 RIGHT: { pressed: false, touched: false, value: 0 },
129 A: { pressed: false, touched: false, value: 0 },
130 B: { pressed: undefined, touched: false, value: 0 },
131 C: { pressed: undefined, touched: false, value: 0 },
132 Z: { pressed: undefined, touched: false, value: 0 },
133 _1: { pressed: false, touched: false, value: 0 },
134 _2: { pressed: false, touched: false, value: 0 },
135 PLUS: { pressed: false, touched: false, value: 0 },
136 MINUS: { pressed: false, touched: false, value: 0 }
137 },
138
139 axes: [0, 0],
140
141 horizontal: true,
142 roll: undefined,
143 distance: undefined,
144 x: undefined,
145 y: undefined,
146
147 mapping: "",
148
149 timestamp: window.performance.now(),
150
151 vibrationActuator: null
152
153 //... maybe more properties will be added.
154 };
155 CB_Controllers_Proprietary.WII._wiimoteInfoTemplate.buttons["ONE"] = CB_Controllers_Proprietary.WII._wiimoteInfoTemplate.buttons["1"] = CB_Controllers_Proprietary.WII._wiimoteInfoTemplate.buttons._1;
156 CB_Controllers_Proprietary.WII._wiimoteInfoTemplate.buttons["TWO"] = CB_Controllers_Proprietary.WII._wiimoteInfoTemplate.buttons["2"] = CB_Controllers_Proprietary.WII._wiimoteInfoTemplate.buttons._2;
157
158 //It will store the objects that represent the possible four Wiimotes (if any):
159 CB_Controllers_Proprietary.WII._wiimotes = //NOTE: Using object instead of array to respect the CB_Controllers standard.
160 {
161 "0" : CB_Controllers_Proprietary.WII._wiimoteInfoTemplate,
162 "1" : CB_Controllers_Proprietary.WII._wiimoteInfoTemplate,
163 "2" : CB_Controllers_Proprietary.WII._wiimoteInfoTemplate,
164 "3" : CB_Controllers_Proprietary.WII._wiimoteInfoTemplate
165 };
166 CB_Controllers_Proprietary.WII._wiimotes["0"].index = 0;
167 CB_Controllers_Proprietary.WII._wiimotes["1"].index = 1;
168 CB_Controllers_Proprietary.WII._wiimotes["2"].index = 2;
169 CB_Controllers_Proprietary.WII._wiimotes["3"].index = 3;
170 CB_Controllers_Proprietary.WII._wiimotes["0"].id = "WII_REMOTE_0";
171 CB_Controllers_Proprietary.WII._wiimotes["1"].id = "WII_REMOTE_1";
172 CB_Controllers_Proprietary.WII._wiimotes["2"].id = "WII_REMOTE_2";
173 CB_Controllers_Proprietary.WII._wiimotes["3"].id = "WII_REMOTE_3";
174
175
176 //Initializes all values:
177 CB_Controllers_Proprietary.WII.init = function()
178 {
179 if (CB_Controllers_Proprietary.WII.initialized) { return CB_Controllers_Proprietary.WII; }
180
181 //The object has been initialized:
182 CB_Controllers_Proprietary.WII.initialized = true;
183
184 if (typeof(Wii) !== "undefined" &amp;&amp; Wii.Remote)
185 {
186 //Sets the events that work for all controllers:
187 //TODO: find a way to know how to check when a button is released.
188 //TODO: update values of CB_Controllers_Proprietary.WII._wiimotes[x].UP, etc.
189 for (var x = 0; x &lt; 4; x++)
190 {
191 //NOTE: orientation scheme can be changed setting CB_Controllers_Proprietary.WII._wiimotes[index] to false.
192 CB_Controllers_Proprietary.WII._wiimotes[x].realObject = new Wii.Remote(x + 1, {horizontal: true});
193
194
195 //TODO: Update "timestamp" property.
196 CB_Controllers_Proprietary.WII._wiimotes[x].realObject.when("pressed_up", function() { }); //"UP" pressed.
197 CB_Controllers_Proprietary.WII._wiimotes[x].realObject.when("pressed_down", function() { }); //"DOWN" pressed.
198 CB_Controllers_Proprietary.WII._wiimotes[x].realObject.when("pressed_left", function() { }); //"LEFT" pressed.
199 CB_Controllers_Proprietary.WII._wiimotes[x].realObject.when("pressed_right", function() { }); //"RIGHT" pressed.
200 CB_Controllers_Proprietary.WII._wiimotes[x].realObject.when("pressed_a", function() { }); //"A" pressed.
201 CB_Controllers_Proprietary.WII._wiimotes[x].realObject.when("pressed_1", function() { /* Remember ._1 and ["1"] */ }); //"1" pressed. Note: On controller 1, this triggers a menu (read https://github.com/ryanmcgrath/wii-js).
202 CB_Controllers_Proprietary.WII._wiimotes[x].realObject.when("pressed_2", function() { /* Remember ._2 and ["2"] */ }); //"2" pressed.
203 CB_Controllers_Proprietary.WII._wiimotes[x].realObject.when("pressed_plus", function() { }); //"PLUS" ("+") pressed.
204 CB_Controllers_Proprietary.WII._wiimotes[x].realObject.when("pressed_minus", function() { }); //"MINUS" ("-") pressed.
205 CB_Controllers_Proprietary.WII._wiimotes[x].realObject.when("roll_change", function() { }); //The roll of the controller (balance) changed. You can get the current roll in radians with "this.roll"; positive is upright, negative is the other.
206 CB_Controllers_Proprietary.WII._wiimotes[x].realObject.when("distance_change", function() { }); //The distance of the wiimote (in meters) from the TV/sensor bar has changed. This event isn't totally reliable, but should work for most cases.
207
208 //Events for extra controllers that do not work on the primary controller:
209 CB_Controllers_Proprietary.WII._wiimotes[x].realObject.when("pressed_b", function() { }); //"B" pressed.
210 CB_Controllers_Proprietary.WII._wiimotes[x].realObject.when("pressed_c", function() { }); //"C" pressed (on the Nunchuk).
211 CB_Controllers_Proprietary.WII._wiimotes[x].realObject.when("pressed_z", function() { }); //"Z" pressed (on the Nunchuk).
212
213 //TODO: do not forget x and y properties (?).
214 }
215
216 //Starts the main listener:
217 Wii.listen();
218 }
219
220 return CB_Controllers_Proprietary.WII;
221 }
222
223
224 /**
225 * Returns an object with all gamepads simulating the [GamePad API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Gamepad_API}.
226 * @function
227 * @returns {Object} Returns an object with the "remotes" property which contains another object whose properties are the index of each device and the value an object with the status of that device. The number of remotes is 4 (index from "0" to "3"). Simulating the [GamePad API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Gamepad_API}. Those status objects which are not using the real API will have a property called "usingPrototype" set to true.
228 */
229 CB_Controllers_Proprietary.WII.getGamePads = function()
230 {
231 //TODO: normalize all to simulate GamePad API.
232 return { "remotes" : CB_Controllers_Proprietary.WII._wiimotes };
233 }
234
235}</pre>
236 </article>
237</section>
238
239
240
241
242
243 </div>
244 </div>
245
246 <div class="clearfix"></div>
247
248
249
250</div>
251</div>
252
253
254 <div class="modal fade" id="searchResults">
255 <div class="modal-dialog">
256 <div class="modal-content">
257 <div class="modal-header">
258 <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
259 <h4 class="modal-title">Search results</h4>
260 </div>
261 <div class="modal-body"></div>
262 <div class="modal-footer">
263 <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
264 </div>
265 </div><!-- /.modal-content -->
266 </div><!-- /.modal-dialog -->
267 </div>
268
269
270<footer>
271
272
273 <span class="copyright">
274 <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>
275 </span>
276
277<span class="jsdoc-message">
278 Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.2</a>
279
280 on Wed Mar 22nd 2023
281
282 using the <a href="https://github.com/docstrap/docstrap">DocStrap template</a>.
283</span>
284</footer>
285
286<script src="scripts/docstrap.lib.js"></script>
287<script src="scripts/toc.js"></script>
288
289 <script type="text/javascript" src="scripts/fulltext-search-ui.js"></script>
290
291
292<script>
293$( function () {
294 $( "[id*='$']" ).each( function () {
295 var $this = $( this );
296
297 $this.attr( "id", $this.attr( "id" ).replace( "$", "__" ) );
298 } );
299
300 $( ".tutorial-section pre, .readme-section pre, pre.prettyprint.source" ).each( function () {
301 var $this = $( this );
302
303 var example = $this.find( "code" );
304 exampleText = example.html();
305 var lang = /{@lang (.*?)}/.exec( exampleText );
306 if ( lang && lang[1] ) {
307 exampleText = exampleText.replace( lang[0], "" );
308 example.html( exampleText );
309 lang = lang[1];
310 } else {
311 var langClassMatch = example.parent()[0].className.match(/lang\-(\S+)/);
312 lang = langClassMatch ? langClassMatch[1] : "javascript";
313 }
314
315 if ( lang ) {
316
317 $this
318 .addClass( "sunlight-highlight-" + lang )
319 .addClass( "linenums" )
320 .html( example.html() );
321
322 }
323 } );
324
325 Sunlight.highlightAll( {
326 lineNumbers : true,
327 showMenu : true,
328 enableDoclinks : true
329 } );
330
331 $.catchAnchorLinks( {
332 navbarOffset: 10
333 } );
334 $( "#toc" ).toc( {
335 anchorName : function ( i, heading, prefix ) {
336 return $( heading ).attr( "id" ) || ( prefix + i );
337 },
338 selectors : "#toc-content h1,#toc-content h2,#toc-content h3,#toc-content h4",
339 showAndHide : false,
340 smoothScrolling: true
341 } );
342
343 $( "#main span[id^='toc']" ).addClass( "toc-shim" );
344 $( '.dropdown-toggle' ).dropdown();
345
346 $( "table" ).each( function () {
347 var $this = $( this );
348 $this.addClass('table');
349 } );
350
351} );
352</script>
353
354
355
356<!--Navigation and Symbol Display-->
357
358
359<!--Google Analytics-->
360
361
362
363 <script type="text/javascript">
364 $(document).ready(function() {
365 SearcherDisplay.init();
366 });
367 </script>
368
369
370</body>
371</html>