/* -~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~
'	MOVEWITHUS MAP SEARCH INTERFACE
' -~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~*/
var map;
var marker;
var strSiteURL = "";
var propertyDetailsBaloon = false;
var dupPoint = new Array();



function EnableBaloon() { propertyDetailsBaloon = true; }

/* -~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~
'	THE INITIALIZE FUNCTION THAT PREPARES AND ZOOMS IN
' -~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~*/

function displayMap(lon,lat,zoom,agentgrpid,propertysearchcontainerID,bonX1,bonX2,bonY1,bonY2){
	if (GBrowserIsCompatible()) {
		map = new GMap2(document.getElementById("map"));
		map.addControl(new GLargeMapControl());
		map.addControl(new GMapTypeControl());
		map.addControl(new GScaleControl());
		strAgentGrpID = agentgrpid; 
		strX1 = bonX1;
		strX2 = bonX2;
		strY1 = bonY1;
		strY2 = bonY2;
		strPropertySearchContainerID = propertysearchcontainerID;
		ZoomIntoTown(lat,lon,zoom);
		
		// move map requery 
		GEvent.addListener(map,"moveend", 
			function(overlay) 
			   { 
			       if(propertyDetailsBaloon==true){propertyDetailsBaloon = false
			   } 
			 else 
			   { 
				RequeryMapData(); 
                           }  

			});
		// zoom map requery 
		GEvent.addListener(map, "zoomend", function(oldZoom, newZoom) 
	{	if (map.getZoom()>14){ map.setZoom(14);	};	RequeryMapData(); });
		// get properties
		RequeryMapData(); 
	  }
	else {
	  alert("Sorry, the Google Maps API is not compatible with this browser");
	}
}

/* -~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~
'	ENABLE LEFT HAND SEARCH FIELDS
' -~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~*/

function EnableSearchFields(){

	document.getElementById("txtPmin").disabled = false;
	//document.getElementById("txtPmax").disabled = false;
	document.getElementById("drpMinRooms").disabled = false;
	document.getElementById("drpHouseStatus").disabled = false;

}

/* -~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~
'	GENERIC ZOOM FUNCTION
' -~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~*/

function ZoomIntoTown(lat,lon,zoomlevel){
	
	map.setCenter(new GLatLng(parseFloat(lat), parseFloat(lon)), zoomlevel);
	
}

/* -~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~
'	GENERIC METHOD TO REQUERY THE DATABASE
' -~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~*/

function RequeryMapData(){

	EnableSearchFields();

	//create new empty bounds object 
	var bounds = map.getBounds(); 
	
	//get rid of existing markers
	map.clearOverlays();

	var strQuery = '';

	//search criteria 
	if (strX1 > 0){ strQuery = 'y1=' + strX1 + '&y2=' + strX2 + '&x1=' + strY1 + '&x2='+ strY2;}
	else { strQuery = 'y1=' + bounds.getSouthWest().x + '&y2=' + bounds.getNorthEast().x + '&x1=' + bounds.getSouthWest().y + '&x2='+ bounds.getNorthEast().y; }

	var pmin = document.getElementById('txtPmin').options[document.getElementById('txtPmin').selectedIndex].value;

	if ( pmin != '' ) { strQuery += '&pmin=' + pmin }

	var pmax = document.getElementById('txtPmax').options[document.getElementById('txtPmax').selectedIndex].value;

	if ( pmax != '' ) { strQuery += '&pmax=' + pmax }

	var pbeds = document.getElementById('drpMinRooms').options[document.getElementById('drpMinRooms').selectedIndex].value;

	if(pbeds != '') { strQuery += '&beds=' + pbeds; }

	if(document.getElementById('drpHouseStatus').options[document.getElementById('drpHouseStatus').selectedIndex].value == 'L') { strQuery += '&code=L'; }

	var strURL = strSiteURL + "/mapsearch/serverPropertySearch.asp?groupid=" + strAgentGrpID + "&SSTC=Y&" + strQuery;

	document.getElementById("prpCount").innerHTML ="Map Search - Loading Data...";

	// Read the data from example.xml
	var request = GXmlHttp.create();
	request.open("GET", strURL, true);
	request.onreadystatechange = function() {
	if (request.readyState == 4) {
		var xmlDoc = request.responseXML; 
		// obtain the array of markers and loop through it
		var markers = xmlDoc.documentElement.getElementsByTagName("p");
		var clusterProps = new Array();

		// create cluster lookup table 
		var clusterTable = new Array(markers.length);
		for (var i = 0; i < clusterTable.length; i++) {
			var lat = markers[i].getAttribute("la");
			var lng = markers[i].getAttribute("lo");
			clusterTable[i] = lat + '-' + lng; 
		}


		if(markers.length > 250){
			noProps = 250;
		}
		else	
			noProps = markers.length;
		
			// Check for duplicate entries
			for (var j = 0; j < noProps; j++) { 
				
				var lat = parseFloat(markers[j].getAttribute("la"));
				var lng = parseFloat(markers[j].getAttribute("lo"));
				var point = new GLatLng(lat,lng);
				propid = markers[j].getAttribute("id");
				
				// add cluster property ids 
				for (var i = (j+1); i < clusterTable.length; i++) {
					if (clusterTable[j] == clusterTable[i]) { 
						propidTwo = markers[i].getAttribute("id");
						clusterProps[i] = propid;
					}
				}
				
				// create single property
				if (clusterProps.length == 0){
					var marker = createMarker(point, propid);
					map.addOverlay(marker);
				}
				
				clusterProps.length = 0
				
				/* create tabbed properties 
				if (clusterProps.length > 0){ 
						var tabs =[]; 
						for (var j = 0; j < (clusterProps.length); j++) { 
							tabs.push( new GInfoWindowTab(parseInt(j)+1,newmap.makePopupHtmlDom(prop,siz) ));
							
							new GInfoWindowTab(clusterTable[j]),
						}
					];
				
					var marker2 = createTabbedMarker(point, infoTabs);
					map.addOverlay(marker2); 
				}*/
				
			}
			if(noProps == 250)
				document.getElementById("prpCount").innerHTML = "Map Search - " + noProps  + "+ Properties";			
			else
				document.getElementById("prpCount").innerHTML = "Map Search - " + noProps  + " Properties";
		}

	}

	request.send(null);
}

function recallWindow(path,mygeolon,mygeolat,mycontainer,type){

	var urlpath = path +'/08,' + mygeolon + ',' +mygeolat + ',%20,%20,1,' + myContainerID + ',00.htm&d=l';
	if(type=='L'){
		urlpath = urlpath + '&type= ' + type;
	}
	//alert(urlpath);
	window.location=urlpath;
	}


/* -~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~
'	CREATE MARKER
' -~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~*/

function createMarker(point,propid) {
	var myIcon = new GIcon(); 
	myIcon.image = "/mapsearch/m/p_icon1.gif"; 
	myIcon.iconSize = new GSize(16, 16); 
	myIcon.iconAnchor = new GPoint(5, 5); 
	myIcon.infoWindowAnchor = new GPoint(5, 2);

	var marker = new GMarker(point,myIcon);
	GEvent.addListener(marker, "click", function() { showPropertyInfoWindowHtml(marker,propid); });
	return marker;
}

function createTabbedMarker(point,clusterProps) {
	var myIcon2 = new GIcon(); 
	myIcon2.image = "/mapsearch/m/p_icon2.gif"; 
	myIcon2.iconSize = new GSize(16, 16); 
	myIcon2.iconAnchor = new GPoint(5, 5); 
	myIcon2.infoWindowAnchor = new GPoint(5, 2);

	var marker2 = new GMarker(point,myIcon2);
	GEvent.addListener(marker2, "click", function() { showPropertyInfoWindowTabsHtml(marker2); });
	return marker2;
}

/* -~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~
'	POP UP PROPERTY DETAILS
' -~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~*/
function showPropertyInfoWindowHtml(marker,propid) {
	
	var strGetPropURL = strSiteURL + "/mapsearch/serverPropertyDetails.asp?propertyID=" + propid;
	var strBaloonProperties = "";
	var request = GXmlHttp.create();
	var propStatus = document.getElementById("drpHouseStatus").value;
	var pcm	= '';
	
	if (propStatus == 'L')
		pcm = ' PCM'; //space is delibrate
	else
		pcm = '';
	
	request.open("GET", strGetPropURL, true);
	request.onreadystatechange = function() {
		if (request.readyState == 4) {
			var xmlDoc = request.responseXML; 
			var propertyDetails = xmlDoc.documentElement.getElementsByTagName("p");
			var propertyID = propertyDetails[0].getAttribute("pid");
			var Address1 = propertyDetails[0].getAttribute("a");
			var Bedrooms = propertyDetails[0].getAttribute("bed");
			var Type1 = propertyDetails[0].getAttribute("t1");
			var Type2 = propertyDetails[0].getAttribute("t2");
			var onMarketPrice = propertyDetails[0].getAttribute("pr");
			EnableBaloon();
			addVar = "'add'";
			
			strBaloonProperties = marker.openInfoWindowHtml('<div style="font-size:70%;padding-top:8px;color:#000000;"><img src="http://system.movewithus.co.uk/interface/propertyImage.asp?h=70&w=80&pid=' + propertyID + '" border="1" width="80" align="left" hspace="5"><strong style="color:#000000;">' + Address1 + '</strong> &pound;' + onMarketPrice + pcm + '<br />' + Bedrooms + ' Bedroom ' + Type1 + ' ' + Type2 + '<br /><br /><a href="07,0,0,0,' + propertyID + ',' + strPropertySearchContainerID + ',00.htm"><strong style="color:#000000; text-decoration:underline;">Read More</strong></a> | <a href="#" onclick="updateShortcuts(' + propertyID + ',' + addVar + ')">Add to Shortlist</a></div>');
			}
		}
	request.send(null);
	return strBaloonProperties;
}

/* -~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~
'	POP UP PROPERTY DETAILS (TABBED) 
' -~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~*/
function showPropertyInfoWindowTabsHtml(marker,propid) {
	
	var strGetPropURL = strSiteURL + "/mapsearch/serverPropertyDetails.asp?propertyID=" + propid;
	var strBaloonProperties = "";
	var request = GXmlHttp.create();
	
	request.open("GET", strGetPropURL, true);
	request.onreadystatechange = function() {
		if (request.readyState == 4) {
			var xmlDoc = request.responseXML; 
			var propertyDetails = xmlDoc.documentElement.getElementsByTagName("p");
			var propertyID = propertyDetails[0].getAttribute("pid");
			var Address1 = propertyDetails[0].getAttribute("a");
			var Bedrooms = propertyDetails[0].getAttribute("bed");
			var Type1 = propertyDetails[0].getAttribute("t1");
			var Type2 = propertyDetails[0].getAttribute("t2");
			var onMarketPrice = propertyDetails[0].getAttribute("pr");
			EnableBaloon();
			
			strBaloonProperties = marker.InfoWindowTabsHtml('<div style="font-size:70%;padding-top:8px;color:#000000;"><img src="http://system.movewithus.co.uk/interface/propertyImage.asp?h=70&w=80&pid=' + propertyID + '" border="1" width="80" align="left" hspace="5"><strong style="color:#000000;">' + Address1 + '</strong> &pound;' + onMarketPrice + '<br />' + Bedrooms + ' Bedroom ' + Type1 + ' ' + Type2 + '<br /><br /><a href="07,0,0,0,' + propertyID + ',' + strPropertySearchContainerID + ',00.htm"><strong style="color:#000000; text-decoration:underline;">Read More</strong></a></div>');
			}
		}
	request.send(null);
	return strBaloonProperties;
}





