

var crossingMarkers = new Array();

var existingCrossingArray = new Array();
var addCrossingFlag = true;
var checkExistingCrossing = false; //flag to check existing array - only changes if we've already gotten data

var crossingsExist = false;
var crossingPopupDisplayed = false;

var tableString;

function createCrossingPopups(elem, xmlDoc) {

   //function is in createPopups.js - used to clear all markers of this type
   initializeEventMarkers(crossingMarkers);
   
   var url = "rivercrossingdiv.aspx?";
   var item = "crossing";
   
   for (i = 0; i < elem.length; i++) {	

    var crossingID = xmlDoc.getElementsByTagName("CrossingID")[i].firstChild.nodeValue;	
		var lat = xmlDoc.getElementsByTagName("Latitude")[i].firstChild.nodeValue;
		var lon = xmlDoc.getElementsByTagName("Longitude")[i].firstChild.nodeValue;
		var name = xmlDoc.getElementsByTagName("Name")[i].firstChild.nodeValue;
		var river = xmlDoc.getElementsByTagName("River")[i].firstChild.nodeValue;
		var direction = xmlDoc.getElementsByTagName("Direction")[i].firstChild.nodeValue;
		var level = xmlDoc.getElementsByTagName("Level")[i].firstChild.nodeValue;	
		var tube = xmlDoc.getElementsByTagName("Tube")[i].firstChild.nodeValue;	
		var validCrossings = xmlDoc.getElementsByTagName("validCrossings")[i].firstChild.nodeValue;	
		var iID=crossingID;
		
		crossingID = "crossing_" + crossingID;
				
		if (lat > 90 || lat < -90)
		{
			lat = lat*.000001;
		}
		if (lon > 180 || lon < -180)
		{
			lon = lon*.000001;
		}
			
		var textColor = "#990000";		
			
		if (checkExistingCrossing) {
		    //we already have data in the array, now check to see if we need to remove markers
            for (var n = 0; n < crossingMarkers.length; n++) {
                var markerID = crossingMarkers[n].getId();
                
                if (crossingID == markerID){
                    //event already on map - do not display twice
                    existingCrossingArray[existingCrossingArray.length] = markerID;
                    addCrossingFlag = false;
                    break;
                }
                else {
                    //marker does not exist - set add flag to true to notify that
                    //we have to add it to the map
                    addCrossingFlag = true;  
                }
            }        
        }
    	
    	if (addCrossingFlag) {
		    //create new markers			
		    var point = new GLatLng((lat),(lon));
		
			
		    var icon = crossingIcon;

        var Crossingmarker = new PdMarker(point, icon);
        Crossingmarker.setId(crossingID);	
        Crossingmarker.tooltip = '<div class="markerTooltip" style="color:'+textColor+';">'
		    Crossingmarker.tooltip += name +'<br></div>';
		
		    var divID = "crossingDiv"+crossingID;
		    
		    infoHtmls = '<div class="markerinfo" style="width:220px; font-size: 11px;">';
		    infoHtmls += '<b><font style="color: ' + textColor + ';">' + name + '</font></b><br />';				
		    infoHtmls += '<b><font style="color: ' + textColor + ';"></b><br />';
		    infoHtmls += '<br />';
		    infoHtmls += '<br />';
	        infoHtmls += '</div>';	
	     
	        //var newUrl = url + "?XID=" + crossingID;
	        
			createCrossingMarker(point, Crossingmarker, name, url, item, validCrossings, iID);	
		    
		    googleMap.addOverlay(Crossingmarker);
            
            crossingMarkers[crossingMarkers.length] = Crossingmarker;
           
	    }//end if addCrossing flag
	}//end for loop
	
	//function to display markers true, make sure something is in the array first
	if (checkExistingCrossing) {
		for (var n = 0; n < existingCrossingArray.length; n++) {
            var markerToDisplay = googleMap.getMarkerById(existingCrossingArray[n]);
            markerToDisplay.display(true);
        }
	}
    
    //now that we've gotten data, we need to set a flag to let us know to 
    //check existing next time the user updates the map
    checkExistingCrossing = true;
    existingCrossingArray = [];
    hidePleaseWaitScreen();
}

function createCrossingMarker(point, marker, name, url, item, validCrossings, iID) {
    GEvent.addListener(marker, "click", function() {
    
        //3-11-08 - minimize the overview map when the crossing popup is opened. JZ
        overview.hide(true);
       
        if (CCTVPopupDisplayed) {
            closeCCTVPopupWindow();
        }
        
        //added to save the position of the map before the marker is opened.
        googleMap.savePosition();
      
        var id = marker.getId();
        var frameName = item + "Frame";
      
		var newUrl = url + "Title="+name+"&objID="+iID+"&validCrossings="+validCrossings;
        //GLog.write(newUrl);
        
        window.frames[frameName].location.href = newUrl; 
       
        newUrl = "";
        crossingPopupDisplayed = true;
        markerTooltip.style.visibility="hidden";
    });
    
    GEvent.addListener(marker,"mouseover", function() {
          markerTooltipFlag=true;
          clearPopupTimer();
    	  showTooltip(marker);
    	  var id = marker.getId();
    });        
    GEvent.addListener(marker,"mouseout", function() {
            markerTooltipFlag=false;
		    markerTooltip.style.visibility="hidden";
    }); 
    GEvent.addListener(googleMap, "extinfowindowclose", function() {
        //return the map to its original position.
        googleMap.returnToSavedPosition();    
    });
    
}	

function showCrossingPopup(id, item) {
 

    var text = window.frames[item+'Frame'].document.getElementById("tmpCrossingDisplay").innerHTML;
    var marker = googleMap.getMarkerById("crossing_"+ id);
    var newDiv = document.getElementById(item+'Div');

    newDiv.innerHTML = text;
    googleMap.closeInfoWindow();
   
    //special extended marker
     
    marker.openExtInfoWindow(
      googleMap,
      "weatherForecastPopup",
      newDiv.innerHTML,
      {beakOffset: 2}
    );
    
}

function positionCrossingOrCCTVPopup(marker, newDiv) {
  
    var myOffsetX;
    var myOffsetY;
    var height;
    
    var point=googleMap.getCurrentMapType().getProjection().fromLatLngToPixel(googleMap.fromDivPixelToLatLng(new GPoint(0,0),true),googleMap.getZoom());	
    var offset=googleMap.getCurrentMapType().getProjection().fromLatLngToPixel(marker.getPoint(),googleMap.getZoom());
	var anchor=marker.getIcon().iconAnchor;
	var width=marker.getIcon().iconSize.width;
	
	height=tipArrow.clientHeight; 
    var pos = new GControlPosition(G_ANCHOR_TOP_LEFT, new GSize(offset.x - point.x - anchor.x + width, offset.y - point.y -anchor.y -height)); 
    pos.apply(tipArrow);
    tipArrow.style.visibility = "visible";
        
    myOffsetX = 10;
    myOffsetY = -22;
        
    height=newDiv.clientHeight; 
    pos = new GControlPosition(G_ANCHOR_TOP_LEFT, new GSize(offset.x - point.x - anchor.x + width + myOffsetX, offset.y - point.y -anchor.y -height + myOffsetY));
 	pos.apply(newDiv);
	newDiv.style.visibility="visible";
	newDiv.style.border="1px solid #b97b19";
	
}

function closeCrossingPopupWindow() {
    var newDiv = document.getElementById('crossingDiv');
    newDiv.style.visibility="hidden";
    tipArrow.style.visibility = "hidden";
    crossingPopupDisplayed = false;
    
    //3-11-08 - redisplay overview map after closing popup. 
    overview.show(true);
    
        //return the map to its original position.
        googleMap.returnToSavedPosition();    
    //});
}


