if (GBrowserIsCompatible()) { var map; var geo; var reasons=[]; var gmarkers = []; var gmarkers_1 = []; var gmarkers_2 = []; var htmls = []; var no_of_villa = 0; var small_map; var map_center_lat; var map_center_lng; var bounds = new GLatLngBounds(); /* first set of options is for the visual overlay.*/ var boxStyleOpts = { opacity: .2, border: "2px solid red" }; /* second set of options is for everything else */ var otherOpts = { buttonHTML: "", buttonZoomingHTML: "", buttonStartingStyle: {width: '24px', height: '24px'}, overlayRemoveTime: 1000 }; function setupDragZoom() { /* first set of options is for the visual overlay.*/ var boxStyleOpts = { opacity: .2, border: "2px solid red" }; /* second set of options is for everything else */ var otherOpts = { buttonHTML: "", buttonZoomingHTML: "", buttonStartingStyle: {width: '24px', height: '24px'}, overlayRemoveTime: 1000 }; map.addControl(new DragZoomControl(boxStyleOpts, otherOpts, {}), new GControlPosition(G_ANCHOR_TOP_LEFT, new GSize(23, 270))); } // This function just makes a pretty table for the EWindow contents // With a close icon function pretty(a,b) { return '' + '
' + a + '
' + b + '
'; } function createIcon(image){ var image_ico = "http://www.pogo-direct.co.uk/upload/points_types/"+image; var icon = new GIcon(); icon.image = image_ico; icon.iconAnchor = new GPoint(6, 20); icon.infoWindowAnchor = new GPoint(5, 1); return icon; } function createMarker_small(point, id, type, image_icon) { var icon = createIcon(image_icon); var marker = new GMarker(point, icon); marker.mycategory = type; marker.myname = '1'; GEvent.addListener(marker, 'click', function() { show_map(); }); gmarkers.push(marker); return marker; } function createMarker(point, id, name, description, type, image_icon, image, url) { var icon = createIcon(image_icon); var marker = new GMarker(point, icon); marker.mycategory = type; marker.myname = id; var imageadd = ''; var editlink = ''; var urllink = ''; if(image!='') imageadd = ""; var html = "
"+ imageadd +"
" + description+"
"; html = pretty(name,html); GEvent.addListener(marker, 'mouseover', function() { if(small_map==false){ ew.openOnMarker(marker,html); } }); GEvent.addListener(marker, 'mouseout', function() { ew.hide(); }); if(url!=''){ GEvent.addListener(marker, 'click', function() { if(small_map==false){ window.location.href = url; } }); } gmarkers.push(marker); htmls[id] = html; if(type=='1'){ no_of_villa++; } return marker; } function show_searching_results(searching_id, page_number, limit, sort1, sort2){ var xml_url = "/maps_markers.xml.php?searching_id="+searching_id+"&page_number="+page_number+"&limit="+limit+"&sort1="+sort1+"&sort2="+sort2; GDownloadUrl(xml_url, function(data) { var xml = GXml.parse(data); var markers = xml.documentElement.getElementsByTagName("marker"); for (var i = 0; i < (markers.length-1); i++) { var id = markers[i].getAttribute("id"); var name = markers[i].getAttribute("name"); var description = markers[i].getAttribute("description"); var type = markers[i].getAttribute("type"); var image_icon = markers[i].getAttribute("image_icon"); var image = markers[i].getAttribute("image"); var url = markers[i].getAttribute("url"); var point = new GLatLng(parseFloat(markers[i].getAttribute("lat")), parseFloat(markers[i].getAttribute("lng"))); //var marker_temp = createMarker_small(point, id, type, image_icon); var marker_temp = createMarker(point, id, name, description, type, image_icon, image, url); map.addOverlay(marker_temp); if(type=='1'){ gmarkers_1.push(marker_temp); }else{ marker_temp.hide(); gmarkers_2.push(marker_temp); } bounds.extend(point); } map_center_lng = markers[i].getAttribute("lng") map_center_lat = markers[i].getAttribute("lat") if(no_of_villa>1){ map.setZoom(map.getBoundsZoomLevel(bounds)); map.setCenter(bounds.getCenter()); }else{ map_center = new GLatLng(map_center_lat,map_center_lng); map.setCenter(map_center, 4); } }); } function show_villas(searching_query){ var xml_url = "/maps_markers.xml.php?searching_query="+searching_query; GDownloadUrl(xml_url, function(data) { var xml = GXml.parse(data); var markers = xml.documentElement.getElementsByTagName("marker"); for (var i = 0; i < (markers.length-1); i++) { var id = markers[i].getAttribute("id"); var name = markers[i].getAttribute("name"); var description = markers[i].getAttribute("description"); var type = markers[i].getAttribute("type"); var image_icon = markers[i].getAttribute("image_icon"); var image = markers[i].getAttribute("image"); var url = markers[i].getAttribute("url"); var point = new GLatLng(parseFloat(markers[i].getAttribute("lat")), parseFloat(markers[i].getAttribute("lng"))); //var marker_temp = createMarker_small(point, id, type, image_icon); var marker_temp = createMarker(point, id, name, description, type, image_icon, image, url); map.addOverlay(marker_temp); if(type=='1'){ gmarkers_1.push(marker_temp); }else{ marker_temp.hide(); gmarkers_2.push(marker_temp); } bounds.extend(point); } map_center_lng = markers[i].getAttribute("lng") map_center_lat = markers[i].getAttribute("lat") if(no_of_villa>1){ map.setZoom(map.getBoundsZoomLevel(bounds)); map.setCenter(bounds.getCenter()); }else{ map_center = new GLatLng(map_center_lat,map_center_lng); map.setCenter(map_center, 4); } }); } function show_current_villa(villa_id){ var xml_url = "/maps_markers.xml.php?villa_id="+villa_id; GDownloadUrl(xml_url, function(data) { var xml = GXml.parse(data); var markers = xml.documentElement.getElementsByTagName("marker"); for (var i = 0; i < (markers.length-1); i++) { var id = markers[i].getAttribute("id"); var name = markers[i].getAttribute("name"); var description = markers[i].getAttribute("description"); var type = markers[i].getAttribute("type"); var image_icon = markers[i].getAttribute("image_icon"); var image = markers[i].getAttribute("image"); var url = markers[i].getAttribute("url"); var point = new GLatLng(parseFloat(markers[i].getAttribute("lat")), parseFloat(markers[i].getAttribute("lng"))); //var marker_temp = createMarker_small(point, id, type, image_icon); var marker_temp = createMarker(point, id, name, description, type, image_icon, image, url); map.addOverlay(marker_temp); if(type=='1'){ marker_temp.show(); gmarkers_1.push(marker_temp); }else{ marker_temp.hide(); gmarkers_2.push(marker_temp); } bounds.extend(point); } map_center_lng = markers[i].getAttribute("lng") map_center_lat = markers[i].getAttribute("lat") if(no_of_villa>1){ map.setZoom(map.getBoundsZoomLevel(bounds)); map.setCenter(bounds.getCenter()); }else{ map_center = new GLatLng(map_center_lat,map_center_lng); map.setCenter(map_center, 4); } }); } function show_villa_info(pointId){ for (var i=0; i < gmarkers.length; i++) { if(gmarkers[i].myname==pointId){ //gmarkers[i].openInfoWindowHtml(htmls[pointId]); ew.openOnMarker(gmarkers[i],htmls[pointId]); } } } function initialize_site_map(plat, plng, pid) { small_map = true; map = new GMap2(document.getElementById("lc_map_container")); geo = new GClientGeocoder(); if(plat=='' && plng==''){ plat = 39.960281; plng = -4.020996; map_center_lat = plat; map_center_lng = plng; } var center = new GLatLng(plat,plng); map.setCenter(center, 4); // ========== Close the EWindow if theres a map click ========== GEvent.addListener(map, "click", function(marker,point) { show_map(); if (point) { ew.hide(); } }); // GEvent.addListener(map, 'click', function() { // show_map(); // }); toggle_logo('lc_map_container'); // Create an EWindow ew = new EWindow(map, E_STYLE_7); map.addOverlay(ew); } function toggle_logo(elementId) { var source = document.getElementById(elementId); //Terms of use link var divs = source.getElementsByTagName('div'); var current = (divs[14].style.display == 'none') ? 'block' : 'none'; divs[14].style.display = current; //Google Logo link var links = source.getElementsByTagName('a'); var current = (links[1].style.display == 'none') ? 'block' : 'none'; links[1].style.display = current; } function show_map(){ if(small_map==true){ var width = 0; var height = 0; var iebody=(document.compatMode && document.compatMode != "BackCompat")? document.documentElement : document.body var top_value = document.all? iebody.scrollTop : pageYOffset if(top_value<80){ top_value = 80; } $("#lc_map_container").animate({ borderWidth: "10px", left: "270px", top: top_value+"px", width:"500px" }, 750); $("#lc_map_container").animate({ height:"400px" }, 750); document.getElementById("lc_map_container").style.zIndex="999999"; $("#lc_map_container").append('
Minimise map
'); var pos = new GControlPosition(G_ANCHOR_BOTTOM_RIGHT, new GSize(2,2)); pos.apply(document.getElementById("control")); map.getContainer().appendChild(document.getElementById("control")); /*$("#lc_map_container").easydrag();*/ ctrl = new GLargeMapControl(); ctrl_type = new GMapTypeControl(); ctrl_dragzoom = new DragZoomControl(boxStyleOpts, otherOpts, {}), new GControlPosition(G_ANCHOR_TOP_LEFT, new GSize(23, 570)); map.addControl(ctrl); map.addControl(ctrl_type); map.addControl(ctrl_dragzoom); small_map = false; map_center_lat_temp = parseFloat(map_center_lat)+parseFloat(6); map_center_lng_temp = parseFloat(map_center_lng)-parseFloat(7); if(no_of_villa>1){ map.setZoom(map.getBoundsZoomLevel(bounds)); map.setCenter(bounds.getCenter()); }else{ map_center = new GLatLng(map_center_lat,map_center_lng); map.setCenter(map_center, 4); } for (var i=0; i < gmarkers_2.length; i++) { gmarkers_2[i].show(); } } } function hide_map(){ map.removeControl(ctrl); map.removeControl(ctrl_type); map.removeControl(ctrl_dragzoom); map.getContainer().removeChild(document.getElementById("control")); $("#lc_map_container").animate({ height:"207px" }, 750); $("#lc_map_container").animate({ borderWidth: "1px", left: "10px", top: "37px", width:"224px" }, 750); /*$("#lc_map_container").dragOff();*/ document.getElementById("lc_map_container").style.zIndex="98"; document.getElementById("lc_map_globe").style.zIndex="99"; small_map = true; //map.closeInfoWindow(); ew.hide(); for (var i=0; i < gmarkers_2.length; i++) { gmarkers_2[i].hide(); } if(no_of_villa>1){ map.setZoom(map.getBoundsZoomLevel(bounds)); map.setCenter(bounds.getCenter()); }else{ map_center = new GLatLng(map_center_lat,map_center_lng); map.setCenter(map_center, 4); } } function checkPostCode (toCheck) { // Permitted letters depend upon their position in the postcode. var alpha1 = "[abcdefghijklmnoprstuwyz]"; // Character 1 var alpha2 = "[abcdefghklmnopqrstuvwxy]"; // Character 2 var alpha3 = "[abcdefghjkstuw]"; // Character 3 var alpha4 = "[abehmnprvwxy]"; // Character 4 var alpha5 = "[abdefghjlnpqrstuwxyz]"; // Character 5 // Array holds the regular expressions for the valid postcodes var pcexp = new Array (); // Expression for postcodes: AN NAA, ANN NAA, AAN NAA, and AANN NAA pcexp.push (new RegExp ("^(" + alpha1 + "{1}" + alpha2 + "?[0-9]{1,2})(\\s*)([0-9]{1}" + alpha5 + "{2})$","i")); // Expression for postcodes: ANA NAA pcexp.push (new RegExp ("^(" + alpha1 + "{1}[0-9]{1}" + alpha3 + "{1})(\\s*)([0-9]{1}" + alpha5 + "{2})$","i")); // Expression for postcodes: AANA NAA pcexp.push (new RegExp ("^(" + alpha1 + "{1}" + alpha2 + "?[0-9]{1}" + alpha4 +"{1})(\\s*)([0-9]{1}" + alpha5 + "{2})$","i")); // Exception for the special postcode GIR 0AA pcexp.push (/^(GIR)(\s*)(0AA)$/i); // Standard BFPO numbers pcexp.push (/^(bfpo)(\s*)([0-9]{1,4})$/i); // c/o BFPO numbers pcexp.push (/^(bfpo)(\s*)(c\/o\s*[0-9]{1,3})$/i); // Load up the string to check var postCode = toCheck; // Assume we're not going to find a valid postcode var valid = false; // Check the string against the types of post codes for ( var i=0; i"; if(id!=''){ if(type=='1'){ editlink = url; name = "Property ref. "+rel_id; editlink = "http://www.pogo-direct.co.uk/en/account/my_villas/?step=1&edit="+rel_id; }else{ editlink = "http://www.pogo-direct.co.uk/en/account/map/?page=1&point_edit="+id; } } if(url!='') urllink = "View more >>    "; var html = "
"+ imageadd +"
" + description+"
"; /*GEvent.addListener(marker, 'click', function() { marker.openInfoWindowHtml(html); });*/ html = pretty(name,html); GEvent.addListener(marker, 'mouseover', function() { ew.openOnMarker(marker,html); }); GEvent.addListener(marker, 'mouseout', function() { ew.hide(); }); /*GEvent.addListener(marker, 'click', function() { window.location.href = editlink; }); */ gmarkers.push(marker); return marker; } // == shows all markers of a particular category, and ensures the checkbox is checked == function show_marker(category) { for (var i=0; i0){ if(distance<=maxdistance){ if(gmarkers_1[i] == true){ gmarkers[i].show(); } gmarkers_2[i] = true; }else{ gmarkers[i].hide(); gmarkers_2[i] = false; } }else{ if(gmarkers_1[i] == true){ gmarkers[i].show(); } gmarkers_2[i] = true; } } } // == shows all markers of a particular category, and ensures the checkbox is checked == function show_main(category) { for (var i=0; imaxdistance){ marker_temp.hide(); gmarkers_2[i] = false; } } }); toggle_logo('map'); // Create an EWindow ew = new EWindow(map, E_STYLE_7); map.addOverlay(ew); } function initialize_main_map() { map = new GMap2(document.getElementById("map")); geo = new GClientGeocoder(); reasons[G_GEO_SUCCESS] = "Success"; reasons[G_GEO_MISSING_ADDRESS] = "Missing Address: The address was either missing or had no value."; reasons[G_GEO_UNKNOWN_ADDRESS] = "Unknown Address: No corresponding geographic location could be found for the specified address."; reasons[G_GEO_UNAVAILABLE_ADDRESS]= "Unavailable Address: The geocode for the given address cannot be returned due to legal or contractual reasons."; reasons[G_GEO_BAD_KEY] = "Bad Key: The API key is either invalid or does not match the domain for which it was given"; reasons[G_GEO_TOO_MANY_QUERIES] = "Too Many Queries: The daily geocoding quota for this site has been exceeded."; reasons[G_GEO_SERVER_ERROR] = "Server error: The geocoding request could not be successfully processed."; map.addControl(new GLargeMapControl()); map.addControl(new GMapTypeControl()); map.addControl(new GOverviewMapControl()); map.addControl(new GScaleControl()); map.enableDoubleClickZoom(); setupDragZoom(); map.setCenter(new GLatLng(0,0),0); GDownloadUrl("http://www.pogo-direct.co.uk/maps_markers.xml.php?view_all_points=true", function(data) { var xml = GXml.parse(data); var markers = xml.documentElement.getElementsByTagName("marker"); for (var i = 0; i < markers.length; i++) { var id = markers[i].getAttribute("id"); var name = markers[i].getAttribute("name"); var description = markers[i].getAttribute("description"); var type = markers[i].getAttribute("type"); var image_icon = markers[i].getAttribute("image_icon"); var image = markers[i].getAttribute("image"); var url = markers[i].getAttribute("url"); var rel_id = markers[i].getAttribute("rel_id"); var point = new GLatLng(parseFloat(markers[i].getAttribute("lat")), parseFloat(markers[i].getAttribute("lng"))); var marker = createMarker_view(point, id, name, description, type, image_icon, image, url, rel_id); bounds.extend(point); map.addOverlay(marker); } if(markers.length<2){ map.setZoom(6); }else{ map.setZoom(map.getBoundsZoomLevel(bounds)); } if(markers.length==0){ map.setCenter(new GLatLng(39.960281, -4.020996)); }else{ map.setCenter(bounds.getCenter()); } }); toggle_logo('map'); // Create an EWindow ew = new EWindow(map, E_STYLE_7); map.addOverlay(ew); } // ====== Plot a marker after positive reponse to "did you mean" ====== function place(lat,lng) { var point = new GLatLng(lat,lng); map.setCenter(point); marker.setPoint(point); document.getElementById('lat').value = marker.getPoint().lat(); document.getElementById('lng').value = marker.getPoint().lng(); // map.addOverlay(new GMarker(point)); document.getElementById("message").innerHTML = ""; } // ====== Geocoding ====== function showAddress() { var search1 = document.getElementById("search").value; var s; if (!checkPostCode(search1)){ s = search1; } else { s = checkPostCode(search1); } // ====== Perform the Geocoding ====== geo.getLocations(s, function (result) { //map.clearOverlays(); if (result.Status.code == G_GEO_SUCCESS) { // ===== If there was more than one result, "ask did you mean" on them all ===== if (result.Placemark.length > 1) { document.getElementById("message").innerHTML = "Did you mean:"; // Loop through the results for (var i=0; i"+ result.Placemark[i].address+""; } } // ===== If there was a single marker ===== else { document.getElementById("message").innerHTML = ""; var p = result.Placemark[0].Point.coordinates; place(p[1],p[0]); } } // ====== Decode the error status ====== else { var reason="Code "+result.Status.code; if (reasons[result.Status.code]) { reason = reasons[result.Status.code] } alert('Could not find "'+s+ '" ' + reason); } } ); } }else { alert("Sorry, the Google Maps API is not compatible with this browser"); }