

function ajUpdateDiv(id, url, params, waitMode, replaceElem)
{
   //ldng= $('<span class=\"loading\" align=\"center\"><img src=\"css/loading.gif\" /></span>');
   //ldng.hide();
   
   elem = $(id);
   if (waitMode == 1)
   {
   	var w = elem.width();
		var h = elem.height();
		elem.html('<div class=\"panel\" style=\"display:block;height:'+h+'\"><b>Loading...</b></div>');
	 }
	 else if (waitMode ==2) 
	 	{
	 		elem.html('<div class=\"row\"><label>Loading...</label></div>');
	 	}
   else
		elem.prepend('<div class="loading" align="center"><img src="css/loading.gif" /></div>');
   //ldng.show('fast');
  
   $.post(url, params, 
		function(data, status)
		{
			if (status == 'success')
			{
				if (replaceElem)
				{
					elem.after(data).remove(); 
				}
				else
					elem.html(data);
			}
			else
			{
				elem.html("<div class=\"warning\">An error occured! Please try again</a>");
			}
		}
	);
}

			
function mob_addAnswer(questionId)
{
	res = prompt('Enter reply:');
	if (res && res.length)
	{
		form = document.getElementById('ansForm');
		form.content.value = res;
		str = $(form).serialize();
		ajUpdateDiv('#qres', '?mode=mobanswers&id='+questionId+'&'+str, {}, 2);
	}
}
	

function mob_refreshAnswers(questionId)
{
	ajUpdateDiv('#qres', '?mode=mobanswers&id='+questionId, {}, 2);
}





function resetMapTo(divName)
{
		container = document.getElementById('mapDiv');
		if (map == null)
		{
				//map = new GMap2(container, {draggableCursor:"arrow"});
		}
		
	 	pos= $(divName).offset();
	 	$(container).show();
	 	
	 	$(container).css('top',pos.top);
	 	$(container).css('left',pos.left);
	 	
		$(container).height($(divName).height());
	 	$(container).width($(divName).width());
		
		
		//map.checkResize();	
		//map.clearOverlays();
}



function mob_getGAddress(latlng) 
{
      if (latlng != null) {
        address = latlng;
        geocoder.getLocations(latlng, mob_showAddress);
      }
 }
    

function mob_showAddress(response) {
	
    if (!response || response.Status.code != 200) 
    {
    } 
    else 
    {
      place = response.Placemark[0];
    	$('#addressres').html("near " + place.address);
    	document.getElementById('address_str').value= place.address;
			document.getElementById('address_code').value = place.AddressDetails.Country.CountryNameCode;
    }
}

var circle = null;
var centerMarker = null;


function mob_setPosition()
{
	map.setCenter(centerMarker.getLatLng());	
	mob_getGAddress(centerMarker.getLatLng());	
}



function  mob_getMyLocation(map, centerMarker)
{	
	  var suc = function(p)
	  {	
			lat=p.coords.latitude;
			lon=p.coords.longitude;
			centerMarker.setLatLng(new GLatLng(lat, lon));
			map.setCenter(centerMarker.getLatLng());
			mob_setPosition();
			//saveLocation();
			//alert("Your location has been determined automatically. This is an experimental feature, so please check the map to verify that your home location is correct");
	  };
	  
	  var fail = function(){
	  	//alert("Could not determine your location");
	  };
	  
	  if (navigator.geolocation)     
	  	navigator.geolocation.getCurrentPosition(suc,fail);
	  else if (window.google && google.gears) {
				try { 
						geolocation = google.gears.factory.create('beta.geolocation');
					  geolocation.getCurrentPosition(suc);
				} 
				catch (e) 
				{  }
		}
		else if (google.loader.ClientLocation)
		{
			lat = google.loader.ClientLocation.latitude;
			lon = google.loader.ClientLocation.longitude;
			p = { coords: { latitude: lat, longitude: lon} };
			suc(p);			
		}
		else
		{
			alert("Your web browser does not support this function");
		}

}





function mob_drawCircle()
{
	map.setCenter(centerMarker.getLatLng());
	
	mob_getGAddress(centerMarker.getLatLng());	

	
	circleRadius = document.getElementById('radiusInput').value;
	
	if (circle) {
		map.removeOverlay(circle);
	}
	var center = map.getCenter();
	var bounds = new GLatLngBounds();
	var circlePoints = Array();
 
	with (Math) {

		var scaleLat = center.distanceFrom(new GLatLng(center.lat() + 0.1, center.lng()))/1000
		var scaleLng = center.distanceFrom(new GLatLng(center.lat(), center.lng()+0.1))/1000
		
		var latOff = (0.1/scaleLat)*circleRadius
		var lngOff = (0.1/scaleLng)*circleRadius
 
		var lat1 =  center.lat(); 
		var lng1 =  center.lng(); 

 		var first=new GLatLng(parseFloat(lat1 - latOff), parseFloat(lng1-lngOff));
 		circlePoints.push(first);
 		
		var pnt = new GLatLng(parseFloat(lat1 - latOff), parseFloat(lng1+lngOff));
 		circlePoints.push(pnt);
 	
 		pnt = new GLatLng(parseFloat(lat1 + latOff), parseFloat(lng1+lngOff)); 
 		circlePoints.push(pnt);
 		bounds.extend(pnt);
 		
 		pnt = new GLatLng(parseFloat(lat1 + latOff), parseFloat(lng1-lngOff)); 
 		circlePoints.push(pnt);
 			
 		circlePoints.push(first);
 		bounds.extend(first);
 		
 		circle = new GPolyline(circlePoints, "#a55", 5);
 		
		map.addOverlay(circle); 
 
 		rz = map.getBoundsZoomLevel(bounds);
 		if (map.getZoom() > rz || map.getZoom() < rz-5)
 			map.setZoom(map.getBoundsZoomLevel(bounds));
	}

	mob_getGAddress(centerMarker.getLatLng());	
}

function mob_showAskMap(centerPoint, zoom) 
{	
	if (GBrowserIsCompatible()) {
		container = document.getElementById("askMapDiv");
		map = new google.maps.Map2(container, {draggableCursor:"arrow"});
		map.setCenter(centerPoint, zoom);
		//map.setUIToDefault();
		map.addControl( new GMenuMapTypeControl() );
		map.disableDoubleClickZoom();
		
		centerMarker = new GMarker(map.getCenter(),{draggable:false});
		//GEvent.addListener(centerMarker,'dragend',mob_drawCircle);

		map.addOverlay(centerMarker);	
		GEvent.addListener(map, "click", function(ev, pnt) {
		 	if (centerMarker != null)
				centerMarker.setLatLng(pnt);
			mob_setPosition();
		});
  
  	GEvent.addListener(map, "dragend", function() {
				pnt = map.getCenter();
				if (centerMarker!= null) { 
					centerMarker.setLatLng(pnt);
					//bmap.setCenter(bcenterMarker.getLatLng());
					mob_setPosition();
				}
		});
  
  
 		mob_setPosition();
 	}
}


function mob_askaddress(askMode)
{
	res = prompt('Enter an address');
	if (res && res.length)
	{
		geocoder.getLocations(res, function(response) { 
				if (response && response.Status.code == 200)
				{
					var place = response.Placemark[0];
					var point = new GLatLng(place.Point.coordinates[1], place.Point.coordinates[0]);
					if (askMode>0)
					{
						map.setCenter(point);
						centerMarker.setLatLng(point);
					}
					else
					{
						bmap.setCenter(point);
						bcenterMarker.setLatLng(point);
					}
					
						
					if (askMode>0)
						mob_setPosition();
				}
				else
					alert('Address not found!');
			});
	}
}

function mob_checkAskForm(form)
{
	//GUnload();
	if (!centerMarker)
	{
		alert("Please tap on your location!");
		return false;
	}
	
	var glng = centerMarker.getLatLng();
	form.lat.value = glng.lat();
	form.lng.value = glng.lng();
	form.zoom.value= map.getZoom();
	
	if (form.question.value.length < 9) 
	{
		alert("Please enter a question");
		form.question.focus();
		return false;
	}
	
	return true;
}


function mob_checkBrowseForm(form)
{
	if (!bcenterMarker)
	{
		alert("Please tap on a location!");
		return false;
	}
	
	bmap.setCenter(bcenterMarker.getLatLng());
	var bounds = bmap.getBounds();
  var SW = bounds.getSouthWest();
  var NE = bounds.getNorthEast();
	
	form.lat1.value = NE.lat()
	form.lat2.value = SW.lat()
	form.lng1.value = NE.lng()
	form.lng2.value = SW.lng()	
	return true;
}


function mob_showBrowseMap(bcenterPoint, zoom) 
{	
	if (GBrowserIsCompatible()) {
		container = document.getElementById("browseMapDiv");
		bmap = new google.maps.Map2(container, {draggableCursor:"arrow"});			
		bmap.setCenter(bcenterPoint, zoom);
		bmap.addControl( new GMenuMapTypeControl() );
		//bmap.setUIToDefault();	
		bmap.disableDoubleClickZoom();
		
		bcenterMarker = new GMarker(bmap.getCenter(),{draggable:false});
		
		/* GEvent.addListener(bcenterMarker,'dragend', function() {
				bmap.setCenter(bcenterMarker.getLatLng());
		}); */
		
  
		bmap.addOverlay(bcenterMarker);
		GEvent.addListener(bmap, "click", function(ev, pnt) {
				if (bcenterMarker!= null) { 
					bcenterMarker.setLatLng(pnt);
					bmap.setCenter(bcenterMarker.getLatLng());
				}
		});
		
		GEvent.addListener(bmap, "dragend", function() {
				pnt = bmap.getCenter();
				if (bcenterMarker!= null) { 
					bcenterMarker.setLatLng(pnt);
					//bmap.setCenter(bcenterMarker.getLatLng());
				}
		});
		

	}
}

function deferUpdate(map, centerMarker, upd)
{
	setTimeout( function() { map.checkResize(); if (centerMarker) map.setCenter(centerMarker.getLatLng()); } , upd);
}


