

//ROAD CONDITIONS PAGE CONSTANTS
var pinID = 1; 

addWindowLoadEvent(RoadConditionsStartup, "end") 
function RoadConditionsStartup() 
{ 
    varZoom = parseInt(varZoom + 1); 
    map.SetCenterAndZoom(new VELatLong(varLat,varLon), varZoom); 
} 

function load_RoadConditions()
{
	// LOAD THE MAP
	//map.onLoadMap = WaitFunction(); 
	//map.LoadMap(new VELatLong(varLat, varLon), varZoom ,'r' , false);

    map.LoadMap();

    varZoom = parseInt(varZoom - 1);
    map.SetCenterAndZoom(new VELatLong(varLat,varLon), varZoom);
    map.SetMapStyle(VEMapStyle.Road);

	AddORCITile();

    map.AttachEvent("onclick", OnMouseClickV5);
    map.AttachEvent("onmouseover", onMouseOverCallback);
    objFeedbackArea = document.getElementById("dvResult");
	timerRef = setTimeout('startLayers()',100);
	//map.HideDashboard();

	//parseRoadConditions();
    //This delay allows the map to load without the pushpins.
    //timerRef2 = setTimeout('parseRoadConditions()',10);
	
//	//IF THE SESSION IS VIRGINIA (STATEWIDE), THEN SHOW THE BORDER AND SHADING
//	if(sessionRegion == 1 && varShowVirginiaBorder == 'True')
//	{
//		showVirginiaBorder();
//	}

//	map.SetZoomLevel(varZoom);
}


function afterPopup()
{
}


function buildShape(pinLat, pinLon, pinTitle, pinDetails, pinStatus, pnCategory, pinStartDate, pinEndDate, pinVDOTID, pinLocation)
{
    try 
    {
        //varPinDescHTML = '<b>' + pnCategory + '</b><br/><b>' + pinStatus + '</b><br/><b>Location: </b>' + pinLocation + '<br/><b>Description: </b>' + pinDetails  + '<br/><b>Start Date: </b>' + pinStartDate + '<br/><b>End Date: </b>' + pinEndDate
        varPinDescHTML = "";
        varPinDescHTML = varPinDescHTML + "<b>" + pnCategory + "</b>";
        varPinDescHTML = varPinDescHTML + "<br/><b>Status: " + pinStatus + "</b>";
        varPinDescHTML = varPinDescHTML + "<br/><b>Location: </b>" + pinLocation;
        varPinDescHTML = varPinDescHTML + "<br/><b>Description: </b>" + pinDetails;
        varPinDescHTML = varPinDescHTML + "<br/><b>Start Date: </b>" + pinStartDate;
        varPinDescHTML = varPinDescHTML + "<br/><b>End Date: </b>" + pinEndDate;

        var iconPath = "";
        if( pnCategory.toLowerCase().indexOf("incident") == 0 ) {
            iconPath = "Images/VirtualEarth/VirtualEarth_Icon_T.gif";
        }
        else if( pnCategory.toLowerCase().indexOf("construction") == 0 ) {
            iconPath = "Images/VirtualEarth/VirtualEarth_Icon_A.gif";
        }
        else if( pnCategory.toLowerCase().indexOf("traffic congestion") == 0 ) {
            iconPath = "Images/VirtualEarth/VirtualEarth_Icon_T.gif";
        }
        else if( pnCategory.toLowerCase().indexOf("work zone") == 0 ) {
            iconPath = "Images/VirtualEarth/VirtualEarth_Icon_A.gif";
        }
        else if( pnCategory.toLowerCase().indexOf("special event") == 0 ) {
            iconPath = "Images/VirtualEarth/VirtualEarth_Icon_A.gif";
        }
        else if( pnCategory.toLowerCase().indexOf("weather") == 0 ) {
            iconPath = "Images/VirtualEarth/VirtualEarth_Icon_W.gif";
        }

        
        pinLat = pinLat * 1;
        pinLon = pinLon * 1;
        //alert("Lat: " + pinLat + ";  Long: " + pinLon);
        var shape2 = new VEShape(VEShapeType.Pushpin, new VELatLong(pinLat, pinLon, 0, VEAltitudeMode.RelativeToGround));

        shape2.SetCustomIcon(iconPath); 
        shape2.SetTitle(pinTitle);
        shape2.SetDescription(varPinDescHTML);
    }
    
    catch (error)
    {
        //alert("Error building shape: " + error);
    }
    
    return shape2;
}
      
function buildPolylineShape(pinTitle, pinDetails, pinStatus, pnCategory, pinStartDate, pinEndDate, pinLocation, pinSetOfPoints)
{
    try 
    {
        //varPinDescHTML = '<b>' + pnCategory + '</b><br/><b>' + pinStatus + '</b><br/><b>Location: </b>' + pinLocation + '<br/><b>Description: </b>' + pinDetails  + '<br/><b>Start Date: </b>' + pinStartDate + '<br/><b>End Date: </b>' + pinEndDate
        varPinDescHTML = "";
        varPinDescHTML = varPinDescHTML + "<b>" + pnCategory + "</b>";
        varPinDescHTML = varPinDescHTML + "<br/><b>Status: " + pinStatus + "</b>";
        varPinDescHTML = varPinDescHTML + "<br/><b>Location: </b>" + pinLocation;
        varPinDescHTML = varPinDescHTML + "<br/><b>Description: </b>" + pinDetails;
        varPinDescHTML = varPinDescHTML + "<br/><b>Start Date: </b>" + pinStartDate;
        varPinDescHTML = varPinDescHTML + "<br/><b>End Date: </b>" + pinEndDate;
       
        var iconPath = "";
        if( pnCategory.toLowerCase().indexOf("incident") == 0 ) {
            iconPath = "Images/VirtualEarth/VirtualEarth_Icon_T.gif";
        }
        else if( pnCategory.toLowerCase().indexOf("construction") == 0 ) {
            iconPath = "Images/VirtualEarth/VirtualEarth_Icon_A.gif";
        }
        else if( pnCategory.toLowerCase().indexOf("traffic congestion") == 0 ) {
            iconPath = "Images/VirtualEarth/VirtualEarth_Icon_T.gif";
        }
        else if( pnCategory.toLowerCase().indexOf("work zone") == 0 ) {
            iconPath = "Images/VirtualEarth/VirtualEarth_Icon_A.gif";
        }
        else if( pnCategory.toLowerCase().indexOf("special event") == 0 ) {
            iconPath = "Images/VirtualEarth/VirtualEarth_Icon_A.gif";
        }
        else if( pnCategory.toLowerCase().indexOf("weather") == 0 ) {
            iconPath = "Images/VirtualEarth/VirtualEarth_Icon_W.gif";
        }
        iconPath = "Images/VirtualEarth/VirtualEarth_Icon_W.gif";

        
        //pinLat = pinLat * 1;
        //pinLon = pinLon * 1;
        //alert("Lat: " + pinLat + ";  Long: " + pinLon);
        //var shape2 = new VEShape(VEShapeType.Polyline, new VELatLong(pinLat, pinLon, 0, VEAltitudeMode.RelativeToGround));

        var VELatLong_array = new Array();
       
        for (currPoint_index=0; currPoint_index <= (pinSetOfPoints[0].length - 1); currPoint_index++) {
            VELatLong_array[currPoint_index] = new VELatLong(pinSetOfPoints[1][currPoint_index]*1, pinSetOfPoints[0][currPoint_index]*1, 0, VEAltitudeMode.RelativeToGround );
//             alert(currPoint_index);
        }
          
//        var points = new Array(
//       new VELatLong(37.65083698,-77.41853576, 0, VEAltitudeMode.RelativeToGround),
//       new VELatLong(37.64845359,-77.4161001, 0, VEAltitudeMode.RelativeToGround),
//       new VELatLong(39.64845359,-79.4161001, 0, VEAltitudeMode.RelativeToGround)
//        );
       
        var shapeLine = new VEShape(VEShapeType.Polyline, VELatLong_array);
        
        shapeLine.SetCustomIcon(iconPath); 
        shapeLine.SetTitle(pinTitle);
        shapeLine.SetDescription(varPinDescHTML);
    }
    
    catch (error)
    {
        //alert("Error building shape: " + error);
    }
    
    return shapeLine;
}


function parseRoadConditions()
{
    var shapes = new Array();
  
    
    
    try 
    {
        for (j=0;j<roadConditionsArray.length;j++)
        {
            if( roadConditionsArray[j].PointType == "point" ) 
            {
                //AddRoadConditionsPin(roadConditionsArray[j].Latitude, roadConditionsArray[j].Longitude, roadConditionsArray[j].ShortTitle, roadConditionsArray[j].LongDescription, roadConditionsArray[j].Status, roadConditionsArray[j].Category, roadConditionsArray[j].StartDate, roadConditionsArray[j].EndDate, roadConditionsArray[j].VDOT_ID, roadConditionsArray[j].LocationText);
                 shape1 = buildShape(roadConditionsArray[j].Latitude, roadConditionsArray[j].Longitude, roadConditionsArray[j].ShortTitle, roadConditionsArray[j].LongDescription, roadConditionsArray[j].Status, roadConditionsArray[j].Category, roadConditionsArray[j].StartDate, roadConditionsArray[j].EndDate, roadConditionsArray[j].VDOT_ID, roadConditionsArray[j].LocationText);
                shapes.push(shape1);
            }
//            else if( roadConditionsArray[j].PointType == "line" )  
//            {
//                //AddRoadConditionsLine(roadConditionsArray[j].Latitude, roadConditionsArray[j].Longitude, roadConditionsArray[j].ShortTitle, roadConditionsArray[j].LongDescription, roadConditionsArray[j].Status, roadConditionsArray[j].Category, roadConditionsArray[j].StartDate, roadConditionsArray[j].EndDate, roadConditionsArray[j].VDOT_ID, roadConditionsArray[j].LocationText, roadConditionsArray[j].SetOfPoints);
//                shapeLine= buildPolylineShape( roadConditionsLineArray[j].ShortTitle, roadConditionsLineArray[j].LongDescription, roadConditionsLineArray[j].Status, roadConditionsLineArray[j].Category, roadConditionsLineArray[j].StartDate, roadConditionsLineArray[j].EndDate,  roadConditionsLineArray[j].LocationText, roadConditionsLineArray[j].SetOfPoints);
//                shapes.push(shapeLine);
//            }
        } 	
        // newlayer.AddShape(shapes);
         
          for (k=0;k<roadConditionsLineArray.length;k++)
        {
          
            if( roadConditionsLineArray[k].PointType == "line" )  
            {
//                //AddRoadConditionsLine(roadConditionsArray[j].Latitude, roadConditionsArray[j].Longitude, roadConditionsArray[j].ShortTitle, roadConditionsArray[j].LongDescription, roadConditionsArray[j].Status, roadConditionsArray[j].Category, roadConditionsArray[j].StartDate, roadConditionsArray[j].EndDate, roadConditionsArray[j].VDOT_ID, roadConditionsArray[j].LocationText, roadConditionsArray[j].SetOfPoints);
                 var shapeLine= buildPolylineShape( roadConditionsLineArray[k].ShortTitle, roadConditionsLineArray[k].LongDescription, roadConditionsLineArray[k].Status, roadConditionsLineArray[k].Category, roadConditionsLineArray[k].StartDate, roadConditionsLineArray[k].EndDate,  roadConditionsLineArray[k].LocationText, roadConditionsLineArray[k].SetOfPoints);
                 shapes.push(shapeLine);
                 map.AddShape(shapeLine);
                  shapeLine.SetTitle(roadConditionsLineArray[k].ShortTitle);
                 //shapeLine.SetDescription(roadConditionsLineArray[k].LongDescription);
                 
            }
       } 	
        
        
    }
    catch (error)
    {
        //alert("Error adding shapes.");
    }

     var newlayer = new VEShapeLayer();
     map.AddShapeLayer(newlayer);
     newlayer.AddShape(shapes);
    
//    var points = new Array(
//       new VELatLong(37.65083698,-77.41853576, 0, VEAltitudeMode.RelativeToGround),
//       new VELatLong(37.64845359,-77.4161001, 0, VEAltitudeMode.RelativeToGround),
//       new VELatLong(39.64845359,-79.4161001, 0, VEAltitudeMode.RelativeToGround)
//    );

//    var myLine= new VEShape(VEShapeType.Polyline, points);
//    newlayer.AddShape(myLine);

//    myLine.SetTitle("My Polygon");
//    myLine.SetDescription("This is the description for my polygon.");
 
}


function AddRoadConditionsPin(pinLat, pinLon, pinTitle, pinDetails, pinStatus, pnCategory, pinStartDate, pinEndDate, pinVDOTID, pinLocation)
{   

	varPinTitle = pinTitle
    varPinDescHTML = '<b>' + pnCategory + '</b><br/><b>' + pinStatus + '</b><br/><b>Location: </b>' + pinLocation + '<br/><b>Description: </b>' + pinDetails  + '<br/><b>Start Date: </b>' + pinStartDate + '<br/><b>End Date: </b>' + pinEndDate

    var iconPath = "";
    if( pnCategory.toLowerCase().indexOf("incident") == 0 ) {
        iconPath = "Images/VirtualEarth/VirtualEarth_Icon_T.gif";
    }
    else if( pnCategory.toLowerCase().indexOf("construction") == 0 ) {
        iconPath = "Images/VirtualEarth/VirtualEarth_Icon_A.gif";
    }
    else if( pnCategory.toLowerCase().indexOf("traffic congestion") == 0 ) {
        iconPath = "Images/VirtualEarth/VirtualEarth_Icon_T.gif";
    }
    else if( pnCategory.toLowerCase().indexOf("work zone") == 0 ) {
        iconPath = "Images/VirtualEarth/VirtualEarth_Icon_A.gif";
    }
    else if( pnCategory.toLowerCase().indexOf("special event") == 0 ) {
        iconPath = "Images/VirtualEarth/VirtualEarth_Icon_A.gif";
    }
    else if( pnCategory.toLowerCase().indexOf("weather") == 0 ) {
        iconPath = "Images/VirtualEarth/VirtualEarth_Icon_W.gif";
    }

    var pin = new VEPushpin(pinID, new VELatLong(pinLat, pinLon), iconPath, varPinTitle, varPinDescHTML);
	//var pin = new VEPushpin(pinID, new VELatLong(pinLat, pinLon), null, varPinTitle, varPinDescHTML);
	

	VEPushpin.OnMouseOverCallback = function(x, y, title, details)
	{
        if( details.toLowerCase().indexOf("incident") > -1 && details.toLowerCase().indexOf("incident") < 10  ) {
            
        }
			/*
			// Reset pushpin popup
			var allDivs = document.getElementsByTagName("div");
			var mapWrapper = document.getElementById("myMap");
			
			mapLeft = mapWrapper.offsetLeft;
			mapTop = mapWrapper.offsetTop;
			
			for (var i in allDivs) {
				if (allDivs[i].className == "ero") {
					var currLeft = allDivs[i].style.left;
					var currTop = allDivs[i].style.top;
					
					//allDivs[i].style.left = currLeft + mapLeft + "px";
					allDivs[i].style.top = (currTop == "auto") ? x - mapTop + "px" : currTop - mapTop + "px";
					//alert(allDivs[i].style.left + " | " + allDivs[i].style.top);
				}
			}
			*/
	}
	//VEPushpin.ShowDetailOnMouseOver = false;
    map.AddPushpin(pin);
    var element = document.getElementById(pinID);



/*
	element.onmouseout = function() 
			{
				currentCameraDiv = document.getElementById('cameraDetailsDiv');
				currentCameraDiv.style.visibility = 'hidden';
			}
*/			
    pinID++;
 }  

function AddRoadConditionsLine(pinLat, pinLon, pinTitle, pinDetails, pinStatus, pnCategory, pinStartDate, pinEndDate, pinVDOTID, pinLocation, pinSetOfPoints)
{  	
//alert(pinSetOfPoints[0][0]);
        
   var VELatLong_array = new Array();

    var varPinDescHTML = '<b>' + pnCategory + '</b><br/><b>' + pinStatus + '</b><br/><b>Location: </b>' + pinLocation + '<br/><b>Description: </b>' + pinDetails  + '<br/><b>Start Date: </b>' + pinStartDate + '<br/><b>End Date: </b>' + pinEndDate;
   
    var pinStart = new VEPushpin(pinID, new VELatLong(pinLat, pinLon), null, pinTitle, varPinDescHTML);
	pinID += 1;
	//VEPushpin.ShowDetailOnMouseOver = false;
	
    
    map.AddPushpin(pinStart);
    //var element = document.getElementById(pinID);
    
    
//alert(pinSetOfPoints[0].length - 1);
        for (currPoint_index=0; currPoint_index < (pinSetOfPoints[0].length - 1); currPoint_index++) {
            VELatLong_array[currPoint_index] = new VELatLong(pinSetOfPoints[0][currPoint_index], pinSetOfPoints[1][currPoint_index]);
        }
   polyLine1 = new VEPolyline(pinVDOTID, VELatLong_array);
   polyLine1.SetWidth(3);
   polyLine1.SetColor(new VEColor(0,150,200,100));
   map.AddPolyline(polyLine1);
   //map.SetMapView(VELatLong_array); // Zooms in at the lines.
   
   
    var pinEnd = new VEPushpin(pinID, new VELatLong(pinSetOfPoints[0][pinSetOfPoints[0].length - 1], pinSetOfPoints[1][pinSetOfPoints[0].length - 1]), null, pinTitle, varPinDescHTML);
	
	pinID += 1;
	//VEPushpin.ShowDetailOnMouseOver = false;
	
    
    map.AddPushpin(pinEnd);
} 