

function closeDealerErrorWindow(){
	$('.dealer-error').fadeOut('fast', function(){$('.dealer-error').remove();});
    $('.whole-bg').fadeOut('fast', function(){$('.whole-bg').remove();});
}


function initialize() {
	if (google.maps.BrowserIsCompatible()) {
      	map = new google.maps.Map2(document.getElementById("map-canvas"));
		  map.addControl(new google.maps.MapTypeControl());
		  map.addControl(new google.maps.LargeMapControl());
	  
		  sidebar = document.getElementById("map-sidebar-list");
		  if(google.loader.ClientLocation){
			var lat = google.loader.ClientLocation.latitude;
			var lng = google.loader.ClientLocation.longitude;
			centerlatlng = new google.maps.LatLng(lat,lng);
		}
		else{
			centerlatlng = new google.maps.LatLng(44.88,-93.22);
	  	}
	
		//centerlatlng = new google.maps.LatLng(44.88,-93.22);
		  map.setCenter(centerlatlng, 13);  
		  //loadMarkers(centerlatlng);
	
		if(orgcountry != ""){
			var searchaddress;
			if(searchRadius == ""){
				searchRadius = '500';
			}
			if(orgaddress != ""){
				searchaddress = orgaddress + " " + orgcountry;
				loadMarkers("latlng", searchaddress, searchRadius);
			}
			else{
				searchaddress = orgcountry;
				loadMarkers("country", searchaddress, searchRadius);
			}
		
			
		}
	}
}

function createMarker(point, content, pointertype){
	var s_icon = new google.maps.Icon(google.maps.DEFAULT_ICON);
	s_icon.image = '/images/template_images/map/flag/image.png';
	s_icon.printImage = '/images/template_images/map/flag/printImage.gif';
	s_icon.mozPrintImage = '/images/template_images/map/flag/mozPrintImage.gif';
	s_icon.iconSize = new GSize(28,45);
	s_icon.shadow = '/images/template_images/map/flag/shadow.png';
	s_icon.transparent = '/images/template_images/map/flag/transparent.png';
	s_icon.shadowSize = new GSize(51,45);
	s_icon.printShadow = '/images/template_images/map/flag/printShadow.gif';
	s_icon.iconAnchor = new GPoint(0,45);
	s_icon.infoWindowAnchor = new GPoint(14,0);
	s_icon.imageMap = [13,0,26,1,27,2,27,3,27,4,27,5,27,6,27,7,27,8,27,9,27,10,27,11,27,12,27,13,27,14,27,15,26,16,3,17,3,18,3,19,3,20,3,21,3,22,3,23,3,24,3,25,3,26,3,27,3,28,3,29,3,30,3,31,3,32,3,33,3,34,3,35,3,36,3,37,3,38,6,39,6,40,7,41,7,42,6,43,6,44,0,44,0,43,0,42,0,41,0,40,0,39,1,38,1,37,1,36,1,35,1,34,1,33,1,32,1,31,1,30,1,29,1,28,1,27,1,26,1,25,1,24,1,23,1,22,1,21,1,20,1,19,1,18,1,17,1,16,1,15,1,14,1,13,1,12,1,11,1,10,1,9,1,8,1,7,1,6,1,5,1,4,1,3,1,2,1,1,5,0];
	
	
	var markerOptions = {icon:s_icon}
	var marker = new google.maps.Marker(point,markerOptions);
	google.maps.Event.addListener(marker, 'click', function(){
		marker.openInfoWindowHtml(content);
	});
	return marker;
}

function createSidebarEntry(marker, name, address, distance){
	//alert('sidebar');
		var reducedname = name;

		if(reducedname.length >= 999){
			reducedname = reducedname.substr(0, 999) + "...";
		}			
/*	a = $('<a />').addClass('dealer-link').attr('href','#').text(reducedname);
	li = $('<li  />').append(a).append('<p class="expanded-info">' + address + '</p>');
	
	a.click(function(){
		google.maps.Event.trigger(marker, 'click');	
	});*/
	
	var li = document.createElement('li');
	var a = document.createElement('a');
	a.className = "dealer-link";
	a.href = "#";
	
	//alert("here1");
	a.innerHTML = '<strong>' + reducedname + '</strong>';
	var p = document.createElement('p');
	p.className = "expanded-info";
	p.innerHTML = address;
	
	li.appendChild(a);
	li.appendChild(p);
	//alert("here2");
  	google.maps.Event.addDomListener(a, 'click', function() {
    	google.maps.Event.trigger(marker, 'click');
		//$(this).siblings('.expanded-info').slideToggle();
  	});
	
	//alert('done with sidebar');

  	/*GEvent.addDomListener(div, 'mouseover', function() {
    	div.style.backgroundColor = '#eee';
  	});
  	GEvent.addDomListener(div, 'mouseout', function() {
    	div.style.backgroundColor = '#fff';
  	});*/
  return li;
}

function loadMarkers(searchtype, search, searchRadius){
	map.clearOverlays();	
	sidebar.innerHTML = '';
	var geocoder = new google.maps.ClientGeocoder();
	var searchUrl;
	geocoder.getLatLng(search, function(latlng){
		if(!latlng){
					$('<div />').addClass('whole-bg').click(closeDealerErrorWindow).appendTo("body");
					$('<div />').addClass('roundedcorners')
								.addClass('dealer-error')
								.html("<p>The address or postal code that you entered could not be located." +
										" Please try entering another address or postal code or <a href='/index.php/dealers/'>click here</a>" +
										" to view dealers by state and country.</p>").appendTo("body");
					$('<a />').addClass('close-link').click(closeDealerErrorWindow).appendTo('.dealer-error');
		}
		else{
			
			
			//build search url
			switch(searchtype){
				case "region":
					searchUrl = '/index.php/dealers/dealer_xml/region/' + search;
				break;
				case "country":
					searchUrl = '/index.php/dealers/dealer_xml/country/' + search;
				break;
				case "latlng":
					map.panTo(latlng);
					searchUrl = '/index.php/dealers/dealer_xml/' + encodeURIComponent(latlng.lat()) + '&' + encodeURIComponent(latlng.lng()) + '&' + searchRadius + '/';
				break;
			}
			
			google.maps.DownloadUrl(searchUrl, function(data){
			var xml = google.maps.Xml.parse(data);
			var markers = xml.documentElement.getElementsByTagName('marker');
			
			if(markers.length ==0){
				$('<div />').addClass('whole-bg').appendTo("body");
				$('<div />').addClass('roundedcorners')
							.addClass('dealer-error')
							.load('/index.php/dealers/no_results').appendTo("body");
			} 
			
			var bounds = new google.maps.LatLngBounds();
			map.clearOverlays();
			
			for(var i=0; i<markers.length; i++){
				var name = markers[i].getAttribute('name');
				var address = markers[i].getAttribute('address');
				var state = markers[i].getAttribute('state');
				var city = markers[i].getAttribute('city');
				var postal = markers[i].getAttribute('postal');
				var phone = markers[i].getAttribute('phone');
				var distance = parseFloat(markers[i].getAttribute('distance'));
				var website = markers[i].getAttribute('website');
				var dealer_rank = markers[i].getAttribute('dealer_rank');
				
				var point = new google.maps.LatLng(parseFloat(markers[i].getAttribute('lat')), parseFloat(markers[i].getAttribute('lng')));
				var content = '<b>' + name + '</b><br>' + address;
				content += '<br>' + city + ', ' + state + ' ' + postal 
				content += '<br>' + phone;
				if(website.length > 0){
					content += '<br>';
					content += '<a href="' + website + '">Website</a>';
				}
				
			//	content += '<br><br>' + '<b>Distance:</b> ' + distance.toFixed(1) + '<br><br>';
				content += '<br><br><a href="http://maps.google.com?q=' + point.lat() + ',' + point.lng() + '" target="_blank">Get Driving Directions</a>';
				
				var address_content = address + "<br/>" + city + ", " + state + " " + postal +"<br/>"
									+ phone + "<br/>" + '<a href="http://' + website + '">' + website + '</a>';
				
				var marker = createMarker(point, content, dealer_rank);
				var sidebarentry = createSidebarEntry(marker, name, address_content, distance, dealer_rank);

				map.addOverlay(marker);
				sidebar.appendChild(sidebarentry);
				bounds.extend(point);
				
			}
			map.panTo(bounds.getCenter());
			map.setZoom(map.getBoundsZoomLevel(bounds)-1);
			
			if ($('#map-sidebar-list li').length > 4) 
			{   
			    $('.nextPage').removeClass('disabled');     
			}	
			});	
		}	
	});
}

