watchman 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
data/.gitignore ADDED
@@ -0,0 +1,3 @@
1
+ pkg/*
2
+ *.gem
3
+ .bundle
data/.rvmrc ADDED
@@ -0,0 +1,2 @@
1
+ rvm ree@watchman --create
2
+
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source :gemcutter
2
+
3
+ # Specify your gem's dependencies in watchman.gemspec
4
+ gemspec
data/Gemfile.lock ADDED
@@ -0,0 +1,32 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ watchman (0.0.2)
5
+ mechanize
6
+
7
+ GEM
8
+ remote: http://rubygems.org/
9
+ specs:
10
+ diff-lcs (1.1.2)
11
+ fakeweb (1.3.0)
12
+ mechanize (1.0.0)
13
+ nokogiri (>= 1.2.1)
14
+ nokogiri (1.4.4)
15
+ rspec (2.3.0)
16
+ rspec-core (~> 2.3.0)
17
+ rspec-expectations (~> 2.3.0)
18
+ rspec-mocks (~> 2.3.0)
19
+ rspec-core (2.3.1)
20
+ rspec-expectations (2.3.0)
21
+ diff-lcs (~> 1.1.2)
22
+ rspec-mocks (2.3.0)
23
+
24
+ PLATFORMS
25
+ ruby
26
+
27
+ DEPENDENCIES
28
+ bundler (>= 1.0.0.rc.6)
29
+ fakeweb
30
+ mechanize
31
+ rspec (>= 2.3.0)
32
+ watchman!
data/Rakefile ADDED
@@ -0,0 +1,10 @@
1
+ require 'bundler'
2
+ Bundler::GemHelper.install_tasks
3
+
4
+ require 'rspec'
5
+ require 'rspec/core/rake_task'
6
+
7
+ desc "Run all examples"
8
+ RSpec::Core::RakeTask.new(:spec) do |t|
9
+ t.rspec_opts = %w[--color]
10
+ end
data/lib/watchman.rb ADDED
@@ -0,0 +1,8 @@
1
+ require 'mechanize'
2
+
3
+ module Watchman
4
+ autoload :Client,"watchman/client"
5
+ autoload :MedicWatcher,"watchman/medic_watcher"
6
+ autoload :CallWatcher,"watchman/call_watcher"
7
+ autoload :Call,"watchman/call"
8
+ end
@@ -0,0 +1,65 @@
1
+ module Watchman
2
+ class Call
3
+ def initialize(page)
4
+ @page = page
5
+ end
6
+
7
+ def incident_number
8
+ end
9
+
10
+ def raw_notes
11
+ notes.map{|n| "#{n[:time]} #{n[:text]}"}.join("|")
12
+ end
13
+
14
+ def notes
15
+ xpath("/html/body/table/tr[3]/table/tr/td/table/tr").map do |node|
16
+ {:time=>node.children[0].text,:text=>node.children[1].text.gsub("\n","")}
17
+ end
18
+ end
19
+
20
+ def address
21
+ @page.links_with(:href=>/SearchDStatsSubmit\.php\?Address/).first.text.gsub(/-BC$/,"")
22
+ end
23
+
24
+ def incident_number
25
+ xpath("/html/body/h3[1]").text.split(":").last.strip
26
+ end
27
+
28
+ def nature
29
+ xpath("/html/body/table/tr[1]/td[1]/table/tr[3]/td").text.strip.split("-").last
30
+ end
31
+
32
+ def apparatus
33
+ xpath("/html/body/table/tr[1]/td[2]/table/tr/td[1]").map{|c| c.text.gsub("\n","").strip}
34
+ end
35
+
36
+ def pro_qa_notes
37
+ notes.select{|n| n[:text] =~ /^ProQA/}
38
+ end
39
+
40
+ def incidental_notes
41
+ notes.select{|n| n[:text] =~ /^\s*\*/}
42
+ end
43
+
44
+ def spliced_notes
45
+ s_notes = {}
46
+ notes.select{|n| n[:text] =~ /[\(\[]\d+-\d+[\)\]]$/}.each do |note|
47
+ note_text = note[:text]
48
+ note_text_arr = note_text.split(/\s/)
49
+ token = note_text_arr.delete_at(note_text_arr.size - 1)
50
+ final_text = note_text_arr.join(" ")
51
+ if s_notes[token].nil?
52
+ s_notes[token] = [{:time=>note[:time],:text=>final_text}]
53
+ else
54
+ s_notes[token] << {:time=>note[:time],:text=>final_text}
55
+ end
56
+ end
57
+ s_notes
58
+ end
59
+
60
+ private
61
+ def xpath(path)
62
+ @page.parser.xpath(path)
63
+ end
64
+ end
65
+ end
@@ -0,0 +1,16 @@
1
+ module Watchman
2
+ class CallWatcher
3
+
4
+ def initialize
5
+ @client = Client.new
6
+ end
7
+
8
+ def info_for(incident_number)
9
+ call = Call.new(@client.get("DisplayCall.php?Incid=#{incident_number}"))
10
+ if call.notes.size == 0
11
+ call = Call.new(@client.get("DisplayFireCall.php?Incid=#{incident_number}"))
12
+ end
13
+ call
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,33 @@
1
+ module Watchman
2
+ class Client
3
+ class << self
4
+ attr_accessor :username,:password,:host
5
+ end
6
+
7
+ def get(path)
8
+ agent.get("https://#{Client.host}/#{path}")
9
+ end
10
+
11
+ def agent
12
+ if @_agent.nil?
13
+ @_agent = Mechanize.new
14
+ page = @_agent.get("http://#{Client.host}/")
15
+ form = page.form("UserForm")
16
+ form.UserName = Client.username
17
+ form.Password = Client.password
18
+ @_agent.submit(form, form.buttons.first)
19
+ end
20
+ @_agent
21
+ end
22
+
23
+ def add_cookie(cookie,key)
24
+ cookie.secure = false
25
+ cookie.domain = Client.host
26
+ if agent.cookie_jar.jar[Client.host].nil?
27
+ agent.cookie_jar.jar[Client.host] = {"/"=>{key=>cookie}}
28
+ else
29
+ agent.cookie_jar.jar[Client.host]["/"][key] = cookie
30
+ end
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,48 @@
1
+ module Watchman
2
+ class MedicWatcher
3
+ STATUSI = ["AVL","DSP","ENR","TRN","ARV","AV1","INC","OFF","ONS","ORP","ENH","ONH","AOS","OOD","OOS","AAS"]
4
+
5
+ def initialize
6
+ @client = Client.new
7
+ end
8
+
9
+ def raw_page
10
+ page.parser.to_s
11
+ end
12
+
13
+ def page
14
+ if @_medic_page.nil?
15
+ @client.add_cookie(cookie,"TScreen")
16
+ @_medic_page = @client.get("AjaxTS2.php")
17
+ end
18
+ @_medic_page
19
+ end
20
+
21
+ def city_status
22
+ count(/TruckID=M(11|15|21|22|23)\d/,"AVL")
23
+ end
24
+
25
+ def county_status
26
+ count(/TruckID=M(11|13|15|21|22|23|24)\d/,"AVL")
27
+ end
28
+
29
+ def status_of(medic)
30
+ STATUSI.each do |status|
31
+ return status if count(/TruckID=M#{medic}/,status) >= 1
32
+ end
33
+ "OOS"
34
+ end
35
+
36
+ private
37
+
38
+ def cookie
39
+ Mechanize::Cookie.new("TScreen","4")
40
+ end
41
+
42
+ def count(regex,status = "AVL")
43
+ nodes = page.parser.css("a.#{status}")
44
+ nodes = nodes.map{|node| node.attributes["href"].value}.select{|val| val =~ regex}
45
+ nodes.size
46
+ end
47
+ end
48
+ end
@@ -0,0 +1,3 @@
1
+ module Watchman
2
+ VERSION = "0.0.3"
3
+ end
@@ -0,0 +1,10 @@
1
+ require "rubygems"
2
+ require "bundler/setup"
3
+ require 'watchman'
4
+ require 'fakeweb'
5
+
6
+ FakeWeb.allow_net_connect = false
7
+
8
+ # Requires supporting ruby files with custom matchers and macros, etc,
9
+ # in spec/support/ and its subdirectories.
10
+ Dir['./spec/support/**/*.rb'].map {|f| require f}
@@ -0,0 +1,1540 @@
1
+ class IstatusMocker
2
+
3
+ class << self
4
+ def fake_login(host)
5
+ FakeWeb.register_uri(:get, "http://#{host}/",
6
+ 'content-type'=>"text/html",
7
+ :body => LOGIN_PAGE_HTML)
8
+ FakeWeb.register_uri(:post,"http://#{host}/UserLoginSubmit.php",
9
+ 'content-type'=>"text/html",
10
+ :body => "logged in")
11
+ end
12
+
13
+ def fake_medic_path(host)
14
+ fake_login(host)
15
+ FakeWeb.register_uri(:get,"https://#{host}/AjaxTS2.php",
16
+ 'content-type'=>"text/html",
17
+ :body => MEDIC_PAGE_HTML)
18
+ end
19
+
20
+ def fake_call_path(host,incident_number)
21
+ fake_login(host)
22
+ FakeWeb.register_uri(:get,"https://#{host}/DisplayCall.php?Incid=#{incident_number}",
23
+ 'content-type'=>"text/html",
24
+ :body => INCIDENT_HTML)
25
+ end
26
+ end
27
+
28
+
29
+
30
+ LOGIN_PAGE_HTML = %Q{
31
+ <HTML>
32
+ <HEAD>
33
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
34
+ <!--<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">-->
35
+ <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=windows-1252">
36
+ <META HTTP-EQUIV="PRAGMA" CONTENT="NO-CACHE">
37
+ <META HTTP-EQUIV="EXPIRES" CONTENT="0">
38
+ <TITLE>EnRoute I-STATUS - Version 5.10</TITLE>
39
+ <LINK REL="stylesheet" HREF="DisplayFormat.css" TYPE="text/css">
40
+ <script language="javascript">
41
+ //bring the page to foreground
42
+ this.focus();
43
+ </script>
44
+ </HEAD>
45
+ <BODY CLASS="Maint" onLoad='document.UserForm.UserName.focus();' j=l>
46
+ <FORM NAME=UserForm METHOD=POST ACTION=UserLoginSubmit.php><BR><BR><CENTER><IMG SRC=I-STATUS.gif><BR><BR><BR><H3 CLASS=Status>User Login</H3><div align='center'><TABLE CLASS='Maint' >
47
+ <TR >
48
+ <TD CLASS='Maint' >
49
+ User Name</TD>
50
+ <TD CLASS='Maint' >
51
+ <INPUT TYPE=TEXT NAME=UserName onfocus=this.select() VALUE=></TD>
52
+ </TR>
53
+ <TR >
54
+ <TD CLASS='Maint' >
55
+ Password</TD>
56
+ <TD CLASS='Maint' >
57
+ <INPUT TYPE=PASSWORD NAME=Password onfocus=this.select() VALUE=></TD>
58
+ </TR>
59
+ </TABLE></div>
60
+ <BR><BR><INPUT TYPE=SUBMIT VALUE='Login' CLASS=Maint><BR><BR><BR><center>Copyright &#169; 2010 Infor. All rights reserved. <a target='new' href='http://www.enroute911.com'>www.enroute911.com</a>.</center></FORM>
61
+ </BODY>
62
+ </HTML>
63
+ }
64
+
65
+ MEDIC_PAGE_HTML = %Q{
66
+ <html><head>
67
+
68
+ <title>EnRoute I-STATUS - Version 5.10</title>
69
+ <meta content="text/html; charset=iso-8859-1" http-equiv="Content-Type">
70
+ <!-- MJG 2606995 remove EnRoute Banner from page to recover surface space. was Rows=60 changed to Rows = 0 to get space -->
71
+ </head><frameset border="0" framespacing="0" frameborder="no" rows="0,*,">
72
+ <frame scrolling="no" allowtransparency="true" frameborder="0" marginheight="0" marginwidth="0" noresize="" name="Topper" src="NewDispatchNav.php">
73
+ <html><head>
74
+
75
+
76
+ <!--<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">-->
77
+ <meta content="text/html; charset=windows-1252" http-equiv="Content-Type">
78
+ <meta content="NO-CACHE" http-equiv="PRAGMA">
79
+ <meta content="0" http-equiv="EXPIRES">
80
+ <title>EnRoute I-STATUS - Version 5.10</title>
81
+ <link type="text/css" href="DisplayFormat.css" rel="stylesheet">
82
+ <script language="javascript">
83
+ //bring the page to foreground
84
+ this.focus();
85
+ </script>
86
+ </head><body j="l" style="margin: 0px;" class="Nav">
87
+ <img hspace="0" height="60" align="left" src="I-STATUSLong1.jpg"><img width="100%" hspace="0" align="left" src="I-STATUSLong3.jpg">
88
+ <script language="javascript">
89
+ function ToggleMode() {
90
+ var cname="NiteMode";
91
+ var mode=ReadCookie(cname);
92
+ if (mode == "") mode="Day";
93
+ if (mode == "Day") {
94
+ var newmode="Nite";
95
+ } else {
96
+ var newmode="Day";
97
+ }
98
+ WriteCookie("NiteMode",newmode,1);
99
+ if (window.parent.frames.length == 0) {
100
+ window.self.location.href=window.self.location.href;
101
+ } else {
102
+ for (i=0; i&lt;window.parent.frames.length; i++)
103
+ window.parent.frames(i).location.href=window.parent.frames(i).location.href;
104
+ }
105
+ }
106
+
107
+ function popup(URL) {
108
+ opts="'toolbar=0, scrollbars=0, location=0, menubar=0, resizable=0, width=160,"
109
+ opts=opts + "height=200, top=60, left=60'"
110
+ mywindow=window.open(URL, "newwin",opts);
111
+ if (mywindow.opener == null)
112
+ mywindow.opener=self;
113
+ }
114
+
115
+ function RestrictZone(type) {
116
+ switch (type){
117
+ case 'AZ':
118
+ zones=ADZones.value;
119
+ allowstr="";
120
+ cookiename="ADZones";
121
+ break;
122
+ case 'AN':
123
+ zones=ADNats.value;
124
+ allowstr="";
125
+ cookiename="ADNats";
126
+ break;
127
+ case 'PZ':
128
+ zones=PDZones.value;
129
+ allowstr="";
130
+ cookiename="PDZones";
131
+ break;
132
+ case 'PD':
133
+ zones=PDIDs.value;
134
+ allowstr="";
135
+ cookiename="PDIDs";
136
+ break;
137
+ case 'PG':
138
+ zones=PDGrids.value;
139
+ allowstr="";
140
+ cookiename="PDGrids";
141
+ break;
142
+ case 'PN':
143
+ zones=PDNats.value;
144
+ allowstr="";
145
+ cookiename="PDNats";
146
+ break;
147
+ case 'FT':
148
+ zones=FDTacs.value;
149
+ allowstr="";
150
+ cookiename="FDTacs";
151
+ break;
152
+ case 'FD':
153
+ zones=FDIDs.value;
154
+ allowstr="";
155
+ cookiename="FDIDs";
156
+ break;
157
+ case 'FG':
158
+ zones=FDGrids.value;
159
+ allowstr="";
160
+ cookiename="FDGrids";
161
+ break;
162
+ case 'FN':
163
+ zones=FDNats.value;
164
+ allowstr="";
165
+ cookiename="FDNats";
166
+ break;
167
+ case 'DP':
168
+ zones=FDDsps.value;
169
+ allowstr="";
170
+ cookiename="FDDsps";
171
+ break;
172
+
173
+ case 'IB':
174
+ zones=ADInitBy.value;
175
+ allowstr="";
176
+ cookiename="ADInitBy";
177
+ break;
178
+ default:
179
+ zones="";
180
+ allowstr="";
181
+ cookiename="";
182
+ }
183
+ var allowed=allowstr;
184
+ var arrZones = new Array();
185
+ if (allowed)
186
+ allowed=allowed.replace(/^\s*|\s*$/g,"");
187
+ //Check if zones entered are allowed
188
+ if (allowed) {
189
+ var trash;
190
+ allowed=" "+allowed+" ";
191
+ arrZones=zones.split(" ");
192
+ //Loop thru each zone in user input
193
+ for (var i = (arrZones.length - 1); i &gt;= 0; i--) {
194
+ if (allowed.indexOf(" "+arrZones[i]+" ")&lt;0)
195
+ trash=arrZones.splice(i,1);
196
+ }
197
+ zones=arrZones.join(" ");
198
+ //If no zone left, retore the default
199
+ if (!zones) { zones=allowed.replace(/^\s*|\s*$/g,""); }
200
+ }
201
+ if (cookiename){
202
+ WriteCookie(cookiename,zones,1);
203
+ }
204
+ if (window.parent.frames.length == 0) {
205
+ window.self.location.href=window.self.location.href;
206
+ } else {
207
+ for (i=0; i&lt;window.parent.frames.length; i++)
208
+ window.parent.frames(i).location.href=window.parent.frames(i).location.href;
209
+ }
210
+ }
211
+
212
+ </script>
213
+
214
+ <script src="JSFuncs.js" language="JavaScript"></script>
215
+ <script language="JavaScript">
216
+ </script></body></html>
217
+ </frame>
218
+ <frame scrolling="no" allowtransparency="true" name="Top" noresize="" marginheight="0" marginwidth="0" frameborder="0" src="Dispatch_center.php">
219
+ <html><head><!-- Included file for dropdown menu -->
220
+ <script type="text/javascript">//&lt;![CDATA[
221
+ //----------------------------------------------------------------------------
222
+ // Code to determine the browser and version.
223
+ //----------------------------------------------------------------------------
224
+
225
+ function Browser() {
226
+ var ua, s, i;
227
+ this.isIE = false; // Internet Explorer
228
+ this.isOP = false; // Opera
229
+ this.isNS = false; // Netscape
230
+ this.version = null;
231
+ ua = navigator.userAgent;
232
+ s = "Opera";
233
+ if ((i = ua.indexOf(s)) &gt;= 0) {
234
+ this.isOP = true;
235
+ this.version = parseFloat(ua.substr(i + s.length));
236
+ return;
237
+ }
238
+ s = "Netscape6/";
239
+ if ((i = ua.indexOf(s)) &gt;= 0) {
240
+ this.isNS = true;
241
+ this.version = parseFloat(ua.substr(i + s.length));
242
+ return;
243
+ }
244
+
245
+ // Treat any other "Gecko" browser as Netscape 6.1.
246
+ s = "Gecko";
247
+ if ((i = ua.indexOf(s)) &gt;= 0) {
248
+ this.isNS = true;
249
+ this.version = 6.1;
250
+ return;
251
+ }
252
+
253
+ s = "MSIE";
254
+ if ((i = ua.indexOf(s))) {
255
+ this.isIE = true;
256
+ this.version = parseFloat(ua.substr(i + s.length));
257
+ return;
258
+ }
259
+ }
260
+
261
+ var browser = new Browser();
262
+
263
+ //----------------------------------------------------------------------------
264
+ // Code for handling the menu bar and active button.
265
+ //----------------------------------------------------------------------------
266
+ var activeButton = null;
267
+
268
+ // Capture mouse clicks on the page so any active button can be
269
+ // deactivated.
270
+ if (browser.isIE)
271
+ document.onmousedown = pageMousedown;
272
+ else
273
+ document.addEventListener("mousedown", pageMousedown, true);
274
+
275
+ function pageMousedown(event) {
276
+ var el;
277
+
278
+ // If there is no active button, exit.
279
+ if (activeButton == null)
280
+ return;
281
+
282
+ // Find the element that was clicked on.
283
+ if (browser.isIE)
284
+ el = window.event.srcElement;
285
+ else
286
+ el = (event.target.tagName ? event.target : event.target.parentNode);
287
+
288
+ // If the active button was clicked on, exit.
289
+ if (el == activeButton)
290
+ return;
291
+
292
+ // If the element is not part of a menu, reset and clear the active
293
+ // button.
294
+ if (getContainerWith(el, "DIV", "menu") == null) {
295
+ resetButton(activeButton);
296
+ activeButton = null;
297
+ }
298
+ }
299
+
300
+
301
+ function buttonClick(event, menuId) {
302
+ var button;
303
+
304
+ // Get the target button element.
305
+ if (browser.isIE)
306
+ button = window.event.srcElement;
307
+ else
308
+ button = event.currentTarget;
309
+
310
+ // Blur focus from the link to remove that annoying outline.
311
+ button.blur();
312
+
313
+ // Associate the named menu to this button if not already done.
314
+ // Additionally, initialize menu display.
315
+ if (button.menu == null) {
316
+ button.menu = document.getElementById(menuId);
317
+ if (button.menu.isInitialized == null)
318
+ menuInit(button.menu);
319
+ }
320
+
321
+ // Set mouseout event handler for the button, if not already done.
322
+ if (button.onmouseout == null)
323
+ button.onmouseout = buttonOrMenuMouseout;
324
+
325
+ // Exit if this button is the currently active one.
326
+ if (button == activeButton)
327
+ return false;
328
+
329
+ // Reset the currently active button, if any.
330
+ if (activeButton != null)
331
+ resetButton(activeButton);
332
+
333
+ // Activate this button, unless it was the currently active one.
334
+ if (button != activeButton) {
335
+ depressButton(button);
336
+ activeButton = button;
337
+ }
338
+ else
339
+ activeButton = null;
340
+
341
+ return false;
342
+ }
343
+
344
+ function buttonMouseover(event, menuId) {
345
+
346
+ var button;
347
+
348
+ if (activeButton == null) {
349
+ buttonClick(event, menuId);
350
+ return;
351
+ }
352
+
353
+ // Find the target button element.
354
+ if (browser.isIE)
355
+ button = window.event.srcElement;
356
+ else
357
+ button = event.currentTarget;
358
+
359
+ // If any other button menu is active, make this one active instead.
360
+ if (activeButton != null &amp;&amp; activeButton != button)
361
+ buttonClick(event, menuId);
362
+ }
363
+
364
+ function depressButton(button) {
365
+ var x, y;
366
+
367
+ // Update the button's style class to make it look like it's
368
+ // depressed.
369
+ button.className += " menuButtonActive";
370
+
371
+ // Set mouseout event handler for the button, if not already done.
372
+ if (button.onmouseout == null)
373
+ button.onmouseout = buttonOrMenuMouseout;
374
+ if (button.menu.onmouseout == null)
375
+ button.menu.onmouseout = buttonOrMenuMouseout;
376
+
377
+ // Position the associated drop down menu under the button and
378
+ // show it.
379
+ x = getPageOffsetLeft(button);
380
+ y = getPageOffsetTop(button) + button.offsetHeight;
381
+
382
+ // For IE, adjust position.
383
+ if (browser.isIE) {
384
+ x += button.offsetParent.clientLeft-5;
385
+ y += button.offsetParent.clientTop+3;
386
+ }
387
+
388
+ button.menu.style.left = x + "px";
389
+ button.menu.style.top = y + "px";
390
+ button.menu.style.visibility = "visible";
391
+
392
+ // For IE; size, position and show the menu's IFRAME as well.
393
+ if (button.menu.iframeEl != null)
394
+ {
395
+ button.menu.iframeEl.style.left = button.menu.style.left;
396
+ button.menu.iframeEl.style.top = button.menu.style.top;
397
+ button.menu.iframeEl.style.width = button.menu.offsetWidth + "px";
398
+ button.menu.iframeEl.style.height = button.menu.offsetHeight + "px";
399
+ button.menu.iframeEl.style.display = "";
400
+ }
401
+ }
402
+
403
+ function resetButton(button) {
404
+
405
+ // Restore the button's style class.
406
+ removeClassName(button, "menuButtonActive");
407
+
408
+ // Hide the button's menu, first closing any sub menus.
409
+ if (button.menu != null) {
410
+ closeSubMenu(button.menu);
411
+ button.menu.style.visibility = "hidden";
412
+
413
+ // For IE, hide menu's IFRAME as well.
414
+ if (button.menu.iframeEl != null)
415
+ button.menu.iframeEl.style.display = "none";
416
+ }
417
+ }
418
+
419
+ //----------------------------------------------------------------------------
420
+ // Code to handle the menus and sub menus.
421
+ //----------------------------------------------------------------------------
422
+
423
+ function menuMouseover(event) {
424
+
425
+ var menu;
426
+
427
+ // Find the target menu element.
428
+
429
+ if (browser.isIE)
430
+ menu = getContainerWith(window.event.srcElement, "DIV", "menu");
431
+ else
432
+ menu = event.currentTarget;
433
+
434
+ // Close any active sub menu.
435
+
436
+ if (menu.activeItem != null)
437
+ closeSubMenu(menu);
438
+ }
439
+
440
+ function menuItemMouseover(event, menuId) {
441
+ var item, menu, x, y;
442
+
443
+ // Find the target item element and its parent menu element.
444
+ if (browser.isIE)
445
+ item = getContainerWith(window.event.srcElement, "A", "menuItem");
446
+ else
447
+ item = event.currentTarget;
448
+ menu = getContainerWith(item, "DIV", "menu");
449
+
450
+ // Close any active sub menu and mark this one as active.
451
+ if (menu.activeItem != null)
452
+ closeSubMenu(menu);
453
+ menu.activeItem = item;
454
+
455
+ // Highlight the item element.
456
+ item.className += " menuItemHighlight";
457
+
458
+ // Initialize the sub menu, if not already done.
459
+ if (item.subMenu == null) {
460
+ item.subMenu = document.getElementById(menuId);
461
+ if (item.subMenu.isInitialized == null)
462
+ menuInit(item.subMenu);
463
+ }
464
+
465
+ // Set mouseout event handler for the sub menu, if not already done.
466
+ if (item.subMenu.onmouseout == null)
467
+ item.subMenu.onmouseout = buttonOrMenuMouseout;
468
+
469
+ // Get position for submenu based on the menu item.
470
+ x = getPageOffsetLeft(item) + item.offsetWidth;
471
+ y = getPageOffsetTop(item);
472
+
473
+ // Adjust position to fit in view.
474
+ var maxX, maxY;
475
+ if (browser.isIE) {
476
+ maxX = Math.max(document.documentElement.scrollLeft, document.body.scrollLeft) +
477
+ (document.documentElement.clientWidth != 0 ? document.documentElement.clientWidth : document.body.clientWidth);
478
+ maxY = Math.max(document.documentElement.scrollTop, document.body.scrollTop) +
479
+ (document.documentElement.clientHeight != 0 ? document.documentElement.clientHeight : document.body.clientHeight);
480
+ }
481
+ if (browser.isOP) {
482
+ maxX = document.documentElement.scrollLeft + window.innerWidth;
483
+ maxY = document.documentElement.scrollTop + window.innerHeight;
484
+ }
485
+ if (browser.isNS) {
486
+ maxX = window.scrollX + window.innerWidth;
487
+ maxY = window.scrollY + window.innerHeight;
488
+ }
489
+ maxX -= item.subMenu.offsetWidth;
490
+ maxY -= item.subMenu.offsetHeight;
491
+
492
+ if (x &gt; maxX)
493
+ x = Math.max(0, x - item.offsetWidth - item.subMenu.offsetWidth
494
+ + (menu.offsetWidth - item.offsetWidth));
495
+ y = Math.max(0, Math.min(y, maxY));
496
+
497
+ // Position and show the sub menu.
498
+ item.subMenu.style.left = x + "px";
499
+ item.subMenu.style.top = y + "px";
500
+ item.subMenu.style.visibility = "visible";
501
+
502
+ // For IE; size, position and display the menu's IFRAME as well.
503
+ if (item.subMenu.iframeEl != null)
504
+ {
505
+ item.subMenu.iframeEl.style.left = item.subMenu.style.left;
506
+ item.subMenu.iframeEl.style.top = item.subMenu.style.top;
507
+ item.subMenu.iframeEl.style.width = item.subMenu.offsetWidth + "px";
508
+ item.subMenu.iframeEl.style.height = item.subMenu.offsetHeight + "px";
509
+ item.subMenu.iframeEl.style.display = "";
510
+ }
511
+
512
+ // Stop the event from bubbling.
513
+ if (browser.isIE)
514
+ window.event.cancelBubble = true;
515
+ else
516
+ event.stopPropagation();
517
+ }
518
+
519
+ function closeSubMenu(menu) {
520
+ if (menu == null || menu.activeItem == null)
521
+ return;
522
+
523
+ // Recursively close any sub menus.
524
+ if (menu.activeItem.subMenu != null) {
525
+ closeSubMenu(menu.activeItem.subMenu);
526
+ menu.activeItem.subMenu.style.visibility = "hidden";
527
+
528
+ // For IE, hide the sub menu's IFRAME as well.
529
+ if (menu.activeItem.subMenu.iframeEl != null)
530
+ menu.activeItem.subMenu.iframeEl.style.display = "none";
531
+
532
+ menu.activeItem.subMenu = null;
533
+ }
534
+
535
+ // Deactivate the active menu item.
536
+ removeClassName(menu.activeItem, "menuItemHighlight");
537
+ menu.activeItem = null;
538
+ }
539
+
540
+ // event on buttons and menus.
541
+ function buttonOrMenuMouseout(event) {
542
+ var el;
543
+
544
+ // If there is no active button, exit.
545
+ if (activeButton == null)
546
+ return;
547
+
548
+ // Find the element the mouse is moving to.
549
+ if (browser.isIE)
550
+ el = window.event.toElement;
551
+ else if (event.relatedTarget != null)
552
+ el = (event.relatedTarget.tagName ? event.relatedTarget : event.relatedTarget.parentNode);
553
+
554
+ // If the element is not part of a menu, reset the active button.
555
+ if (getContainerWith(el, "DIV", "menu") == null) {
556
+ resetButton(activeButton);
557
+ activeButton = null;
558
+ }
559
+ }
560
+
561
+ //----------------------------------------------------------------------------
562
+ // Code to initialize menus.
563
+ //----------------------------------------------------------------------------
564
+ function menuInit(menu) {
565
+ var itemList, spanList;
566
+ var textEl, arrowEl;
567
+ var itemWidth;
568
+ var w, dw;
569
+ var i, j;
570
+
571
+ // For IE, replace arrow characters.
572
+ if (browser.isIE) {
573
+ menu.style.lineHeight = "2.5ex";
574
+ spanList = menu.getElementsByTagName("SPAN");
575
+ for (i = 0; i &lt; spanList.length; i++)
576
+ if (hasClassName(spanList[i], "menuItemArrow")) {
577
+ spanList[i].style.fontFamily = "Webdings";
578
+ spanList[i].firstChild.nodeValue = "4";
579
+ }
580
+ }
581
+
582
+ // Find the width of a menu item.
583
+ itemList = menu.getElementsByTagName("A");
584
+ if (itemList.length &gt; 0)
585
+ itemWidth = itemList[0].offsetWidth;
586
+ else
587
+ return;
588
+
589
+ // For items with arrows, add padding to item text to make the
590
+ // arrows flush right.
591
+ for (i = 0; i &lt; itemList.length; i++) {
592
+ spanList = itemList[i].getElementsByTagName("SPAN");
593
+ textEl = null;
594
+ arrowEl = null;
595
+ for (j = 0; j &lt; spanList.length; j++) {
596
+ if (hasClassName(spanList[j], "menuItemText"))
597
+ textEl = spanList[j];
598
+ if (hasClassName(spanList[j], "menuItemArrow"))
599
+ arrowEl = spanList[j];
600
+ }
601
+ if (textEl != null &amp;&amp; arrowEl != null) {
602
+ textEl.style.paddingRight = (itemWidth
603
+ - (textEl.offsetWidth + arrowEl.offsetWidth)) + "px";
604
+ // For Opera, remove the negative right margin to fix a display bug.
605
+ if (browser.isOP)
606
+ arrowEl.style.marginRight = "0px";
607
+ }
608
+ }
609
+
610
+ // Fix IE hover problem by setting an explicit width on first item of
611
+ // the menu.
612
+ if (browser.isIE) {
613
+ w = itemList[0].offsetWidth;
614
+ itemList[0].style.width = w + "px";
615
+ dw = itemList[0].offsetWidth - w;
616
+ w -= dw;
617
+ itemList[0].style.width = w + "px";
618
+ }
619
+
620
+ // Fix the IE display problem (SELECT elements and other windowed controls
621
+ // overlaying the menu) by adding an IFRAME under the menu.
622
+ if (browser.isIE) {
623
+ var iframeEl = document.createElement("IFRAME");
624
+ iframeEl.frameBorder = 0;
625
+ iframeEl.src = "javascript:;";
626
+ iframeEl.style.display = "none";
627
+ iframeEl.style.position = "absolute";
628
+ //iframeEl.style.filter = "progid:DXImageTransform.Microsoft.Alpha(style=0,opacity=0)";
629
+ menu.iframeEl = menu.parentNode.insertBefore(iframeEl, menu);
630
+ }
631
+
632
+ // Mark menu as initialized.
633
+ menu.isInitialized = true;
634
+ }
635
+
636
+ //----------------------------------------------------------------------------
637
+ // General utility functions.
638
+ //----------------------------------------------------------------------------
639
+ function getContainerWith(node, tagName, className) {
640
+ // Starting with the given node, find the nearest containing element
641
+ // with the specified tag name and style class.
642
+ while (node != null) {
643
+ if (node.tagName != null &amp;&amp; node.tagName == tagName &amp;&amp;
644
+ hasClassName(node, className))
645
+ return node;
646
+ node = node.parentNode;
647
+ }
648
+ return node;
649
+ }
650
+
651
+ function hasClassName(el, name) {
652
+ var i, list;
653
+ // Return true if the given element currently has the given class
654
+ // name.
655
+ list = el.className.split(" ");
656
+ for (i = 0; i &lt; list.length; i++)
657
+ if (list[i] == name)
658
+ return true;
659
+ return false;
660
+ }
661
+
662
+ function removeClassName(el, name) {
663
+ var i, curList, newList;
664
+ if (el.className == null)
665
+ return;
666
+
667
+ // Remove the given class name from the element's className property.
668
+ newList = new Array();
669
+ curList = el.className.split(" ");
670
+ for (i = 0; i &lt; curList.length; i++)
671
+ if (curList[i] != name)
672
+ newList.push(curList[i]);
673
+ el.className = newList.join(" ");
674
+ }
675
+
676
+ function getPageOffsetLeft(el) {
677
+ var x;
678
+ // Return the x coordinate of an element relative to the page.
679
+ x = el.offsetLeft;
680
+ if (el.offsetParent != null)
681
+ x += getPageOffsetLeft(el.offsetParent);
682
+ return x;
683
+ }
684
+
685
+ function getPageOffsetTop(el) {
686
+ var y;
687
+ // Return the x coordinate of an element relative to the page.
688
+ y = el.offsetTop;
689
+ if (el.offsetParent != null)
690
+ y += getPageOffsetTop(el.offsetParent);
691
+ return y;
692
+ }
693
+ //]]&gt;</script>
694
+ <style type="text/css">
695
+
696
+ div.menuBar,
697
+ div.menuBar a.menuButton,
698
+ div.menu,
699
+ div.menu a.menuItem {
700
+ font-family: Arial, "MS Sans Serif", sans-serif;
701
+ font-size: 10pt;
702
+ font-style: normal;
703
+ font-weight: normal;
704
+ color: #0066cc;
705
+ text-align: left;
706
+ }
707
+
708
+ div.menuBar {
709
+ background-color: #0066cc;
710
+ /*border: 2px outset #e0e0e0;*/
711
+ border: 0px;
712
+ border: 2px solid;
713
+ border-color: #0066cc #0066cc #0066cc #0066cc;
714
+ padding: 4px 2px 4px 2px;
715
+ text-align: left;
716
+ top: 0px;
717
+ left: 0px;
718
+ }
719
+
720
+ div.menuBar a.menuButton {
721
+ background-color: transparent;
722
+ border: 1px solid #0066cc;
723
+ color: #ffffff;
724
+ cursor: default;
725
+ left: 0px;
726
+ margin: 1px;
727
+ padding: 2px 6px 2px 6px;
728
+ position: relative;
729
+ text-decoration: none;
730
+ text-align: left;
731
+ top: 0px;
732
+ z-index: 100;
733
+ }
734
+ div.menuBar a.menuLink {
735
+ background-color: transparent;
736
+ font-family: Arial, "MS Sans Serif", sans-serif;
737
+ font-size: 10pt;
738
+ font-style: normal;
739
+ font-weight: normal;
740
+ color: #ffffff;
741
+ text-align: right;
742
+ text-decoration: none;
743
+ margin: 1px;
744
+ padding: 2px 6px 2px 6px;
745
+ /*width: 150px;*/
746
+ }
747
+
748
+ div.menuBar a.menuLink:hover {
749
+ background-color: 000080;
750
+ border: 1px outset #e0e0e0;
751
+ text-align:left;
752
+ color: #ffffff;
753
+ cursor: default;
754
+ }
755
+
756
+ div.menuBar a.menuButton:hover {
757
+ background-color: 000080;
758
+ border: 1px outset #e0e0e0;
759
+ text-align:left;
760
+ color: #ffffff;
761
+ }
762
+
763
+ div.menuBar a.menuButtonActive,
764
+ div.menuBar a.menuButtonActive:hover {
765
+ background-color: #0066cc;
766
+ /*border: 1px inset #e0e0e0;*/
767
+ color: #ffffff;
768
+ /*left: 1px;*/
769
+ /*top: 1px;*/
770
+ text-align: left;
771
+ }
772
+
773
+ div.menu {
774
+ background-color: #0066cc;
775
+ /*border: 2px outset #e0e0e0;*/
776
+ left: 0px;
777
+ padding: 0px 1px 1px 0px;
778
+ position: absolute;
779
+ top: 28px;
780
+ visibility: hidden;
781
+ z-index: 101;
782
+ text-align: left;
783
+ }
784
+
785
+ div.menu a.menuItem {
786
+ color: #ffffff;
787
+ cursor: default;
788
+ display: block;
789
+ padding: 3px 1em;
790
+ text-decoration: none;
791
+ text-align: left;
792
+ white-space: nowrap;
793
+ }
794
+
795
+ div.menu a.menuItem:hover, div.menu a.menuItemHighlight {
796
+ background-color: #000080;
797
+ color: #ffffff;
798
+ text-align: left;
799
+ }
800
+
801
+ div.menu a.menuItem span.menuItemText {}
802
+
803
+ div.menu a.menuItem span.menuItemArrow {
804
+ margin-right: -.75em;
805
+ }
806
+
807
+ div.menu div.menuItemSep {
808
+ border: 1px inset #e0e0e0;
809
+ margin: 4px 2px;
810
+ }
811
+ </style>
812
+
813
+ <meta content="text/html; charset=windows-1252" http-equiv="Content-Type"><meta content="NO-CACHE" http-equiv="PRAGMA"><meta content="0" http-equiv="EXPIRES"><title>EnRoute I-STATUS</title></head><body onload="ClearSortCookie(); SendRequest();" onunload="ClearTimer()"><div style="position: relative;" class="menuBar"><a onmouseover="buttonMouseover(event, 'FireMenu');" class="menuButton">Fire</a><a onmouseover="buttonMouseover(event, 'AdminMenu');" class="menuButton">Admin</a><a target="_top" href="UserLogin.php" onclick="LogOffClicked(&quot;UserKey&quot;)" class="menuButton">Logoff</a><span style="width: 150px;">&nbsp;</span><a href="#" onclick="ToggleMode()" onmouseover="" class="menuLink">Night Mode</a>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; "<img style="position: absolute; top: -3px;" src="I-STATUS1.gif"></div><div onmouseover="menuMouseover(event)" class="menu" id="AmbMenu"></div><div onmouseover="menuMouseover(event)" class="menu" id="FireMenu"><a target="Top" href="Dispatch_center.php" class="menuItem">Active Fire/EMS Calls</a> <a target="Top" href="TruckStatus.php" class="menuItem">Apparatus</a> <a target="Top" href="SearchDStats.php" class="menuItem">Fire/EMS History</a> <a target="Top" href="ChgQuarters.php" class="menuItem">Coverage/Quarters</a> <a target="Top" href="FireRestricts.php" class="menuItem">Restrictions</a> </div><div onmouseover="menuMouseover(event)" class="menu" id="PoliceMenu"></div><div onmouseover="menuMouseover(event)" class="menu" id="AdminMenu"><a target="Top" href="UserPasswordMaint.php" class="menuItem">Change Password</a></div><script language="javascript">
814
+ function popup(URL) {
815
+ opts="'toolbar=0, scrollbars=0, location=0, menubar=0, resizable=0, width=160,"
816
+ opts=opts + "height=200, top=60, left=60'"
817
+ mywindow=window.open(URL, "newwin",opts);
818
+ if (mywindow.opener == null)
819
+ mywindow.opener=self;
820
+ }
821
+ function LogOffClicked(CN)
822
+ {
823
+ var cookiename=CN;
824
+ /*alert("logoff clicked= " + cookiename);
825
+ if (isset($_COOKIE['cookiename'])){
826
+ alert("Cookie is set");
827
+ setcookie ("cookiename", "", time()-60*60*24*100);
828
+ }*/
829
+ DeleteCookie(cookiename);
830
+ }
831
+ function ToggleMode() {
832
+ var cname="NiteMode";
833
+ var mode=ReadCookie(cname);
834
+ if (mode == "") mode="Day";
835
+ if (mode == "Day") {
836
+ var newmode="Nite";
837
+ } else {
838
+ var newmode="Day";
839
+ }
840
+ WriteCookie(cname,newmode,1);
841
+ if (window.parent.frames.length == 0) {
842
+ window.self.location.href=window.self.location.href;
843
+ } else {
844
+ for (i=0; i&lt;window.parent.frames.length; i++)
845
+ window.parent.frames(i).location.href=window.parent.frames(i).location.href;
846
+ }
847
+ }
848
+ </script>
849
+ <script src="JSFuncs.js" language="JavaScript"></script><script language="javascript">
850
+ /// Function to return the value of a given cookie
851
+ function cookieVal(cookieName){
852
+ thisCookie=document.cookie.split("; ");
853
+ var rtnval="";
854
+ for (i=0; i&lt;thisCookie.length; i++){
855
+ if (cookieName == thisCookie[i].split("=")[0]){
856
+ rtnval=thisCookie[i].split("=")[1];
857
+ }
858
+ }
859
+ return rtnval;
860
+ }
861
+ </script>
862
+
863
+
864
+
865
+ <!--<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">-->
866
+
867
+
868
+
869
+
870
+ <link type="text/css" href="DisplayFormat.css" rel="stylesheet">
871
+
872
+ <form name="LEAD">
873
+ <input type="HIDDEN" value="30" name="RefreshInt">
874
+ <h4 id="shead" class="Status">Apparatus Status - Screen 4</h4>
875
+ <center><b>Status Legend:</b>&nbsp;
876
+ <span class="ENR"> ENR</span>&nbsp;
877
+ <span class="ONS"> ONS</span>&nbsp;
878
+ <span class="AVL"> AVL</span>&nbsp;
879
+ <span class="OOS"> OOS</span>&nbsp;
880
+ <span class="OOD"> OOD</span>&nbsp;
881
+ <span class="INC"> INC</span>&nbsp;
882
+ <span class="TRN"> TRN</span>&nbsp;
883
+ <span class="DSP"> DSP</span>&nbsp;
884
+ <span class="ARV"> At Hosp</span>&nbsp;
885
+ <span class="AAS"> AAS</span></center>
886
+
887
+ <div align="center" id="Scrollable" class="ScrollBody" style="height: 96px;"><div style="position: absolute; left: 280.5px;" id="Scrollable2"><span style="position: absolute; top: 0px; left: 235px; white-space: nowrap; font-size: x-small;" class=""><a target="Fire" class="" href="ApparatusDetail.php?TruckID=AMBULANCES ">AMBULANCES </a></span><span style="position: absolute; top: 275px; left: 10px; white-space: nowrap; font-size: x-small;" class=""><a target="Fire" class="" href="ApparatusDetail.php?TruckID=22 ELLIS FISCHEL ">22 ELLIS FISCHEL </a></span><span style="position: absolute; top: 300px; left: 10px; white-space: nowrap; font-size: x-small;" class=""><a target="Fire" class="" href="ApparatusDetail.php?TruckID=23 WOODRAIL CENTER ">23 WOODRAIL CENTER </a></span><span style="position: absolute; top: 325px; left: 10px; white-space: nowrap; font-size: x-small;" class=""><a target="Fire" class="" href="ApparatusDetail.php?TruckID=24 ASHLAND ">24 ASHLAND </a></span><span style="position: absolute; top: 250px; left: 315px; white-space: nowrap; font-size: x-small;" class=""><a target="Fire" class="" href="ApparatusDetail.php?TruckID=25 MIDWAY ">25 MIDWAY </a></span><span style="position: absolute; top: 275px; left: 315px; white-space: nowrap; font-size: x-small;" class=""><a target="Fire" class="" href="ApparatusDetail.php?TruckID=26 ROCHEPORT ">26 ROCHEPORT </a></span><span style="position: absolute; top: 50px; left: 160px; white-space: nowrap; font-size: x-small;" class="AVL"><a target="Fire" class="AVL" href="ApparatusDetail.php?TruckID=M111 ">M111 m</a></span><span style="position: absolute; top: 75px; left: 160px; white-space: nowrap; font-size: x-small;" class="OOS"><a target="Fire" class="OOS" href="ApparatusDetail.php?TruckID=M121 ">M121 </a></span><span style="position: absolute; top: 100px; left: 160px; white-space: nowrap; font-size: x-small;" class="AVL"><a target="Fire" class="AVL" href="ApparatusDetail.php?TruckID=M131 ">M131 m</a></span><span style="position: absolute; top: 125px; left: 160px; white-space: nowrap; font-size: x-small;" class="OOS"><a target="Fire" class="OOS" href="ApparatusDetail.php?TruckID=M141 ">M141 </a></span><span style="position: absolute; top: 50px; left: 460px; white-space: nowrap; font-size: x-small;" class="AVL"><a target="Fire" class="AVL" href="ApparatusDetail.php?TruckID=M151 ">M151 m</a></span><span style="position: absolute; top: 50px; left: 10px; white-space: nowrap; font-size: x-small;" class=""><a target="Fire" class="" href="ApparatusDetail.php?TruckID=11 VANDIVER ">11 VANDIVER </a></span><span style="position: absolute; top: 75px; left: 460px; white-space: nowrap; font-size: x-small;" class="OOS"><a target="Fire" class="OOS" href="ApparatusDetail.php?TruckID=M181 ">M181 </a></span><span style="position: absolute; top: 100px; left: 460px; white-space: nowrap; font-size: x-small;" class="OOS"><a target="Fire" class="OOS" href="ApparatusDetail.php?TruckID=M191 ">M191 </a></span><span style="position: absolute; top: 250px; left: 160px; white-space: nowrap; font-size: x-small;" class="AVL"><a target="Fire" class="AVL" href="ApparatusDetail.php?TruckID=M211 ">M211 m</a></span><span style="position: absolute; top: 275px; left: 160px; white-space: nowrap; font-size: x-small;" class="AVL"><a target="Fire" class="AVL" href="ApparatusDetail.php?TruckID=M221 ">M221 m</a></span><span style="position: absolute; top: 300px; left: 160px; white-space: nowrap; font-size: x-small;" class="AOS"><a target="Fire" class="AOS" href="ApparatusDetail.php?TruckID=M231 ">M231 m</a></span><span style="position: absolute; top: 325px; left: 160px; white-space: nowrap; font-size: x-small;" class="AVL"><a target="Fire" class="AVL" href="ApparatusDetail.php?TruckID=M241 ">M241 m</a></span><span style="position: absolute; top: 250px; left: 455px; white-space: nowrap; font-size: x-small;" class="OOS"><a target="Fire" class="OOS" href="ApparatusDetail.php?TruckID=M251 ">M251 </a></span><span style="position: absolute; top: 275px; left: 455px; white-space: nowrap; font-size: x-small;" class="OOS"><a target="Fire" class="OOS" href="ApparatusDetail.php?TruckID=M261 ">M261 </a></span><span style="position: absolute; top: 50px; left: 210px; white-space: nowrap; font-size: x-small;" class="OOS"><a target="Fire" class="OOS" href="ApparatusDetail.php?TruckID=M112 ">M112 </a></span><span style="position: absolute; top: 100px; left: 210px; white-space: nowrap; font-size: x-small;" class="OOS"><a target="Fire" class="OOS" href="ApparatusDetail.php?TruckID=M132 ">M132 </a></span><span style="position: absolute; top: 75px; left: 10px; white-space: nowrap; font-size: x-small;" class=""><a target="Fire" class="" href="ApparatusDetail.php?TruckID=12 PRATHERSVILLE ">12 PRATHERSVILLE </a></span><span style="position: absolute; top: 50px; left: 510px; white-space: nowrap; font-size: x-small;" class="OOS"><a target="Fire" class="OOS" href="ApparatusDetail.php?TruckID=M152 ">M152 </a></span><span style="position: absolute; top: 250px; left: 210px; white-space: nowrap; font-size: x-small;" class="OOS"><a target="Fire" class="OOS" href="ApparatusDetail.php?TruckID=M212 ">M212 m</a></span><span style="position: absolute; top: 325px; left: 210px; white-space: nowrap; font-size: x-small;" class="OOS"><a target="Fire" class="OOS" href="ApparatusDetail.php?TruckID=M242 ">M242 </a></span><span style="position: absolute; top: 50px; left: 260px; white-space: nowrap; font-size: x-small;" class="OOS"><a target="Fire" class="OOS" href="ApparatusDetail.php?TruckID=M113 ">M113 m</a></span><span style="position: absolute; top: 250px; left: 260px; white-space: nowrap; font-size: x-small;" class="OOS"><a target="Fire" class="OOS" href="ApparatusDetail.php?TruckID=M213 ">M213 </a></span><span style="position: absolute; top: 160px; left: 25px; white-space: nowrap; font-size: x-small;" class="AVL"><a target="Fire" class="AVL" href="ApparatusDetail.php?TruckID=EMS10 ">EMS10 </a></span><span style="position: absolute; top: 160px; left: 80px; white-space: nowrap; font-size: x-small;" class="OOS"><a target="Fire" class="OOS" href="ApparatusDetail.php?TruckID=EMS11 ">EMS11 </a></span><span style="position: absolute; top: 160px; left: 135px; white-space: nowrap; font-size: x-small;" class="OOS"><a target="Fire" class="OOS" href="ApparatusDetail.php?TruckID=EMS13 ">EMS13 </a></span><span style="position: absolute; top: 360px; left: 20px; white-space: nowrap; font-size: x-small;" class="OOS"><a target="Fire" class="OOS" href="ApparatusDetail.php?TruckID=EMS2 ">EMS2 </a></span><span style="position: absolute; top: 360px; left: 75px; white-space: nowrap; font-size: x-small;" class="AVL"><a target="Fire" class="AVL" href="ApparatusDetail.php?TruckID=EMS21 ">EMS21 </a></span><span style="position: absolute; top: 100px; left: 10px; white-space: nowrap; font-size: x-small;" class=""><a target="Fire" class="" href="ApparatusDetail.php?TruckID=13 CENTRALIA ">13 CENTRALIA </a></span><span style="position: absolute; top: 360px; left: 130px; white-space: nowrap; font-size: x-small;" class="OOS"><a target="Fire" class="OOS" href="ApparatusDetail.php?TruckID=EMS22 ">EMS22 </a></span><span style="position: absolute; top: 360px; left: 185px; white-space: nowrap; font-size: x-small;" class="AVL"><a target="Fire" class="AVL" href="ApparatusDetail.php?TruckID=EMS23 ">EMS23 </a></span><span style="position: absolute; top: 360px; left: 240px; white-space: nowrap; font-size: x-small;" class="OOS"><a target="Fire" class="OOS" href="ApparatusDetail.php?TruckID=EMS24 ">EMS24 </a></span><span style="position: absolute; top: 160px; left: 230px; white-space: nowrap; font-size: x-small;" class="OOS"><a target="Fire" class="OOS" href="ApparatusDetail.php?TruckID=MC115 ">MC115 </a></span><span style="position: absolute; top: 420px; left: 55px; white-space: nowrap; font-size: x-small;" class="AVL"><a target="Fire" class="AVL" href="ApparatusDetail.php?TruckID=H1 ">H1 </a></span><span style="position: absolute; top: 420px; left: 145px; white-space: nowrap; font-size: x-small;" class="AVL"><a target="Fire" class="AVL" href="ApparatusDetail.php?TruckID=H2 ">H2 </a></span><span style="position: absolute; top: 420px; left: 240px; white-space: nowrap; font-size: x-small;" class="OOS"><a target="Fire" class="OOS" href="ApparatusDetail.php?TruckID=H3 ">H3 </a></span><span style="position: absolute; top: 420px; left: 10px; white-space: nowrap; font-size: x-small;" class=""><a target="Fire" class="" href="ApparatusDetail.php?TruckID=Univ: ">Univ: </a></span><span style="position: absolute; top: 420px; left: 100px; white-space: nowrap; font-size: x-small;" class=""><a target="Fire" class="" href="ApparatusDetail.php?TruckID=Lake: ">Lake: </a></span><span style="position: absolute; top: 420px; left: 185px; white-space: nowrap; font-size: x-small;" class=""><a target="Fire" class="" href="ApparatusDetail.php?TruckID=Sedalia: ">Sedalia: </a></span><span style="position: absolute; top: 125px; left: 10px; white-space: nowrap; font-size: x-small;" class=""><a target="Fire" class="" href="ApparatusDetail.php?TruckID=14 STURGEON ">14 STURGEON </a></span><span style="position: absolute; top: 420px; left: 400px; white-space: nowrap; font-size: x-small;" class="OOS"><a target="Fire" class="OOS" href="ApparatusDetail.php?TruckID=MD10 ">MD10 </a></span><span style="position: absolute; top: 420px; left: 455px; white-space: nowrap; font-size: x-small;" class="OOS"><a target="Fire" class="OOS" href="ApparatusDetail.php?TruckID=MD20 ">MD20 </a></span><span style="position: absolute; top: 420px; left: 510px; white-space: nowrap; font-size: x-small;" class="OOS"><a target="Fire" class="OOS" href="ApparatusDetail.php?TruckID=MD21 ">MD21 </a></span><span style="position: absolute; top: 420px; left: 285px; white-space: nowrap; font-size: x-small;" class=""><a target="Fire" class="" href="ApparatusDetail.php?TruckID=Medical Directors: ">Medical Directors: </a></span><span style="position: absolute; top: 300px; left: 315px; white-space: nowrap; font-size: x-small;" class=""><a target="Fire" class="" href="ApparatusDetail.php?TruckID=27 KOMU ">27 KOMU </a></span><span style="position: absolute; top: 325px; left: 315px; white-space: nowrap; font-size: x-small;" class=""><a target="Fire" class="" href="ApparatusDetail.php?TruckID=28 AIRPORT ">28 AIRPORT </a></span><span style="position: absolute; top: 300px; left: 455px; white-space: nowrap; font-size: x-small;" class="OOS"><a target="Fire" class="OOS" href="ApparatusDetail.php?TruckID=M271 ">M271 </a></span><span style="position: absolute; top: 325px; left: 455px; white-space: nowrap; font-size: x-small;" class="OOS"><a target="Fire" class="OOS" href="ApparatusDetail.php?TruckID=M281 ">M281 </a></span><span style="position: absolute; top: 20px; left: 30px; white-space: nowrap; font-size: x-small;" class=""><a target="Fire" class="" href="ApparatusDetail.php?TruckID=BOONE AMBULANCE ">BOONE AMBULANCE </a></span><span style="position: absolute; top: 215px; left: 30px; white-space: nowrap; font-size: x-small;" class=""><a target="Fire" class="" href="ApparatusDetail.php?TruckID=UNIVERSITY AMBULANCE">UNIVERSITY AMBULANCE</a></span><span style="position: absolute; top: 50px; left: 315px; white-space: nowrap; font-size: x-small;" class=""><a target="Fire" class="" href="ApparatusDetail.php?TruckID=15 BOONE HOSPITAL ">15 BOONE HOSPITAL </a></span><span style="position: absolute; top: 50px; left: 140px; white-space: nowrap; font-size: x-small;" class=""><a target="Fire" class="" href="ApparatusDetail.php?TruckID=-- ">-- </a></span><span style="position: absolute; top: 250px; left: 140px; white-space: nowrap; font-size: x-small;" class=""><a target="Fire" class="" href="ApparatusDetail.php?TruckID=-- ">-- </a></span><span style="position: absolute; top: 50px; left: 440px; white-space: nowrap; font-size: x-small;" class=""><a target="Fire" class="" href="ApparatusDetail.php?TruckID=-- ">-- </a></span><span style="position: absolute; top: 275px; left: 140px; white-space: nowrap; font-size: x-small;" class=""><a target="Fire" class="" href="ApparatusDetail.php?TruckID=-- ">-- </a></span><span style="position: absolute; top: 300px; left: 140px; white-space: nowrap; font-size: x-small;" class=""><a target="Fire" class="" href="ApparatusDetail.php?TruckID=-- ">-- </a></span><span style="position: absolute; top: 75px; left: 315px; white-space: nowrap; font-size: x-small;" class=""><a target="Fire" class="" href="ApparatusDetail.php?TruckID=18 HWY 63 / I70 ">18 HWY 63 / I70 </a></span><span style="position: absolute; top: 100px; left: 315px; white-space: nowrap; font-size: x-small;" class=""><a target="Fire" class="" href="ApparatusDetail.php?TruckID=19 HALLSVILLE ">19 HALLSVILLE </a></span><span style="position: absolute; top: 250px; left: 10px; white-space: nowrap; font-size: x-small;" class=""><a target="Fire" class="" href="ApparatusDetail.php?TruckID=21 UNIVERSITY HOSP ">21 UNIVERSITY HOSP </a></span>
888
+ </div></div>
889
+ <!-- <br-->
890
+ <table width="100%" cellspacing="0" cellpadding="1" border="0" align="left">
891
+ <tbody><tr>
892
+ <th>Display Apparatus Screen #
893
+ <a onclick="TruckScreen(1);" href="#"><b><font color="#ff0000">1 </font></b></a>
894
+ <a onclick="TruckScreen(2);" href="#"><b><font color="#ff0000">2 </font></b></a>
895
+ <a onclick="TruckScreen(3);" href="#"><b><font color="#ff0000">3 </font></b></a>
896
+ <a onclick="TruckScreen(4);" href="#"><b><font color="#ff0000">4 </font></b></a>
897
+ <a onclick="TruckScreen(5);" href="#"><b><font color="#ff0000">5 </font></b></a>
898
+ <a onclick="TruckScreen(6);" href="#"><b><font color="#ff0000">6 </font></b></a>
899
+ <a onclick="TruckScreen(7);" href="#"><b><font color="#ff0000">7 </font></b></a>
900
+ <a onclick="TruckScreen(8);" href="#"><b><font color="#ff0000">8 </font></b></a>
901
+ <a onclick="TruckScreen(9);" href="#"><b><font color="#ff0000">9 </font></b></a>
902
+ <a onclick="TruckScreen(10);" href="#"><b><font color="#ff0000">10 </font></b></a>
903
+ <a onclick="TruckScreen(11);" href="#"><b><font color="#ff0000">11 </font></b></a>
904
+ <a onclick="TruckScreen(12);" href="#"><b><font color="#ff0000">12 </font></b></a>
905
+ <a onclick="TruckScreen(13);" href="#"><b><font color="#ff0000">13 </font></b></a>
906
+ <a onclick="TruckScreen(14);" href="#"><b><font color="#ff0000">14 </font></b></a>
907
+ <a onclick="TruckScreen(15);" href="#"><b><font color="#ff0000">15 </font></b></a>
908
+ </th>
909
+ </tr>
910
+ </tbody></table>
911
+ </form>
912
+ <script src="Ajax.js" language="javascript"></script>
913
+ <script language="javascript">
914
+ window.onresize = SetDivSize;
915
+ var instr;
916
+ var fdtacs=cookieVal("FDTacs");
917
+ var fdids=cookieVal("FDIDs");
918
+ var fdgrids=cookieVal("FDGrids");
919
+ var fdnats=cookieVal("FDNats");
920
+ var fddsps=cookieVal("FDDsps");
921
+
922
+ function SetDivSize(){
923
+ //center Scrollable2
924
+ var obj=document.getElementById("Scrollable2");
925
+ obj.style.left=(document.body.clientWidth-540)/2;
926
+
927
+ ht=document.body.clientHeight-d.offsetTop;
928
+ d.style.height=ht-60;
929
+ }
930
+
931
+ function TruckScreen(scrn){
932
+ WriteCookie("TScreen",scrn,"1");
933
+ SendRequest()
934
+ }
935
+ // Create a request for data
936
+ function CreateRequest(){
937
+ try {
938
+ request=new XMLHttpRequest();
939
+ } catch (trymicrosoft) {
940
+ try {
941
+ request = new ActiveXObject("Msxml2.XMLHTTP");
942
+ } catch (othermicrosoft) {
943
+ try {
944
+ request=new ActiveXObject("Microsoft.XMLHTTP");
945
+ } catch (failed) {
946
+ request=null;
947
+ }
948
+ }
949
+ }
950
+ if (request == null) alert("Error creating request object!");
951
+ }
952
+
953
+ // Send request for data to server
954
+ function SendRequest(){
955
+ CreateRequest();
956
+ if (request != null){
957
+ var url="AjaxTS2.php";
958
+ request.open("GET",url,true);
959
+ request.setRequestHeader("Content-Type","text/xml");
960
+ request.onreadystatechange=UpdatePage;
961
+ request.send(null);
962
+ }
963
+ RefreshTimer();
964
+ }
965
+
966
+ // Update page with returned data
967
+ function UpdatePage(){
968
+ rrs=request.readyState;
969
+ if (rrs == 4){
970
+ instr=request.responseText;
971
+ // If the instr contains "UserLogin.php", which means
972
+ // the page has timed out (code is in Global.php).
973
+ if (instr.indexOf("UserLogin.php") != -1) {
974
+ top.location="UserLogin.php";
975
+ }
976
+ BuildTable();
977
+ }
978
+ }
979
+
980
+ function BuildTable(){
981
+ var lctr;
982
+ var outstr = new StringBuffer();
983
+ var usort;
984
+ var leftMargin;
985
+ usort=cookieVal("TScreen");
986
+ if (usort == "") usort=1;
987
+
988
+ // Calculate left margin in order to center Scrollable2
989
+ leftMargin=(document.body.clientWidth-540)/2;
990
+ outstr.append('&lt;div id="Scrollable2" style="position:absolute; left:'+leftMargin+'px;"&gt;');
991
+ outstr.append(instr);
992
+ outstr.append('&lt;/div&gt;');
993
+ h=document.getElementById("shead");
994
+ h.innerHTML="Apparatus Status - Screen "+usort;
995
+ d=document.getElementById("Scrollable");
996
+ d.innerHTML=outstr;
997
+ ht=document.body.clientHeight-d.offsetTop;
998
+ d.style.height=ht-60;
999
+
1000
+ }
1001
+
1002
+ function ClearSortCookie(){
1003
+ WriteCookie("SortFlg","xx","7");
1004
+ }
1005
+ // This function expand or collapse the unit legends
1006
+ function DisplayLegends(id){
1007
+ var ih="";
1008
+ var cname="";
1009
+ var ft="";
1010
+ var fd="";
1011
+ var fg="";
1012
+ var fn="";
1013
+ var dp="";
1014
+
1015
+ switch (id){
1016
+ case "legend":
1017
+ ih="&lt;small&gt;"+"&lt;big&gt;-&lt;/big&gt; &lt;font color=#0066cc&gt;Primary&lt;/font&gt; &amp;nbsp; &amp;nbsp; "
1018
+ +"&lt;big&gt;*&lt;/big&gt; &lt;font color=#0066cc&gt;Two person&lt;/font&gt; &amp;nbsp; &amp;nbsp; "
1019
+ +"+ &lt;font color=#0066cc&gt;Primary and Two person&lt;/font&gt; &amp;nbsp; &amp;nbsp; "
1020
+ +"&lt;b&gt;m&lt;/b&gt; &lt;font color=#0066cc&gt;MDT&lt;/font&gt;"
1021
+ +"&lt;/small&gt;";
1022
+ cname="UnitLegends";
1023
+ break;
1024
+ case "restricts":
1025
+ ih="&lt;small&gt;&lt;font color=#FF0000&gt;";
1026
+ if (ft != ""){
1027
+ ih = ih + "Tacs: " + ft + "&lt;BR&gt;";
1028
+ }
1029
+ if (fd != ""){
1030
+ ih=ih + "FDIDs: "+fd + "&lt;BR&gt;";
1031
+ }
1032
+ if (fg != ""){
1033
+ ih=ih + "Grids: "+ fg + "&lt;BR&gt;";
1034
+ }
1035
+ if (fn != ""){
1036
+ ih=ih + "Natures: "+ fn + "&lt;BR&gt;";
1037
+ }
1038
+ if (dp != ""){
1039
+ ih=ih + "Dispatch: "+ dp + "&lt;BR&gt;";
1040
+ }
1041
+ ih=ih+"&lt;/font&gt;&lt;/small&gt;";
1042
+ cname="FDRestrictions";
1043
+ break;
1044
+ default:
1045
+ ih="";
1046
+ cname="";
1047
+ }
1048
+ if (ih != ""){
1049
+ if (document.getElementById(id).innerHTML == "") {
1050
+ document.getElementById(id).innerHTML=ih;
1051
+ WriteCookie(cname,"1",1);
1052
+ } else {
1053
+ document.getElementById(id).innerHTML="";
1054
+ WriteCookie(cname,"0",1);
1055
+ }
1056
+ }
1057
+ }
1058
+ </script>
1059
+ <script src="JSFuncs.js" language="JavaScript"></script>
1060
+ </body></html>
1061
+ </frame>
1062
+
1063
+ </frameset>
1064
+ <noframes>
1065
+ &lt;BODY &gt;
1066
+ A browser that supports frames is required for this application.
1067
+ &lt;/BODY&gt;
1068
+ </noframes>
1069
+ </html>
1070
+ }
1071
+
1072
+ INCIDENT_HTML = %Q{
1073
+
1074
+ <HTML>
1075
+ <HEAD>
1076
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
1077
+ <!--<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">-->
1078
+ <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=windows-1252">
1079
+ <META HTTP-EQUIV="PRAGMA" CONTENT="NO-CACHE">
1080
+ <META HTTP-EQUIV="EXPIRES" CONTENT="0">
1081
+ <TITLE>EnRoute I-STATUS - Version 5.10</TITLE>
1082
+ <LINK REL="stylesheet" HREF="DisplayFormat.css" TYPE="text/css">
1083
+ <script language="javascript">
1084
+ //bring the page to foreground
1085
+ this.focus();
1086
+ </script>
1087
+ </HEAD>
1088
+ <BODY CLASS="Detail" j=l>
1089
+ <H3 class="Status">Prior Fire Incident: 201023687</H3><table cellpadding="0" cellspacing="0" width="100%"><tr width="100%"><td valign="top" width="50%"><table cellpadding="0" cellspacing="0" width="100%"><tr><th class="Detail" align="left" width=$cw>Location</th><td class="Detail" align="left" colspan="3"><a href="SearchDStatsSubmit.php?Address=7750 HIGHWAY AB E-BC">7750 HIGHWAY AB E-BC</a></td></tr><tr><TH CLASS='Detail' align=left width=100px>
1090
+ Building</TH>
1091
+ <TD CLASS='Detail' COLSPAN=3>
1092
+ </TD>
1093
+ </tr><tr><TH CLASS='Detail' align=left width=100px>
1094
+ Nature</TH>
1095
+ <TD CLASS='Detail' COLSPAN=3>
1096
+ 69D9-SML NON DWEL STR FIRE</TD>
1097
+ </tr><tr><TH CLASS='Detail' align=left width=100px>
1098
+ Priority</TH>
1099
+ <TD CLASS='Detail' width=110px>
1100
+ 2</TD>
1101
+ <TH CLASS='Detail' align=left width=100px>
1102
+ Dispatch Code</TH>
1103
+ <TD CLASS='Detail' >
1104
+ BOX </TD>
1105
+ </tr><tr><TH CLASS='Detail' align=left>
1106
+ Grid</TH>
1107
+ <TD CLASS='Detail' width=110px>
1108
+ 34123B </TD>
1109
+ <TH CLASS='Detail' align=left width=100px>
1110
+ Map</TH>
1111
+ <TD CLASS='Detail' >
1112
+ </TD>
1113
+ </tr><tr><TH CLASS='Detail' align=left>
1114
+ Fire Area</TH>
1115
+ <td class="Detail" COLSPAN="3">19-17B </td></tr><tr><TH CLASS='Detail' align=left>
1116
+ Cross1</TH>
1117
+ <td class="Detail" COLSPAN="3">RANGELINE RD S</td></tr><tr><TH CLASS='Detail' align=left>
1118
+ Cross2</TH>
1119
+ <td class="Detail" COLSPAN="3">HIGHWAY 63 S SB</td></tr><tr><th class="Detail" align="left">Hyd1</th><td class="Detail" width=$dw></td><th class="Detail" align="left" width=$cw>Hyd2</th><td class="Detail"></td></tr><tr><td colspan="4"><hr color=navy></td></tr><tr><TH CLASS='Detail' align=left width=100px>
1120
+ Complainant</TH>
1121
+ <TD CLASS='Detail' colspan=3>
1122
+ JEROME</TD>
1123
+ </tr><tr><TH CLASS='Detail' align=left width=100px>
1124
+ Callback</TH>
1125
+ <TD CLASS='Detail' colspan=3>
1126
+ 5734410736</TD>
1127
+ </tr><tr><th class="Detail" align="left" width=$cw>Dispatcher</th><td class="Detail" width=$dw>AMS </td><th class="Detail" align="left" width=$cw>CallTaker</th><td class="Detail">ALL </td></tr><tr><TH CLASS='Detail' align=left width=100px>
1128
+ DispO</TH>
1129
+ <TD CLASS='Detail' >
1130
+ ND</TD>
1131
+ <TH CLASS='Detail' align=left width=100px>
1132
+ Meth. Alarm</TH>
1133
+ <TD CLASS='Detail' >
1134
+ 2 </TD>
1135
+ </tr><tr><td colspan="4"><hr color=navy></td></tr><tr><TH CLASS='Detail' align=left width=100px>
1136
+ Inc Date/Time</TH>
1137
+ <TD CLASS='Detail' colspan=3>
1138
+ 12/19/2010 14:15:05</TD>
1139
+ </tr><tr><TH CLASS='Detail' align=left width=100px>
1140
+ On Scene</TH>
1141
+ <TD CLASS='Detail' colspan=3>
1142
+ 12/19/2010 14:27:09</TD>
1143
+ </tr><tr><TH CLASS='Detail' align=left width=100px>
1144
+ Upgrade</TH>
1145
+ <TD CLASS='Detail' colspan=3>
1146
+ 00:00:00</TD>
1147
+ </tr><tr><TH CLASS='Detail' align=left width=100px>
1148
+ Pat Contact</TH>
1149
+ <TD CLASS='Detail' colspan=3>
1150
+ 01/01/1970 00:00:00</TD>
1151
+ </tr></table></td><td valign="top" align="center" width="50%"><table border="1" bordercolor="#76a5b6" cellpadding="0" cellspacing="0" width="90%"><TR >
1152
+ <TH CLASS='Detail' align=left>
1153
+ Apparatus</TH>
1154
+ <TH CLASS='Detail' align="center">
1155
+ DSP</TH>
1156
+ <TH CLASS='Detail' align="center">
1157
+ ENR</TH>
1158
+ <TH CLASS='Detail' align="center">
1159
+ ONS</TH>
1160
+ <TH CLASS='Detail' align="center">
1161
+ Tran</TH>
1162
+ <TH CLASS='Detail' align="center">
1163
+ OSH</TH>
1164
+ <TH CLASS='Detail' align="center">
1165
+ AVL</TH>
1166
+ </TR>
1167
+ <TR >
1168
+ <TD CLASS='Detail AVL' >
1169
+ E1701 </TD>
1170
+ <TD CLASS='Detail' align="center">
1171
+ 14:16:52</TD>
1172
+ <TD CLASS='Detail' align="center">
1173
+ 14:23:17</TD>
1174
+ <TD CLASS='Detail' align="center">
1175
+ 14:30:36</TD>
1176
+ <TD CLASS='Detail' align="center">
1177
+ 00:00:00</TD>
1178
+ <TD CLASS='Detail' align="center">
1179
+ 00:00:00</TD>
1180
+ <TD CLASS='Detail' align="center">
1181
+ 15:17:49</TD>
1182
+ </TR>
1183
+ <TR >
1184
+ <TD CLASS='Detail AVL' >
1185
+ E1901 </TD>
1186
+ <TD CLASS='Detail' align="center">
1187
+ 14:16:52</TD>
1188
+ <TD CLASS='Detail' align="center">
1189
+ 14:20:30</TD>
1190
+ <TD CLASS='Detail' align="center">
1191
+ 14:27:09</TD>
1192
+ <TD CLASS='Detail' align="center">
1193
+ 00:00:00</TD>
1194
+ <TD CLASS='Detail' align="center">
1195
+ 00:00:00</TD>
1196
+ <TD CLASS='Detail' align="center">
1197
+ 15:20:06</TD>
1198
+ </TR>
1199
+ <TR >
1200
+ <TD CLASS='Detail AVL' >
1201
+ M241 </TD>
1202
+ <TD CLASS='Detail' align="center">
1203
+ 14:16:52</TD>
1204
+ <TD CLASS='Detail' align="center">
1205
+ 14:20:16</TD>
1206
+ <TD CLASS='Detail' align="center">
1207
+ 14:27:51</TD>
1208
+ <TD CLASS='Detail' align="center">
1209
+ 00:00:00</TD>
1210
+ <TD CLASS='Detail' align="center">
1211
+ 00:00:00</TD>
1212
+ <TD CLASS='Detail' align="center">
1213
+ 14:32:56</TD>
1214
+ </TR>
1215
+ <TR >
1216
+ <TD CLASS='Detail AVL' >
1217
+ S1704 </TD>
1218
+ <TD CLASS='Detail' align="center">
1219
+ 14:16:52</TD>
1220
+ <TD CLASS='Detail' align="center">
1221
+ 14:25:25</TD>
1222
+ <TD CLASS='Detail' align="center">
1223
+ 00:00:00</TD>
1224
+ <TD CLASS='Detail' align="center">
1225
+ 00:00:00</TD>
1226
+ <TD CLASS='Detail' align="center">
1227
+ 00:00:00</TD>
1228
+ <TD CLASS='Detail' align="center">
1229
+ 14:33:08</TD>
1230
+ </TR>
1231
+ <TR >
1232
+ <TD CLASS='Detail AVL' >
1233
+ T1702 </TD>
1234
+ <TD CLASS='Detail' align="center">
1235
+ 14:16:52</TD>
1236
+ <TD CLASS='Detail' align="center">
1237
+ 00:00:00</TD>
1238
+ <TD CLASS='Detail' align="center">
1239
+ 00:00:00</TD>
1240
+ <TD CLASS='Detail' align="center">
1241
+ 00:00:00</TD>
1242
+ <TD CLASS='Detail' align="center">
1243
+ 00:00:00</TD>
1244
+ <TD CLASS='Detail' align="center">
1245
+ 14:33:37</TD>
1246
+ </TR>
1247
+ <TR >
1248
+ <TD CLASS='Detail AVL' >
1249
+ T1705 </TD>
1250
+ <TD CLASS='Detail' align="center">
1251
+ 14:16:52</TD>
1252
+ <TD CLASS='Detail' align="center">
1253
+ 14:26:14</TD>
1254
+ <TD CLASS='Detail' align="center">
1255
+ 00:00:00</TD>
1256
+ <TD CLASS='Detail' align="center">
1257
+ 00:00:00</TD>
1258
+ <TD CLASS='Detail' align="center">
1259
+ 00:00:00</TD>
1260
+ <TD CLASS='Detail' align="center">
1261
+ 14:33:29</TD>
1262
+ </TR>
1263
+ <TR >
1264
+ <TD CLASS='Detail AVL' >
1265
+ E1501 </TD>
1266
+ <TD CLASS='Detail' align="center">
1267
+ 14:22:27</TD>
1268
+ <TD CLASS='Detail' align="center">
1269
+ 14:24:20</TD>
1270
+ <TD CLASS='Detail' align="center">
1271
+ 14:28:19</TD>
1272
+ <TD CLASS='Detail' align="center">
1273
+ 00:00:00</TD>
1274
+ <TD CLASS='Detail' align="center">
1275
+ 00:00:00</TD>
1276
+ <TD CLASS='Detail' align="center">
1277
+ 15:09:11</TD>
1278
+ </TR>
1279
+ <TR >
1280
+ <TD CLASS='Detail AVL' >
1281
+ C1515 </TD>
1282
+ <TD CLASS='Detail' align="center">
1283
+ 14:23:49</TD>
1284
+ <TD CLASS='Detail' align="center">
1285
+ 00:00:00</TD>
1286
+ <TD CLASS='Detail' align="center">
1287
+ 14:23:55</TD>
1288
+ <TD CLASS='Detail' align="center">
1289
+ 00:00:00</TD>
1290
+ <TD CLASS='Detail' align="center">
1291
+ 00:00:00</TD>
1292
+ <TD CLASS='Detail' align="center">
1293
+ 15:09:23</TD>
1294
+ </TR>
1295
+ <TR >
1296
+ <TD CLASS='Detail AVL' >
1297
+ C1716 </TD>
1298
+ <TD CLASS='Detail' align="center">
1299
+ 14:24:44</TD>
1300
+ <TD CLASS='Detail' align="center">
1301
+ 14:24:48</TD>
1302
+ <TD CLASS='Detail' align="center">
1303
+ 14:32:09</TD>
1304
+ <TD CLASS='Detail' align="center">
1305
+ 00:00:00</TD>
1306
+ <TD CLASS='Detail' align="center">
1307
+ 00:00:00</TD>
1308
+ <TD CLASS='Detail' align="center">
1309
+ 15:20:47</TD>
1310
+ </TR>
1311
+ </table></td></tr><tr><td colspan="4"><hr color=navy></td></tr><tr><table cellpadding="1" cellspacing="0" width="100%"><tr><th class="Detail" align="left" width=$cw>Notes</th><td class="Detail" colspan=3"><table cellpadding="1" cellspacing="0" width="100%"><TR >
1312
+ <td class="Notes" valign="top" align="left">00:00:00 &nbsp;</td><TD CLASS='Notes' >
1313
+ <pre>UNIT TYPE DISPATCH RESPOND ON-SCENE TRANSPORT AT HOSP. AVAILABLE</pre></TD>
1314
+ </TR>
1315
+ <TR >
1316
+ <td class="Notes" valign="top" align="left">00:00:00 &nbsp;</td><TD CLASS='Notes' >
1317
+ <pre>------- ---- -------- -------- -------- --------- -------- --------</pre></TD>
1318
+ </TR>
1319
+ <TR >
1320
+ <td class="Notes" valign="top" align="left">00:00:00 &nbsp;</td><TD CLASS='Notes' >
1321
+ <pre>E1901 E 14:16:52 14:20:30 14:27:09 15:20:06</pre></TD>
1322
+ </TR>
1323
+ <TR >
1324
+ <td class="Notes" valign="top" align="left">00:00:00 &nbsp;</td><TD CLASS='Notes' >
1325
+ <pre>E1701 E 14:16:52 14:23:17 14:30:36 15:17:49</pre></TD>
1326
+ </TR>
1327
+ <TR >
1328
+ <td class="Notes" valign="top" align="left">00:00:00 &nbsp;</td><TD CLASS='Notes' >
1329
+ <pre>T1705 T 14:16:52 14:26:14 14:33:29</pre></TD>
1330
+ </TR>
1331
+ <TR >
1332
+ <td class="Notes" valign="top" align="left">00:00:00 &nbsp;</td><TD CLASS='Notes' >
1333
+ <pre>T1702 T 14:16:52 14:33:37</pre></TD>
1334
+ </TR>
1335
+ <TR >
1336
+ <td class="Notes" valign="top" align="left">00:00:00 &nbsp;</td><TD CLASS='Notes' >
1337
+ <pre>S1704 S 14:16:52 14:25:25 14:33:08</pre></TD>
1338
+ </TR>
1339
+ <TR >
1340
+ <td class="Notes" valign="top" align="left">00:00:00 &nbsp;</td><TD CLASS='Notes' >
1341
+ <pre>M241 M 14:16:52 14:20:16 14:27:51 14:32:56</pre></TD>
1342
+ </TR>
1343
+ <TR >
1344
+ <td class="Notes" valign="top" align="left">00:00:00 &nbsp;</td><TD CLASS='Notes' >
1345
+ <pre>E1501 E 14:22:27 14:24:20 14:28:19 15:09:11</pre></TD>
1346
+ </TR>
1347
+ <TR >
1348
+ <td class="Notes" valign="top" align="left">00:00:00 &nbsp;</td><TD CLASS='Notes' >
1349
+ <pre>C1515 C 14:23:49 14:23:55 15:09:23</pre></TD>
1350
+ </TR>
1351
+ <TR >
1352
+ <td class="Notes" valign="top" align="left">00:00:00 &nbsp;</td><TD CLASS='Notes' >
1353
+ <pre>C1716 C 14:24:44 14:24:48 14:32:09 15:20:47</pre></TD>
1354
+ </TR>
1355
+ <TR >
1356
+ <td class="Notes" valign="top" align="left">14:15:05 &nbsp;</td><TD CLASS='Notes' >
1357
+ Complainant: JEROME, Phone: 5734410736</TD>
1358
+ </TR>
1359
+ <TR >
1360
+ <td class="Notes" valign="top" align="left">14:15:05 &nbsp;</td><TD CLASS='Notes' >
1361
+ Response area: 19-17B</TD>
1362
+ </TR>
1363
+ <TR >
1364
+ <td class="Notes" valign="top" align="left">14:15:06 &nbsp;</td><TD CLASS='Notes' >
1365
+ *CITY: BC-BOONE COUNTY </TD>
1366
+ </TR>
1367
+ <TR >
1368
+ <td class="Notes" valign="top" align="left">14:15:59 &nbsp;</td><TD CLASS='Notes' >
1369
+ ProQAF Determinant Code: 69D6</TD>
1370
+ </TR>
1371
+ <TR >
1372
+ <td class="Notes" valign="top" align="left">14:15:59 &nbsp;</td><TD CLASS='Notes' >
1373
+ ProQAF Structure Fire. Residential</TD>
1374
+ </TR>
1375
+ <TR >
1376
+ <td class="Notes" valign="top" align="left">14:15:59 &nbsp;</td><TD CLASS='Notes' >
1377
+ ProQAF (single).Caller Statement: FIRE.</TD>
1378
+ </TR>
1379
+ <TR >
1380
+ <td class="Notes" valign="top" align="left">14:15:59 &nbsp;</td><TD CLASS='Notes' >
1381
+ Complainant name changed to JEROME in ProQAF</TD>
1382
+ </TR>
1383
+ <TR >
1384
+ <td class="Notes" valign="top" align="left">14:15:59 &nbsp;</td><TD CLASS='Notes' >
1385
+ ProQAF Number: 0010003115</TD>
1386
+ </TR>
1387
+ <TR >
1388
+ <td class="Notes" valign="top" align="left">14:16:50 &nbsp;</td><TD CLASS='Notes' >
1389
+ ProQAF (single).Caller Statement: FIRE. 6.No one</TD>
1390
+ </TR>
1391
+ <TR >
1392
+ <td class="Notes" valign="top" align="left">14:16:50 &nbsp;</td><TD CLASS='Notes' >
1393
+ ProQAF is trapped inside the structure.</TD>
1394
+ </TR>
1395
+ <TR >
1396
+ <td class="Notes" valign="top" align="left">14:16:51 &nbsp;</td><TD CLASS='Notes' >
1397
+ *NOTIFY CFD, CF2-WITT, CF3-MARTIN OF (00000174-160)</TD>
1398
+ </TR>
1399
+ <TR >
1400
+ <td class="Notes" valign="top" align="left">14:16:51 &nbsp;</td><TD CLASS='Notes' >
1401
+ *WORKING STRUCTURE FIRES (00000174-160)</TD>
1402
+ </TR>
1403
+ <TR >
1404
+ <td class="Notes" valign="top" align="left">14:16:52 &nbsp;</td><TD CLASS='Notes' >
1405
+ Fire service incident 201023687 (00000174-160)</TD>
1406
+ </TR>
1407
+ <TR >
1408
+ <td class="Notes" valign="top" align="left">14:17:04 &nbsp;</td><TD CLASS='Notes' >
1409
+ TAC CHANNEL BF1 ASSIGNED (00000174-160)</TD>
1410
+ </TR>
1411
+ <TR >
1412
+ <td class="Notes" valign="top" align="left">14:20:12 &nbsp;</td><TD CLASS='Notes' >
1413
+ OUT BUILDING ONFIRE (00000174-160)</TD>
1414
+ </TR>
1415
+ <TR >
1416
+ <td class="Notes" valign="top" align="left">14:20:16 &nbsp;</td><TD CLASS='Notes' >
1417
+ Unit M241 Pressed Enroute</TD>
1418
+ </TR>
1419
+ <TR >
1420
+ <td class="Notes" valign="top" align="left">14:21:02 &nbsp;</td><TD CLASS='Notes' >
1421
+ !***Nature changed via ProQAF From: </TD>
1422
+ </TR>
1423
+ <TR >
1424
+ <td class="Notes" valign="top" align="left">14:21:02 &nbsp;</td><TD CLASS='Notes' >
1425
+ !69D6-RES STR FIRE</TD>
1426
+ </TR>
1427
+ <TR >
1428
+ <td class="Notes" valign="top" align="left">14:21:02 &nbsp;</td><TD CLASS='Notes' >
1429
+ RCF ProQAF Determinant Code: 69D9</TD>
1430
+ </TR>
1431
+ <TR >
1432
+ <td class="Notes" valign="top" align="left">14:21:02 &nbsp;</td><TD CLASS='Notes' >
1433
+ RCF ProQAF Structure Fire. Small NON-DWELLING</TD>
1434
+ </TR>
1435
+ <TR >
1436
+ <td class="Notes" valign="top" align="left">14:21:02 &nbsp;</td><TD CLASS='Notes' >
1437
+ RCF ProQAF building/structure (shed, detached</TD>
1438
+ </TR>
1439
+ <TR >
1440
+ <td class="Notes" valign="top" align="left">14:21:02 &nbsp;</td><TD CLASS='Notes' >
1441
+ RCF ProQAF garage).Caller Statement: FIR. 6.No</TD>
1442
+ </TR>
1443
+ <TR >
1444
+ <td class="Notes" valign="top" align="left">14:21:02 &nbsp;</td><TD CLASS='Notes' >
1445
+ RCF ProQAF one is trapped inside the structure.</TD>
1446
+ </TR>
1447
+ <TR >
1448
+ <td class="Notes" valign="top" align="left">14:23:28 &nbsp;</td><TD CLASS='Notes' >
1449
+ T1705 TIMER SET TO 5 MINUTE(S) (00000174-160)</TD>
1450
+ </TR>
1451
+ <TR >
1452
+ <td class="Notes" valign="top" align="left">14:23:28 &nbsp;</td><TD CLASS='Notes' >
1453
+ T1702 TIMER SET TO 5 MINUTE(S) (00000174-160)</TD>
1454
+ </TR>
1455
+ <TR >
1456
+ <td class="Notes" valign="top" align="left">14:23:29 &nbsp;</td><TD CLASS='Notes' >
1457
+ S1704 TIMER SET TO 5 MINUTE(S) (00000174-160)</TD>
1458
+ </TR>
1459
+ <TR >
1460
+ <td class="Notes" valign="top" align="left">14:23:55 &nbsp;</td><TD CLASS='Notes' >
1461
+ C1515 went in command 14:23:55 (00000174-160)</TD>
1462
+ </TR>
1463
+ <TR >
1464
+ <td class="Notes" valign="top" align="left">14:24:06 &nbsp;</td><TD CLASS='Notes' >
1465
+ ProQAF garage).Caller Statement: FIR. 6.No one</TD>
1466
+ </TR>
1467
+ <TR >
1468
+ <td class="Notes" valign="top" align="left">14:24:17 &nbsp;</td><TD CLASS='Notes' >
1469
+ *SMALL FIVE BY FIVE OUTSIDE BUILDING (00000174-160)</TD>
1470
+ </TR>
1471
+ <TR >
1472
+ <td class="Notes" valign="top" align="left">14:24:17 &nbsp;</td><TD CLASS='Notes' >
1473
+ *SMOKE SHOWING (00000174-160)</TD>
1474
+ </TR>
1475
+ <TR >
1476
+ <td class="Notes" valign="top" align="left">14:27:51 &nbsp;</td><TD CLASS='Notes' >
1477
+ Unit M241 Pressed On scene</TD>
1478
+ </TR>
1479
+ <TR >
1480
+ <td class="Notes" valign="top" align="left">14:28:04 &nbsp;</td><TD CLASS='Notes' >
1481
+ Tactical channel changed from BF1 to (00000174-160)</TD>
1482
+ </TR>
1483
+ <TR >
1484
+ <td class="Notes" valign="top" align="left">14:28:04 &nbsp;</td><TD CLASS='Notes' >
1485
+ GLD (00000174-160)</TD>
1486
+ </TR>
1487
+ <TR >
1488
+ <td class="Notes" valign="top" align="left">14:28:12 &nbsp;</td><TD CLASS='Notes' >
1489
+ ALL UNITS REPORT TO GOLD (00000174-160)</TD>
1490
+ </TR>
1491
+ <TR >
1492
+ <td class="Notes" valign="top" align="left">14:28:57 &nbsp;</td><TD CLASS='Notes' >
1493
+ T1702 TIMER SET TO 5 MINUTE(S) (00000174-160)</TD>
1494
+ </TR>
1495
+ <TR >
1496
+ <td class="Notes" valign="top" align="left">14:32:49 &nbsp;</td><TD CLASS='Notes' >
1497
+ Mark Inc Under Ctrl updated from: 12/19/10 (00000174-160)</TD>
1498
+ </TR>
1499
+ <TR >
1500
+ <td class="Notes" valign="top" align="left">14:32:50 &nbsp;</td><TD CLASS='Notes' >
1501
+ 14:32:48 (00000174-160)</TD>
1502
+ </TR>
1503
+ <TR >
1504
+ <td class="Notes" valign="top" align="left">14:32:57 &nbsp;</td><TD CLASS='Notes' >
1505
+ Unit M241 Pressed Available</TD>
1506
+ </TR>
1507
+ <TR >
1508
+ <td class="Notes" valign="top" align="left">14:49:22 &nbsp;</td><TD CLASS='Notes' >
1509
+ C1515 TIMER SET TO 20 MINUTE(S) (00000174-160)</TD>
1510
+ </TR>
1511
+ <TR >
1512
+ <td class="Notes" valign="top" align="left">15:09:21 &nbsp;</td><TD CLASS='Notes' >
1513
+ C1515 W/ BCFPD RPRT (00000154-160)</TD>
1514
+ </TR>
1515
+ <TR >
1516
+ <td class="Notes" valign="top" align="left">15:20:15 &nbsp;</td><TD CLASS='Notes' >
1517
+ C1747 W/ SBCFPD RPRT (00000154-160)</TD>
1518
+ </TR>
1519
+ <TR >
1520
+ <td class="Notes" valign="top" align="left">15:20:49 &nbsp;</td><TD CLASS='Notes' >
1521
+ *Fire incident 201023687 closed (00000154-160)</TD>
1522
+ </TR>
1523
+ <TR >
1524
+ <td class="Notes" valign="top" align="left">15:20:49 &nbsp;</td><TD CLASS='Notes' >
1525
+ Report written for FDID 01004 201023687-00</TD>
1526
+ </TR>
1527
+ <TR >
1528
+ <td class="Notes" valign="top" align="left">15:20:49 &nbsp;</td><TD CLASS='Notes' >
1529
+ Report written for FDID 19011 201023687-00</TD>
1530
+ </TR>
1531
+ <TR >
1532
+ <td class="Notes" valign="top" align="left">15:20:49 &nbsp;</td><TD CLASS='Notes' >
1533
+ Report written for FDID 01001 201023687-00</TD>
1534
+ </TR>
1535
+ </table></td></tr></table></tr></table>
1536
+ </BODY>
1537
+ </HTML>
1538
+ <script language="javascript" src="JSFuncs.js"></script>
1539
+ }
1540
+ end