﻿/////////////////////////////////////////////  MISC VARS ////////////////////////////////////////////

//var _zZm=12;
//var _iconDir = "images/MapSubSystem/icons";
var _iconDir = "images";
var _iDr=_iconDir + "/" ; //icon directory
var _aPolyLines=[]; //used for speed
var _upDating=true;//set to true so can't use toggle switches until data is loaded.
/////////////////////////////////////////////// END MISC VARS ///////////////////////////////////           


//***************************************** DATA REFRESH TIMER ***********************************************************//
var _tmId3;
var _tmS1=1000;
var _cd1;
var _iniTm=180;//set page refresh time here in seconds

function IniPgTm()
{
    try
    { 
      _cd1=_iniTm; 
        tm1= Math.round((_cd1/60)*10)/10;
        StpPgTm();
        StrPgTm();
   }
  catch(e)
  {
        alert(e.message + " -  IniPgTm");
  }  
}
function StpPgTm()
{
        try{clearTimeout(_tmId3);}catch(e){}
}
function StrPgTm()
{  
	if(_cd1==0)
	{
        try
       {
           UpPg('GETUPDATE');
       }
       catch(e)
       {
           alert(e.message + " - StrPgTm");
       } 
     }
     else
     {
		_cd1--;
		clearTimeout(_tmId3);
		 _tmId3 = self.setTimeout("StrPgTm()",_tmS1);
     }
}
//*****************************************END DATA REFRESH TIMER ******************************************************//
function MultiDimensionalArray(iRows,iCols)
{
	try
	{
		var i; 
		var j; 
		var a = new Array(iRows);
		for (i=0; i < iRows; i++)
		{
			a[i] = new Array(iCols);
			for (j=0; j < iCols; j++)
			{
				a[i][j] = "";
			}
		}
		return(a);
	}
	catch(e)
	{
		var sErr=e.message;
	}
} 

function UpPg(command)
{
    try {
        //map.clearOverlays();
        UpdatePage(command);
    }
    catch (e)
        {alert(e.message + " - UpPg");} 
}

function _tc$(obj)
{
    return document.getElementById(obj);
}

function HideLoader()
{
    try{_tc$('dvUpdating').innerHTML="";_tc$('dvUpdating').style.display='none'; }catch(e){} 
}              
function ShowLoader(input,layer)
{ 
    try
    {
        var str="<p>";
        var img="<img src='" + _imgLd + "' />";
        switch(input)
        {
            case 1:
                str+="Refreshing Data<br/>";
                break;
            case 2:
                 str +="Loading " + layer + " Data<br/>"; 
                break;
            case 3:
                 str +="Unloading " + layer + " Data<br/>"; 
                 break;
            case 4:
                 str +="Updating Map<br/>";
                break;
            default:
                break; 
        } 
        _tc$('dvUpdating').style.display='inline';
       _tc$('dvUpdating').innerHTML=str + img +"</p>"; 
    }
    catch(e){}   
}


///////////////////////////

var detSTGrp;

function AddDetectorStationEntities(detectorStationEntities) {

    try {

        if (detSTGrp != null && _tc$("chkDetectorStation").checked && detSTGrp.getMrksVisible()) {
            TgDetectorStation();
        }

        //Dispose off any unused objects...
        if (detSTGrp != null) {
            detSTGrp.Dispose(true);
        }

        detSTGrp = new MrkGrp(map, detST);


        for (var i = 0; i < detectorStationEntities.length; i++) {

            detSTGrp.createMrk('Spd', detectorStationEntities[i].Longitude, detectorStationEntities[i].Latitude,
                    detectorStationEntities[i].Speed, detectorStationEntities[i].DateTime, detectorStationEntities[i].OnStreetName + " @ " + detectorStationEntities[i].AtCrossStreet,
                    _showDetectorStationId == "true" ? detectorStationEntities[i].Name : '' , '');
        }

        if (_tc$("chkDetectorStation").checked && !detSTGrp.getMrksVisible()) {
            TgDetectorStation();
        }


    } catch (e) { alert(e.message + 'AddDetectorStationEntities'); }


}

var incMGrp;
var incLGrp;
var incUGrp;
function AddIncidentEntities(incidentListEntities)
{
    var grp;
    var title; 
    try
   { 
        if(incMGrp!=null&&_tc$('chkIncident').checked)
        {
            TgIncident();
        } 
        if(incLGrp!=null&&_tc$('chkSpecial').checked)
        {
            TgSpecial();
        } 
        if(incUGrp!=null&&_tc$('chkScheduled').checked)
        {
            TgScheduled();
        }

        //Dispose off any unused objects...
        if (incMGrp != null) {
            incMGrp.Dispose(true);
            incLGrp.Dispose(true); incUGrp.Dispose(true); 
        }
        
        incMGrp=new MrkGrp(map,incM);
        incLGrp=new MrkGrp(map,incL);
        incUGrp=new MrkGrp(map,incU);

        for (var i = 0; i < incidentListEntities.length; i++)
       { 

           grp = (incidentListEntities[i].EventType.toString() == "Incident" || incidentListEntities[i].EventType.toString() == "Emergency Closure") ? incMGrp :
                 (incidentListEntities[i].EventType.toString() == "Special")                                                                         ? incLGrp : incUGrp;

           grp.createMrk("Evt", incidentListEntities[i].Longitude, incidentListEntities[i].Latitude, incidentListEntities[i].Description, 
                         '', incidentListEntities[i].EventType, '', '');
       }    
       
        if(incMGrp!=null&&_tc$('chkIncident').checked)
        {
            TgIncident();
        } 
        if(incLGrp!=null&&_tc$('chkSpecial').checked)
        {
            TgSpecial();
        } 
        if(incUGrp!=null&&_tc$('chkScheduled').checked)
        {
            TgScheduled();
        }     
   }
   catch(e){alert(e.message);}     
}

var sgnBNGrp;
var sgnGNGrp;            
var sgnBSGrp;
var sgnGSGrp;            
var sgnBEGrp;
var sgnGEGrp;            
var sgnBWGrp;
var sgnGWGrp;
function AddSignEntities(signListEntities)
{
    var grp;
   var typ; 
   try
   {  
        if((sgnGNGrp != null ||
            sgnGSGrp != null ||
            sgnGEGrp != null ||
            sgnGWGrp != null || 
            sgnBNGrp != null || 
            sgnBSGrp != null ||
            sgnBEGrp != null ||
            sgnBWGrp != null)&&
            _tc$("chkDMS").checked &&
            (sgnGNGrp.getMrksVisible() ||
             sgnGSGrp.getMrksVisible() ||
             sgnGEGrp.getMrksVisible() ||
             sgnGWGrp.getMrksVisible() || 
             sgnBNGrp.getMrksVisible() ||
             sgnBSGrp.getMrksVisible() ||
             sgnBEGrp.getMrksVisible() ||
             sgnBWGrp.getMrksVisible()))
        {
            TgDMS();
        }

        //Dispose off any unused objects...
        if (sgnBNGrp != null) {
            sgnBNGrp.Dispose(true); sgnGNGrp.Dispose(true);
            sgnBSGrp.Dispose(true); sgnGSGrp.Dispose(true);
            sgnBEGrp.Dispose(true); sgnGEGrp.Dispose(true);
            sgnBWGrp.Dispose(true); sgnGWGrp.Dispose(true);
            _mdaSN = null;
        }
        
        _mdaSN = signListEntities;
        
        sgnBNGrp=new MrkGrp(map,sgnBN);
        sgnGNGrp=new MrkGrp(map,sgnGN);          
        sgnBSGrp=new MrkGrp(map,sgnBS);
        sgnGSGrp=new MrkGrp(map,sgnGS);           
        sgnBEGrp=new MrkGrp(map,sgnBE);
        sgnGEGrp=new MrkGrp(map,sgnGE);           
        sgnBWGrp=new MrkGrp(map,sgnBW);
        sgnGWGrp=new MrkGrp(map,sgnGW);

        for (var i = 0; i < signListEntities.length; i++) {
    
            typ = (signListEntities[i].Phase1Message.toString() != "") ? "G" : "B";
            dir = signListEntities[i].Direction;
            grp = eval("sgn" + typ + dir + "Grp");

            grp.createMrk("Sgn", signListEntities[i].Longitude, signListEntities[i].Latitude, signListEntities[i].Phase1Message, signListEntities[i].Phase2Message,
                   signListEntities[i].OnStreetName + " @ " + signListEntities[i].AtCrossStreet, signListEntities[i].ID, signListEntities[i].Direction);
            
            //Refresh the corresponding Traffic Dashboard if a cookie has already been saved
            if (signListEntities[i].ID == getCookie("DMSId")) {
                alertDMS(signListEntities[i].ID, signListEntities[i].OnStreetName + " @ " + signListEntities[i].AtCrossStreet,
                            signListEntities[i].Phase1Message, signListEntities[i].Phase2Message);
            }    
      }

      if (_tc$("chkDMS").checked &&
          (!sgnGNGrp.getMrksVisible() ||
           !sgnGSGrp.getMrksVisible() ||
           !sgnGEGrp.getMrksVisible() ||
           !sgnGWGrp.getMrksVisible() || 
           !sgnBNGrp.getMrksVisible() ||
           !sgnBSGrp.getMrksVisible() ||
           !sgnBEGrp.getMrksVisible() ||
           !sgnBWGrp.getMrksVisible()))
     {
        TgDMS();
     }
  }
  catch(e){alert(e.message);} 
}

var _mdaSN;
var cmEGrp;
var cmETrafLandGrp;

function AddCameraEntities(cameraListEntities)
{
   try
   { 
        if(cmEGrp!=null&&_tc$("chkCCTV").checked&&cmEGrp.getMrksVisible())
       {
            TgCCTV();
        }

        //Dispose off any unused objects...
        if (cmEGrp != null) {
            cmEGrp.Dispose(true);
            cmETrafLandGrp.Dispose(true);
        }
        
        cmEGrp = new MrkGrp(map, cmE);
        cmETrafLandGrp = new MrkGrp(map, cmETF);

        for (var i = 0; i < cameraListEntities.length; i++) {

           if (cameraListEntities[i].TrafficLandId != "-1") {
               cmETrafLandGrp.createMrk('Cm', cameraListEntities[i].Longitude, cameraListEntities[i].Latitude, cameraListEntities[i].TrafficLandId,
                    cameraListEntities[i].IsSupportVideo, cameraListEntities[i].OnStreetName + " @ " + cameraListEntities[i].AtCrossStreet,
                    cameraListEntities[i].ID, cameraListEntities[i].Direction);
           }
           else {
               cmEGrp.createMrk('Cm', cameraListEntities[i].Longitude, cameraListEntities[i].Latitude, cameraListEntities[i].TrafficLandId,
                cameraListEntities[i].IsSupportVideo, cameraListEntities[i].OnStreetName + "  @ " + cameraListEntities[i].AtCrossStreet,
                cameraListEntities[i].ID, cameraListEntities[i].Direction); 
           }
               
       }
     
       if(_tc$("chkCCTV").checked&&!cmEGrp.getMrksVisible())
       {
            TgCCTV();
       }
   }
  catch(e){alert(e.message);}
}

var streamingVideoMarkerGroup;

function AddCameraTourEntities(cameraTourEntities) {

    try {

        if (streamingVideoMarkerGroup != null && _tc$("chkStreamingVideoTours").checked && streamingVideoMarkerGroup.getMrksVisible()) {
            TgStreamingVideoTours();
        }

        //Dispose off any unused objects...
        if (streamingVideoMarkerGroup != null) {
            streamingVideoMarkerGroup.Dispose(true);
        }

        streamingVideoMarkerGroup = new MrkGrp(map, streamingVideoIcon);


        for (var i = 0; i < cameraTourEntities.length; i++) {

            streamingVideoMarkerGroup.createMrk("Tour", cameraTourEntities[i].Longitude, cameraTourEntities[i].Latitude, '', '',
                    cameraTourEntities[i].Url, cameraTourEntities[i].IntId, cameraTourEntities[i].Name);
        }

        if (_tc$("chkStreamingVideoTours").checked && !streamingVideoMarkerGroup.getMrksVisible()) {
            TgStreamingVideoTours();
        }
        
                
    } catch (e) { alert(e.message + 'AddVideoTours()'); }


}

