/* -~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~
'	MOVEWITHUS MAP SEARCH INTERFACE
' -~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~*/
var map;
var marker;
var strSiteURL = globalpath;
var propertyDetailsBaloon = false;
var dupPoint = new Array();

function EnableBaloon() { propertyDetailsBaloon = true; }
/* -~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~
'	THE INITIALIZE FUNCTION THAT PREPARES AND ZOOMS IN
' -~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~*/

function initMap(lat,lon,zoom,controls){
	if(zoom==null)
		zoom = 10;
	if (GBrowserIsCompatible(lat,lon,zoom)) {
        map = new GMap2(document.getElementById("map"));
	    map.setCenter(new GLatLng(lat,lon), zoom);
		if(controls!=null && controls != 0){
			map.addControl(new GLargeMapControl());
			map.addControl(new GMapTypeControl());
			map.addControl(new GScaleControl());
		}
//        map.setUIToDefault();
      }
}

function initMap_small(lat,lon,zoom,controls){
	if(zoom==null)
		zoom = 10;
	if (GBrowserIsCompatible(lat,lon,zoom)) {
        map = new GMap2(document.getElementById("map2"));
		//map.setMapType(G_SATELLITE_MAP);
	    map.setCenter(new GLatLng(lat,lon), zoom);
		if(controls!=null && controls != 0){
			map.addControl(new GLargeMapControl());
			map.addControl(new GMapTypeControl());
			map.addControl(new GScaleControl());
		}
//        map.setUIToDefault();
      }
}

function addBasicMap(lat,lon) {
	var zoom = 13;
	if(map==null){
		initMap_small(lat,lon,zoom,0);		
	}
	var sumLat = 0;
	var sumLon = 0;	
	var count = 0;	
	var lat =lat;
	var lng = lon;
	var point = new GLatLng(lat,lng);				
	var myIcon = new GIcon(); 
	myIcon.image = strSiteURL + "/shared/mapsearch/m/DA_MapIcon.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);
	sumLat += lat;
	sumLon += lng;
	count +=1;
	map.addOverlay(marker);
	//if(j==3)alert('adding marker 3' );			
	newLat = sumLat/count;
	newLon = sumLon/count;		
	map.setCenter(new GLatLng(lat,lon), zoom);
}

function addPlaces(JSONObj,placeType,agentLinkList,controls,zoom){
	var JSONObject = eval( "(" + JSONObj + ")"); 
	if(map==null){
		//alert(JSONObject.DATA.OFFICELATITUDE[0] + ' ' + JSONObject.DATA.OFFICELONGITUDE[0]);	
		if(placeType =='Office')
			initMap(parseFloat(JSONObject.DATA.OFFICELATITUDE[0]),parseFloat(JSONObject.DATA.OFFICELONGITUDE[0]),zoom,controls);
		else	
			initMap(parseFloat(JSONObject.DATA.LATITUDE[0]),parseFloat(JSONObject.DATA.LONGITUDE[0]),zoom,controls);		
	}
	var sumLat = 0;
	var sumLon = 0;	
	var count = 0;	
	for (var j = 0; j < JSONObject.ROWCOUNT; j++) { 
		if(placeType =='Office'){
			var markerlink = agentLinkList+JSONObject.DATA.TOWN[j];
			var markerlink = markerlink.replace(" ","-");
			var markerlink = markerlink.toLowerCase();
			var lat = parseFloat(JSONObject.DATA.OFFICELATITUDE[j]);
			var lng = parseFloat(JSONObject.DATA.OFFICELONGITUDE[j]);
			var point = new GLatLng(lat,lng);				
			var marker = createOfficeMarker(point, JSONObject.DATA.AGENTID[j],markerlink,JSONObject.DATA.OFFICENAME[j]);
		}
		else	{
			var lat = parseFloat(JSONObject.DATA.LATITUDE[j]);
			var lng = parseFloat(JSONObject.DATA.LONGITUDE[j]);
			var point = new GLatLng(lat,lng);				
			var marker = createMarker(point, JSONObject.DATA.PID[j]);
		}
		//if(j==3)alert('before' );
		sumLat += lat;
		sumLon += lng;
		count +=1;
		map.addOverlay(marker);
		//if(j==3)alert('adding marker 3' );			
	}
	newLat = sumLat/count;
	newLon = sumLon/count;		
	map.setCenter(new GLatLng(newLat,newLon), zoom);
}
function displayAgents(groupID,agentList,agentLinkList,controls,zoom){
	//alert(agentList);
	if(zoom==null)
		zoom = 10;
	var strURL = strSiteURL + "/shared/mapsearch/action.getAgents.cfm?groupid=" + groupID + "&agentList=" + agentList;
	//alert(strURL);
	var request = GXmlHttp.create();
	request.onreadystatechange = function() {
		if (request.readyState == 4) {
		//alert('hit readystate');
		//	alert(request.responseText);
		//			var JSONObject = eval( "(" + request.responseText + ")"); 
		addPlaces(request.responseText,'Office',agentLinkList,controls,zoom);	
		}
	}
	request.open("GET", strURL, true);
	request.send(null);
}

/* -~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~
'	GENERIC ZOOM FUNCTION
' -~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~*/
function ZoomIntoTown(lat,lon,zoomlevel){
	map.setCenter(new GLatLng(parseFloat(lat), parseFloat(lon)), parseInt(zoomlevel));
}

/* -~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~
'	CREATE MARKER
' -~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~*/
function createMarker(point,propid) {
	var myIcon = new GIcon(); 
	myIcon.image = mapIcon; 
	//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 createOfficeMarker(point,agentID,officelink,officetitle) {
	var myIcon = new GIcon(); 
	myIcon.image = officeIcon; 
	//myIcon.iconSize = new GSize(16,16); 
	myIcon.iconAnchor = new GPoint(5, 5); 
	myIcon.infoWindowAnchor = new GPoint(5, 2);
	var marker = new GMarker(point,{icon:myIcon,title:officetitle});
//	alert(officelink);
	GEvent.addListener(marker, "click", function() { relocateWindow(officelink); });
//	GEvent.addListener(marker, "mouseover", function() { showAgentWindow(marker); });
	return marker;
}

function relocateWindow(path){
	window.location.href = path; 
}

function showAgentWindow(marker){
	marker.openInfoWindowHtml('bla bla');
}

/* -~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~
'	POP UP PROPERTY DETAILS
' -~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~*/
function showPropertyInfoWindowHtml(marker,propid) {
	var strGetPropURL = strSiteURL + "/shared/mapsearch/action.getPropertyDetailsMap.cfm?propertyID=" + propid;
	var strBaloonProperties = "";
	var request = GXmlHttp.create();
	var regexp = new RegExp("[0-9]+","g");
	request.open("GET", strGetPropURL, true);
	request.onreadystatechange = function() {
		if (request.readyState == 4) {
			var JSONObject = eval( "(" + request.responseText + ")"); 
			var propertyID = JSONObject.DATA.PID;
			var Address1 = JSONObject.DATA.ADDRESS;
			Address1 = Address1.toString();
			Address1 = Address1.replace(regexp,""); 
			var blurb = JSONObject.DATA.SUMMARY;
			var Bedrooms = JSONObject.DATA.BEDS;
			var recps = JSONObject.DATA.RECP;
			var baths = JSONObject.DATA.BATH;			
			var pcm = JSONObject.DATA.PRICEDESC;
			var Type1 = JSONObject.DATA.TYPE1;
			var Type2 = JSONObject.DATA.TYPE2;
			var onMarketPrice = JSONObject.DATA.PRICE;
			var DisplayPrice = JSONObject.DATA.DISPPRICE;
			EnableBaloon();
			theClass = '';
					
			// ' + Bedrooms + ' Bedroom ' + Type1 + ' ' + Type2 + '<br /><br />
		//	if (strPropertySearchContainerID != 50128) {
		//		theClass = 'fixedAjaxDOMWindow';
		//	}
			//else 
		//	{
			//	theClass = '';
			//}
			//<h3>From &pound;' + onMarketPrice + pcm + '</h3>
			//| <a href="13u,' + propertyID + ',' + strPropertySearchContainerID + ',00.htm?type=buying' + '" style="color:#000000;text-decoration:underline;">Add to Shortlist</a>
			strBaloonProperties = marker.openInfoWindowHtml('<div id="mapWindow"><div id="mapWindowDetails"><h3>' + DisplayPrice + '</h3><strong style="color:#000000;">' + Address1 + '</strong><br/>' + blurb +'<br /><div class="resultsFooterLeft"><div class="imgBeds" title="Bedrooms"><p>' + Bedrooms + '&times;</p></div><div class="imgBaths" title="Bathrooms"><p>' + baths + '&times;</p></div><div class="imgReceptions" title="Receptions"><p>' + recps + '&times;</p></div><div id="clear"></div></div><br /><a class="'+theClass+'" href="07,0,0,0,' + propertyID + ',' + strPropertySearchContainerID + ',00.htm" title="Full details"><strong style="color:#000000; text-decoration:underline;">Full details</strong></a></div><img src="http://system.movewithus.co.uk/interface/propertyImage.asp?h=0&w=130&pid=' + propertyID + '" hspace="5"></div>');
			}
		}
	request.send(null);
	return strBaloonProperties;
} 
