	/**
	*   Add an event listener to an object
	*   @param      object
	*   @param      evt         event
	*   @param      func            function
	*   @param      capture
	*   @return     boolean
	*/
	function AddEvent(object, evt, func, capture)
	{
		if(typeof func != 'function')
		{
			return false;
		}
		if(object.addEventListener)
		{
			object.addEventListener(evt, func, capture);
			return true;
		}
		else if(object.attachEvent)
		{
			object.attachEvent('on' + evt, func);
			return true;
		}
		return false;
	}
	
	/**
	*   Removes an event listener
	*   @param      object
	*   @param      evt         event
	*   @param      func            function
	*   @param      capture
	*   @return     boolean
	*/
	function RemoveEvent(object, evt, func, capture)
	{
		if(typeof func != 'function')
		{
			return false;
		}
		if(object.removeEventListener)
		{
			object.removeEventListener(evt, func, capture);
			return true;
		}
		else if(object.detachEvent)
		{
			object.detachEvent('on' + evt, func);
			return true;
		}
		return false;
	}
 
 
 
   // Property Add JS
   
	function SetMapPosition()	{
		set_coord();
	}
   
 
   function SetMapElement (elem)	{
   		 if(elem.length>0) {
				for (  i=0; i<elem.length; i++ )	{
					    var pc = document.getElementById(elem[i]);
						if (!AddEvent(pc, 'change', SetMapPosition, false)) {
							pc.onchange = SetMapPosition;
						}
				}
		 }
		 document.getElementById('curr_coords').value = "";
   }
   
	function verifyAddress(address,popupStr) {
		  if (geocoder) {
				geocoder.getLatLng( address, function(point) {
					if (!point) {
						return false;
					} else {
						SetMapCoordpopUp (point,popupStr,markers);
						return true;
					}
				  }
				 );
		  }
    }

   
   function SetMapProperty(ctrl,markers)	{
		



		/* Begin Controls Hide and Show*/ 
		if (ctrl == true) 
		{
			GEvent.addListener(map, "mouseover", function(){
				map.showControls();

			});

			

			GEvent.addListener(map, "mouseout", function(){
				map.hideControls();
				/* Reset to Center Coord
				document.getElementById("curLatLong").value = map.getCenter();
				var centPt = document.getElementById("curLatLong").value;
				centPt	   = centPt.substring(1,(centPt.length-1));
				centPt     = centPt.split(",");
				document.getElementById("curLatLong").value =  "Lat:" + centPt[0] + " Lon:" + centPt[1];
				*/
			});
		} else {
				map.showControls();
		}	
		/* End Controls Hide and Show*/
		

		
		if (markers == true) {

			GEvent.addListener(map, "click", function(overlay,point){	
				 if(document.getElementById('curr_coords').value=="") {

					 if (baseIcon.image)
					 var CurrIcon	=	baseIcon;
					 else
					 var CurrIcon	=	DEF_ICO_SEL;

					 var marker = new GMarker(point, {draggable: true,icon:CurrIcon,title:""});
					 document.getElementById('curr_coords').value = point;
					 map.addOverlay(marker);
					 
					 
					 GEvent.addListener(marker, "dragend", function() { 				
					 document.getElementById('curr_coords').value = marker.getPoint();
					 });	
	
				 }
			 });
		}
	
		GEvent.addListener(map, "mousemove", function(point){
			document.getElementById("curLatLong").value = "Lat:" + point.lat() + " Lon:" + point.lng(); //point.lng + ","+ point.lat;
		});
		
		
		
		/*
		map.enableScrollWheelZoom();
		*/

		GEvent.addListener(map, "dblclick",function(what,center){
		map.zoomIn();
		map.setCenter(center)
		});
		
		
		//map.addControl(new google.maps.LocalSearch(), new GControlPosition(G_ANCHOR_BOTTOM_RIGHT, new GSize(10,20)));

   } 

  // Property Serch JS	
   function addColorTone ()	{
		/* Map with Color Tones */
	    map.addOverlay(new GPolygon([new GLatLng(-85,0),new GLatLng(85,0),new GLatLng(85,90),new GLatLng(-85,90)],null,0,0,"#660000",0.4));
        map.addOverlay(new GPolygon([new GLatLng(-85,90),new GLatLng(85,90),new GLatLng(85,180),new GLatLng(-85,180)],null,0,0,"#660000",0.4));
        map.addOverlay(new GPolygon([new GLatLng(-85,180.000001),new GLatLng(85,180.000001),new GLatLng(85,270),new GLatLng(-85,270)],null,0,0,"#660000",0.4));
        map.addOverlay(new GPolygon([new GLatLng(-85,270),new GLatLng(85,270),new GLatLng(85,360),new GLatLng(-85,360)],null,0,0,"#660000",0.4));
	}



  function SetMapCoord(sText,markers) {
		if (markers != 'no') {
			//var resPoint	=	sText.split(",");
			map.clearOverlays();
			//var marker = new GMarker(new GLatLng(resPoint[2],  resPoint[3]), {draggable: true,title:"My Test"});
			var marker = new GMarker(sText, {draggable: true});  
			map.addOverlay(marker);
			/*GEvent.addListener(marker, "mouseover", function() { 				
			 marker.openInfoWindow("<table><tr><td></td>resPoint[2]<td>&nbsp;</td></tr></table");				 
			 });		*/
			GEvent.addListener(marker, "dragend", function() { 				
			 	document.getElementById('curr_coords').value = marker.getPoint();				 
			 });			
		}
		
		//document.getElementById('curr_coords').value = new GLatLng(resPoint[2],  resPoint[3]);
		document.getElementById('curr_coords').value = sText; 
		map.setCenter(sText, map.getZoom());
  }
  
    function setMarkerPosition(query,markers)	{
		showAddress (query,markers);
	}
   

  	function showAddress(address,markers) {  
		geocoder.getLatLng(    address,    function(point) { 
				 if (!point) {   
				 	return address;  
				 } else {       
				    SetMapCoord (point,markers);
					return point;
				 }   
		 }  
	 );
	 }			
  








  function SetMapCoordAdv(sText,markers,drag) {
		if (markers != 'no') {
			//var resPoint	=	sText.split(",");
			map.clearOverlays();
			//var marker = new GMarker(new GLatLng(resPoint[2],  resPoint[3]), {draggable: true,title:"My Test"});
			var marker = new GMarker(sText, {draggable: drag});  
			map.addOverlay(marker);
			/*GEvent.addListener(marker, "mouseover", function() { 				
			 marker.openInfoWindow("<table><tr><td></td>resPoint[2]<td>&nbsp;</td></tr></table");				 
			 });		*/
			GEvent.addListener(marker, "dragend", function() { 				
			 	document.getElementById('curr_coords').value = marker.getPoint();				 
			 });			
		}
		
		//document.getElementById('curr_coords').value = new GLatLng(resPoint[2],  resPoint[3]);
		document.getElementById('curr_coords').value = sText; 
		map.setCenter(sText, map.getZoom());
  }
  
    function setMarkerPositionAdv(query,markers,drag)	{
		showAddressAdv (query,markers,drag);
	}
   

  	function showAddressAdv(address,markers,drag) {  
		geocoder.getLatLng(    address,    function(point) { 
				 if (!point) {   
				 	return address;  
				 } else {       
				    SetMapCoordAdv (point,markers,drag);
					return point;
				 }   
		 }  
	 );
	 }	














    function setMarkerPositionpopUp(query,popupStr,markers,dragg)	{
		showAddresspopUp (query,popupStr,markers,dragg);
	}

  	function showAddresspopUp(address,popupStr,markers,dragg) {  
		geocoder.getLatLng(    address,    function(point) {     
				 if (!point) {   
				 	return address;  
				 } else {       
				    SetMapCoordpopUp (point,popupStr,markers,dragg);
					return point;
				 }   
		 }  
	 );
	 }			

	  function SetMapCoordpopUp(sText,popupStr,markers,dragg) {
			if (markers != 'no') {
				dragg=false;
				if (dragg !=false )
				dragg=false;
				//var resPoint	=	sText.split(",");
				map.clearOverlays();
	
				if (baseIcon.image)
				var CurrIcon	=	baseIcon;
				else
				var CurrIcon	=	DEF_ICO_SEL;

				var marker = new GMarker(sText, {draggable: dragg,icon: CurrIcon,dragCrossMove:true});  


				map.addOverlay(marker);
				GEvent.addListener(marker, "click", function() { 				
				 marker.openInfoWindowHtml("<div>"+popupStr+"</div>");				 
				 });		
				GEvent.addListener(marker, "dragend", function() { 				
				 document.getElementById('curr_coords').value = marker.getPoint();	
				 });			
			}
			
			//document.getElementById('curr_coords').value = new GLatLng(resPoint[2],  resPoint[3]);
			document.getElementById('curr_coords').value = sText; 
			map.setCenter(sText, map.getZoom());
			
	  }

    /*
	BEGIN PROPERTY SEARCH VIEW
	*/
  
	function readXmltoDraw (data)	{
		 var xml = GXml.parse(data);
		  map.clearOverlays();
          var markers = xml.documentElement.getElementsByTagName("marker");
          for (var i = 0; i < markers.length; i++) {
			if(markers[i].getAttribute("lat") != "") {
				var name = markers[i].getAttribute("name");
				var address = markers[i].getAttribute("address");
				var type = markers[i].getAttribute("type");
				var point = new GLatLng(parseFloat(markers[i].getAttribute("lat")),
										parseFloat(markers[i].getAttribute("lng")));
										
				var marker = createMarker(point, name, address, type,i+1);
				map.addOverlay(marker);
			 }
         }
	}
	
	

	function createMarker(point, name, address, type, ov) {
		var mylabel = {"url":overlayimg + ov + ".png", "anchor":new GLatLng(4,4), "size":new GSize(11,8)};
		var Icon = new GIcon(G_DEFAULT_ICON, backgroundimg, mylabel)
		markerOptions = { icon:Icon};  //,title:"My Test" ,draggable:true
		var marker = new GMarker(point, markerOptions);
		marker.tooltip = '<div class="tooltip bodytext">' + type+ '</div>';
		var html = "<div style=\"width:250px;\" class=\"bodytext\"><b>" + name + "</b> <br/>" + address + "</div>";
		GEvent.addListener(marker, 'click', function() {
		marker.openInfoWindowHtml(html);
		});
		
		//  ======  The new marker "mouseover" and "mouseout" listeners  ======
		GEvent.addListener(marker,"mouseover", function() {
		showTooltip(marker);
		});        
		GEvent.addListener(marker,"mouseout", function() {
		tooltip.style.visibility="hidden"
		});        
		return marker;
	}
	

   
   
	function createAdvertiseMarker(point, title, address,advUrl, img, advid) {
		if (baseIcon.image)
		var CurrIcon	=	baseIcon;
		else
		var CurrIcon	=	DEF_ICO_SEL;
		
		title	=	"Adds: " + title;
		var marker = new GMarker(point, {icon:CurrIcon,title:title});

		marker.tooltipadv = '<div class="tooltip bodytext">' + title+ '<br>*****<br></div>';
		var html = "<div style=\"width:250px;\" class=\"bodytext\"><b>" + title + "</b> <br/>" + address + "</div>" + "<div>" + "<img src="+ img +" />" + "</div>" + "<div>" + "<a href=\"javascript:void(0);\" onClick=\"advertiseViewDetails("+ advid +")\" >View Details</a>" + "</div>";
		
		
		GEvent.addListener(marker, 'click', function() {
			marker.openInfoWindowHtml(html);
			advertiseViewManage (advid)
		});
		
		//  ======  The new marker "mouseover" and "mouseout" listeners  ======
		GEvent.addListener(marker,"mouseover", function() {
			showtooltipadv(marker);
		});        
		GEvent.addListener(marker,"mouseout", function() {
			tooltipadv.style.visibility="hidden"
		});        
		return marker;
	}
	  
	  
	function createMarkerCityCenter(point,title) {
		if (baseIcon.image)
		var CurrIcon	=	baseIcon;
		else
		var CurrIcon	=	DEF_ICO_SEL;

		var marker = new GMarker(point, {icon:CurrIcon,title:title});
		
		return marker;
	}	  
	  
	  
	// ====== This function displays the tooltip ======
	function showTooltip(marker) {
		tooltip.innerHTML = marker.tooltip;
		var point=map.getCurrentMapType().getProjection().fromLatLngToPixel(map.fromDivPixelToLatLng(new GPoint(0,0),true),map.getZoom());
		var offset=map.getCurrentMapType().getProjection().fromLatLngToPixel(marker.getPoint(),map.getZoom());
		var anchor=marker.getIcon().iconAnchor;
		var width=marker.getIcon().iconSize.width;
		var height=tooltip.clientHeight;
		var pos = new GControlPosition(G_ANCHOR_TOP_LEFT, new GSize(offset.x - point.x - anchor.x + width, offset.y - point.y -anchor.y -height)); 
		pos.apply(tooltip);
		tooltip.style.visibility="visible";
	}


	// ====== This function displays the tooltip ======
	function showtooltipadv(marker) {
		tooltipadv.innerHTML = marker.tooltipadv;
		var point=map.getCurrentMapType().getProjection().fromLatLngToPixel(map.fromDivPixelToLatLng(new GPoint(0,0),true),map.getZoom());
		var offset=map.getCurrentMapType().getProjection().fromLatLngToPixel(marker.getPoint(),map.getZoom());
		var anchor=marker.getIcon().iconAnchor;
		var width=marker.getIcon().iconSize.width;
		var height=tooltipadv.clientHeight;
		var pos = new GControlPosition(G_ANCHOR_TOP_LEFT, new GSize(offset.x - point.x - anchor.x + width, offset.y - point.y -anchor.y -height)); 
		pos.apply(tooltipadv);
		tooltipadv.style.visibility="visible";
	}


    /*
	END PROPERTY SEARCH VIEW
	*/
	
	
	function addLoadEvent(func) {
		var oldonload = window.onload;
		if (typeof window.onload != 'function') {
		window.onload = func;
		} else {
		window.onload = function() {
		oldonload();
		func();
		}
		}
	}

  
  /**
	*   Gets an event with all needed properties
	*   @param      e           event
	*   @return     event object
	*/
	function GetEvent(e)
	{
		if(!e)
		{
			e               = window.event;
		}
	 
		if(e.layerX)
		{
			e.offsetX       = e.layerX;
			e.offsetY       = e.layerY;
		}
	 
		if(e.type == 'mouseover' && !e.relatedTarget)
		{
			e.relatedTarget     = e.fromElement;
		}
		else if(e.type == 'mouseout' && !e.relatedTarget)
		{
			e.relatedTarget     = e.toElement;
		}
	 
		e.src               = e.srcElement || e.target;
		e.key               = e.keyCode || e.charCode;
	 
		return e;
	}
	



function getDistPoints () {
	var R = 6371; // km
	var dLat = (lat2-lat1).toRad();
	var dLon = (lon2-lon1).toRad(); 
	var a = Math.sin(dLat/2) * Math.sin(dLat/2) +
			Math.cos(lat1.toRad()) * Math.cos(lat2.toRad()) * 
			Math.sin(dLon/2) * Math.sin(dLon/2); 
	var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a)); 
	var d = R * c;
}
	/*
	input.addEventListener('click', HandleInput, false);
 
	function HandleInput(e)
	{
		e = GetEvent(e);
	 
		e.src.value = 'foo';
	}

	End Event
	*/
	
	
/* DISTANCE TO LAND MARK */	
function setLandMarkOnLoad(address,markers) {  
		geocoder.getLatLng(    address,    function(point) { 
				 if (!point) {  
				 	return false;  
				 } else { 
				 	setLandMarkIcon(point,markers);
					return true;
				 }   
		 }  
	 );
 }	



function drawCirclenormal(center, radius, nodes, liColor, liWidth, liOpa, fillColor, fillOpa)
{
// Esa 2006
	radius = radius*1.609344;
	//calculating km/degree
	var latConv = center.distanceFrom(new GLatLng(center.lat()+0.1, center.lng()))/100;
	var lngConv = center.distanceFrom(new GLatLng(center.lat(), center.lng()+0.1))/100;
	var bounds  = new GLatLngBounds();
	//Loop 
	var points = [];
	var step = parseInt(360/nodes)||10;
	for(var i=0; i<=360; i+=step)
	{
	var pint = new GLatLng(center.lat() + (radius/latConv * Math.cos(i * Math.PI/180)), center.lng() + 
	(radius/lngConv * Math.sin(i * Math.PI/180)));
	points.push(pint);
	bounds.extend(pint); //this is for fit function
	}
	fillColor = fillColor||liColor||"#0055ff";
	liWidth = liWidth||2;
	polyCirc = new GPolygon(points,liColor,liWidth,liOpa,fillColor,fillOpa);
	map.addOverlay(polyCirc);
}