var map;
var geocoder = false;
var georadius = 10;

function load() {
	if (GBrowserIsCompatible()) {
		geocoder = new GClientGeocoder();
		map = new GMap2(document.getElementById('map'));
		map.addControl(new GSmallMapControl());
		map.addControl(new GMapTypeControl());
	}
}

function slFormSubmit(){
	$('#slloading').fadeIn();
	var address = 
		($('#addressInput').val()==lang_shoploc_const.lang_shoploc_address?'':$('#addressInput').val()) + ', ' + 
		($('#townInput').val()==lang_shoploc_const.lang_shoploc_town?'':$('#townInput').val()) + ', ' + 
		($('#zipcodeInput').val()==lang_shoploc_const.lang_shoploc_zip_code?'':$('#zipcodeInput').val()) + ', ' + 
		$('#countryInput').val();
		if(geocoder == false) geocoder = new GClientGeocoder();
		geocoder.getLatLng(address, function(latlng) {
	 if (!latlng) {
		 alertWindow(lang_shoploc_const.lang_shoploc_loc_not_found);
		 $('#slloading').fadeOut();
	 } else {
			var radius = (
				(($('#addressInput').val()==lang_shoploc_const.lang_shoploc_address?'':$('#addressInput').val()) + 
				($('#townInput').val()==lang_shoploc_const.lang_shoploc_town?'':$('#townInput').val()) + 
				($('#zipcodeInput').val()==lang_shoploc_const.lang_shoploc_zip_code?'':$('#zipcodeInput').val()) != '')
				?georadius:10000
			);
		 modal_dialog({type:'iframe', href:base_url+'shop_locator.html?lat='+latlng.lat()+'&lng='+latlng.lng()+'&radius='+radius+'&cty='+$('#countryInput').val(), width: 660, height: '90%', title: lang_shoploc_const.lang_shoploc_search_results});
	 }
 });
	return false;
}

function searchLocationsNear() {
	var searchUrl = base_url+'ajax.php?op=get_shops&cty=' + sl_vars.cty + '&lat=' + sl_vars.lat + '&lng=' + sl_vars.lng + '&radius=' + sl_vars.radius;

	GDownloadUrl(searchUrl, function(data) {
	 eval('var response = '+data+';');

	 $('#slloading').fadeOut();
	
	 var xml = GXml.parse(data);
	 var markers = response.values;
	 map.clearOverlays();
	
	 if(markers.length == 0) {
		 alertWindow(lang_shoploc_const.lang_shoploc_no_results);
		 map.setCenter(new GLatLng(40, -100), 4);
		 return;
	 }
	
	 //$('#slcontainer').fadeIn();
	 var sidebar = document.getElementById('sidebar');
	 sidebar.innerHTML = '<h2>'+lang_shoploc_const.lang_shoploc_search_results+'</h2><div class="height_20"></div>';
	
	 var bounds = new GLatLngBounds();
	 for (var i = 0; i < markers.length; i++) {
		 var name = markers[i].name;
		 var address = markers[i].address;
		 var city = markers[i].city;
		 var zip_code = markers[i].zip_code;
		 var phones = markers[i].phones;
		 var distance = parseFloat(markers[i].distance);
		 var image = markers[i].image;
		 var point = new GLatLng(parseFloat(markers[i].lat),
														 parseFloat(markers[i].lng));
		 
		 var marker = createMarker(point, name, address, city, zip_code, phones);
		 map.addOverlay(marker);
		 var sidebarEntry = createSidebarEntry(marker, name, address, city, zip_code, phones, distance, image);
		 sidebar.appendChild(sidebarEntry);
		 bounds.extend(point);
	 }
	 map.setCenter(bounds.getCenter(), map.getBoundsZoomLevel(bounds));
	 $('#slcontainer').show();
	});
}

function createMarker(point, name, address, city, zip_code, phones) {
	var marker = new GMarker(point);
	var html = '<span style="color:#000"><b>' + name + '</b><br/>' + address + ', ' + zip_code + ', ' + city + ((phones.length != '')?('<br/>' + phones.replace(/\n/g, "&nbsp; &bull; &nbsp;")):'') + '</span>';
	GEvent.addListener(marker, 'click', function() {
		marker.openInfoWindowHtml(html);
	});
	return marker;
}

function createSidebarEntry(marker, name, address, city, zip_code, phones, distance, image) {
	var div = document.createElement('div');	

	var innerDiv = document.createElement('div');	
	innerDiv.className = 'sb_div';
	innerDiv.innerHTML = '<b>' + name + '</b><br/>' + address + ', ' + zip_code + ', ' + city + ((phones.length != '')?('<br/>' + phones.replace(/\n/g, " &nbsp; &bull; &nbsp; ")):'');
	GEvent.addDomListener(innerDiv, 'click', function() {
		GEvent.trigger(marker, 'click');
	});
	GEvent.addDomListener(innerDiv, 'mouseover', function() {
		innerDiv.style.backgroundColor = '#444';
	});
	GEvent.addDomListener(innerDiv, 'mouseout', function() {
		innerDiv.style.backgroundColor = '#000';
	});
	
	if(image != ''){
		div.className = 'sb_all sb_w_img';
		var innerImg = document.createElement('div');	
		innerImg.innerHTML = '<img src="'+base_url+'shoplocator/logo/tn/'+image+'" onclick="openPromptImage(\''+base_url+'shoplocator/logo/'+image+'\')" alt="" />';
		innerImg.className = 'sb_img';
		div.appendChild(innerImg);
	}
	else{
		div.className = 'sb_all';
	}

	div.appendChild(innerDiv);

	return div;
}
