<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	>

<channel>
	<title>Technetra</title>
	<atom:link href="http://www.technetra.com/feed/rss2" rel="self" type="application/rss+xml" />
	<link>http://www.technetra.com</link>
	<description>Connecting Government, Industry, Education through Open Source</description>
	<pubDate>Mon, 05 Jan 2009 20:54:51 +0000</pubDate>
	<generator>http://wordpress.org/</generator>
	<language>en</language>
			<item>
		<title>Building a Remote Message Monitor for the iPhone</title>
		<link>http://www.technetra.com/2009/01/03/building-a-remote-message-monitor-for-the-iphone/</link>
		<comments>http://www.technetra.com/2009/01/03/building-a-remote-message-monitor-for-the-iphone/#comments</comments>
		<pubDate>Sun, 04 Jan 2009 03:29:06 +0000</pubDate>
		<dc:creator>radkins</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<category><![CDATA[code]]></category>

		<category><![CDATA[codemagic]]></category>

		<category><![CDATA[css]]></category>

		<category><![CDATA[how-to]]></category>

		<category><![CDATA[iphone]]></category>

		<category><![CDATA[iui]]></category>

		<category><![CDATA[javascript]]></category>

		<category><![CDATA[opensource]]></category>

		<category><![CDATA[ruby]]></category>

		<category><![CDATA[sinatra]]></category>

		<category><![CDATA[softwaredevelopment]]></category>

		<category><![CDATA[tutorial]]></category>

		<category><![CDATA[web application]]></category>

		<guid isPermaLink="false">http://www.technetra.com/?p=501</guid>
		<description><![CDATA[This article demonstrates how to write a web application for the iPhone to perform a single activity and control its operational parameters. It demonstrates how to communicate to a web service that periodically provides message updates.]]></description>
			<content:encoded><![CDATA[<h2>Implementing a Web Application to Track Bluetooth Device Status</h2>
<p>In our previous articles in the iPhone developer series, we covered <a href="/2008/12/14/building-a-simple-iphone-web-app-redgreenyellowblue/">building a simple iPhone Web App</a> and <a href="/2008/12/23/how-to-deploy-an-iphone-web-application/">deploying an iPhone web application</a>. This third article presents a more complex as well as more useful iPhone web application. With this application we enable the iPhone to monitor messages from a remote desktop or server system. I&#8217;ve selected monitoring Bluetooth devices as the working example in this article.  This same web app could be, and has been, adapted for other dedicated monitoring purposes as well &#8212; from tracking syslog messages and Apache webserver log entries to viewing any kind of periodically updated data source. Figure 1 below illustrates the user interface in portrait orientation:</p>
<div id="attachment_525" class="wp-caption aligncenter" style="width: 509px"><img src="/wp-content/uploads/portrait_monitor_screens.png" alt="Figure 1: Setup and Monitor screens in portrait orientation" title="Figure 1: Monitor screens in portrait orientation" width="499" height="247" class="size-full wp-image-525" /><p class="wp-caption-text">Figure 1: Setup and Monitor screens in portrait orientation</p></div>
<h2>Technology Stack</h2>
<p>The components required to build a remote log or message monitor include a server-side data collector, a communications interface, and a mobile client application. The overall system takes advantage of technologies suited for each kind of component. For the server-side data collector, we will implement a Linux-based solution using Ruby. Ruby offers a rich array of interfaces to basic data sources across many different operating environments. To build the simple data collector required for our example, Ruby has a reasonably complete interface to the D-Bus interprocess communications system which provides the underlying message transport service for Linux&#8217;s implementation of Bluetooth, <a href="http://www.bluez.org/" target="_blank">Bluez</a>. Ruby also offers a wide selection of frameworks and domain specific languages for web services including Rails, Sinatra, Merb, etc. We&#8217;ll choose <a href="http://sinatra.rubyforge.org/" target="_blank">Sinatra</a> for its simplicity, especially in expressing REST and AJAX interactions. For the iPhone mobile client, we&#8217;ll select <a href="http://code.google.com/p/iui/" target="_blank">iUI</a> for its edge-to-edge native application look and feel.</p>
<h2>Application Design</h2>
<p>The iPhone iUI-based application layout is extremely simple. The application has a main window (shown in the 2nd panel of Figure 1 above) that displays messages captured from the Bluetooth monitoring module running on the remote server. Messages are formatted by JavasScript for the particular iPhone orientation (landscape or portrait) currently in effect. The main window displays a Stop/Start button in the top left corner and a Setup button in the top right corner. Pressing the Setup button slides in a new panel (see 1st panel of Figure 1) to permit changes to the message update timers and text highlight patterns used by the application.</p>
<p>The message update timers control how frequently AJAX fetches log messages from the server. The Busy Timeout value (default 1 second) is used to rapidly collect messages when the server has data to provide. The Idle Timeout value (default 10 seconds) is used when no message has been received recently from the server. This permits a back-off of requests issued during periods of inactivity.</p>
<p>The Setup panel also allows the user to register a regular expression locally for highlighting matching areas of text in the messages received from the server. The highlight color (default is yellow) can be modified as well.</p>
<p>Finally there is a toggle switch (showing off a nice iUI feature) used to turn on or off log collection activity.</p>
<p>Figure 2 below presents an overview of the architecture of the remote message monitor system.</p>
<div id="attachment_569" class="wp-caption aligncenter" style="width: 510px"><a href="/wp-content/uploads/iphonemonitorsystemoverview.jpg"><img src="/wp-content/uploads/iphonemonitorsystemoverview-500x352.jpg" alt="iPhone Remote Message Monitor System Overview" title="Figure 2: iPhone Remote Message Monitor System Overview" width="500" height="352" class="size-medium wp-image-569" /></a><p class="wp-caption-text">Figure 2: iPhone Remote Message Monitor System Overview (click to enlarge)</p></div>
<p>The following sections describe some of the highlights of the system. Code listings for each major component are included.</p>
<h2>Mobile Client Side</h2>
<h3>JavaScript/iPhone highlights</h3>
<ul>
<li>Complex message highlighting and word wrapping in native JavaScript. See <code>wrap</code> and <code>subspan</code> functions in the following listing.</li>
<li>Pattern matching for highlighting is case insensitive and supports user entry of any Javascript regular expression.</li>
<li>Peaceful co-existence of custom JavaScript event handlers with iUI&#8217;s event handlers.</li>
<li>JavaScript is used to interact with CSS selectors and properties.</li>
</ul>
<h3>Listing 1: JavaScript Message Retrieval and Processing: <code>monitor_bt.js</code></h3>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
</pre></td><td class="code"><pre class="javascript" style="font-family:monospace;">WINDOW_INNERWIDTH <span style="color: #339933;">=</span> <span style="color: #CC0000;">320</span><span style="color: #339933;">;</span>
<span style="color: #006600; font-style: italic;">/* Note: the value of AJAX_REQUEST is set in source HTML file:
 * &quot;get_log&quot; for normal operation
 * &quot;test_log&quot; for testing
 */</span>
<span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">function</span> <span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
<span style="color: #009966; font-style: italic;">/* Program Variables */</span>
     <span style="color: #003366; font-weight: bold;">var</span> BUSY_TIMEOUT <span style="color: #339933;">=</span> <span style="color: #CC0000;">1000</span><span style="color: #339933;">;</span>
     <span style="color: #003366; font-weight: bold;">var</span> IDLE_TIMEOUT <span style="color: #339933;">=</span> <span style="color: #CC0000;">10000</span><span style="color: #339933;">;</span>
     <span style="color: #006600; font-style: italic;">// var MATCH_PATTERN = &quot;9\\s*0123456&quot;;</span>
     <span style="color: #003366; font-weight: bold;">var</span> MATCH_PATTERN <span style="color: #339933;">=</span> <span style="color: #3366CC;">&quot;&quot;</span><span style="color: #339933;">;</span>
     <span style="color: #003366; font-weight: bold;">var</span> MATCH_COLOR <span style="color: #339933;">=</span> <span style="color: #3366CC;">&quot;FFFF00&quot;</span><span style="color: #339933;">;</span>
     <span style="color: #003366; font-weight: bold;">var</span> ACTIVE_FLAG <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">true</span><span style="color: #339933;">;</span>
     <span style="color: #003366; font-weight: bold;">var</span> UPDATE_OBJECT_LIST <span style="color: #339933;">=</span> <span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
     <span style="color: #003366; font-weight: bold;">var</span> SET_TIMEOUT_OBJ<span style="color: #339933;">;</span>
     <span style="color: #003366; font-weight: bold;">var</span> XDE <span style="color: #339933;">=</span> unescape<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'%de'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
     <span style="color: #003366; font-weight: bold;">var</span> XEE <span style="color: #339933;">=</span> unescape<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'%ee'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
     <span style="color: #003366; font-weight: bold;">var</span> PXDE <span style="color: #339933;">=</span> RegExp<span style="color: #009900;">&#40;</span>XDE<span style="color: #339933;">,</span> <span style="color: #3366CC;">&quot;g&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
     <span style="color: #003366; font-weight: bold;">var</span> PXEE <span style="color: #339933;">=</span> RegExp<span style="color: #009900;">&#40;</span>XEE<span style="color: #339933;">,</span> <span style="color: #3366CC;">&quot;g&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009966; font-style: italic;">/* Device Variables */</span>
     <span style="color: #003366; font-weight: bold;">var</span> BODY_LANDSCAPE <span style="color: #339933;">=</span> <span style="color: #CC0000;">400</span><span style="color: #339933;">;</span>
     <span style="color: #003366; font-weight: bold;">var</span> BODY_PROFILE <span style="color: #339933;">=</span> <span style="color: #CC0000;">240</span><span style="color: #339933;">;</span>
     <span style="color: #003366; font-weight: bold;">var</span> CURRENTWIDTH <span style="color: #339933;">=</span> <span style="color: #339933;">-</span><span style="color: #CC0000;">1</span><span style="color: #339933;">;</span>
<span style="color: #009966; font-style: italic;">/* Setup Variables */</span>
     <span style="color: #003366; font-weight: bold;">var</span> SETUP_BUSY_TIMEOUT<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;&quot;</span><span style="color: #339933;">,</span> SETUP_IDLE_TIMEOUT<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;&quot;</span><span style="color: #339933;">;</span>
     <span style="color: #003366; font-weight: bold;">var</span> SETUP_MATCH_PATTERN<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;text-to-match&quot;</span><span style="color: #339933;">,</span> SETUP_MATCH_COLOR<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;&quot;</span><span style="color: #339933;">;</span>
<span style="color: #009966; font-style: italic;">/* Helpers */</span>
     <span style="color: #003366; font-weight: bold;">var</span> $ <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>id<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span> <span style="color: #000066; font-weight: bold;">return</span> document.<span style="color: #660066;">getElementById</span><span style="color: #009900;">&#40;</span>id<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span>
     window.<span style="color: #660066;">ibtmon</span> <span style="color: #339933;">=</span> <span style="color: #009900;">&#123;</span>
       getInnerWidth<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
         <span style="color: #000066; font-weight: bold;">return</span> <span style="color: #009900;">&#40;</span>navigator.<span style="color: #660066;">userAgent</span>.<span style="color: #660066;">indexOf</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'iPhone'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">!=-</span><span style="color: #CC0000;">1</span><span style="color: #009900;">&#41;</span>
           <span style="color: #339933;">?</span>
             window.<span style="color: #660066;">innerWidth</span>
           <span style="color: #339933;">:</span>
             WINDOW_INNERWIDTH<span style="color: #339933;">;</span>
       <span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
       loadHandlers<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
         addEventListener<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;click&quot;</span><span style="color: #339933;">,</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>event<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
           <span style="color: #003366; font-weight: bold;">function</span> turnOffButtons<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
             $<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'stopButton'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">style</span>.<span style="color: #660066;">display</span> <span style="color: #339933;">=</span> <span style="color: #3366CC;">&quot;none&quot;</span><span style="color: #339933;">;</span>
             $<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'customBackButton'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">style</span>.<span style="color: #660066;">display</span> <span style="color: #339933;">=</span> <span style="color: #3366CC;">&quot;none&quot;</span><span style="color: #339933;">;</span>
             $<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'setupButton'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">style</span>.<span style="color: #660066;">display</span> <span style="color: #339933;">=</span> <span style="color: #3366CC;">&quot;none&quot;</span><span style="color: #339933;">;</span>
             $<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'setupChange'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">style</span>.<span style="color: #660066;">display</span> <span style="color: #339933;">=</span> <span style="color: #3366CC;">&quot;none&quot;</span><span style="color: #339933;">;</span>
             $<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'setupCancel'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">style</span>.<span style="color: #660066;">display</span> <span style="color: #339933;">=</span> <span style="color: #3366CC;">&quot;none&quot;</span><span style="color: #339933;">;</span>
           <span style="color: #009900;">&#125;</span>
           <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>event.<span style="color: #660066;">target</span>.<span style="color: #660066;">id</span> <span style="color: #339933;">==</span> <span style="color: #3366CC;">&quot;stopButton&quot;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
             ibtmon.<span style="color: #660066;">toggleStartStop</span><span style="color: #009900;">&#40;</span>event.<span style="color: #660066;">target</span><span style="color: #009900;">&#41;</span>
           <span style="color: #009900;">&#125;</span> <span style="color: #000066; font-weight: bold;">else</span> <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>event.<span style="color: #660066;">target</span>.<span style="color: #660066;">id</span> <span style="color: #339933;">==</span> <span style="color: #3366CC;">&quot;setupButton&quot;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
             turnOffButtons<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
             clearTimeout<span style="color: #009900;">&#40;</span>SET_TIMEOUT_OBJ<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
             $<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'setupChange'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">style</span>.<span style="color: #660066;">display</span> <span style="color: #339933;">=</span> <span style="color: #3366CC;">&quot;inline&quot;</span><span style="color: #339933;">;</span>
             $<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'setupCancel'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">style</span>.<span style="color: #660066;">display</span> <span style="color: #339933;">=</span> <span style="color: #3366CC;">&quot;inline&quot;</span><span style="color: #339933;">;</span>
             ibtmon.<span style="color: #660066;">updateVisibles</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
             UPDATE_OBJECT_LIST <span style="color: #339933;">=</span> <span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
           <span style="color: #009900;">&#125;</span> <span style="color: #000066; font-weight: bold;">else</span> <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>event.<span style="color: #660066;">target</span>.<span style="color: #660066;">id</span> <span style="color: #339933;">==</span> <span style="color: #3366CC;">&quot;setupChange&quot;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
              <span style="color: #003366; font-weight: bold;">var</span> i<span style="color: #339933;">,</span> <span style="color: #000066; font-weight: bold;">item</span><span style="color: #339933;">;</span>
              <span style="color: #000066; font-weight: bold;">for</span> <span style="color: #009900;">&#40;</span>i <span style="color: #000066; font-weight: bold;">in</span> UPDATE_OBJECT_LIST<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
                <span style="color: #000066; font-weight: bold;">item</span> <span style="color: #339933;">=</span> UPDATE_OBJECT_LIST<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
                <span style="color: #000066; font-weight: bold;">item</span>.<span style="color: #660066;">action</span><span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">item</span>.<span style="color: #660066;">arg</span><span style="color: #009900;">&#41;</span>
              <span style="color: #009900;">&#125;</span>
              turnOffButtons<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
              ibtmon.<span style="color: #660066;">prefer_setup_values</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
              <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>ACTIVE_FLAG<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
                setTimeout<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;ibtmon.getLog()&quot;</span><span style="color: #339933;">,</span> BUSY_TIMEOUT<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> 
              <span style="color: #009900;">&#125;</span>
              $<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'stopButton'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">style</span>.<span style="color: #660066;">display</span> <span style="color: #339933;">=</span> <span style="color: #3366CC;">&quot;inline&quot;</span><span style="color: #339933;">;</span>
              $<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'setupButton'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">style</span>.<span style="color: #660066;">display</span> <span style="color: #339933;">=</span> <span style="color: #3366CC;">&quot;inline&quot;</span><span style="color: #339933;">;</span>
              history.<span style="color: #000066;">back</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
           <span style="color: #009900;">&#125;</span> <span style="color: #000066; font-weight: bold;">else</span> <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>event.<span style="color: #660066;">target</span>.<span style="color: #660066;">id</span> <span style="color: #339933;">==</span> <span style="color: #3366CC;">&quot;setupCancel&quot;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
              turnOffButtons<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
              <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>ACTIVE_FLAG<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
                setTimeout<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;ibtmon.getLog()&quot;</span><span style="color: #339933;">,</span> BUSY_TIMEOUT<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
              <span style="color: #009900;">&#125;</span>
              $<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'stopButton'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">style</span>.<span style="color: #660066;">display</span> <span style="color: #339933;">=</span> <span style="color: #3366CC;">&quot;inline&quot;</span><span style="color: #339933;">;</span>
              $<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'setupButton'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">style</span>.<span style="color: #660066;">display</span> <span style="color: #339933;">=</span> <span style="color: #3366CC;">&quot;inline&quot;</span><span style="color: #339933;">;</span>
              history.<span style="color: #000066;">back</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
           <span style="color: #009900;">&#125;</span>
           <span style="color: #009966; font-style: italic;">/* event.preventDefault(); */</span>
         <span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span> <span style="color: #003366; font-weight: bold;">false</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
         CURRENTWIDTH <span style="color: #339933;">=</span> ibtmon.<span style="color: #660066;">getInnerWidth</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
         <span style="color: #003366; font-weight: bold;">var</span> pgTitle <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span>CURRENTWIDTH<span style="color: #339933;">==</span><span style="color: #CC0000;">320</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">?</span><span style="color: #3366CC;">&quot;BT&quot;</span><span style="color: #339933;">:</span><span style="color: #3366CC;">&quot;Bluetooth&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">+</span><span style="color: #3366CC;">&quot; Monitor&quot;</span><span style="color: #339933;">;</span>
         $<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'properties'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">setAttribute</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;title&quot;</span><span style="color: #339933;">,</span> pgTitle<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
         $<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'pageTitle'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">innerHTML</span> <span style="color: #339933;">=</span> pgTitle<span style="color: #339933;">;</span>
         ibtmon.<span style="color: #660066;">configure_initial_setup_values</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
         ibtmon.<span style="color: #660066;">updateVisibles</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
         setInterval<span style="color: #009900;">&#40;</span>ibtmon.<span style="color: #660066;">checkOrientation</span><span style="color: #339933;">,</span> <span style="color: #CC0000;">300</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
         ibtmon.<span style="color: #660066;">fetchLogging</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
       <span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
       configure_initial_setup_values<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
         <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>BUSY_TIMEOUT <span style="color: #339933;">!=</span> <span style="color: #3366CC;">&quot;&quot;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span> SETUP_BUSY_TIMEOUT <span style="color: #339933;">=</span> BUSY_TIMEOUT<span style="color: #339933;">;</span> <span style="color: #009900;">&#125;</span>
         <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>IDLE_TIMEOUT <span style="color: #339933;">!=</span> <span style="color: #3366CC;">&quot;&quot;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span> SETUP_IDLE_TIMEOUT <span style="color: #339933;">=</span> IDLE_TIMEOUT<span style="color: #339933;">;</span> <span style="color: #009900;">&#125;</span>
         <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>MATCH_PATTERN <span style="color: #339933;">!=</span> <span style="color: #3366CC;">&quot;&quot;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span> SETUP_MATCH_PATTERN <span style="color: #339933;">=</span> MATCH_PATTERN<span style="color: #339933;">;</span> <span style="color: #009900;">&#125;</span>
         <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>MATCH_COLOR <span style="color: #339933;">!=</span> <span style="color: #3366CC;">&quot;&quot;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span> SETUP_MATCH_COLOR <span style="color: #339933;">=</span> MATCH_COLOR<span style="color: #339933;">;</span> <span style="color: #009900;">&#125;</span>
       <span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
       prefer_setup_values<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
         <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>SETUP_BUSY_TIMEOUT <span style="color: #339933;">!=</span> <span style="color: #3366CC;">&quot;&quot;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span> BUSY_TIMEOUT <span style="color: #339933;">=</span> SETUP_BUSY_TIMEOUT<span style="color: #339933;">;</span> <span style="color: #009900;">&#125;</span>
         <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>SETUP_IDLE_TIMEOUT <span style="color: #339933;">!=</span> <span style="color: #3366CC;">&quot;&quot;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span> IDLE_TIMEOUT <span style="color: #339933;">=</span> SETUP_IDLE_TIMEOUT<span style="color: #339933;">;</span> <span style="color: #009900;">&#125;</span>
&nbsp;
         <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>SETUP_MATCH_PATTERN <span style="color: #339933;">!=</span> <span style="color: #3366CC;">&quot;&quot;</span> <span style="color: #339933;">&amp;&amp;</span> SETUP_MATCH_PATTERN <span style="color: #339933;">!=</span> <span style="color: #3366CC;">&quot;text-to-match&quot;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
           MATCH_PATTERN <span style="color: #339933;">=</span> SETUP_MATCH_PATTERN<span style="color: #339933;">;</span>
         <span style="color: #009900;">&#125;</span>
         <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>SETUP_MATCH_COLOR <span style="color: #339933;">!=</span> <span style="color: #3366CC;">&quot;&quot;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span> MATCH_COLOR <span style="color: #339933;">=</span> SETUP_MATCH_COLOR<span style="color: #339933;">;</span> <span style="color: #009900;">&#125;</span>
       <span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
       updateVisibles<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
         $<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'busy_timeout_id'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">value</span> <span style="color: #339933;">=</span> BUSY_TIMEOUT<span style="color: #339933;">;</span>
         $<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'idle_timeout_id'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">value</span> <span style="color: #339933;">=</span> IDLE_TIMEOUT<span style="color: #339933;">;</span>
         <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>MATCH_PATTERN <span style="color: #339933;">==</span> <span style="color: #3366CC;">&quot;&quot;</span> <span style="color: #339933;">||</span> MATCH_PATTERN <span style="color: #339933;">==</span> <span style="color: #3366CC;">&quot;text-to-match&quot;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span> 
           $<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'match_pattern_id'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">value</span> <span style="color: #339933;">=</span> <span style="color: #3366CC;">&quot;text-to-match&quot;</span><span style="color: #339933;">;</span>
         <span style="color: #009900;">&#125;</span> <span style="color: #000066; font-weight: bold;">else</span> <span style="color: #009900;">&#123;</span>
           $<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'match_pattern_id'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">value</span> <span style="color: #339933;">=</span> MATCH_PATTERN<span style="color: #339933;">;</span>
         <span style="color: #009900;">&#125;</span>
         $<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'match_color_id'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">value</span> <span style="color: #339933;">=</span> MATCH_COLOR<span style="color: #339933;">;</span>
         $<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'toggle_active_flag_id'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">setAttribute</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;toggled&quot;</span><span style="color: #339933;">,</span> ACTIVE_FLAG<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
       <span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
       checkOrientation<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
         <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>ibtmon.<span style="color: #660066;">getInnerWidth</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">!=</span> CURRENTWIDTH<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
           CURRENTWIDTH <span style="color: #339933;">=</span> ibtmon.<span style="color: #660066;">getInnerWidth</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
           <span style="color: #003366; font-weight: bold;">var</span> pgTitle <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span>CURRENTWIDTH<span style="color: #339933;">==</span><span style="color: #CC0000;">320</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">?</span><span style="color: #3366CC;">&quot;BT&quot;</span><span style="color: #339933;">:</span><span style="color: #3366CC;">&quot;Bluetooth&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">+</span><span style="color: #3366CC;">&quot; Monitor&quot;</span><span style="color: #339933;">;</span>
           $<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'properties'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">setAttribute</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;title&quot;</span><span style="color: #339933;">,</span> pgTitle<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
           $<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'pageTitle'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">innerHTML</span> <span style="color: #339933;">=</span> pgTitle<span style="color: #339933;">;</span>
           ibtmon.<span style="color: #660066;">prefer_setup_values</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
           ibtmon.<span style="color: #660066;">updateVisibles</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
         <span style="color: #009900;">&#125;</span>
       <span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
       subspan<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>str<span style="color: #339933;">,</span> left<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
         <span style="color: #003366; font-weight: bold;">var</span> firstlp <span style="color: #339933;">=</span> str.<span style="color: #660066;">indexOf</span><span style="color: #009900;">&#40;</span>XDE<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
         <span style="color: #003366; font-weight: bold;">var</span> firstrp <span style="color: #339933;">=</span> str.<span style="color: #660066;">indexOf</span><span style="color: #009900;">&#40;</span>XEE<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
         <span style="color: #003366; font-weight: bold;">var</span> lastlp <span style="color: #339933;">=</span> str.<span style="color: #660066;">lastIndexOf</span><span style="color: #009900;">&#40;</span>XDE<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
         <span style="color: #003366; font-weight: bold;">var</span> lastrp <span style="color: #339933;">=</span> str.<span style="color: #660066;">lastIndexOf</span><span style="color: #009900;">&#40;</span>XEE<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
         <span style="color: #003366; font-weight: bold;">var</span> spanned_str <span style="color: #339933;">=</span> str<span style="color: #339933;">;</span>
         <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>lastlp <span style="color: #339933;">&gt;</span> lastrp<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
           spanned_str <span style="color: #339933;">=</span> spanned_str <span style="color: #339933;">+</span> XEE<span style="color: #339933;">;</span>
         <span style="color: #009900;">&#125;</span>
         <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>firstrp <span style="color: #339933;">&lt;</span> firstlp<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
           spanned_str <span style="color: #339933;">=</span> XDE <span style="color: #339933;">+</span> spanned_str<span style="color: #339933;">;</span>
         <span style="color: #009900;">&#125;</span>
         spanned_str <span style="color: #339933;">=</span> <span style="color: #3366CC;">&quot;&lt;span style='left: &quot;</span><span style="color: #339933;">+</span>left<span style="color: #339933;">+</span><span style="color: #3366CC;">&quot;px; position: relative;'&gt;&quot;</span><span style="color: #339933;">+</span>
           spanned_str<span style="color: #339933;">+</span><span style="color: #3366CC;">&quot;&lt;/span&gt;&quot;</span><span style="color: #339933;">;</span>
         <span style="color: #000066; font-weight: bold;">return</span> spanned_str<span style="color: #339933;">;</span>
       <span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
       wrap<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>str<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
         <span style="color: #003366; font-weight: bold;">function</span> fltlen<span style="color: #009900;">&#40;</span>s<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
           <span style="color: #003366; font-weight: bold;">var</span> l <span style="color: #339933;">=</span> s.<span style="color: #660066;">length</span><span style="color: #339933;">;</span>
           <span style="color: #003366; font-weight: bold;">var</span> pct <span style="color: #339933;">=</span> <span style="color: #CC0000;">0</span><span style="color: #339933;">,</span> c<span style="color: #339933;">;</span>
           <span style="color: #000066; font-weight: bold;">for</span> <span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">var</span> i <span style="color: #339933;">=</span> <span style="color: #CC0000;">0</span><span style="color: #339933;">;</span> i<span style="color: #339933;">&lt;</span> l<span style="color: #339933;">;</span> i<span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
             c <span style="color: #339933;">=</span> s.<span style="color: #660066;">charAt</span><span style="color: #009900;">&#40;</span>i<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
             pct <span style="color: #339933;">+=</span> <span style="color: #009900;">&#40;</span>c <span style="color: #339933;">==</span> XDE <span style="color: #339933;">||</span> c <span style="color: #339933;">==</span> XEE<span style="color: #009900;">&#41;</span> <span style="color: #339933;">?</span> <span style="color: #CC0000;">1</span> <span style="color: #339933;">:</span> <span style="color: #CC0000;">0</span><span style="color: #339933;">;</span>
           <span style="color: #009900;">&#125;</span>
           <span style="color: #000066; font-weight: bold;">return</span> l <span style="color: #339933;">-</span> pct<span style="color: #339933;">;</span>
         <span style="color: #009900;">&#125;</span>
         <span style="color: #003366; font-weight: bold;">function</span> fltslice<span style="color: #009900;">&#40;</span>str<span style="color: #339933;">,</span> start<span style="color: #339933;">,</span> <span style="color: #000066;">stop</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
           <span style="color: #003366; font-weight: bold;">var</span> len <span style="color: #339933;">=</span> str.<span style="color: #660066;">length</span><span style="color: #339933;">;</span>
           <span style="color: #003366; font-weight: bold;">var</span> fltstr <span style="color: #339933;">=</span> <span style="color: #3366CC;">&quot;&quot;</span><span style="color: #339933;">;</span>
           <span style="color: #003366; font-weight: bold;">var</span> c<span style="color: #339933;">;</span>
           <span style="color: #003366; font-weight: bold;">var</span> i<span style="color: #339933;">=</span><span style="color: #CC0000;">0</span><span style="color: #339933;">,</span> j<span style="color: #339933;">=</span><span style="color: #CC0000;">0</span><span style="color: #339933;">;</span>
           <span style="color: #000066; font-weight: bold;">while</span> <span style="color: #009900;">&#40;</span>i <span style="color: #339933;">&lt;</span> start <span style="color: #339933;">&amp;&amp;</span> j <span style="color: #339933;">&lt;</span> len<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
             c <span style="color: #339933;">=</span> s.<span style="color: #660066;">charAt</span><span style="color: #009900;">&#40;</span>j<span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
             <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>c <span style="color: #339933;">!=</span> XDE <span style="color: #339933;">&amp;&amp;</span> c <span style="color: #339933;">!=</span> XEE<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span> i<span style="color: #339933;">++;</span> <span style="color: #009900;">&#125;</span> 
           <span style="color: #009900;">&#125;</span>
           <span style="color: #000066; font-weight: bold;">while</span> <span style="color: #009900;">&#40;</span>i <span style="color: #339933;">&lt;</span> <span style="color: #000066;">stop</span> <span style="color: #339933;">&amp;&amp;</span> j <span style="color: #339933;">&lt;</span> len<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
             c <span style="color: #339933;">=</span> s.<span style="color: #660066;">charAt</span><span style="color: #009900;">&#40;</span>j<span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
             fltstr <span style="color: #339933;">+=</span> c<span style="color: #339933;">;</span>
             <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>c <span style="color: #339933;">!=</span> XDE <span style="color: #339933;">&amp;&amp;</span> c <span style="color: #339933;">!=</span> XEE<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span> i<span style="color: #339933;">++;</span> <span style="color: #009900;">&#125;</span> 
           <span style="color: #009900;">&#125;</span>
           <span style="color: #000066; font-weight: bold;">return</span> fltstr<span style="color: #339933;">;</span>
         <span style="color: #009900;">&#125;</span>
         <span style="color: #003366; font-weight: bold;">var</span> j<span style="color: #339933;">,</span> s<span style="color: #339933;">,</span> r<span style="color: #339933;">;</span>
         <span style="color: #003366; font-weight: bold;">var</span> b <span style="color: #339933;">=</span> <span style="color: #3366CC;">&quot;&lt;br /&gt;&quot;</span><span style="color: #339933;">;</span>
         <span style="color: #003366; font-weight: bold;">var</span> body <span style="color: #339933;">=</span> document.<span style="color: #660066;">getElementsByTagName</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'body'</span><span style="color: #009900;">&#41;</span>
         <span style="color: #003366; font-weight: bold;">var</span> m <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span>body<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">0</span><span style="color: #009900;">&#93;</span>.<span style="color: #660066;">getAttribute</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;orient&quot;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">==</span> <span style="color: #3366CC;">&quot;landscape&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">?</span> <span style="color: #CC0000;">40</span> <span style="color: #339933;">:</span> <span style="color: #CC0000;">25</span><span style="color: #339933;">;</span>
         <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>MATCH_PATTERN.<span style="color: #660066;">length</span> <span style="color: #339933;">&gt;</span> <span style="color: #CC0000;">0</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
           <span style="color: #003366; font-weight: bold;">var</span> re <span style="color: #339933;">=</span> RegExp<span style="color: #009900;">&#40;</span>MATCH_PATTERN<span style="color: #339933;">,</span> <span style="color: #3366CC;">&quot;gi&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
           str <span style="color: #339933;">=</span> str.<span style="color: #660066;">replace</span><span style="color: #009900;">&#40;</span> re<span style="color: #339933;">,</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>hit<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
             <span style="color: #003366; font-weight: bold;">var</span> expanded_str<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;&quot;</span><span style="color: #339933;">,</span> i<span style="color: #339933;">;</span>
             <span style="color: #000066; font-weight: bold;">for</span><span style="color: #009900;">&#40;</span>i<span style="color: #339933;">=</span><span style="color: #CC0000;">0</span><span style="color: #339933;">;</span> i<span style="color: #339933;">&lt;</span>hit.<span style="color: #660066;">length</span><span style="color: #339933;">;</span> i<span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
               expanded_str <span style="color: #339933;">+=</span> XDE <span style="color: #339933;">+</span> hit.<span style="color: #660066;">charAt</span><span style="color: #009900;">&#40;</span>i<span style="color: #009900;">&#41;</span> <span style="color: #339933;">+</span> XEE<span style="color: #339933;">;</span>
             <span style="color: #009900;">&#125;</span>
             <span style="color: #000066; font-weight: bold;">return</span> expanded_str<span style="color: #339933;">;</span>
           <span style="color: #009900;">&#125;</span> <span style="color: #009900;">&#41;</span>
         <span style="color: #009900;">&#125;</span>
         s <span style="color: #339933;">=</span> str<span style="color: #339933;">;</span>
         <span style="color: #003366; font-weight: bold;">var</span> left <span style="color: #339933;">=</span> <span style="color: #CC0000;">0</span><span style="color: #339933;">,</span> p<span style="color: #339933;">;</span>
         r <span style="color: #339933;">=</span> <span style="color: #3366CC;">&quot;&quot;</span><span style="color: #339933;">;</span>
         <span style="color: #000066; font-weight: bold;">while</span> <span style="color: #009900;">&#40;</span>fltlen<span style="color: #009900;">&#40;</span>s<span style="color: #009900;">&#41;</span> <span style="color: #339933;">&gt;</span> m<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
             result <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span>p <span style="color: #339933;">=</span> fltslice<span style="color: #009900;">&#40;</span>s<span style="color: #339933;">,</span> <span style="color: #CC0000;">0</span><span style="color: #339933;">,</span> m <span style="color: #339933;">+</span> <span style="color: #CC0000;">1</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">match</span><span style="color: #009900;">&#40;</span><span style="color: #009966; font-style: italic;">/\S*(\s)?$/</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#91;</span><span style="color: #CC0000;">1</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">?</span>
               m <span style="color: #339933;">:</span> fltlen<span style="color: #009900;">&#40;</span>p.<span style="color: #660066;">input</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">-</span> fltlen<span style="color: #009900;">&#40;</span>p<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">0</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
             j <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span>result <span style="color: #339933;">==</span> <span style="color: #CC0000;">0</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">?</span> m <span style="color: #339933;">:</span> result<span style="color: #339933;">;</span>
             r <span style="color: #339933;">+=</span> ibtmon.<span style="color: #660066;">subspan</span><span style="color: #009900;">&#40;</span>fltslice<span style="color: #009900;">&#40;</span>s<span style="color: #339933;">,</span> <span style="color: #CC0000;">0</span><span style="color: #339933;">,</span> j<span style="color: #009900;">&#41;</span> <span style="color: #339933;">+</span> 
               <span style="color: #009900;">&#40;</span>fltlen<span style="color: #009900;">&#40;</span>s <span style="color: #339933;">=</span> fltslice<span style="color: #009900;">&#40;</span>s<span style="color: #339933;">,</span> j<span style="color: #339933;">,</span> s.<span style="color: #660066;">length</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">?</span> b <span style="color: #339933;">:</span> <span style="color: #3366CC;">&quot;&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span> left<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
             left <span style="color: #339933;">=</span> <span style="color: #CC0000;">20</span><span style="color: #339933;">;</span>
         <span style="color: #009900;">&#125;</span>
         r <span style="color: #339933;">+=</span> ibtmon.<span style="color: #660066;">subspan</span><span style="color: #009900;">&#40;</span>s<span style="color: #339933;">+</span>b<span style="color: #339933;">,</span>left<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
         <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>MATCH_PATTERN.<span style="color: #660066;">length</span> <span style="color: #339933;">&gt;</span> <span style="color: #CC0000;">0</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
           <span style="color: #003366; font-weight: bold;">var</span> t <span style="color: #339933;">=</span> r.<span style="color: #660066;">replace</span><span style="color: #009900;">&#40;</span>PXDE<span style="color: #339933;">,</span> <span style="color: #3366CC;">&quot;&lt;span style='background-color: &quot;</span><span style="color: #339933;">+</span>MATCH_COLOR<span style="color: #339933;">+</span><span style="color: #3366CC;">&quot;;'&gt;&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
           r <span style="color: #339933;">=</span> t.<span style="color: #660066;">replace</span><span style="color: #009900;">&#40;</span>PXEE<span style="color: #339933;">,</span> <span style="color: #3366CC;">&quot;&lt;/span&gt;&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
         <span style="color: #009900;">&#125;</span>
         <span style="color: #000066; font-weight: bold;">return</span> r<span style="color: #339933;">;</span>
       <span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
       getLog<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
         <span style="color: #003366; font-weight: bold;">var</span> req <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> XMLHttpRequest<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
         req.<span style="color: #660066;">onreadystatechange</span> <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
           <span style="color: #003366; font-weight: bold;">var</span> fetch_interval<span style="color: #339933;">;</span>
           <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>req.<span style="color: #660066;">readyState</span> <span style="color: #339933;">==</span> <span style="color: #CC0000;">4</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
             <span style="color: #003366; font-weight: bold;">var</span> logdiv <span style="color: #339933;">=</span> $<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'logs'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
             <span style="color: #003366; font-weight: bold;">var</span> resp <span style="color: #339933;">=</span> req.<span style="color: #660066;">responseText</span><span style="color: #339933;">;</span>
             <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>resp.<span style="color: #660066;">length</span> <span style="color: #339933;">&gt;</span> <span style="color: #CC0000;">0</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
               logdiv.<span style="color: #660066;">innerHTML</span> <span style="color: #339933;">+=</span> <span style="color: #3366CC;">&quot;&lt;span class='log_line'&gt;&quot;</span><span style="color: #339933;">+</span>ibtmon.<span style="color: #660066;">wrap</span><span style="color: #009900;">&#40;</span>resp<span style="color: #009900;">&#41;</span><span style="color: #339933;">+</span><span style="color: #3366CC;">&quot;&lt;/span&gt;&quot;</span><span style="color: #339933;">;</span> 
               logdiv.<span style="color: #660066;">scrollTop</span> <span style="color: #339933;">+=</span> logdiv.<span style="color: #660066;">scrollHeight</span><span style="color: #339933;">;</span>
               fetch_interval <span style="color: #339933;">=</span> BUSY_TIMEOUT<span style="color: #339933;">;</span>
             <span style="color: #009900;">&#125;</span> <span style="color: #000066; font-weight: bold;">else</span> <span style="color: #009900;">&#123;</span>
               fetch_interval <span style="color: #339933;">=</span> IDLE_TIMEOUT<span style="color: #339933;">;</span>
             <span style="color: #009900;">&#125;</span>
             <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'stopButton'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">text</span> <span style="color: #339933;">==</span> <span style="color: #3366CC;">'Stop'</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
               SET_TIMEOUT_OBJ <span style="color: #339933;">=</span> setTimeout<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;ibtmon.getLog()&quot;</span><span style="color: #339933;">,</span> fetch_interval<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
             <span style="color: #009900;">&#125;</span>
             scrollTo<span style="color: #009900;">&#40;</span><span style="color: #CC0000;">0</span><span style="color: #339933;">,</span> <span style="color: #CC0000;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
           <span style="color: #009900;">&#125;</span>
         <span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span> 
         req.<span style="color: #000066;">open</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;GET&quot;</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">&quot;/&quot;</span><span style="color: #339933;">+</span>AJAX_REQUEST<span style="color: #339933;">,</span> <span style="color: #003366; font-weight: bold;">true</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
         req.<span style="color: #660066;">send</span><span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">null</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
       <span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span> 
       toggleStartStop<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>obj<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
         <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>obj.<span style="color: #660066;">text</span> <span style="color: #339933;">==</span> <span style="color: #3366CC;">'Stop'</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
           ibtmon.<span style="color: #660066;">stopLogCollection</span><span style="color: #009900;">&#40;</span>obj<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
         <span style="color: #009900;">&#125;</span> <span style="color: #000066; font-weight: bold;">else</span> <span style="color: #009900;">&#123;</span> 
           ibtmon.<span style="color: #660066;">startLogCollection</span><span style="color: #009900;">&#40;</span>obj<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
         <span style="color: #009900;">&#125;</span>
       <span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
       startLogCollection<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>obj<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
         obj.<span style="color: #660066;">innerHTML</span> <span style="color: #339933;">=</span> <span style="color: #3366CC;">'Stop'</span><span style="color: #339933;">;</span>
         ACTIVE_FLAG <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">true</span><span style="color: #339933;">;</span>
         setTimeout<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;ibtmon.getLog()&quot;</span><span style="color: #339933;">,</span> BUSY_TIMEOUT<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> 
         $<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'toggle_active_flag_id'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">setAttribute</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;toggled&quot;</span><span style="color: #339933;">,</span> ACTIVE_FLAG<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
         $<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'logMonitorStatus'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">innerHTML</span> <span style="color: #339933;">=</span> <span style="color: #3366CC;">&quot;Active&quot;</span>
         $<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'logMonitorStatus'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">style</span>.<span style="color: #660066;">color</span> <span style="color: #339933;">=</span> <span style="color: #3366CC;">&quot;green&quot;</span>
       <span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
       stopLogCollection<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>obj<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
         clearTimeout<span style="color: #009900;">&#40;</span>SET_TIMEOUT_OBJ<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
         obj.<span style="color: #660066;">innerHTML</span> <span style="color: #339933;">=</span> <span style="color: #3366CC;">'Start'</span><span style="color: #339933;">;</span>
         ACTIVE_FLAG <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">false</span><span style="color: #339933;">;</span>
         $<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'toggle_active_flag_id'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">setAttribute</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;toggled&quot;</span><span style="color: #339933;">,</span> ACTIVE_FLAG<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
         $<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'logMonitorStatus'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">innerHTML</span> <span style="color: #339933;">=</span> <span style="color: #3366CC;">&quot;Inactive&quot;</span>
         $<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'logMonitorStatus'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">style</span>.<span style="color: #660066;">color</span> <span style="color: #339933;">=</span> <span style="color: #3366CC;">&quot;red&quot;</span>
       <span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
       fetchLogging<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
         setTimeout<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;scrollTo(0, 1)&quot;</span><span style="color: #339933;">,</span> <span style="color: #CC0000;">1000</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
         setTimeout<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;ibtmon.getLog()&quot;</span><span style="color: #339933;">,</span> <span style="color: #CC0000;">200</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
       <span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span> 
       <span style="color: #009966; font-style: italic;">/* setup functions */</span>
       scheduleSetupChange<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>act<span style="color: #339933;">,</span> obj<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
         <span style="color: #003366; font-weight: bold;">var</span> <span style="color: #000066; font-weight: bold;">item</span> <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> Object<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
         <span style="color: #000066; font-weight: bold;">item</span>.<span style="color: #660066;">action</span> <span style="color: #339933;">=</span> act<span style="color: #339933;">;</span>
         <span style="color: #000066; font-weight: bold;">item</span>.<span style="color: #660066;">arg</span> <span style="color: #339933;">=</span> obj<span style="color: #339933;">;</span>
         UPDATE_OBJECT_LIST.<span style="color: #660066;">push</span><span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">item</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
       <span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
       setBusyTimeout<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>o<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
         SETUP_BUSY_TIMEOUT <span style="color: #339933;">=</span> o.<span style="color: #660066;">value</span><span style="color: #339933;">;</span>
       <span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
       setIdleTimeout<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>o<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
         SETUP_IDLE_TIMEOUT <span style="color: #339933;">=</span> o.<span style="color: #660066;">value</span><span style="color: #339933;">;</span>
       <span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
       setMatchPattern<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>o<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
         SETUP_MATCH_PATTERN <span style="color: #339933;">=</span> o.<span style="color: #660066;">value</span><span style="color: #339933;">;</span>
       <span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
       setMatchColor<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>o<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
         SETUP_MATCH_COLOR <span style="color: #339933;">=</span> o.<span style="color: #660066;">value</span><span style="color: #339933;">;</span>
       <span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
       toggleActiveFlag<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>o<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
         <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>o.<span style="color: #660066;">getAttribute</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;toggled&quot;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">===</span> <span style="color: #3366CC;">&quot;true&quot;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
           ACTIVE_FLAG <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">true</span><span style="color: #339933;">;</span>
           $<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'stopButton'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">innerHTML</span> <span style="color: #339933;">=</span> <span style="color: #3366CC;">'Stop'</span><span style="color: #339933;">;</span>
           $<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'logMonitorStatus'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">innerHTML</span> <span style="color: #339933;">=</span> <span style="color: #3366CC;">&quot;Active&quot;</span>
           $<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'logMonitorStatus'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">style</span>.<span style="color: #660066;">color</span> <span style="color: #339933;">=</span> <span style="color: #3366CC;">&quot;green&quot;</span>
         <span style="color: #009900;">&#125;</span> <span style="color: #000066; font-weight: bold;">else</span> <span style="color: #009900;">&#123;</span>
           clearTimeout<span style="color: #009900;">&#40;</span>SET_TIMEOUT_OBJ<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
           ACTIVE_FLAG <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">false</span><span style="color: #339933;">;</span>
           $<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'stopButton'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">innerHTML</span> <span style="color: #339933;">=</span> <span style="color: #3366CC;">'Start'</span><span style="color: #339933;">;</span>
           $<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'logMonitorStatus'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">innerHTML</span> <span style="color: #339933;">=</span> <span style="color: #3366CC;">&quot;Inactive&quot;</span>
           $<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'logMonitorStatus'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">style</span>.<span style="color: #660066;">color</span> <span style="color: #339933;">=</span> <span style="color: #3366CC;">&quot;red&quot;</span>
         <span style="color: #009900;">&#125;</span>
       <span style="color: #009900;">&#125;</span>
     <span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<h3>Listing 2: Stylesheet for Monitor and Setup Screens: <code>monitor_bt.css</code></h3>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
</pre></td><td class="code"><pre class="css" style="font-family:monospace;"><span style="color: #6666ff;">.property_row_key</span> <span style="color: #00AA00;">&#123;</span> <span style="color: #000000; font-weight: bold;">left</span><span style="color: #00AA00;">:</span> <span style="color: #933;">6px</span><span style="color: #00AA00;">;</span> <span style="color: #000000; font-weight: bold;">font-size</span><span style="color: #00AA00;">:</span> <span style="color: #933;">12px</span><span style="color: #00AA00;">;</span> <span style="color: #000000; font-weight: bold;">font-weight</span><span style="color: #00AA00;">:</span> <span style="color: #993333;">bold</span><span style="color: #00AA00;">;</span> <span style="color: #000000; font-weight: bold;">position</span><span style="color: #00AA00;">:</span> <span style="color: #993333;">absolute</span><span style="color: #00AA00;">;</span> <span style="color: #00AA00;">&#125;</span>
<span style="color: #6666ff;">.property_row_value</span> <span style="color: #00AA00;">&#123;</span> <span style="color: #000000; font-weight: bold;">left</span><span style="color: #00AA00;">:</span> <span style="color: #933;">140px</span><span style="color: #00AA00;">;</span> <span style="color: #000000; font-weight: bold;">font-size</span><span style="color: #00AA00;">:</span> <span style="color: #933;">12px</span><span style="color: #00AA00;">;</span> <span style="color: #000000; font-weight: bold;">position</span><span style="color: #00AA00;">:</span> <span style="color: #993333;">absolute</span><span style="color: #00AA00;">;</span> <span style="color: #00AA00;">&#125;</span>
ul<span style="color: #6666ff;">.panel_util</span> <span style="color: #00AA00;">&#123;</span> <span style="color: #000000; font-weight: bold;">padding</span><span style="color: #00AA00;">:</span> <span style="color: #933;">0px</span><span style="color: #00AA00;">;</span> <span style="color: #00AA00;">&#125;</span>
&nbsp;
<span style="color: #cc00cc;">#logs</span> <span style="color: #00AA00;">&#123;</span> <span style="color: #000000; font-weight: bold;">width</span><span style="color: #00AA00;">:</span><span style="color: #933;"><span style="color: #cc66cc;">100</span>%</span><span style="color: #00AA00;">;</span> overflow-y<span style="color: #00AA00;">:</span><span style="color: #993333;">auto</span><span style="color: #00AA00;">;</span> text-wrap<span style="color: #00AA00;">:</span> <span style="color: #993333;">normal</span><span style="color: #00AA00;">;</span> <span style="color: #00AA00;">&#125;</span>
body<span style="color: #00AA00;">&#91;</span>orient<span style="color: #00AA00;">=</span><span style="color: #ff0000;">&quot;landscape&quot;</span><span style="color: #00AA00;">&#93;</span> <span style="color: #cc00cc;">#logs</span> <span style="color: #00AA00;">&#123;</span> <span style="color: #000000; font-weight: bold;">height</span><span style="color: #00AA00;">:</span> <span style="color: #933;">180px</span> <span style="color: #00AA00;">&#125;</span>
body<span style="color: #00AA00;">&#91;</span>orient<span style="color: #00AA00;">=</span><span style="color: #ff0000;">&quot;profile&quot;</span><span style="color: #00AA00;">&#93;</span> <span style="color: #cc00cc;">#logs</span> <span style="color: #00AA00;">&#123;</span> <span style="color: #000000; font-weight: bold;">height</span><span style="color: #00AA00;">:</span> <span style="color: #933;">300px</span> <span style="color: #00AA00;">&#125;</span>
&nbsp;
ul<span style="color: #6666ff;">.panel_util</span> <span style="color: #00AA00;">&gt;</span> li <span style="color: #00AA00;">&#123;</span>
  <span style="color: #000000; font-weight: bold;">position</span><span style="color: #00AA00;">:</span> <span style="color: #993333;">relative</span><span style="color: #00AA00;">;</span>
  <span style="color: #000000; font-weight: bold;">margin</span><span style="color: #00AA00;">:</span> <span style="color: #cc66cc;">0</span><span style="color: #00AA00;">;</span>
  <span style="color: #000000; font-weight: bold;">padding</span><span style="color: #00AA00;">:</span> <span style="color: #933;">8px</span> <span style="color: #cc66cc;">0</span> <span style="color: #933;">8px</span> <span style="color: #933;">10px</span><span style="color: #00AA00;">;</span>
  <span style="color: #000000; font-weight: bold;">font-size</span><span style="color: #00AA00;">:</span> <span style="color: #933;">20px</span><span style="color: #00AA00;">;</span>
  <span style="color: #000000; font-weight: bold;">font-weight</span><span style="color: #00AA00;">:</span> <span style="color: #993333;">normal</span><span style="color: #00AA00;">;</span>
  <span style="color: #000000; font-weight: bold;">list-style</span><span style="color: #00AA00;">:</span> <span style="color: #993333;">none</span><span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span> 
&nbsp;
ul<span style="color: #6666ff;">.panel_util</span> <span style="color: #00AA00;">&gt;</span> li<span style="color: #00AA00;">:</span>not<span style="color: #00AA00;">&#40;</span><span style="color: #3333ff;">:first-</span>child<span style="color: #00AA00;">&#41;</span> <span style="color: #00AA00;">&#123;</span>
  <span style="color: #000000; font-weight: bold;">border-top</span><span style="color: #00AA00;">:</span> <span style="color: #933;">1px</span> <span style="color: #993333;">solid</span> <span style="color: #cc00cc;">#E0E0E0</span><span style="color: #00AA00;">;</span>
&nbsp;
<span style="color: #00AA00;">&#125;</span> 
&nbsp;
ul<span style="color: #6666ff;">.panel_util</span> <span style="color: #00AA00;">&gt;</span> li <span style="color: #00AA00;">&gt;</span> a <span style="color: #00AA00;">&#123;</span>
  <span style="color: #000000; font-weight: bold;">display</span><span style="color: #00AA00;">:</span> <span style="color: #993333;">block</span><span style="color: #00AA00;">;</span>
  <span style="color: #000000; font-weight: bold;">margin</span><span style="color: #00AA00;">:</span> <span style="color: #933;">-8px</span> <span style="color: #cc66cc;">0</span> <span style="color: #933;">-8px</span> <span style="color: #933;">-10px</span><span style="color: #00AA00;">;</span>
  <span style="color: #000000; font-weight: bold;">padding</span><span style="color: #00AA00;">:</span> <span style="color: #933;">8px</span> <span style="color: #933;">32px</span> <span style="color: #933;">8px</span> <span style="color: #933;">10px</span><span style="color: #00AA00;">;</span>
  <span style="color: #000000; font-weight: bold;">text-decoration</span><span style="color: #00AA00;">:</span> <span style="color: #993333;">none</span><span style="color: #00AA00;">;</span>
  <span style="color: #000000; font-weight: bold;">text-align</span><span style="color: #00AA00;">:</span> <span style="color: #000000; font-weight: bold;">left</span><span style="color: #00AA00;">;</span>
  <span style="color: #000000; font-weight: bold;">color</span><span style="color: #00AA00;">:</span> <span style="color: #993333;">inherit</span><span style="color: #00AA00;">;</span>
  <span style="color: #000000; font-weight: bold;">background</span><span style="color: #00AA00;">:</span> <span style="color: #993333;">url</span><span style="color: #00AA00;">&#40;</span><span style="color: #ff0000; font-style: italic;">/images/listArrow.png</span><span style="color: #00AA00;">&#41;</span> <span style="color: #993333;">no-repeat</span> <span style="color: #000000; font-weight: bold;">right</span> <span style="color: #993333;">center</span><span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span>
&nbsp;
<span style="color: #cc00cc;">#customBackButton</span> <span style="color: #00AA00;">&#123;</span>
  <span style="color: #000000; font-weight: bold;">display</span><span style="color: #00AA00;">:</span> <span style="color: #993333;">none</span><span style="color: #00AA00;">;</span>
  <span style="color: #000000; font-weight: bold;">left</span><span style="color: #00AA00;">:</span> <span style="color: #933;">6px</span><span style="color: #00AA00;">;</span>
  <span style="color: #000000; font-weight: bold;">right</span><span style="color: #00AA00;">:</span> <span style="color: #993333;">auto</span><span style="color: #00AA00;">;</span>
  <span style="color: #000000; font-weight: bold;">padding</span><span style="color: #00AA00;">:</span> <span style="color: #cc66cc;">0</span><span style="color: #00AA00;">;</span>
  <span style="color: #000000; font-weight: bold;">max-width</span><span style="color: #00AA00;">:</span> <span style="color: #933;">55px</span><span style="color: #00AA00;">;</span>
  <span style="color: #000000; font-weight: bold;">border-width</span><span style="color: #00AA00;">:</span> <span style="color: #cc66cc;">0</span> <span style="color: #933;">8px</span> <span style="color: #cc66cc;">0</span> <span style="color: #933;">14px</span><span style="color: #00AA00;">;</span>
  -webkit-border-image<span style="color: #00AA00;">:</span> <span style="color: #993333;">url</span><span style="color: #00AA00;">&#40;</span><span style="color: #ff0000; font-style: italic;">/images/backButton.png</span><span style="color: #00AA00;">&#41;</span> <span style="color: #cc66cc;">0</span> <span style="color: #cc66cc;">8</span> <span style="color: #cc66cc;">0</span> <span style="color: #cc66cc;">14</span><span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span> 
&nbsp;
<span style="color: #cc00cc;">#stopButton</span> <span style="color: #00AA00;">&#123;</span>
  <span style="color: #000000; font-weight: bold;">position</span><span style="color: #00AA00;">:</span> <span style="color: #993333;">absolute</span><span style="color: #00AA00;">;</span>
  <span style="color: #000000; font-weight: bold;">left</span><span style="color: #00AA00;">:</span> <span style="color: #933;">6px</span><span style="color: #00AA00;">;</span>
  <span style="color: #000000; font-weight: bold;">right</span><span style="color: #00AA00;">:</span> <span style="color: #993333;">auto</span><span style="color: #00AA00;">;</span>
  <span style="color: #000000; font-weight: bold;">margin</span><span style="color: #00AA00;">:</span> <span style="color: #cc66cc;">0</span><span style="color: #00AA00;">;</span>
  <span style="color: #000000; font-weight: bold;">border-width</span><span style="color: #00AA00;">:</span> <span style="color: #cc66cc;">0</span> <span style="color: #933;">5px</span><span style="color: #00AA00;">;</span>
  <span style="color: #000000; font-weight: bold;">padding</span><span style="color: #00AA00;">:</span> <span style="color: #cc66cc;">0</span> <span style="color: #933;">3px</span><span style="color: #00AA00;">;</span>
  <span style="color: #000000; font-weight: bold;">width</span><span style="color: #00AA00;">:</span> <span style="color: #993333;">auto</span><span style="color: #00AA00;">;</span>
  -webkit-border-image<span style="color: #00AA00;">:</span> <span style="color: #993333;">url</span><span style="color: #00AA00;">&#40;</span><span style="color: #ff0000; font-style: italic;">/images/toolButton.png</span><span style="color: #00AA00;">&#41;</span> <span style="color: #cc66cc;">0</span> <span style="color: #cc66cc;">5</span> <span style="color: #cc66cc;">0</span> <span style="color: #cc66cc;">5</span><span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span>
&nbsp;
<span style="color: #6666ff;">.row</span> <span style="color: #00AA00;">&gt;</span> textarea <span style="color: #00AA00;">&#123;</span>
  box-sizing<span style="color: #00AA00;">:</span> border-box<span style="color: #00AA00;">;</span>
  -webkit-box-sizing<span style="color: #00AA00;">:</span> border-box<span style="color: #00AA00;">;</span>
  <span style="color: #000000; font-weight: bold;">margin</span><span style="color: #00AA00;">:</span> <span style="color: #cc66cc;">0</span><span style="color: #00AA00;">;</span>
  <span style="color: #000000; font-weight: bold;">border</span><span style="color: #00AA00;">:</span> <span style="color: #993333;">none</span><span style="color: #00AA00;">;</span>
  <span style="color: #808080; font-style: italic;">/*padding: 12px 10px 0 110px;*/</span>
  <span style="color: #000000; font-weight: bold;">height</span><span style="color: #00AA00;">:</span> <span style="color: #933;">200px</span><span style="color: #00AA00;">;</span>
  <span style="color: #000000; font-weight: bold;">font-size</span><span style="color: #00AA00;">:</span> <span style="color: #933;">16px</span><span style="color: #00AA00;">;</span>
  <span style="color: #000000; font-weight: bold;">width</span><span style="color: #00AA00;">:</span><span style="color: #933;"><span style="color: #cc66cc;">100</span>%</span><span style="color: #00AA00;">;</span>
  <span style="color: #000000; font-weight: bold;">background-color</span><span style="color: #00AA00;">:</span><span style="color: #cc00cc;">#FFFF00</span><span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span>
&nbsp;
input<span style="color: #6666ff;">.setupTextItem</span> <span style="color: #00AA00;">&#123;</span>
  <span style="color: #000000; font-weight: bold;">padding</span><span style="color: #00AA00;">:</span> <span style="color: #933;">12px</span> <span style="color: #933;">10px</span> <span style="color: #cc66cc;">0</span> <span style="color: #933;">170px</span><span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span>
&nbsp;
<span style="color: #6666ff;">.log_line</span> <span style="color: #00AA00;">&#123;</span>
  <span style="color: #000000; font-weight: bold;">font-family</span><span style="color: #00AA00;">:</span> <span style="color: #993333;">monospace</span><span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span></pre></td></tr></table></div>

<h2>Server Side</h2>
<h3>Ruby/Sinatra highlights</h3>
<ul>
<li>Use of Sinatra&#8217;s configure section to implement data source monitoring in a background thread.</li>
<li>Data collection and distribution strategy: a main HTML page is served to the iPhone client as a normal web page which incorporates AJAX callbacks for message updates. Periodic requests are issued from the client (<code>monitor_bt.js</code>) via AJAX and serviced by Sinatra with response snippets.</li>
<li>A useful message test service is also implemented. Please see the code listing below for greater detail.</li>
</ul>
<h3>Listing 3: Sinatra-based Web Service: <code>monitor_bt.rb</code></h3>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
</pre></td><td class="code"><pre class="ruby" style="font-family:monospace;"><span style="color:#CC0066; font-weight:bold;">require</span> <span style="color:#996600;">'rubygems'</span> 
<span style="color:#CC0066; font-weight:bold;">require</span> <span style="color:#996600;">'sinatra'</span>
<span style="color:#CC0066; font-weight:bold;">require</span> <span style="color:#996600;">'dbus'</span>
<span style="color:#9966CC; font-weight:bold;">include</span> DBus
<span style="color:#CC0066; font-weight:bold;">require</span> <span style="color:#CC00FF; font-weight:bold;">File</span>.<span style="color:#9900CC;">expand_path</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#CC00FF; font-weight:bold;">File</span>.<span style="color:#9900CC;">dirname</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#0000FF; font-weight:bold;">__FILE__</span><span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#006600; font-weight:bold;">+</span> <span style="color:#996600;">'/dbus-helper'</span><span style="color:#006600; font-weight:bold;">&#41;</span>
<span style="color:#008000; font-style:italic;">#require 'ruby-debug'</span>
&nbsp;
configure <span style="color:#9966CC; font-weight:bold;">do</span>
  <span style="color:#008000; font-style:italic;"># Sinatra's configure block is executed once when the application</span>
  <span style="color:#008000; font-style:italic;"># is launched.</span>
  <span style="color:#ff6633; font-weight:bold;">$log_lines</span> = <span style="color:#CC00FF; font-weight:bold;">Queue</span>.<span style="color:#9900CC;">new</span>
  <span style="color:#9966CC; font-weight:bold;">def</span> log msg
    t = <span style="color:#CC00FF; font-weight:bold;">Time</span>.<span style="color:#9900CC;">now</span>.<span style="color:#9900CC;">strftime</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#996600;">&quot;%Y-%m-%d %H:%M:%S&quot;</span><span style="color:#006600; font-weight:bold;">&#41;</span>
    <span style="color:#ff6633; font-weight:bold;">$log_lines</span>.<span style="color:#9900CC;">enq</span> <span style="color:#996600;">&quot;#{t} #{msg}&quot;</span>
  <span style="color:#9966CC; font-weight:bold;">end</span>
  <span style="color:#008000; font-style:italic;"># Include and execute the customized Bluetooth monitor in a separate</span>
  <span style="color:#008000; font-style:italic;"># thread. This monitor references the log method above to enqueue</span>
  <span style="color:#008000; font-style:italic;"># messages onto the Ruby queue instance $log_lines.</span>
  <span style="color:#008000; font-style:italic;">#</span>
  <span style="color:#CC0066; font-weight:bold;">require</span> <span style="color:#CC00FF; font-weight:bold;">File</span>.<span style="color:#9900CC;">expand_path</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#CC00FF; font-weight:bold;">File</span>.<span style="color:#9900CC;">dirname</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#0000FF; font-weight:bold;">__FILE__</span><span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#006600; font-weight:bold;">+</span> <span style="color:#996600;">'/monitor_bt_for_web'</span><span style="color:#006600; font-weight:bold;">&#41;</span>
  <span style="color:#6666ff; font-weight:bold;">MonitorBluetooth::MonitorBluez</span>.<span style="color:#9900CC;">new</span>.<span style="color:#9900CC;">run</span>
  <span style="color:#008000; font-style:italic;">#</span>
  <span style="color:#008000; font-style:italic;"># Actually, any record oriented message producer can be used</span>
  <span style="color:#008000; font-style:italic;"># as a data source. For example, replacing the</span>
  <span style="color:#008000; font-style:italic;"># &quot;require ...monitor_bt_for_web&quot; lines above with</span>
  <span style="color:#008000; font-style:italic;"># the following code, will monitor syslog. </span>
  <span style="color:#008000; font-style:italic;"># require 'file/tail'</span>
  <span style="color:#008000; font-style:italic;"># Thread.new {</span>
  <span style="color:#008000; font-style:italic;">#   File::Tail::Logfile.open(&quot;/var/log/syslog&quot;) do |logf|</span>
  <span style="color:#008000; font-style:italic;">#     logf.backward(0).tail { |line| log line }</span>
  <span style="color:#008000; font-style:italic;">#   end</span>
  <span style="color:#008000; font-style:italic;"># }</span>
<span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;
get <span style="color:#996600;">&quot;/&quot;</span> <span style="color:#9966CC; font-weight:bold;">do</span>
  <span style="color:#008000; font-style:italic;"># For normal operation, put &quot;http://your.server.location:4567/&quot;</span>
  <span style="color:#008000; font-style:italic;"># into the URL bar of the iPhone. This Sinatra route displays</span>
  <span style="color:#008000; font-style:italic;"># the main HTML page configured for normal message display, in our</span>
  <span style="color:#008000; font-style:italic;"># case, Bluetooth monitoring. See 'get &quot;/get_log&quot;' block below.</span>
  <span style="color:#0066ff; font-weight:bold;">@which_callback</span> = <span style="color:#996600;">&quot;get_log&quot;</span>
  erb <span style="color:#ff3333; font-weight:bold;">:index</span>
<span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;
get <span style="color:#996600;">&quot;/test&quot;</span> <span style="color:#9966CC; font-weight:bold;">do</span>
  <span style="color:#008000; font-style:italic;"># For testing, put &quot;http://your.server.location:4567/test&quot;</span>
  <span style="color:#008000; font-style:italic;"># into the URL bar of the iPhone. This Sinatra route displays</span>
  <span style="color:#008000; font-style:italic;"># the main HTML page configured for requesting test</span>
  <span style="color:#008000; font-style:italic;"># messages (see the 'get &quot;/test_log&quot;' block below).</span>
  <span style="color:#008000; font-style:italic;"># Note that Bluetooth or any other monitoring continues in</span>
  <span style="color:#008000; font-style:italic;"># the background. Any accumulated monitoring messages can be</span>
  <span style="color:#008000; font-style:italic;"># retrieved by requesting the normal non-test HTML page</span>
  <span style="color:#008000; font-style:italic;"># (see 'get &quot;/&quot;' above).</span>
  <span style="color:#0066ff; font-weight:bold;">@which_callback</span> = <span style="color:#996600;">&quot;test_log&quot;</span>
  erb <span style="color:#ff3333; font-weight:bold;">:index</span>
<span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;
get <span style="color:#996600;">&quot;/get_log&quot;</span> <span style="color:#9966CC; font-weight:bold;">do</span>
  <span style="color:#008000; font-style:italic;"># Ajax request callback route configured by issuing</span>
  <span style="color:#008000; font-style:italic;"># &quot;http://your.server.location:4567/&quot; from the web client.</span>
  <span style="color:#008000; font-style:italic;"># The iPhone client should display Bluetooth D-BUS messages</span>
  <span style="color:#008000; font-style:italic;"># collected by the Bluez Bluetooth monitor thread running</span>
  <span style="color:#008000; font-style:italic;"># in the configure block above.</span>
  <span style="color:#008000; font-style:italic;">#</span>
  read_last_log
<span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;
get <span style="color:#996600;">&quot;/test_log&quot;</span> <span style="color:#9966CC; font-weight:bold;">do</span>
  <span style="color:#008000; font-style:italic;"># Ajax request callback route configured by issuing</span>
  <span style="color:#008000; font-style:italic;"># &quot;http://your.server.location:4567/test&quot; from the web client.</span>
  <span style="color:#008000; font-style:italic;"># The iPhone client should repeatedly display the complete</span>
  <span style="color:#008000; font-style:italic;"># message returned by this block (AAA...&lt;words&gt;...ZZZ), including</span>
  <span style="color:#008000; font-style:italic;"># proper word wrap. A custom Javascript wordwrap utility (with</span>
  <span style="color:#008000; font-style:italic;"># highlighting) is imported from monitor_bt.js. This utility</span>
  <span style="color:#008000; font-style:italic;"># formats a whole number of words per display line based upon</span>
  <span style="color:#008000; font-style:italic;"># device orientation. It will cut words in the middle when they</span>
  <span style="color:#008000; font-style:italic;"># are longer than the current screen width. In portrait orientation</span>
  <span style="color:#008000; font-style:italic;"># (320px width), you should see the following pattern displayed in</span>
  <span style="color:#008000; font-style:italic;"># monospaced font:</span>
  <span style="color:#008000; font-style:italic;">#</span>
  <span style="color:#008000; font-style:italic;"># AAA 0123456789</span>
  <span style="color:#008000; font-style:italic;"># abcdefghijklmnopqrstuvwxy</span>
  <span style="color:#008000; font-style:italic;"># z 0123456789 0123456789</span>
  <span style="color:#008000; font-style:italic;"># 0123456789 0123456789</span>
  <span style="color:#008000; font-style:italic;"># 0123456789 0123456789</span>
  <span style="color:#008000; font-style:italic;"># 0123456789</span>
  <span style="color:#008000; font-style:italic;"># ABCDEFGHIJKLMNOPQRSTUVWXY</span>
  <span style="color:#008000; font-style:italic;"># Z_ABCDEFGHIJKLMNOPQRSTUVW</span>
  <span style="color:#008000; font-style:italic;"># XYZ 0123456789 0123456789</span>
  <span style="color:#008000; font-style:italic;"># 0123456789 0123456789</span>
  <span style="color:#008000; font-style:italic;"># 0123456789 012345678 ZZZ</span>
  <span style="color:#008000; font-style:italic;">#</span>
  <span style="color:#008000; font-style:italic;"># In landscape orientation (480px width), the iPhone should</span>
  <span style="color:#008000; font-style:italic;"># display:</span>
  <span style="color:#008000; font-style:italic;">#</span>
&nbsp;
&nbsp;
  <span style="color:#008000; font-style:italic;"># AAA 0123456789</span>
  <span style="color:#008000; font-style:italic;"># abcdefghijklmnopqrstuvwxyz 0123456789</span>
  <span style="color:#008000; font-style:italic;"># 0123456789 0123456789 0123456789</span>
  <span style="color:#008000; font-style:italic;"># 0123456789 0123456789 0123456789</span>
  <span style="color:#008000; font-style:italic;"># ABCDEFGHIJKLMNOPQRSTUVWXYZ_ABCDEFGHIJKLM</span>
  <span style="color:#008000; font-style:italic;"># NOPQRSTUVWXYZ 0123456789 0123456789</span>
  <span style="color:#008000; font-style:italic;"># 0123456789 0123456789 0123456789</span>
  <span style="color:#008000; font-style:italic;"># 012345678 ZZZ</span>
  <span style="color:#008000; font-style:italic;"># </span>
  <span style="color:#996600;">&quot;AAA 0123456789 abcdefghijklmnopqrstuvwxyz 0123456789 &quot;</span><span style="color:#006600; font-weight:bold;">+</span>
  <span style="color:#996600;">&quot;0123456789 0123456789 0123456789 0123456789 0123456789 &quot;</span><span style="color:#006600; font-weight:bold;">+</span>
  <span style="color:#996600;">&quot;0123456789 ABCDEFGHIJKLMNOPQRSTUVWXYZ_ABCDEFG&quot;</span><span style="color:#006600; font-weight:bold;">+</span>
   <span style="color:#996600;">&quot;HIJKLMNOPQRSTUVWXYZ 0123456789 0123456789 &quot;</span><span style="color:#006600; font-weight:bold;">+</span>
   <span style="color:#996600;">&quot;0123456789 0123456789 0123456789 012345678 ZZZ&quot;</span>
<span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;
helpers <span style="color:#9966CC; font-weight:bold;">do</span> 
  <span style="color:#9966CC; font-weight:bold;">def</span> read_last_log
    result = <span style="color:#996600;">&quot;&quot;</span>
    <span style="color:#9966CC; font-weight:bold;">unless</span> <span style="color:#ff6633; font-weight:bold;">$log_lines</span>.<span style="color:#9900CC;">empty</span>? <span style="color:#008000; font-style:italic;"># avoid blocking</span>
      result = <span style="color:#ff6633; font-weight:bold;">$log_lines</span>.<span style="color:#9900CC;">deq</span>
    <span style="color:#9966CC; font-weight:bold;">end</span>
    result
  <span style="color:#9966CC; font-weight:bold;">end</span>
<span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;
use_in_file_templates!
&nbsp;
__END__
&nbsp;
@@ index</pre></td></tr></table></div>


<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
</pre></td><td class="code"><pre class="html4strict" style="font-family:monospace;"><span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">html</span>&gt;</span>
  <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">head</span>&gt;</span>
    <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">meta</span> <span style="color: #000066;">name</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;viewport&quot;</span> <span style="color: #000066;">content</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;width=device-width; initial-scale=1.0;</span>
<span style="color: #009900;">       maximum-scale=1.0; user-scalable=0;&quot;</span><span style="color: #66cc66;">/</span>&gt;</span>
    <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">style</span> <span style="color: #000066;">type</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;text/css&quot;</span> <span style="color: #000066;">media</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;screen&quot;</span>&gt;</span>@import &quot;/stylesheets/iui.css&quot;;<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">style</span>&gt;</span>
    <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">script</span> <span style="color: #000066;">type</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;application/x-javascript&quot;</span> <span style="color: #000066;">src</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;/javascripts/iui.js&quot;</span>&gt;&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">script</span>&gt;</span>
    <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">style</span> <span style="color: #000066;">type</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;text/css&quot;</span> <span style="color: #000066;">media</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;screen&quot;</span>&gt;</span>@import &quot;/stylesheets/monitor_bt.css&quot;;<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">style</span>&gt;</span>
    <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">script</span>&gt;</span>AJAX_REQUEST = <span style="color: #009900;">&lt;%<span style="color: #66cc66;">=</span> <span style="color: #ff0000;">&quot;'#{@which_callback}'&quot;</span> %&gt;&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">script</span>&gt;</span>
    <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">script</span> <span style="color: #000066;">src</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;/javascripts/monitor_bt.js&quot;</span>&gt;&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">script</span>&gt;</span>
  <span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">head</span>&gt;</span> 
  <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">body</span> <span style="color: #000066;">onLoad</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;ibtmon.loadHandlers();&quot;</span>&gt;</span>
&nbsp;
    <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">div</span> <span style="color: #000066;">class</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;toolbar&quot;</span>&gt;</span>
      <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">h1</span> <span style="color: #000066;">id</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;pageTitle&quot;</span>&gt;</span>Bluetooth Monitor<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">h1</span>&gt;</span>
      <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">a</span> <span style="color: #000066;">id</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;stopButton&quot;</span> <span style="color: #000066;">class</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;button&quot;</span> <span style="color: #000066;">href</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;#dummy&quot;</span> <span style="color: #000066;">style</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;display: inline;&quot;</span> </span>
<span style="color: #009900;">         <span style="color: #000066;">target</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;_self&quot;</span>&gt;</span>Stop<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">a</span>&gt;</span>
      <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">a</span> <span style="color: #000066;">id</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;customBackButton&quot;</span> <span style="color: #000066;">class</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;button&quot;</span> <span style="color: #000066;">href</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;/&quot;</span> <span style="color: #000066;">target</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;_self&quot;</span> </span>
<span style="color: #009900;">         <span style="color: #000066;">onClick</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;history.go((navigator.userAgent.indexOf('iPhone') &gt;</span></span> -1) ? 
         -2 : -1);return false;&quot;&gt;Back<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">a</span>&gt;</span>
      <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">a</span> <span style="color: #000066;">id</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;setupButton&quot;</span> <span style="color: #000066;">class</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;button&quot;</span> <span style="color: #000066;">href</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;#setup&quot;</span> <span style="color: #000066;">style</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;display: inline;&quot;</span> </span>
<span style="color: #009900;">        <span style="color: #000066;">target</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;_self&quot;</span>&gt;</span>Setup<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">a</span>&gt;</span> 
      <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">div</span>&gt;</span>
        <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">a</span> <span style="color: #000066;">id</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;setupChange&quot;</span> <span style="color: #000066;">class</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;button&quot;</span> <span style="color: #000066;">href</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;#dummy&quot;</span> </span>
<span style="color: #009900;">          <span style="color: #000066;">style</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;display: none; right: 72px;&quot;</span>&gt;</span>Change<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">a</span>&gt;</span> 
        <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">a</span> <span style="color: #000066;">id</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;setupCancel&quot;</span> <span style="color: #000066;">class</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;button&quot;</span> <span style="color: #000066;">href</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;#dummy&quot;</span> </span>
<span style="color: #009900;">          <span style="color: #000066;">style</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;display: none;&quot;</span>&gt;</span>Cancel<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">a</span>&gt;</span> 
      <span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">div</span>&gt;</span>
    <span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">div</span>&gt;</span>
&nbsp;
    <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">div</span> <span style="color: #000066;">id</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;properties&quot;</span> <span style="color: #000066;">class</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;panel&quot;</span> <span style="color: #000066;">title</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;Bluetooth Monitor&quot;</span> <span style="color: #000066;">selected</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;true&quot;</span>&gt;</span>
      <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">h2</span> <span style="color: #000066;">class</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;setupItem&quot;</span>&gt;</span>Log Monitor: 
      <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">span</span> <span style="color: #000066;">id</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;logMonitorStatus&quot;</span> <span style="color: #000066;">style</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;color: green;&quot;</span>&gt;</span>Active<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">span</span>&gt;&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">h2</span>&gt;</span> 
      <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">fieldset</span>&gt;</span>
        <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">div</span> <span style="color: #000066;">class</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;row&quot;</span> <span style="color: #000066;">style</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;text-align: left;&quot;</span>&gt;</span>
          <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">div</span> <span style="color: #000066;">id</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;logs&quot;</span>&gt;&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">div</span>&gt;</span>
        <span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">div</span>&gt;</span>
      <span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">fieldset</span>&gt;</span>
    <span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">div</span>&gt;</span> 
&nbsp;
    <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">div</span> <span style="color: #000066;">id</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;setup&quot;</span> <span style="color: #000066;">class</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;panel&quot;</span> <span style="color: #000066;">title</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;Setup&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&quot;</span>&gt;</span>
      <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">h2</span> <span style="color: #000066;">class</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;setupItem&quot;</span>&gt;</span>Log Fetch Intervals<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">h2</span>&gt;</span>
      <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">fieldset</span>&gt;</span>
        <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">div</span> <span style="color: #000066;">class</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;row&quot;</span> <span style="color: #000066;">style</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;text-align: left;&quot;</span>&gt;</span>
          <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">label</span> <span style="color: #000066;">class</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;setupItem&quot;</span>&gt;</span>Busy Timeout (ms.)<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">label</span>&gt;</span>
          <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">input</span> <span style="color: #000066;">type</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">'text'</span> <span style="color: #000066;">name</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">'busy_timeout'</span> <span style="color: #000066;">id</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">'busy_timeout_id'</span> </span>
<span style="color: #009900;">            <span style="color: #000066;">class</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;setupTextItem&quot;</span> </span>
<span style="color: #009900;">            <span style="color: #000066;">onChange</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;ibtmon.scheduleSetupChange(ibtmon.setBusyTimeout,this)&quot;</span> </span>
<span style="color: #009900;">            <span style="color: #000066;">value</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;1000&quot;</span> <span style="color: #000066;">tabindex</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;1&quot;</span> <span style="color: #66cc66;">/</span>&gt;&lt;<span style="color: #000000; font-weight: bold;">br</span> <span style="color: #66cc66;">/</span>&gt;</span>
          <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">label</span> <span style="color: #000066;">class</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;setupItem&quot;</span>&gt;</span>Idle Timeout (ms.)<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">label</span>&gt;</span>
          <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">input</span> <span style="color: #000066;">type</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">'text'</span> <span style="color: #000066;">name</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">'idle_timeout'</span> <span style="color: #000066;">id</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">'idle_timeout_id'</span> </span>
<span style="color: #009900;">            <span style="color: #000066;">class</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;setupTextItem&quot;</span> </span>
<span style="color: #009900;">            <span style="color: #000066;">onChange</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;ibtmon.scheduleSetupChange(ibtmon.setIdleTimeout,this)&quot;</span> </span>
<span style="color: #009900;">            <span style="color: #000066;">value</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;10000&quot;</span> <span style="color: #66cc66;">/</span>&gt;&lt;<span style="color: #000000; font-weight: bold;">br</span> <span style="color: #66cc66;">/</span>&gt;</span>
&nbsp;
        <span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">div</span>&gt;</span>
      <span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">fieldset</span>&gt;</span> 
      <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">h2</span> <span style="color: #000066;">class</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;setupItem&quot;</span>&gt;</span>Highlight Pattern in Log<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">h2</span>&gt;</span>
      <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">fieldset</span>&gt;</span>
        <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">div</span> <span style="color: #000066;">class</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;row&quot;</span> <span style="color: #000066;">style</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;text-align: left;&quot;</span>&gt;</span>
          <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">label</span> <span style="color: #000066;">class</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;setupItem&quot;</span>&gt;</span>Match Pattern<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">label</span>&gt;</span>
          <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">input</span> <span style="color: #000066;">type</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">'text'</span> <span style="color: #000066;">name</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">'match_pattern'</span> <span style="color: #000066;">id</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">'match_pattern_id'</span> </span>
<span style="color: #009900;">            <span style="color: #000066;">class</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;setupTextItem&quot;</span> </span>
<span style="color: #009900;">            <span style="color: #000066;">onChange</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;ibtmon.scheduleSetupChange(ibtmon.setMatchPattern,this);&quot;</span> </span>
<span style="color: #009900;">            <span style="color: #000066;">onFocus</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;this.value='';&quot;</span> <span style="color: #000066;">value</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;text-to-match&quot;</span> <span style="color: #66cc66;">/</span>&gt;&lt;<span style="color: #000000; font-weight: bold;">br</span> <span style="color: #66cc66;">/</span>&gt;</span>
          <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">label</span> <span style="color: #000066;">class</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;setupItem&quot;</span>&gt;</span>Match Color<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">label</span>&gt;</span>
          <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">input</span> <span style="color: #000066;">type</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">'text'</span> <span style="color: #000066;">name</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">'match_color'</span> <span style="color: #000066;">id</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">'match_color_id'</span> </span>
<span style="color: #009900;">            <span style="color: #000066;">class</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;setupTextItem&quot;</span> </span>
<span style="color: #009900;">            <span style="color: #000066;">onChange</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;ibtmon.scheduleSetupChange(ibtmon.setMatchColor,this);&quot;</span> </span>
&nbsp;
<span style="color: #009900;">            <span style="color: #000066;">value</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;FF0000&quot;</span> <span style="color: #66cc66;">/</span>&gt;&lt;<span style="color: #000000; font-weight: bold;">br</span> <span style="color: #66cc66;">/</span>&gt;</span>
        <span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">div</span>&gt;</span>
      <span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">fieldset</span>&gt;</span> 
      <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">div</span> <span style="color: #000066;">class</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;row&quot;</span> <span style="color: #000066;">style</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;text-align: left;&quot;</span>&gt;</span>
       <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">label</span> <span style="color: #000066;">class</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;setupItem&quot;</span>&gt;</span>Collect Logs<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">label</span>&gt;</span>
       <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">div</span> <span style="color: #000066;">class</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;toggle&quot;</span> </span>
<span style="color: #009900;">         <span style="color: #000066;">onclick</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;ibtmon.scheduleSetupChange(ibtmon.toggleActiveFlag,this);&quot;</span> </span>
<span style="color: #009900;">         <span style="color: #000066;">id</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;toggle_active_flag_id&quot;</span>&gt;&lt;<span style="color: #000000; font-weight: bold;">span</span> <span style="color: #000066;">class</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;thumb&quot;</span>&gt;&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">span</span>&gt;</span>
         <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">span</span> <span style="color: #000066;">class</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;toggleOn&quot;</span>&gt;</span>ON<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">span</span>&gt;&lt;<span style="color: #000000; font-weight: bold;">span</span> <span style="color: #000066;">class</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;toggleOff&quot;</span>&gt;</span>OFF<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">span</span>&gt;&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">div</span>&gt;</span>
      <span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">div</span>&gt;</span>
    <span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">div</span>&gt;</span>       
&nbsp;
  <span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-w