var map;
var directions;
var directionsPanel;
var geocoder;
var defaultPoint; 

function MapInit()
{
	if (GBrowserIsCompatible())
	{
		geocoder = new GClientGeocoder();
		mapNode = document.getElementById('gmap');
		if (mapNode != null)
		{
			map = new GMap2(mapNode);
			map.addControl(new GLargeMapControl());
			map.enableScrollWheelZoom();
			GEvent.addDomListener(map.getContainer(), "DOMMouseScroll",
				function(oEvent) { if (oEvent.preventDefault)
				oEvent.preventDefault(); }); 
		
			directionsPanel = document.getElementById('directions_container');

                        var broker = document.getElementById('brokerType').value;
			if (directionsPanel != null)
			{
				var start = document.getElementById('startAddressHidden').firstChild.nodeValue;
				var end = document.getElementById('endAddressHidden').firstChild.nodeValue;

				directions = new GDirections(map);
				
				GEvent.addListener(directions, "error", gDirectionsError);
				GEvent.addListener(directions, 'load', getRouteSteps);
				
				var directionsOptions = { getSteps: true };				
				directions.load('from: ' + start + ' to: ' + end, directionsOptions);	
			}
			else
			{
				lat = document.getElementById('startLat').value;
				lng = document.getElementById('startLong').value;
				defaultPoint = new GLatLng(lat, lng);
				map.setCenter(defaultPoint);				
			
				var markers = getMarkers();
				if (markers != null && broker !='Online Broker')
				{
					var override = document.getElementById('zoomOverride');
					if (override != null) {					
						map.setZoom(parseInt(override.firstChild.nodeValue));
					} else {			
						map.setZoom(10);
					}
					
					//for (var i = 0; i < markers.length; i ++)
					//{
					//		map.addOverlay(markers[i]);
					//}
				}
				else
				{
                                        map.setZoom(9);
					defaultMarker("50 Spear St, San Francisco");
				}
				GEvent.addListener(map.getInfoWindow(), 'closeclick', togglePrintLinks);
				mapNode.onclick = togglePrintLinks;				
			}			
		}
	
	}
}

function defaultMarker(address) {
  geocoder.getLatLng(
    address,
    function(point) {
        map.setCenter(point, 6);
        
        var icon = new GIcon();
		icon.image = "images/map_icon_blank.gif";
		icon.iconSize = new GSize(17, 20);
		icon.iconAnchor = new GPoint(9, 20);
		icon.infoWindowAnchor = new GPoint(9, 2);
		
        var marker = new GMarker(point, icon);
        map.addOverlay(marker);
      
    }
  );
}

function placeMarker(address, marker) {
  geocoder.getLatLng(
    address,
    function(point) {                    		
    	if (!point) {
    		return;
    	} else {
   			marker.setPoint(point);
        	map.addOverlay(marker);      
    	}      
    }
  );
}


function getMarkers()
{
	var markers = [];
	container = document.getElementById('ResultList');
	if (container == null)
	{
		return null;
	}
	
	listitems = container.getElementsByTagName('li');
	if (listitems == null)
	{
		return null;
	}

	for (var i = 0; i < listitems.length; i ++)
	{
		dataDiv = listitems[i].getElementsByTagName('DIV')[3].getElementsByTagName('DIV')[0];		
		address = dataDiv.getElementsByTagName('P')[0];
		dataDiv.removeChild(address);		
	
		links = listitems[i].getElementsByTagName('A');	
		links = [links[0], links[1]];
		
		
		marker = createMarker(defaultPoint, dataDiv, i, links);
		placeMarker(address.firstChild.nodeValue, marker);
		markers.push(marker);		
	}

	return markers;
}

function createMarker(point, node, iteration, links)
{
	var iconLetter = 'a';
	switch (iteration)
	{
		case 0: iconLetter = 'a'; break;
		case 1: iconLetter = 'b'; break;
		case 2: iconLetter = 'c'; break;
		case 3: iconLetter = 'd'; break;
		case 4: iconLetter = 'e'; break;
	}

	var icon = new GIcon();
	icon.image = "images/map_icon_" + iconLetter +  ".png";
	icon.iconSize = new GSize(17, 20);
	icon.iconAnchor = new GPoint(9, 20);
	icon.infoWindowAnchor = new GPoint(9, 2);
	
	var marker = new GMarker(point, icon);
	GEvent.addListener(marker, "click", function()
	{
		if (node != null)
		{						
			// alert(node.id);
			marker.openInfoWindow(node);			
		}		
	});
	
	for (var i = 0; i < links.length; i ++)
	{
		links[i].onclick = function() 
		{
			marker.openInfoWindow(node);
			togglePrintLinks('agent', this.title);
			return false;
		}
	}
	
	return marker;
}

function toggleDirections(target)
{
	to = document.getElementById('directions-to');
	from = document.getElementById('directions-from');
	
	if (target == 'to')
	{
		to.style.display = to.style.display == 'none' ? '' : 'none';
		from.style.display = 'none';
	}
	else
	{
		from.style.display = from.style.display == 'none' ? '' : 'none';
		to.style.display = 'none';
	}
	return false;
}

function gDirectionsError()
{
	if (directions.getStatus().code == G_GEO_UNKNOWN_ADDRESS)
	{
                
		var errDiv = document.getElementById("unknownaddress");
		var dirDiv = document.getElementById('directions_pane');
		var printLink = document.getElementById('printLink');
		
		errDiv.style.display = '';
		dirDiv.style.display = 'none';
		printLink.style.display = 'none';
		
		defaultMarker("50 Spear St, San Francisco");
	}
}

function getRouteSteps()
{
	if (directions.getNumRoutes() > 0)
	{
		var route = directions.getRoute(0);
		var directionsList = document.getElementById('directions');
		
		var distance = document.getElementById('distance');
		var time = document.getElementById('time');
		
		distance.innerHTML = directions.getDistance().html;
		time.innerHTML = directions.getDuration().html;		
				
		for (i = 0; i < route.getNumSteps(); i ++)
		{
			step = route.getStep(i);
			
			listitem = document.createElement('li');
			markerdiv = document.createElement('div');
			directionsdiv = document.createElement('div');
			cleardiv = document.createElement('div');
			
			markerdiv.className = 'marker';
			if (i == 0) { markerdiv.className += ' green'; }
			if (i == route.getNumSteps() - 1) { markerdiv.className += ' red'; }
			directionsdiv.className = 'direction';
			cleardiv.className = 'clear';
			
			markerdiv.appendChild(document.createTextNode(i + 1));
			directionsdiv.innerHTML = step.getDescriptionHtml();
			listitem.appendChild(markerdiv);
			listitem.appendChild(directionsdiv);
			listitem.appendChild(cleardiv);			
			directionsList.appendChild(listitem);
		}
	}
}

function togglePrintLinks(action, agentId)
{
	 var search = document.getElementById('PrintSearchResultsLink');
    var details = document.getElementById('PrintAgentDetailsLink');
    var agentIdHidden = document.getElementById('printAgentId');

    if (action == 'agent')
    {
        agentIdHidden.value = agentId;
        search.style.display = 'none';
        details.style.display = '';
    }
    else
    {
        search.style.display = '';
        details.style.display = 'none';
    }

}

function openPrint(action, title)
{
	var win = window.open(action, title);
	win.focus();
	
	return false;
}

function insuranceco(state)
{
	node = document.getElementById('insurancecompany');
	if (state == 1)
	{
		node.style.display = '';
	}
	else
	{
		node.style.display= 'none';
		inputs = node.getElementsByTagName('input');
		inputs[0].value = '';
	}
}

function whyLooking(e)
{
	node = document.getElementById('whylookingother');
	if (e.options[e.selectedIndex].text == 'Other')
	{
		node.style.display = '';
	}
	else
	{		
		node.style.display = 'none';
		inputs = node.getElementsByTagName('input');
		inputs[0].value = '';
	}
}

