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 '
';
}
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"+(i+1)+": "+ 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");
}