var latArray = new Array();
var lonArray = new Array();
var descArray = new Array();
var eventModeArray = new Array();
var incTypeArray = new Array();
var facilityArray = new Array();
var infoHtmls = new Array();
var markerArray = new Array();

//event popup not currently visible
var eventPopupDisplayed = false;
//keep track of which popup last clicked
var lastPopupClicked = null;
var clicked = false;


function createPlannedEventPopups() {
	for (var i = 0; i < descArray.length; i++) {
		var textColor = "";
		var pointType = "";	
		var icon;
		
		var eventMode = eventModeArray[i];
		var incType = incTypeArray[i];
		
		if (eventMode == "buses") {
    		pointType = "buses";
    	}
    	else if (incType == "Incident"){
    		pointType = "1";
    	}
    	else if ((incType == "Transit Incident") && (eventMode != "buses")){
    		pointType = "2";
    	}
    	else if (incType == "Active Construction"){
    		pointType = "3";
    	}
    	else if ((incType == "Transit Active Construction") && (eventMode != "buses")){
    		pointType = "4";
    	}
    	else if (incType == "Construction"){
    		pointType = "5";
    	}
    	else if (incType == "Transit Construction"){
    		pointType = "6";
    	}
    	else if (incType == "Special Event"){
    		pointType = "7";
    	}
    	else if (incType == "Active Highway Special Event"){
    		pointType = "14";
    	}
    	else if (incType == "Transit Special Event"){
    		pointType = "16";
    	}
    	else if (incType == "Active Transit Special Event"){
    		pointType = "17";
    	}
    	else{
    		pointType = "17";
    	}
    		
		//create new markers
    			
    	var point = new GLatLng(latArray[i],lonArray[i]);	
    				
    	if ((pointType == "buses")) {
    		
    		textColor = "#000000";
    		icon = busIcon;
    	}
    			
    	else if ((pointType == "1") || (pointType == "2")) {
    		
    		icon = incIcon;
    		textColor = "#990000";
    	}
    	
    	else if ((pointType == "3") || (pointType == "4") || (pointType == "5") || (pointType == "6")) {
    		
    		icon = constIcon; 
    		textColor = "#009900";
    	}
    	
    	else if ((pointType == "7") || (pointType == "14") || (pointType == "16") || (pointType == "17")) {
    		
    		icon = specEvtIcon; 
    		textColor = "#000099";
		}
      	
    	markerArray[i] = new PdMarker(point, icon);
    		
    	var incDescLong = '<font style="color: ' + textColor + ';">' + descArray[i] + '</font><br />';
    	//startDate = '<b><font style="color: #000066;">Start Date: ' + startDate + '</font></b><br />';
    	//endDate = '<b><font style="color: #000066;">End Date: ' + endDate + '</font></b><br />';
    									
    	// BUILD HTML MARKUP for info window
        infoHtmls[i] = incDescLong;		
    			
    			
    	markerArray[i].tooltip = '<div class="markerTooltip" style="color:'+textColor+'; font-weight:bold;">'
    	markerArray[i].tooltip = markerArray[i].tooltip + incTypeArray[i] +'<br>'+facilityArray[i]+'</div>';
        markerArray[i].setId(i);
			
        googleMap.addOverlay(markerArray[i]);
    	createMarker(point, markerArray[i], infoHtmls[i], i);
    		
    }
}

function createMarker(point, marker, html, i) {

  	GEvent.addListener(marker, "click", function() {
  		//googleMap.setCenter(new GLatLng(point.y+.15, point.x+.09),11);
        //document.getElementById('eventDesc').innerHTML = html;
        //showTooltip(marker, "eventPopupLarge");
        //eventPopupDisplayed = true;
        //lastPopupClicked = i;
        clicked = true;
        selectRow(i);
  	});
    GEvent.addListener(marker,"mouseover", function() {
    	//showTooltip(marker, "eventPopupSmall");
    	showTooltip(marker);
    });        
    GEvent.addListener(marker,"mouseout", function() {
		markerTooltip.style.visibility="hidden";
    });        
}

function showTooltip(marker) {
    markerTooltip.innerHTML = marker.tooltip;
    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;
    var height=markerTooltip.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(markerTooltip);
	markerTooltip.style.visibility="visible";
	markerTooltip.style.width="150px";
	markerTooltip.style.border="1px solid #000033";
}
		
function positionPEPopup(marker, newDiv) {
  
    var myOffsetX;
    var myOffsetY;
    var height;
    var zoom = googleMap.getZoom();
    
    if (clicked) {
        //user clicked on marker - autozoom
        zoom = 13;
        clicked = false;
    }
    
    var tmpPoint =  marker.getPoint();
    
    //based on zoom level, calculate offset
	height=newDiv.clientHeight;
	
    var offSetArray = calculatePopupOffset(zoom, height);
    var latOffset = tmpPoint.lat() + offSetArray[0];
    var lonOffset = tmpPoint.lng() + offSetArray[1];
    googleMap.setCenter(new GLatLng(latOffset, lonOffset), zoom);
    
    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 #000033";
	//recenter googleMap
	
}

function closeInfoBubble() {
    tipArrow.style.visibility = "hidden";
    eventPopupLarge.style.visibility = "hidden";
    deselectRow(mySelectedRow);
    eventPopupDisplayed = false;
    lastPopupClicked = null;
    markerTooltip.style.visibility="hidden";
}

