  var timeStamp = Date();
  var timeStr = Date.parse(timeStamp);
  var newPage = "/riits/jsp/PageUpdate.jsp?timeStamp="+timeStr;
  var pageVisited='none';
  var deviceRequest;
  var numClick = 1;
  var imgPath = "/images/";
  var topPanelUpdateString = "";
  var bottomPanelUpdateString = "";
  var cookieName = "metrortmap";
  var savedView = false; 
  var dmsTimerTop = null;
  var dmsTimerBottom = null;
  var hwys;

function init(){

   hwys = new hwys2icons(imgPath);
   update.document.location.replace(unescape(newPage));
   
}

function checkLayerBoxes(){

   checkBox("cctv_check", parent.main.savedCctvLay);
   checkBox("dms_check", parent.main.savedDmsLay);
   checkBox("event_check", parent.main.savedEventLay);
   checkBox("plc_check", parent.main.savedPlcLay);

}

function resetMap(){
   checkBox("cctv_check", false);
   checkBox("dms_check", false);
   checkBox("event_check", false);
   checkBox("plc_check", false);
   
   jumpToLocation(laCounty);
   var cb = document.getElementById("saveMapCheckbox");
   if(cb.checked == true)
   {
      deleteCookie(cookieName);
      cb.checked = false;
   }
}

function toggleSaveMap(cb){
   if(cb.checked == true)
   {
     saveMapSettings();
   }
   else
   {
     deleteCookie(cookieName);
     //resetMap();
   }
}


function getLayeringString()
{
  var layering = "";
  if(parent.document.getElementById("cctv_check").checked == true)
    layering += "cl=t,";
  else
    layering += "cl=f,";
  if(parent.document.getElementById("dms_check").checked == true)
    layering += "dl=t,";
  else
    layering += "dl=f,";
  if(parent.document.getElementById("event_check").checked == true)
    layering += "el=t,";
  else
    layering += "el=f,";
  if(parent.document.getElementById("plc_check").checked == true)
    layering += "pl=t";
  else
    layering += "pl=f";

   return layering;
  
}

function checkBox(box, chkBool){
   var img_check = parent.document.getElementById(box + "_img");
   var check = parent.document.getElementById(box);
   var lay = box.substring(0, box.indexOf('_')) + "Layer";
      var dLay = document.getElementById(lay);
   if (chkBool == true){
      img_check.src="/images/checked_box.gif";
      check.checked = true;
          dLay.style.visibility ="visible";
   }
   else{
      img_check.src="/images/unchecked_box.gif";
      check.checked = false;
          dLay.style.visibility ="hidden";
   }
}

function toggleCheckBox(box){
   var img_check = document.getElementById(box + "_img");
   var check = document.getElementById(box);
   var lay = box.substring(0, box.indexOf('_')) + "Layer";
      var dLay = window.frames['main'].document.getElementById(lay);
   if (check.checked == false){
      img_check.src="/images/checked_box.gif";
      check.checked = true;
          dLay.style.visibility ="visible";
   }
   else{
      img_check.src="/images/unchecked_box.gif";
      check.checked = false;
          dLay.style.visibility ="hidden";
   }
}

function availablePanel(){
   return display = numClick % 2 == 0 ? "topPanel" : "bottomPanel";
}
function flipDmsMessageBottom(phase1, phase2)
{
    var p1 = document.getElementById(phase1);
    var p2 = document.getElementById(phase2);
    if(p1 != null)
    {
       if(p1.style.visibility == 'hidden')
       {
         p1.style.visibility = 'visible';
         p2.style.visibility = 'hidden';
       }
       else
       {
         p1.style.visibility = 'hidden';
         p2.style.visibility = 'visible';
       }
      dmsTimerBottom = setTimeout('flipDmsMessageBottom("'+phase1+'","' +phase2+'")', 2000);
   }

}

function flipDmsMessageTop(phase1, phase2)
{
    var p1 = document.getElementById(phase1);
    var p2 = document.getElementById(phase2);
    if(p1 != null)
    {
       if(p1.style.visibility == 'hidden')
       {
         p1.style.visibility = 'visible';
         p2.style.visibility = 'hidden';
       }
       else
       {
         p1.style.visibility = 'hidden';
         p2.style.visibility = 'visible';
       }
      dmsTimerTop = setTimeout('flipDmsMessageTop("'+phase1+'","' +phase2+'")', 2000);
   }

}

function displayDeviceInfoPanel(devType, devId)
{
     numClick++;
      var pd = availablePanel();
      updateDisplayDeviceInfoPanel(devType, devId, pd);

}

function updateDisplayDeviceInfoPanel(devType, devId, panelDisplay)
{
   if(devType == "dms")
   {
      var dmsDisplayHTML = getDmsHTML(panelDisplay);
      var streetName = "";
      var direction = "";
      var crossStreet = "";
      var dmsText1 = "";
      var dmsText2 = null;
      var updated = "";
      var phase11 = null;
      var phase12 = null;
      var phase13 = null;
      var phase21 = null;
      var phase22 = null;
      var phase23 = null;

      document.getElementById(panelDisplay).innerHTML = dmsDisplayHTML;
      var dms = parent.windowManager.dmsList.getElementsByTagName("dms");
      for(var i = 0; i < dms.length; i++)
      {
         if(dms[i].getElementsByTagName("id")[0].firstChild.nodeValue == devId)
         {
            try{
               streetName = dms[i].getElementsByTagName("onStreetName")[0].firstChild.nodeValue;
		streetName = hwys.convert(streetName);
            } catch(exception){}
            try{
               direction = window.frames['main'].convertDir(dms[i].getElementsByTagName("direction")[0].firstChild.nodeValue);
            } catch(exception){}
            try{
               crossStreet = dms[i].getElementsByTagName("atStreetName")[0].firstChild.nodeValue;
		crossStreet = hwys.convert(crossStreet);
            } catch(exception){}
            try{
               var msg = dms[i].getElementsByTagName("currentMessage")[0];
               try{
                  phase11 = msg.getElementsByTagName("phase1Line1")[0].firstChild.nodeValue;
               } catch(exception){ }
               try{
                  phase12 = msg.getElementsByTagName("phase1Line2")[0].firstChild.nodeValue;
               } catch(exception){ }
               try{
                  phase13 =  msg.getElementsByTagName("phase1Line3")[0].firstChild.nodeValue;
               } catch(exception){ }
               try{
                  phase21 = msg.getElementsByTagName("phase2Line1")[0].firstChild.nodeValue;
               } catch(exception){ }
               try{
                  phase22 = msg.getElementsByTagName("phase2Line2")[0].firstChild.nodeValue;
               } catch(exception){ }
               try{
                  phase23 = msg.getElementsByTagName("phase2Line3")[0].firstChild.nodeValue;
               } catch(exception){ }

                  dmsText1 = "<table border='0' width='155px' height='78px'><tr><td align='center' valign='middle'>";
                  if(phase11 != null)
                     dmsText1 += phase11;
                  if(phase12 != null)
                     dmsText1 += "<br>" + phase12;
                  if(phase13 != null)
                     dmsText1 += "<br>" + phase13;
                  dmsText1 += "</td></tr></table>";
                  dmsText2 = "<table border='0' width='155px' height='78px'><tr><td align='center' valign='middle'>";
                  if(phase21 != null)
                     dmsText2 += phase21;
                  if(phase22 != null)
                     dmsText2 += "<br>" + phase22;
                  if(phase23 != null)
                     dmsText2 += "<br>" + phase23;
                  dmsText2 += "</td></tr></table>";

                  try{
                     //var msgTimestamp = msg.getElementsByTagName("messageTimestamp")[0];
                     //var msgDate = formatDate(msgTimestamp.getElementsByTagName("date")[0].firstChild.nodeValue);
                     //var msgTime = formatTime(msgTimestamp.getElementsByTagName("time")[0].firstChild.nodeValue);
                     // use current date
                        var msgDate = getCurrentDate();
                        var msgTime = getCurrentTime();
                     updated = createDate(msgDate, msgTime);
                  } catch(exception){ }
            } catch(exception){ }
            //var stIcon = "<img border='0' align='middle' src='" + imgPath + "fwy-icon-" + streetName + ".gif' width='25' height='22'>&nbsp";
            var stName = streetName + direction;
            if(crossStreet != "")
              stName += " @ " + crossStreet;

            var dmsPanel1 = document.getElementById("dms_text_1_" + panelDisplay);
            var dmsPanel2 = document.getElementById("dms_text_2_" + panelDisplay);
            //document.getElementById("dms_loc_icon_" + panelDisplay).innerHTML = stIcon;
            document.getElementById("dms_location_" + panelDisplay).innerHTML = stName;
            document.getElementById("dms_updated_" + panelDisplay).innerHTML = "Updated: " + msgDate + " " + msgTime;
            dmsPanel1.innerHTML = dmsText1;
            if(phase21 != null || phase22 != null || phase23 != null)
            {
               dmsPanel2.innerHTML = dmsText2;
               if(panelDisplay == "topPanel")
               {
                  if( dmsTimerTop != null )
                     clearTimeout( dmsTimerTop );
                  dmsTimerTop = setTimeout('flipDmsMessageTop("dms_text_1_'+panelDisplay+'","dms_text_2_' +panelDisplay+'")', 2000);
               }
               else
               {
                  if( dmsTimerBottom != null )
                    clearTimeout( dmsTimerBottom );
                  dmsTimerBottom = setTimeout('flipDmsMessageBottom("dms_text_1_'+panelDisplay+'","dms_text_2_' +panelDisplay+'")', 2000);
               }
            }
            else
            {  // clean up timer 
               if(panelDisplay == "topPanel")
               {
                  if( dmsTimerTop != null )
                     clearTimeout( dmsTimerTop );
               }
               else
               {
                  if( dmsTimerBottom != null )
                    clearTimeout( dmsTimerBottom );
               }
            }
          break;
         }
      }
   }

   if(devType == "event"){
      var eventDisplayHTML = getEventHTML(panelDisplay);
      var streetName = "";
      var direction = "";
      var crossStreet = "";
      var sTime = null;
      var startDate = null;
      var startTime = null;
      var startDateObj = null;
      var duration = "";
      var description = "";
      var type = "Incident";

      document.getElementById(panelDisplay).innerHTML = eventDisplayHTML;

      var event = parent.windowManager.eventList.getElementsByTagName("event");
      for(var i = 0; i < event.length; i++)
      {
         if (event[i].getElementsByTagName("id")[0].firstChild.nodeValue == devId)
         {
             try
             {
               streetName = event[i].getElementsByTagName("onStreetName")[0].firstChild.nodeValue;
		streetName = hwys.convert(streetName);
            } catch(exception){}
            try
            {
              direction = window.frames['main'].convertDir(event[i].getElementsByTagName("direction")[0].firstChild.nodeValue);
            } catch(exception){}
            try
            {
              crossStreet = event[i].getElementsByTagName("atStreetName")[0].firstChild.nodeValue;
		crossStreet = hwys.convert(crossStreet);
            } catch(exception){}
            try
            {
              sTime = event[i].getElementsByTagName("startTime")[0];
              startDate = sTime.getElementsByTagName("date")[0].firstChild.nodeValue;
              startTime = sTime.getElementsByTagName("time")[0].firstChild.nodeValue;
              startDateObj = createDate(startDate, startTime);

            } catch(exception){}
            try
            {
              var cTime = event[i].getElementsByTagName("clearTime")[0];
              var clearDate = cTime.getElementsByTagName("date")[0].firstChild.nodeValue;
              var clearTime = cTime.getElementsByTagName("time")[0].firstChild.nodeValue;
              var clearDateObj = createDate(clearDate, clearTime);

            } catch(exception){}
            try
            {
              description = event[i].getElementsByTagName("description")[0].getElementsByTagName("text")[0].firstChild.nodeValue;
            } catch(exception){}
            var stIcon = "";
            var stName = "";
            try
            {
                  stName = streetName + " " + direction;
                  if(crossStreet != "")
                     stName += " @ " + crossStreet;
                  document.getElementById("incident_location_from_" + panelDisplay).innerHTML = stName;
            }
            catch(exception)
            {
            }
	    try
	    {
		var x = event[i].getElementsByTagName("typeEvent")[0].firstChild.nodeValue;
		if (x == 16)
		   type = "Construction";
	    }
	    catch (exception) { alert(exception); }
         document.getElementById("incident_occurance_date_" + panelDisplay).innerHTML = "<strong>" + formatDate(startDate) + "</strong>";
         document.getElementById("incident_occurance_time_" + panelDisplay).innerHTML = "<strong>" + formatTime(startTime) + "</strong>";
         document.getElementById("incident_description_" + panelDisplay).innerHTML = description;
         document.getElementById("typeEvent_" + panelDisplay).innerHTML = type;
         document.getElementById("event_updated_" + panelDisplay).innerHTML = " Updated: " + getCurrentDate() + " " + getCurrentTime();
         }
      }
   }
   if(panelDisplay == "topPanel")
      topPanelUpdateString = 'updateDisplayDeviceInfoPanel("' + devType + '","' + devId + '","' + panelDisplay + '")';
   else
      bottomPanelUpdateString = 'updateDisplayDeviceInfoPanel("' + devType + '","' + devId + '","' + panelDisplay + '")';

}
function getCurrentDate()
{
    var cDate = new Date();
    var mDate = "";
    if( ( cDate.getMonth() + 1  ) <10 )
    {
      if( cDate.getDate() < 10 )
      {
          mDate = formatDate(cDate.getFullYear() + "0" + (cDate.getMonth()+1) + "0" + cDate.getDate());
      }  
      else
      {
          mDate = formatDate(cDate.getFullYear() + "0" + (cDate.getMonth()+1) + "" + cDate.getDate());
      }  
    }  
    else
    {
      if( cDate.getDate() < 10 )
      {
         mDate = formatDate(cDate.getFullYear() + "" + (cDate.getMonth()+1) + "0" + cDate.getDate());
      }  
      else
      {
         mDate = formatDate(cDate.getFullYear() + "" + (cDate.getMonth()+1) + "" + cDate.getDate());
      }  
   }  
   return mDate;
}

function getCurrentTime()
{
   var cDate = new Date();
   var mTime = "";
   if( cDate.getHours() < 10 )
   {
      if(  cDate.getMinutes() < 10 )
      {
         mTime = formatTime("0" + cDate.getHours() + "0" + cDate.getMinutes() + "0000");
      }
      else
      {
         mTime = formatTime("0" + cDate.getHours() + "" + cDate.getMinutes() + "0000");
      }
   }
   else
   {
      if(  cDate.getMinutes() < 10 )
      {
         mTime = formatTime("" + cDate.getHours() + "0" + cDate.getMinutes() + "0000");
      }
      else
      {
         mTime = formatTime("" + cDate.getHours() + "" + cDate.getMinutes() + "0000");
      }
   }
   return mTime;

}
function getDurationString(laterdate, earlierdate)
{
   var difference = laterdate.getTime() - earlierdate.getTime();

   var days = Math.floor(difference/1000/60/60/24);
   difference -= days*1000*60*60*24;
   var hours = Math.floor(difference/1000/60/60);
   difference -= hours*1000*60*60;
   var minutes = Math.floor(difference/1000/60);
   difference -= minutes*1000*60;
      var returnString;
      if(daysDifference > 0)
        returnString += days + " days, ";
      if(hoursDifference > 0)
        returnString += hours + " hour(s), ";
      if(minutesDifference > 0)
        returnString += minutes + " minute(s)";

      return returnString;
}


function createDate(dateStr, timeStr)
{
   var yr = dateStr.substr(0,4);
   var mn = dateStr.substr(4,2);
   var dy = dateStr.substr(6,2);
   var hr = timeStr.substr(0,2);
   var min = timeStr.substr(2,2);

   return new Date(yr, mn, dy, hr, min, 0);
}

function formatDate(dateStr){
   var yr = dateStr.substr(0,4);
   var mn = dateStr.substr(4,2);
   var dy = dateStr.substr(6,2);
   return (mn + "/" + dy + "/" + yr);
}

function formatTime(timeStr){
   //Time provided in HHMMSSssss format using 24 hour notation
   var hr = timeStr.substr(0,2);
   var min = timeStr.substr(2,2);
   var ampm = "PM";
   if(hr == 0)
   {
     hr = 12;
     ampm = "PM";
   }
   else if(hr <= 11)
   {
     ampm = "AM";
   }
   else if(hr >= 13)
   {
     ampm = "PM";
     hr -= 12;
     //if( hr < 10 )
     //   hr = "0" + hr;
   }
   return (hr + ":" + min + " " + ampm);
}

function getEventHTML(panelDisplay){
  var rtnString = 
               "<div id='incident'>" +
               "<span id='typeEvent_" + panelDisplay + "' class='blText'></span><br/>" +
               "<span id='incident_location_from_" + panelDisplay + "' class='blText'></span><p/>" +
               "<table border='0' width='100%' cellpadding='0'>" +
               "  <tr>" +
               "     <td style='background-color: #F4F3F3;'>" +
               "        Incident Date: <span id='incident_occurance_date_" + panelDisplay + "' class='blText'></span>" +
               "     </td>" +
               "  </tr>" +
               "  <tr>" +
               "     <td style='background-color: #F4F3F3;'>" +
               "        Incident Time: <span id='incident_occurance_time_" + panelDisplay + "' class='blText'></span>" +
               "     </td>" +
               "  </tr>" +
               "</table>" +
               "<br>" +
               "Description: <span id='incident_description_" + panelDisplay + "' class='blText'>" +
               "  </span>" +
               "<p/><span id='event_updated_" + panelDisplay + "' class='updateBlText'>Updated: mm/dd/yyyy hh:mm am/pm</span></div>";

      return rtnString;
}

function getDmsHTML(panelDisplay){
  var rtnString =
         "<div id='cms'><span class='blText'>Message Sign<br></span>" +
         "<span id='dms_location_" + panelDisplay + "' class='blText'>Location</span><p/>" +
      "<div class='CMSDisplay'>" +
         "<div id='dms_text_" + panelDisplay + "'>" +
         "  <div id='dms_text_1_" + panelDisplay + "' class='CMSText'>" +
         "  </div>" +
         //"  <div id='dms_text_2_" + panelDisplay + "'  class='CMSText' style='visibility: hidden;'>" +
         //"  </div>" +
         "</div>" +
      "</div>" +
      "<p/><span id='dms_updated_" + panelDisplay + "' class='updateBlText'>Updated: mm/dd/yyyy hh:mm am/pm</span></div>";
   return rtnString;

}

function displayDeviceInfoJspPanel(url)
{
   numClick++;
   var panelDisplay = availablePanel();
   var requestObj = window.frames['main'].getXmlHttpRequestObject();
      url = url+"&panelDisplay="+panelDisplay;
      displayDeviceInfoJspPanelDiv(url, requestObj, panelDisplay);
}

function displayDeviceInfoJspPanelDiv(url, requestObj, panelDiv)
{
      if (requestObj.readyState == 4 || requestObj.readyState == 0)
      {
         requestObj.open("GET", url, true);
         requestObj.onreadystatechange = function()
           {
             if (requestObj.readyState == 4)
           {
            document.getElementById(panelDiv).innerHTML = requestObj.responseText;

            if(panelDiv == "topPanel")
              topPanelUpdateString = url;
            else
              bottomPanelUpdateString = url;

           }
         };
         requestObj.send(null);
      }
}

function updateInformationPanels()
{
      var updateDateTimeStr = "<span class='updateBlText'>Updated: " + getCurrentDate() + " " + getCurrentTime() + "</span>";
      if(topPanelUpdateString != "")
      {
         if(isServletCall(topPanelUpdateString))
         {
                var newCall = replaceCurrentImageDirectory(topPanelUpdateString);
             var requestObj = window.frames['main'].getXmlHttpRequestObject();

                if(newCall != null)
                   displayDeviceInfoJspPanelDiv(newCall, requestObj, 'topPanel');
         }
         else if(isJspCall(topPanelUpdateString))
         {
             var requestObj = window.frames['main'].getXmlHttpRequestObject();
                displayDeviceInfoJspPanelDiv(topPanelUpdateString, requestObj, 'topPanel');
             document.getElementById("camera_update_topPanel").innerHTML = updateDateTimeStr;
         }
         else
           eval(document.getElementById("topPanel").innerHTML = topPanelUpdateString);
      }
      if(bottomPanelUpdateString != "")
      {
         if(isServletCall(bottomPanelUpdateString))
         {
                var newCall = replaceCurrentImageDirectory(bottomPanelUpdateString);
             var requestObj = window.frames['main'].getXmlHttpRequestObject();
                if(newCall != null)
                   displayDeviceInfoJspPanelDiv(newCall, requestObj, 'bottomPanel');
         }
         else if(isJspCall(bottomPanelUpdateString))
         {
             var requestObj = window.frames['main'].getXmlHttpRequestObject();
                displayDeviceInfoJspPanelDiv(bottomPanelUpdateString, requestObj, 'bottomPanel');
             document.getElementById("camera_update_bottomPanel").innerHTML = updateDateTimeStr;
         }
         else
         {
           eval(document.getElementById("bottomPanel").innerHTML = bottomPanelUpdateString);
         }
      }


}

  function replaceCurrentImageDirectory(updateStr)
  {
      var returnString = updateStr.substr(0, updateStr.indexOf("imageDirectory") + 15);
      if(returnString.search("chopped") != -1)
         return null;
      returnString += parent.windowManager.mapImgPath;

      return returnString;
  }

  function isServletCall(updateStr)
  {
     if(updateStr.search("MAPServlet") == -1)
       return false;
     else
       return true;
  }

  function isJspCall(updateStr)
  {
     if(updateStr.search(".jsp") == -1)
       return false;
     else
       return true;
  }

function browserType()
{
   if (navigator.userAgent.indexOf("MSIE") != -1) {
     return "IE"; }
   else if (navigator.userAgent.indexOf("Opera") != -1 ) {
     return "Opera"; }
   else {
     return "Mozilla";
        }
}
