var map;
var geocoder;

function searchLocations() {
	var show_map = document.getElementById('map_wrapper');
	show_map.style.display = 'block';
	
	if (GBrowserIsCompatible()) {
        geocoder = new GClientGeocoder();
        map = new GMap2(document.getElementById('map'));
        map.addControl(new GSmallMapControl());
        map.addControl(new GMapTypeControl());
        map.setCenter(new GLatLng(40, -100), 4);
      }

	var address = document.getElementById('addressInput').value;
	geocoder.getLatLng(address, function(latlng) {
		if (!latlng) {
			alert(address + ' not found');
		} else {
			searchLocationsNear(latlng);
		}
	});
}

function searchLocationsNear(center) {
	var searchUrl = '/maps/phpsqlsearch_genxml.php?lat=' + center.lat() + '&lng=' + center.lng() + '&radius=300';
	GDownloadUrl(searchUrl, function(data) {
		var xml = GXml.parse(data);
		var markers = xml.documentElement.getElementsByTagName('marker');
		map.clearOverlays();

		var sidebar = document.getElementById('sidebar');
		sidebar.innerHTML = '';
		if (markers.length == 0) {
			var product_name = document.getElementsByTagName('h1')[0].innerHTML;
			product_name = product_name.replace(/['"]/g,'');
			var product_url = document.location.href;
			product_url = product_url.replace(/[#]/g,'');
			var totalArea = document.getElementById('geo_loc');
			totalArea.innerHTML = '<h2>Unfortunately there are no Mac Stores in your area...</h2>' + '<p class="mbottom">The Mac Store is a regional Mac reseller, which means unless you’re willing to drive to one of our physical locations in Oregon or Washington we can’t sell you this product.</p>' + '<p class="mbottom">You can, however, talk to our online division over at <a href="http://www.powermax.com/">PowerMax.com</a>. These fine folks have been selling Macs since 1984 - and are more than capable of answering your questions.</p>' + '<p class="mbottom">Just enter your information below and one of the great folks over at <a href="http://www.powermax.com/">PowerMax</a> will follow up right away and answer all of your questions!</p>' + '<form action="/inquiry/index" method="post" class="contact_store">' + '<dl>' + '<dt><label for="InquiryName">Name:</label></dt>' + '<dd><input name="data[Inquiry][name]" size="40" class="field" value="" type="text" id="InquiryName" /></dd>' + '<dt><label for="InquiryEmail">Email:</label></dt>' + '<dd><input name="data[Inquiry][email]" size="40" class="field" value="" type="text" id="InquiryEmail" /></dd>' + '<dt><label for="InquiryProduct">Product:</label></dt>' + '<dd><input name="data[Inquiry][product]" size="40" class="field" value="' + product_name + '" type="text" id="InquiryProduct" /></dd>' + '<dt><label for="InquiryComments">Message:</label></dt>' + '<dd><textarea name="data[Inquiry][comments]" rows="10" cols="40" class="field_area" id="InquiryComments"></textarea></dd>' + '</dl>' + '<p class="textright"><input type="submit" class="button" value="Submit" /></p>' + '<p class="textright cancel"><a href="' + product_url + '">Not right now, thanks.</a></p>' + '</form>';
			return;
		}
		
		var bounds = new GLatLngBounds();
		for (var i = 0; i < markers.length; i++) {
			var name = markers[i].getAttribute('name');
			var address = markers[i].getAttribute('address');
			var city = markers[i].getAttribute('city');
			var state = markers[i].getAttribute('state');
			var zip = markers[i].getAttribute('zip');
			var phone = markers[i].getAttribute('phone');
			var code = markers[i].getAttribute('code');
			var distance = parseFloat(markers[i].getAttribute('distance'));
			var point = new GLatLng(parseFloat(markers[i].getAttribute('lat')),
			parseFloat(markers[i].getAttribute('lng')));

			var marker = createMarker(point, name, address, city, state, zip, phone);
			map.addOverlay(marker);
			var sidebarEntry = createSidebarEntry(marker, name, address, city, state, zip, phone, code, distance);
			sidebar.appendChild(sidebarEntry);
			bounds.extend(point);
		}
		map.setCenter(bounds.getCenter(), map.getBoundsZoomLevel(bounds));
	});
}

function createMarker(point, name, address, city, state, zip, phone) {
	var marker = new GMarker(point);
	var html = '<strong>' + name + '</strong><br/>' + address + '<br/>' + city + ', ' + state + ' ' + zip + '<br/>' + phone;
	GEvent.addListener(marker, 'click', function() {
		marker.openInfoWindowHtml(html);
	});
	return marker;
}

function createSidebarEntry(marker, name, address, city, state, zip, phone, code, distance) {
	var product_name = document.getElementsByTagName('h1')[0].innerHTML;
	product_name = product_name.replace(/['"]/g,'');
	var div = document.createElement('div');
	var html = '<strong>' + name + '</strong> (' + distance.toFixed(1) + ' miles)<br/>' + address + '<br/>' + city + ', ' + state + ' ' + zip + '<br/>' + phone + '<br/><a href="#" onclick="emailStore(\'' + code + '\',\'' + name + '\')" class="contact_store">Contact Store &raquo;</a>';
	div.innerHTML = html;
	div.style.cursor = 'pointer';
	div.style.marginBottom = '5px'; 
	GEvent.addDomListener(div, 'click', function() {
		GEvent.trigger(marker, 'click');
	});
	return div;
}

function clearForm() {
	var addressInput = document.getElementById('addressInput');
	if(addressInput.defaultValue == addressInput.value) { 
		addressInput.value = "";
		addressInput.style.color = "#333";
		addressInput.style.fontStyle = "normal";
	}
}

function emailStore(store_code, store_name) {
	var product_name = document.getElementsByTagName('h1')[0].innerHTML;
	product_name = product_name.replace(/['"]/g,'');
	var product_url = document.location.href;
	var totalArea = document.getElementById('geo_loc');
	totalArea.innerHTML = '<h2>Contact ' + store_name + '</h2>' + '<form action="/inquiry/index" method="post" class="contact_store">' + '<dl>' + '<dt><label for="InquiryName">Name:</label></dt>' + '<dd><input name="data[Inquiry][name]" size="40" class="field" value="" type="text" id="InquiryName" /></dd>' + '<dt><label for="InquiryEmail">Email:</label></dt>' + '<dd><input name="data[Inquiry][email]" size="40" class="field" value="" type="text" id="InquiryEmail" /></dd>' + '<dt><label for="InquiryProduct">Product:</label></dt>' + '<dd><input name="data[Inquiry][product]" size="40" class="field" value="' + product_name + '" type="text" id="InquiryProduct" /></dd>' + '<dt><label for="InquiryComments">Message:</label></dt>' + '<dd><textarea name="data[Inquiry][comments]" rows="10" cols="40" class="field_area" id="InquiryComments"></textarea></dd>' + '</dl>' + '<input name="data[Inquiry][store]" size="40" class="field" value="' + store_code + '" type="hidden" id="InquiryStore" />' + '<input name="data[Inquiry][url]" size="40" class="field" value="' + product_url + '" type="hidden" id="InquiryStore" />' + '<p class="textright"><input type="submit" class="button" value="Submit" /></p>' + '<p class="textright cancel"><a href="' + product_url + '">Not right now, thanks.</a></p>' + '</form>';
	return;
}