// store locator Michel et Augustin - v1.0 - 28/06/2010 @rh
var map;
var markers = [];
var infoWindow;
function load(cp) {
map = new google.maps.Map(document.getElementById("map"), {
center: new google.maps.LatLng(46.75984, 1.738281),
zoom: 4,
mapTypeId: 'roadmap',
navigationControl: true,
scaleControl: true,
navigationControl: true,
navigationControlOptions: {
style: google.maps.NavigationControlStyle.ZOOM_PAN
},
mapTypeControlOptions: {style: google.maps.MapTypeControlStyle.DROPDOWN_MENU}
});
infoWindow = new google.maps.InfoWindow();
if (window.location.hash) {
var cpurl = window.location.hash;
document.getElementById("addressInput").value = cpurl.replace(/#/g,'');
if (isNaN(document.getElementById("addressInput").value)) {document.getElementById("addressInput").value = unescape(document.getElementById("addressInput").value); }
searchLocations();
}
if (cp) {
document.getElementById("addressInput").value = cp;
if (isNaN(document.getElementById("addressInput").value)) {document.getElementById("addressInput").value = unescape(document.getElementById("addressInput").value); }
searchLocations();
}
}
function searchLocations() {
if (document.getElementById("addressInput2") == undefined) {
var address = document.getElementById("addressInput").value;
} else {
var address = document.getElementById("addressInput2").value;
}
if (address == '75000') { address = '75'; }
var geocoder = new google.maps.Geocoder();
geocoder.geocode({address: address}, function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
searchLocationsNear(results[0].geometry.location);
new google.maps.Marker({
map: map,
position: results[0].geometry.location,
icon: 'images/icones-36.png',
zIndex: 50000
});
document.getElementById('saisie').setAttribute("class",'center');
document.getElementById('noresult').innerHTML = '';
document.getElementById('txtintro').style.display = 'none';
document.getElementById('txtintro2').style.display = 'none';
if (!window.location.hash) window.location = window.location + '#' + escape(document.getElementById("addressInput").value);
} else {
alert(address + ' : cette adresse n\'a pas été trouvée...');
}
});
}
function clearLocations() {
infoWindow.close();
for (var i = 0; i < markers.length; i++) {
markers[i].setMap(null);
}
markers.length = 0;
}
function searchLocationsNear(center) {
clearLocations();
var searchUrl = 'xml.php?lat=' + center.lat() + '&lng=' + center.lng() + '&txt=' + escape(document.getElementById("addressInput").value);
downloadUrl(searchUrl, function(data) {
var xml = parseXml(data);
var markerNodes = xml.documentElement.getElementsByTagName("marker");
var bounds = new google.maps.LatLngBounds();
var sidebar = document.getElementById('sidebar');
sidebar.scrollTop = 0;
sidebar.innerHTML = '';
if (markerNodes.length == 0) {
document.getElementById('cdre').style.display = 'none';
document.getElementById('saisie').style.display = 'none';
document.getElementById('hop').style.display = 'none';
document.getElementById('saisie').innerHTML = '';
document.getElementById('ctn').style.backgroundImage = 'url(images/fondrecherche2.png)';
document.getElementById('noresult').innerHTML = "
A priori pas grand-chose en bas de chez vous.
Essayez avec une autre adresse ou tentez de convaincre votre commerçant préféré de rejoindre notre belle aventure en cliquetant ici
Une autre recherche ?
";
sIFR.replace(skippys, {
selector: 'h2',
wmode: 'transparent',
css: '.sIFR-root { color: #eb0186; font-size:30px; margin: 0; padding: 0; leading: -30; height: 30px; background: transparent }'
});
sIFR.replace(skippys, {
selector: 'p',
wmode: 'transparent',
css: '.sIFR-root { color: #000000; font-size:25px; margin: 0; padding: 0; leading: -12; background: transparent } .sIFR-root a { text-decoration: none; color: #eb0186 } .sIFR-root a:hover { text-decoration: none; color: #eb0186 }'
});
return;
} else {
document.getElementById('hop').style.display = 'block';
document.getElementById('ctn').style.backgroundImage = 'url(images/fondrecherche.png)';
document.getElementById('saisie').innerHTML = 'Une autre recherche ? ';
document.getElementById('saisie').style.display = 'block';
document.getElementById('cdre').style.display = 'block';
sIFR.replace(skippys, {
selector: 'h2',
wmode: 'transparent',
css: '.sIFR-root { color: #eb0186; font-size:50px; margin: 0; padding: 0; leading: -40; height: 30px; background: transparent }'
});
sIFR.replace(skippys, {
selector: 'h3',
wmode: 'transparent',
css: '.sIFR-root { color: #eb0186; font-size:25px; margin: 0; padding: 0; leading: -12; background: transparent }'
});
sIFR.replace(skippys, {
selector: '#hip',
wmode: 'transparent',
css: '.sIFR-root { color: #eb0186; font-size:20px; margin: 0; padding: 0; leading: -12; background: transparent } .sIFR-root a { text-decoration: none; color: #eb0186 } .sIFR-root a:hover { text-decoration: none; color: #eb0186 }'
});
google.maps.event.trigger(map, 'resize');
}
for (var i = 0; i < markerNodes.length; i++) {
var name = markerNodes[i].getAttribute("name");
var address = markerNodes[i].getAttribute("address");
var distance = parseFloat(markerNodes[i].getAttribute("distance"));
var latlng = new google.maps.LatLng(
parseFloat(markerNodes[i].getAttribute("lat")),
parseFloat(markerNodes[i].getAttribute("lng")));
createMarker(latlng, name, address);
var sidebarEntry = createSidebarEntry(markers[i], name, address, distance);
sidebar.appendChild(sidebarEntry);
bounds.extend(latlng);
delete sidebarEntry;
}
if (markerNodes.length == 20) {
var sidebarTxt = document.createElement('div');
var html = "Voici les magasins près de chez vous que nous avons visités récemment.
S'il y a d'autres vaches ou petits carrés près de chez vous, dites-le nous en cliquetant ici !";
sidebarTxt.innerHTML = html;
sidebarTxt.style.marginBottom = '5px';
sidebar.appendChild(sidebarTxt);
}
map.fitBounds(bounds);
});
}
function createMarker(latlng, name, address) {
var html = "" + name + "
" + address + "
Envie de vous rendre chez ce chouette commerçant ?";
var marker = new google.maps.Marker({
map: map,
position: latlng,
icon: 'images/icones-34.png'
});
google.maps.event.addListener(marker, 'click', function() {
infoWindow.setContent(html);
for (var i = 0; i < markers.length; i++) {
markers[i].setIcon('images/icones-34.png');
}
marker.setIcon('images/icones-35.png');
infoWindow.open(map, marker);
});
markers.push(marker);
}
function createSidebarEntry(marker, name, address, distance) {
var div = document.createElement('div');
var html = '' + name + ' (' + distance.toFixed(1) + 'km)
' + address;
div.innerHTML = html;
div.style.cursor = 'pointer';
div.style.marginBottom = '15px';
google.maps.event.addDomListener(div, 'click', function() {
google.maps.event.trigger(marker, 'click');
});
google.maps.event.addDomListener(div, 'mouseover', function() {
div.style.backgroundColor = '#eee';
});
google.maps.event.addDomListener(div, 'mouseout', function() {
div.style.backgroundColor = '#fff';
});
return div;
}
function downloadUrl(url, callback) {
var request = window.ActiveXObject ?
new ActiveXObject('Microsoft.XMLHTTP') :
new XMLHttpRequest;
request.onreadystatechange = function() {
if (request.readyState == 4) {
request.onreadystatechange = doNothing;
callback(request.responseText, request.status);
}
};
request.open('GET', url, true);
request.send(null);
}
function parseXml(str) {
if (window.ActiveXObject) {
var doc = new ActiveXObject('Microsoft.XMLDOM');
doc.loadXML(str);
return doc;
} else if (window.DOMParser) {
return (new DOMParser).parseFromString(str, 'text/xml');
}
}
function doNothing() {}