Index: /trunk/webapps/cptms.html
===================================================================
--- /trunk/webapps/cptms.html	(revision 340)
+++ /trunk/webapps/cptms.html	(revision 348)
@@ -48,11 +48,11 @@
         <input id='cmsID' value="" type='hidden'/>
         <div id="message-input">Phase 1:
-        <input id="msgcontent1" class="cms-input"  maxlength="16" type="text"/><br><br>
-        <input id="msgcontent2" class="cms-input"  maxlength="16" type="text"/><br><br>
-        <input id="msgcontent3" class="cms-input"  maxlength="16" type="text"/><br><br><br>
+        <input id="msgcontent1" class="cms-input"  maxlength="16" type="text" oninput="this.value = this.value.toUpperCase()"/><br><br>
+        <input id="msgcontent2" class="cms-input"  maxlength="16" type="text" oninput="this.value = this.value.toUpperCase()"/><br><br>
+        <input id="msgcontent3" class="cms-input"  maxlength="16" type="text" oninput="this.value = this.value.toUpperCase()"/><br><br><br>
         Phase 2:
-        <input id="msgcontent4" class="cms-input"  maxlength="16" type="text"/><br><br>
-        <input id="msgcontent5" class="cms-input"  maxlength="16" type="text"/><br><br>
-        <input id="msgcontent6" class="cms-input"  maxlength="16" type="text"/><br><br>
+        <input id="msgcontent4" class="cms-input"  maxlength="16" type="text" oninput="this.value = this.value.toUpperCase()"/><br><br>
+        <input id="msgcontent5" class="cms-input"  maxlength="16" type="text" oninput="this.value = this.value.toUpperCase()"/><br><br>
+        <input id="msgcontent6" class="cms-input"  maxlength="16" type="text" oninput="this.value = this.value.toUpperCase()"/><br><br>
         </div>        
         <div id="buttonPanel"    style="display: block;"><br><br>
@@ -77,5 +77,5 @@
         <input id='harID' value="" type='hidden'/>
         <!--div id="har-message-input"-->Proposed:<br>
-        <input id="har-msgcontent1" class="har-input" type="text" size="50"><br>
+        <input id="har-msgcontent1" class="har-input" type="text" size="50" oninput="this.value = this.value.toUpperCase()"><br>
         <!--textarea id="har-msgcontent1" maxlength="150" rows="2" cols="50"/><br><br-->
 
Index: /trunk/webapps/gototime.html
===================================================================
--- /trunk/webapps/gototime.html	(revision 348)
+++ /trunk/webapps/gototime.html	(revision 348)
@@ -0,0 +1,91 @@
+<html>
+<head>
+<style>
+.pic-container {
+    width: 500px;
+    height: 400px;
+    overflow-y: scroll;
+    overflow-x:hidden;
+}
+</style>
+<body>
+<!-- Prototype for a display that scrolls to the current time -->
+<div id="timediv">0:00</div>
+<div> <button onclick="scrollToCurrent()">Goto Current Item</button></div>
+<div id="main" class="pic-container"></div>
+<div id="two">Footer</div>
+<script   src="poem.js"></script>
+<script  src="js/common.js"></script>
+<script>
+var timeDiv = document.getElementById("timediv");
+/** Load the sim clock file and extract the clock string */
+function gettime()
+{
+    loadJSON("sim_clock.json", function(response)
+    {
+        simclockjson = JSON.parse(response);
+        clockstring = simclockjson.clock;
+        timeDiv.innerHTML = clockstring;  // Display current time
+        // Extract the seconds digits
+        digits = clockstring.substring(clockstring.length-2)
+        if (digits.charAt(0) == "0")
+        {
+            digits = digits.charAt(1);
+        }
+        // go adjust the scrolling box
+        adjust(digits);
+    });
+}
+// Highlight the current line and scroll to it.
+function adjust(currLine)
+{
+    if (currElement != null)
+    {
+        // Find the element with the id = seconds digits
+        target = document.getElementById(currLine)
+        if (target != null)
+        {
+            // restore the previous element's background color
+            currElement.style.background = "GhostWhite";
+            currElement = target;
+            currElement.style.background = "Gainsboro"; // set background color
+            //currElement.scrollTop = 0;
+            currElement.scrollIntoView();  // scroll to it
+        }
+    }
+}
+
+function scrollToCurrent()
+{
+    currTime = timediv.innerHTML;
+    target = document.getElementById(currTime)
+    target.scrollIntoView();  // scroll to it
+    target.style.background = "Gainsboro"; // set background color
+}
+// Split a poem into lines
+var fields = poem.split('\n');
+// Place each line in its own DIV with a sequential ID
+for (item in fields)
+{
+    var div = document.createElement("div");
+    var measuredTime = new Date(null);
+    measuredTime.setSeconds(item*5); // specify value of SECONDS
+    var MHSTime = measuredTime.toISOString().substr(12, 7);
+    div.id=MHSTime
+    div.style.color = "black";
+    div.style.background = "GhostWhite";
+    div.innerHTML = fields[item]; // place poem line as content
+    // Append it to the parent div
+    document.getElementById("main").appendChild(div);
+}
+
+var currLine = 1;
+var currElement = document.getElementById("10");
+// Go get the current sim time every second
+var myinterval = setInterval(gettime,1000);
+//clearTimeout(myVar);
+ 
+</script>
+</body>
+
+</html>
Index: /trunk/webapps/runTimer.py
===================================================================
--- /trunk/webapps/runTimer.py	(revision 348)
+++ /trunk/webapps/runTimer.py	(revision 348)
@@ -0,0 +1,21 @@
+#!/usr/bin/python
+# Run a timer and save it to a file
+import time
+from datetime import timedelta
+count = 0
+while True:
+    # Code executed here
+    time.sleep(1)
+    count += 1
+    elapsedTime = timedelta(seconds=count)
+    # convert integer into hh:mm:ss format
+    lineout =  "{\"clock\":\"" + str(elapsedTime) + "\"}"
+    
+    # write message to file
+    text_file = open("sim_clock.json", "w")
+    text_file.write(lineout)
+    text_file.close()
+
+    print count
+
+
Index: /trunk/webapps/showtime.html
===================================================================
--- /trunk/webapps/showtime.html	(revision 348)
+++ /trunk/webapps/showtime.html	(revision 348)
@@ -0,0 +1,25 @@
+<html>
+<body>
+<div id="timediv">0:00</div>
+<div id="main"></div>
+<div id="label">One</div>
+    <script  src="js/common.js"></script>
+<script>
+var timeDiv = document.getElementById("timediv");
+var labelDiv = document.getElementById("label");
+function gettime()
+{
+        loadJSON("sim_clock.json", function(response)
+        {
+           simclockjson = JSON.parse(response);
+           clockstring = simclockjson.clock;
+           timeDiv.innerHTML = clockstring;
+           digit = clockstring.charAt(clockstring.length-1)
+           labelDiv.innerHTML = digit
+        });
+}
+var myinterval = setInterval(gettime,1000);
+</script>
+</body>
+
+</html>
Index: /trunk/webapps/sample_events.xml
===================================================================
--- /trunk/webapps/sample_events.xml	(revision 348)
+++ /trunk/webapps/sample_events.xml	(revision 348)
@@ -0,0 +1,102 @@
+<incidents>
+<event><time>0:00:00</time><description>Now we will count to twelve</description></event>
+<event><time>0:00:10</time><description>and we will all keep still</description></event>
+<event><time>0:00:20</time><description>For once on the face of the earth,</description></event>
+<event><time>0:00:30</time><description>let's stop for a second,</description></event>
+<event><time>0:00:40</time><description>and not move our arms so much.</description></event>
+<event><time>0:00:50</time><description>It would be an exotic moment</description></event>
+<event><time>0:01:00</time><description>without rush, without engines;</description></event>
+<event><time>0:01:10</time><description>we would all be together</description></event>
+<event><time>0:01:20</time><description>in a sudden strangeness.</description></event>
+<event><time>0:01:30</time><description>Fisherman in the cold sea</description></event>
+<event><time>0:01:40</time><description>would not harm whales</description></event>
+<event><time>0:01:50</time><description>and the man gathering salt</description></event>
+<event><time>0:02:00</time><description>would not look at his hurt hands.</description></event>
+<event><time>0:02:10</time><description>Those who prepare green wars,</description></event>
+<event><time>0:02:20</time><description>wars with gas, wars with fire,</description></event>
+<event><time>0:02:30</time><description>victories with no survivors,</description></event>
+<event><time>0:02:40</time><description>would put on clean clothes</description></event>
+<event><time>0:02:50</time><description>and walk about with their brothers</description></event>
+<event><time>0:03:00</time><description>in the shade, doing nothing.</description></event>
+<event><time>0:03:10</time><description>What I want should not be confused</description></event>
+<event><time>0:03:20</time><description>with total inactivity.</description></event>
+<event><time>0:03:30</time><description>Life is what it is about;...</description></event>
+<event><time>0:03:40</time><description>If we were not so single-minded</description></event>
+<event><time>0:03:50</time><description>about keeping our lives moving,</description></event>
+<event><time>0:04:00</time><description>and for once could do nothing,</description></event>
+<event><time>0:04:10</time><description>perhaps a huge silence</description></event>
+<event><time>0:04:20</time><description>might interrupt this sadness</description></event>
+<event><time>0:04:30</time><description>of never understanding ourselves</description></event>
+<event><time>0:04:40</time><description>and of threatening ourselves with death.</description></event>
+<event><time>0:04:50</time><description>Perhaps the earth can teach us</description></event>
+<event><time>0:05:00</time><description>as when everything seems dead in winter</description></event>
+<event><time>0:05:10</time><description>and later proves to be alive.</description></event>
+<event><time>0:05:20</time><description>Now I'll count up to twelve</description></event>
+<event><time>0:05:30</time><description>and you keep quiet and I will go.</description></event>
+<event><time>0:05:40</time><description>Something</description></event>
+<event><time>0:05:50</time><description>just now</description></event>
+<event><time>0:06:00</time><description>moved through my heart</description></event>
+<event><time>0:06:10</time><description>like the thinnest of blades</description></event>
+<event><time>0:06:20</time><description>as that red-tail pumped</description></event>
+<event><time>0:06:30</time><description>once with its great wings</description></event>
+<event><time>0:06:40</time><description>and flew above the gray, cracked</description></event>
+<event><time>0:06:50</time><description>rock wall.</description></event>
+<event><time>0:07:00</time><description>It wasn't</description></event>
+<event><time>0:07:10</time><description>about the bird, it was</description></event>
+<event><time>0:07:20</time><description>something about the way</description></event>
+<event><time>0:07:30</time><description>stone stays</description></event>
+<event><time>0:07:40</time><description>mute and put, whatever</description></event>
+<event><time>0:07:50</time><description>goes flashing by.</description></event>
+<event><time>0:08:00</time><description>Sometimes,</description></event>
+<event><time>0:08:10</time><description>when I sit like this, quiet,</description></event>
+<event><time>0:08:20</time><description>all the dreams of my blood</description></event>
+<event><time>0:08:30</time><description>and all outrageous divisions of time</description></event>
+<event><time>0:08:40</time><description>seem ready to leave,</description></event>
+<event><time>0:08:50</time><description>to slide out of me.</description></event>
+<event><time>0:09:00</time><description>Then, I imagine, I would never move.</description></event>
+<event><time>0:09:10</time><description>By now</description></event>
+<event><time>0:09:20</time><description>the hawk has flown five miles</description></event>
+<event><time>0:09:30</time><description>at least,</description></event>
+<event><time>0:09:40</time><description>dazzling whoever else has happened</description></event>
+<event><time>0:09:50</time><description>to look up.</description></event>
+<event><time>0:10:00</time><description>I was dazzled. But that</description></event>
+<event><time>0:10:10</time><description>wasn't the knife.</description></event>
+<event><time>0:10:20</time><description>It was the sheer, dense wall</description></event>
+<event><time>0:10:30</time><description>of blind stone</description></event>
+<event><time>0:10:40</time><description>without a pinch of hope</description></event>
+<event><time>0:10:50</time><description>or a single unfulfilled desire</description></event>
+<event><time>0:11:00</time><description>sponging up and reflecting,</description></event>
+<event><time>0:11:10</time><description>so brilliantly,</description></event>
+<event><time>0:11:20</time><description>as it has for centuries,</description></event>
+<event><time>0:11:30</time><description>the sun's fire.</description></event>
+<event><time>0:11:40</time><description>An eagle's nest on the head of an old redwood on one of the</description></event>
+<event><time>0:11:50</time><description>precipice-footed ridges</description></event>
+<event><time>0:12:00</time><description>Above Ventana Creek, that jagged country which nothing but a</description></event>
+<event><time>0:12:10</time><description>falling meteor will ever plow; no horseman</description></event>
+<event><time>0:12:20</time><description>Will ever ride there, no hunter cross this ridge but the winged</description></event>
+<event><time>0:12:30</time><description>ones, no one will steal the eggs from this fortress.</description></event>
+<event><time>0:12:40</time><description>The she-eagle is old, her mate was shot long ago, she is now mated</description></event>
+<event><time>0:12:50</time><description>with a son of hers.</description></event>
+<event><time>0:13:00</time><description>When lightning blasted her nest she built it again on the same</description></event>
+<event><time>0:13:10</time><description>tree, in the splinters of the thunderbolt.</description></event>
+<event><time>0:13:20</time><description>The she-eagle is older than I; she was here when the fires of</description></event>
+<event><time>0:13:30</time><description>eighty-five raged on these ridges,</description></event>
+<event><time>0:13:40</time><description>She was lately fledged and dared not hunt ahead of them but ate</description></event>
+<event><time>0:13:50</time><description>scorched meat. The world has changed in her time;</description></event>
+<event><time>0:14:00</time><description>Humanity has multiplied, but not here; men's hopes and thoughts</description></event>
+<event><time>0:14:10</time><description>and customs have changed, their powers are enlarged,</description></event>
+<event><time>0:14:20</time><description>Their powers and their follies have become fantastic,</description></event>
+<event><time>0:14:30</time><description>The unstable animal never has been changed so rapidly. The</description></event>
+<event><time>0:14:40</time><description>motor and the plane and the great war have gone over him,</description></event>
+<event><time>0:14:50</time><description>And Lenin has lived and Jehovah died: while the mother-eagle</description></event>
+<event><time>0:15:00</time><description>Hunts her same hills, crying the same beautiful and lonely cry and</description></event>
+<event><time>0:15:10</time><description>is never tired; dreams the same dreams,</description></event>
+<event><time>0:15:20</time><description>And hears at night the rock-slides rattle and thunder in the throats</description></event>
+<event><time>0:15:30</time><description>of these living mountains.</description></event>
+<event><time>0:15:40</time><description>It is good for man</description></event>
+<event><time>0:15:50</time><description>To try all changes, progress and corruption, powers, peace and</description></event>
+<event><time>0:16:00</time><description>anguish, not to go down the dinosaur's way</description></event>
+<event><time>0:16:10</time><description>Until all his capacities have been explored: and it is good for him</description></event>
+<event><time>0:16:20</time><description>To know that his needs and nature are no more changed in fact</description></event>
+<event><time>0:16:30</time><description>in ten thousand years than the beaks of eagles.</description></event>
+</incidents>
Index: /trunk/webapps/scrolldemo.html
===================================================================
--- /trunk/webapps/scrolldemo.html	(revision 348)
+++ /trunk/webapps/scrolldemo.html	(revision 348)
@@ -0,0 +1,59 @@
+<html>
+<head>
+<style>
+.pic-container {
+    width: 500px;
+    height: 400px;
+    overflow-y: scroll;
+    overflow-x:hidden;
+}
+</style>
+<body>
+<div id="one">Header</div>
+<div id="container">
+    <div id="main" class="pic-container"></div>
+</div>
+<div id="two">Footer</div>
+<script   src="poem.js"></script>
+<script>
+function adjust()
+{
+    currLine += 2;
+    if (currElement != null)
+    {
+        currElement.style.background = "GhostWhite";
+        currElement = document.getElementById(currLine)
+        //currElement.scrollTop = 0;
+        currElement.scrollIntoView(); 
+        currElement.style.background = "Gold";
+    }
+    if (currLine >=99) currLine = 1
+}
+
+var fields = poem.split('\n');
+for (item in fields)
+{
+    var div = document.createElement("div");
+    div.id=item
+    div.style.color = "black";
+    if (item % 2 == 0)
+    {
+        div.style.background = "Gainsboro ";
+    }
+    else
+    {
+        div.style.background = "GhostWhite";
+    }
+    div.innerHTML = fields[item];
+
+    document.getElementById("main").appendChild(div);
+}
+var currLine = 1;
+var currElement = document.getElementById("1");
+myVar = setInterval(adjust, 1000);
+//clearTimeout(myVar);
+//document.getElementById("9").scrollIntoView(); 
+</script>
+</body>
+
+</html>
Index: /trunk/webapps/timescroller.html
===================================================================
--- /trunk/webapps/timescroller.html	(revision 348)
+++ /trunk/webapps/timescroller.html	(revision 348)
@@ -0,0 +1,80 @@
+<html>
+<head>
+<style>
+.pic-container {
+    width: 500px;
+    height: 400px;
+    overflow-y: scroll;
+    overflow-x:hidden;
+}
+</style>
+<body>
+<!-- Prototype for a scrolling display that advances to a timer -->
+<div id="timediv">0:00</div>
+<div id="main" class="pic-container"></div>
+<div id="two">Footer</div>
+<script   src="poem.js"></script>
+<script  src="js/common.js"></script>
+<script>
+var timeDiv = document.getElementById("timediv");
+/** Load the sim clock file and extract the clock string */
+function gettime()
+{
+    loadJSON("sim_clock.json", function(response)
+    {
+        simclockjson = JSON.parse(response);
+        clockstring = simclockjson.clock;
+        timeDiv.innerHTML = clockstring;  // Display current time
+        // Extract the seconds digits
+        digits = clockstring.substring(clockstring.length-2)
+        if (digits.charAt(0) == "0")
+        {
+            digits = digits.charAt(1);
+        }
+        // go adjust the scrolling box
+        adjust(digits);
+    });
+}
+// Highlight the current line and scroll to it.
+function adjust(currLine)
+{
+    if (currElement != null)
+    {
+        // Find the element with the id = seconds digits
+        target = document.getElementById(currLine)
+        if (target != null)
+        {
+            // restore the previous element's background color
+            currElement.style.background = "GhostWhite";
+            currElement = target;
+            currElement.style.background = "Gainsboro"; // set background color
+            //currElement.scrollTop = 0;
+            currElement.scrollIntoView();  // scroll to it
+        }
+    }
+}
+
+// Split a poem into lins
+var fields = poem.split('\n');
+// Place each line in its own DIV with a sequential ID
+for (item in fields)
+{
+    var div = document.createElement("div");
+    div.id=item*5
+    div.style.color = "black";
+    div.style.background = "GhostWhite";
+    div.innerHTML = fields[item]; // place poem line as content
+    // Append it to the parent div
+    document.getElementById("main").appendChild(div);
+}
+
+var currLine = 1;
+var currElement = document.getElementById("5");
+// Go get the current sim time every second
+var myinterval = setInterval(gettime,1000);
+//clearTimeout(myVar);
+ 
+</script>
+</body>
+
+</html>
Index: /trunk/webapps/sim_clock.json
===================================================================
--- /trunk/webapps/sim_clock.json	(revision 348)
+++ /trunk/webapps/sim_clock.json	(revision 348)
@@ -0,0 +1,1 @@
+{"clock":"0:07:46"}
Index: /trunk/webapps/gotoxmltime.html
===================================================================
--- /trunk/webapps/gotoxmltime.html	(revision 348)
+++ /trunk/webapps/gotoxmltime.html	(revision 348)
@@ -0,0 +1,109 @@
+<html>
+<head>
+<style>
+.pic-container {
+    width: 500px;
+    height: 400px;
+    overflow-y: scroll;
+    overflow-x:hidden;
+}
+</style>
+<body>
+<!-- Prototype for a display that scrolls to the current time -->
+<div id="timediv">0:00</div>
+<div> <button onclick="scrollToCurrent()">Goto Current Item</button></div>
+<div id="main" class="pic-container"></div>
+<div id="two">Footer</div>
+<script   src="poem.js"></script>
+<script  src="js/common.js"></script>
+<script>
+var xmlDoc;
+var currElement;
+var timeDiv = document.getElementById("timediv");
+/** Load the sim clock file and extract the clock string */
+function gettime()
+{
+    loadJSON("sim_clock.json", function(response)
+    {
+        simclockjson = JSON.parse(response);
+        clockstring = simclockjson.clock;
+        timeDiv.innerHTML = clockstring;  // Display current time
+        // Extract the seconds digits
+        digits = clockstring.substring(clockstring.length-2)
+        if (digits.charAt(0) == "0")
+        {
+            digits = digits.charAt(1);
+        }
+        // go adjust the scrolling box
+        //adjust(digits);
+    });
+}
+function getEvents()
+{
+    loadJSON("sample_events.xml", function(response)
+    {        
+        var parser = new DOMParser();
+        xmlDoc = parser.parseFromString(response,"text/xml");
+
+        // Place each line in its own DIV with a sequential ID
+        for (var idx=0; idx < 100; idx++)
+        {
+            var div = document.createElement("div");
+            MHSTime = xmlDoc.getElementsByTagName("time")[idx].childNodes[0].nodeValue;
+            div.id=MHSTime
+            div.className =  "item"
+            div.style.color = "black";
+            div.style.background = "GhostWhite";
+            div.innerHTML = MHSTime + " " + xmlDoc.getElementsByTagName("description")[idx].childNodes[0].nodeValue;
+            // Append it to the parent div
+            document.getElementById("main").appendChild(div);
+            currElement = document.getElementById("0:00:10");
+        }
+
+    });
+}
+// Highlight the current line and scroll to it.
+function scrollToCurrent()
+{
+    if (currElement != null)
+    {
+        currTime = timediv.innerHTML;
+        // Find the element with the id = seconds digits
+        target = findNearestElem();
+        //target = document.getElementById(currTime)
+        if (target != null)
+        {
+            // restore the previous element's background color
+            currElement.style.background = "GhostWhite";
+            currElement = target;
+            currElement.style.background = "Gainsboro"; // set background color
+            //currElement.scrollTop = 0;
+            currElement.scrollIntoView();  // scroll to it
+        }
+    }
+}
+
+function findNearestElem()
+{
+    var list = document.getElementsByClassName("item")
+    var idx = 0;
+    while (list[idx].id <  currTime) 
+    {
+        idx++;
+    }
+    return list[idx-1];
+    // Note: will crash when currTime > length of list
+}
+
+// MAIN
+
+getEvents();
+
+// Go get the current sim time every second
+var myinterval = setInterval(gettime,1000);
+//clearTimeout(myVar);
+ 
+</script>
+</body>
+
+</html>
Index: /trunk/webapps/highway_status.json
===================================================================
--- /trunk/webapps/highway_status.json	(revision 345)
+++ /trunk/webapps/highway_status.json	(revision 348)
@@ -198,5 +198,5 @@
        },
    "properties": 
-       {"street": "JEFFREY 2", "color": "lime", "perpx": "0.142134", "perpy": "0.989847"}
+       {"street": "JEFFREY 2", "color": "yellow", "perpx": "0.142134", "perpy": "0.989847"}
 },  
 {
@@ -308,5 +308,5 @@
        },
    "properties": 
-       {"street": "HARVARD", "color": "lime", "perpx": "0.320278", "perpy": "0.947323"}
+       {"street": "HARVARD", "color": "yellow", "perpx": "0.320278", "perpy": "0.947323"}
 },  
 {
@@ -330,5 +330,5 @@
        },
    "properties": 
-       {"street": "JAMBOREE1", "color": "lime", "perpx": "0.400805", "perpy": "0.916164"}
+       {"street": "JAMBOREE1", "color": "yellow", "perpx": "0.400805", "perpy": "0.916164"}
 },  
 {
@@ -352,5 +352,5 @@
        },
    "properties": 
-       {"street": "JAMBOREE2", "color": "lime", "perpx": "0.400805", "perpy": "0.916164"}
+       {"street": "JAMBOREE2", "color": "yellow", "perpx": "0.400805", "perpy": "0.916164"}
 },  
 {
@@ -374,5 +374,5 @@
        },
    "properties": 
-       {"street": "MACARTHUR 1", "color": "lime", "perpx": "0.408917", "perpy": "0.912572"}
+       {"street": "MACARTHUR 1", "color": "yellow", "perpx": "0.408917", "perpy": "0.912572"}
 },  
 {
@@ -418,5 +418,5 @@
        },
    "properties": 
-       {"street": "RED HILL", "color": "lime", "perpx": "0.126754", "perpy": "0.991934"}
+       {"street": "RED HILL", "color": "red", "perpx": "0.126754", "perpy": "0.991934"}
 },  
 {
@@ -440,5 +440,5 @@
        },
    "properties": 
-       {"street": "BRISTOL 1", "color": "lime", "perpx": "0.0", "perpy": "1.0"}
+       {"street": "BRISTOL 1", "color": "red", "perpx": "0.0", "perpy": "1.0"}
 },  
 {
@@ -462,5 +462,5 @@
        },
    "properties": 
-       {"street": "BRISTOL 2", "color": "lime", "perpx": "0.0", "perpy": "1.0"}
+       {"street": "BRISTOL 2", "color": "red", "perpx": "0.0", "perpy": "1.0"}
 },  
 {
@@ -495,5 +495,5 @@
        },
    "properties": 
-       {"street": "FAIRVIEW", "color": "lime", "perpx": "0", "perpy": "0"}
+       {"street": "FAIRVIEW", "color": "red", "perpx": "0", "perpy": "0"}
 },  
 {
@@ -1200,5 +1200,5 @@
        },
    "properties": 
-       {"street": "EL TORO 1", "color": "lime", "perpx": "0.647648", "perpy": "0.761939"}
+       {"street": "EL TORO 1", "color": "red", "perpx": "0.647648", "perpy": "0.761939"}
 },  
 {
@@ -1244,5 +1244,5 @@
        },
    "properties": 
-       {"street": "LAKE FOR2", "color": "lime", "perpx": "0", "perpy": "0"}
+       {"street": "LAKE FOR2", "color": "red", "perpx": "0", "perpy": "0"}
 },  
 {
@@ -2292,5 +2292,5 @@
        },
    "properties": 
-       {"street": "BAKER 2", "color": "lime", "perpx": "-0.639107", "perpy": "0.769118"}
+       {"street": "BAKER 2", "color": "red", "perpx": "-0.639107", "perpy": "0.769118"}
 },  
 {
@@ -2325,5 +2325,5 @@
        },
    "properties": 
-       {"street": "PAULARINO 1", "color": "lime", "perpx": "-0.722093", "perpy": "0.691796"}
+       {"street": "PAULARINO 1", "color": "red", "perpx": "-0.722093", "perpy": "0.691796"}
 },  
 {
@@ -2336,5 +2336,5 @@
        },
    "properties": 
-       {"street": "PAULARINO 2", "color": "lime", "perpx": "0.719864", "perpy": "-0.694115"}
+       {"street": "PAULARINO 2", "color": "yellow", "perpx": "0.719864", "perpy": "-0.694115"}
 },  
 {
@@ -2347,5 +2347,5 @@
        },
    "properties": 
-       {"street": "PAULARINO 2", "color": "lime", "perpx": "-0.725185", "perpy": "0.688554"}
+       {"street": "PAULARINO 2", "color": "red", "perpx": "-0.725185", "perpy": "0.688554"}
 },  
 {
@@ -2358,5 +2358,5 @@
        },
    "properties": 
-       {"street": "MACARTHU1", "color": "lime", "perpx": "-0.710326", "perpy": "0.703873"}
+       {"street": "MACARTHU1", "color": "yellow", "perpx": "-0.710326", "perpy": "0.703873"}
 },  
 {
@@ -2380,5 +2380,5 @@
        },
    "properties": 
-       {"street": "MACARTHU2", "color": "lime", "perpx": "-0.710326", "perpy": "0.703873"}
+       {"street": "MACARTHU2", "color": "yellow", "perpx": "-0.710326", "perpy": "0.703873"}
 },  
 {
@@ -2435,5 +2435,5 @@
        },
    "properties": 
-       {"street": "EDINGER 1", "color": "lime", "perpx": "0", "perpy": "0"}
+       {"street": "EDINGER 1", "color": "yellow", "perpx": "0", "perpy": "0"}
 },  
 {
Index: /trunk/webapps/poem.js
===================================================================
--- /trunk/webapps/poem.js	(revision 348)
+++ /trunk/webapps/poem.js	(revision 348)
@@ -0,0 +1,100 @@
+var poem = "Now we will count to twelve\n" +
+"and we will all keep still\n" +
+"For once on the face of the earth,\n" +
+"let's stop for a second,\n" +
+"and not move our arms so much.\n" +
+"It would be an exotic moment\n" +
+"without rush, without engines;\n" +
+"we would all be together\n" +
+"in a sudden strangeness.\n" +
+"Fisherman in the cold sea\n" +
+"would not harm whales\n" +
+"and the man gathering salt\n" +
+"would not look at his hurt hands.\n" +
+"Those who prepare green wars,\n" +
+"wars with gas, wars with fire,\n" +
+"victories with no survivors,\n" +
+"would put on clean clothes\n" +
+"and walk about with their brothers\n" +
+"in the shade, doing nothing.\n" +
+"What I want should not be confused\n" +
+"with total inactivity.\n" +
+"Life is what it is about;...\n" +
+"If we were not so single-minded\n" +
+"about keeping our lives moving,\n" +
+"and for once could do nothing,\n" +
+"perhaps a huge silence\n" +
+"might interrupt this sadness\n" +
+"of never understanding ourselves\n" +
+"and of threatening ourselves with death.\n" +
+"Perhaps the earth can teach us\n" +
+"as when everything seems dead in winter\n" +
+"and later proves to be alive.\n" +
+"Now I'll count up to twelve\n" +
+"and you keep quiet and I will go. \n" +
+"Something\n" +
+"just now\n" +
+"moved through my heart\n" +
+"like the thinnest of blades\n" +
+"as that red-tail pumped\n" +
+"once with its great wings\n" +
+"and flew above the gray, cracked\n" +
+"rock wall.\n" +
+"It wasn't\n" +
+"about the bird, it was\n" +
+"something about the way\n" +
+"stone stays\n" +
+"mute and put, whatever\n" +
+"goes flashing by.\n" +
+"Sometimes,\n" +
+"when I sit like this, quiet,\n" +
+"all the dreams of my blood\n" +
+"and all outrageous divisions of time\n" +
+"seem ready to leave,\n" +
+"to slide out of me.\n" +
+"Then, I imagine, I would never move.\n" +
+"By now\n" +
+"the hawk has flown five miles\n" +
+"at least,\n" +
+"dazzling whoever else has happened\n" +
+"to look up.\n" +
+"I was dazzled. But that\n" +
+"wasn't the knife.\n" +
+"It was the sheer, dense wall\n" +
+"of blind stone\n" +
+"without a pinch of hope\n" +
+"or a single unfulfilled desire\n" +
+"sponging up and reflecting,\n" +
+"so brilliantly,\n" +
+"as it has for centuries,\n" +
+"the sun's fire.\n" +
+"An eagle's nest on the head of an old redwood on one of the\n" +
+"precipice-footed ridges\n" +
+"Above Ventana Creek, that jagged country which nothing but a\n" +
+"falling meteor will ever plow; no horseman\n" +
+"Will ever ride there, no hunter cross this ridge but the winged\n" +
+"ones, no one will steal the eggs from this fortress.\n" +
+"The she-eagle is old, her mate was shot long ago, she is now mated\n" +
+"with a son of hers.\n" +
+"When lightning blasted her nest she built it again on the same\n" +
+"tree, in the splinters of the thunderbolt.\n" +
+"The she-eagle is older than I; she was here when the fires of\n" +
+"eighty-five raged on these ridges,\n" +
+"She was lately fledged and dared not hunt ahead of them but ate\n" +
+"scorched meat. The world has changed in her time;\n" +
+"Humanity has multiplied, but not here; men's hopes and thoughts\n" +
+"and customs have changed, their powers are enlarged,\n" +
+"Their powers and their follies have become fantastic,\n" +
+"The unstable animal never has been changed so rapidly. The\n" +
+"motor and the plane and the great war have gone over him,\n" +
+"And Lenin has lived and Jehovah died: while the mother-eagle\n" +
+"Hunts her same hills, crying the same beautiful and lonely cry and\n" +
+"is never tired; dreams the same dreams,\n" +
+"And hears at night the rock-slides rattle and thunder in the throats\n" +
+"of these living mountains.\n" +
+"It is good for man\n" +
+"To try all changes, progress and corruption, powers, peace and\n" +
+"anguish, not to go down the dinosaur's way\n" +
+"Until all his capacities have been explored: and it is good for him\n" +
+"To know that his needs and nature are no more changed in fact\n" +
+"in ten thousand years than the beaks of eagles.";
Index: /trunk/webapps/js/common.js
===================================================================
--- /trunk/webapps/js/common.js	(revision 327)
+++ /trunk/webapps/js/common.js	(revision 348)
@@ -4,5 +4,9 @@
     {
         var xobj = new XMLHttpRequest();
-        xobj.overrideMimeType("application/json");
+        // Assume XML unless filename ends with .json
+        if (inFile.endsWith(".json"))
+        {
+            xobj.overrideMimeType("application/json");
+        }
         xobj.open('GET', inFile, true);
         xobj.onreadystatechange = function()
