var map;var myUserid;var lastMarkerLat=0;var lastMarkerLon=0;var defZoomLevel=6;var mapHTTPObj=null;var geocoder=null;var myMarker=null;var peopleMarkers=[];var peopleEventListeners=[];var placeMarkers=[];var placeEventListeners=[];var wheelZooming=true;var mouseLatLng;var zoomRect;var baseIcon=null;var rectIcon=null;function traceMeGoogle_Load()
{if((lastMarkerLat!=0)||(lastMarkerLon!=0))
{loadTheMap(lastMarkerLat,lastMarkerLon);}
else
{loadTheMap(gps_global_my_lat,gps_global_my_lon);}}
function deleteMarkers()
{for(j=0;j<peopleEventListeners.length;j++)
{if(peopleEventListeners[j]!=null)
{GEvent.removeListener(peopleEventListeners[j]);delete peopleEventListeners[j];}}
for(j=0;j<peopleMarkers.length;j++)
{if(peopleMarkers[j]!=null)
{map.removeOverlay(peopleMarkers[j]);delete peopleMarkers[j];}}
for(j=0;j<placeEventListeners.length;j++)
{if(placeEventListeners[j]!=null)
{GEvent.removeListener(placeEventListeners[j]);delete placeEventListeners[j];}}
for(j=0;j<placeMarkers.length;j++)
{if(placeMarkers[j]!=null)
{map.removeOverlay(placeMarkers[j]);delete placeMarkers[j];}}}
function traceMeGoogle_Unload()
{if(myMarker)
{map.removeOverlay(myMarker);delete myMarker;}
deleteMarkers();if(geocoder){delete geocoder;}
if(map){delete map;}
GUnload();}
function adjustZoom(map,dist)
{if(!map){return;}
var myZoomLevel1=0;var myKM=1000;if(dist<0){myZoomLevel1=6}
else if(dist==0){myZoomLevel1=16;}
else if(dist<myKM/3){myZoomLevel1=16;}
else if(dist<myKM*2/3){myZoomLevel1=15;}
else if(dist<myKM){myZoomLevel1=14;}
else if(dist<myKM*2){myZoomLevel1=12;}
else if(dist<myKM*3){myZoomLevel1=11;}
else if(dist<myKM*5){myZoomLevel1=12;}
else if(dist<myKM*10){myZoomLevel1=8;}
else if(dist<myKM*100){myZoomLevel1=7;}
else if(dist<myKM*500){myZoomLevel1=6;}
else if(dist<myKM*1000){myZoomLevel1=5;}
else if(dist<myKM*2500){myZoomLevel1=4;}
else if(dist<myKM*5000){myZoomLevel1=3;}
else if(dist<myKM*10000){myZoomLevel1=2;}
else{myZoomLevel1=1;}
if(myZoomLevel1==0){myZoomLevel1=6;}
map.setZoom(myZoomLevel1);return;}
function toggleBlock(aItem)
{var aObj=document.getElementById(aItem);if(aObj.style.display=='none')
{aObj.style.display='block';}
else
{aObj.style.display='none';}
return false;}
function loadTheMap(aLat,aLon)
{if(typeof GBrowserIsCompatible=="undefined")
{return;}
if(!GBrowserIsCompatible()){return;}
map=new GMap2(document.getElementById("map"));if(!map){return;}
map.addControl(new GSmallMapControl());var center=new GLatLng(aLat,aLon);map.setCenter(center,defZoomLevel);var poiicon=new GIcon();poiicon.image=gps_global_urlroot+"/skins/"+gps_global_skin_dir+"/images/"+gps_global_style+"/"+gps_global_lang+"/map_f_person.png";poiicon.shadow=gps_global_urlroot+"/skins/"+gps_global_skin_dir+"/images/"+gps_global_style+"/"+gps_global_lang+"/map_me_shadow.png";poiicon.iconSize=new GSize(34,34);poiicon.shadowSize=new GSize(37,34);poiicon.iconAnchor=new GPoint(10,33);poiicon.infoWindowAnchor=new GPoint(8,1);myMarker=new GMarker(center,{draggable:false,icon:poiicon});GEvent.addListener(myMarker,"dragstart",function(){map.closeInfoWindow();});GEvent.addListener(myMarker,"dragend",function(){var point=myMarker.getPoint();lastMarkerLat=point.lat();lastMarkerLon=point.lng();if(typeof GBrowserIsCompatible!="undefined")
{myMarker.openInfoWindowHtml('<center><br><a href="javascript:setLocation()">'+res_mapmeh_here+'</a>');}
else
{lastMarkerLat=point.lat();lastMarkerLon=point.lng();}});map.addOverlay(myMarker);lastMarkerLat=aLat;lastMarkerLon=aLon;delete center;baseIcon=new GIcon();baseIcon.iconSize=new GSize(100,100);baseIcon.iconAnchor=new GPoint(50,50);rectIcon=new GIcon(baseIcon,gps_global_urlroot+'/m/iphone/images/rect.png',null);var container=document.getElementById("map");map.enableContinuousZoom();GEvent.addDomListener(container,"DOMMouseScroll",wheelZoom);GEvent.addDomListener(container,"mousewheel",wheelZoom);GEvent.addListener(map,'mousemove',mouseMove);geocoder=new GClientGeocoder();}
function mouseMove(mousePt)
{mouseLatLng=mousePt;}
function wheelZoom(event)
{if(wheelZooming){return;}
wheelZooming=true;if(zoomRect){delete zoomRect;}
zoomRect=new GMarker(mouseLatLng,{icon:rectIcon});map.addOverlay(zoomRect);if(event.cancelable){event.preventDefault();}
map.closeInfoWindow();if((event.detail||-event.wheelDelta)<0)
{window.setTimeout(function()
{map.removeOverlay(zoomRect);map.zoomIn(mouseLatLng,true,true);wheelZooming=false;},200);}
else{window.setTimeout(function()
{map.removeOverlay(zoomRect);map.zoomOut(mouseLatLng,true);wheelZooming=false;},200);}
return false;}
function ajaxCallback()
{if(mapHTTPObj.readyState==4)
{if(mapHTTPObj.status==200)
{var aObj=document.getElementById('traceme_info');if(aObj)
{aObj.innerHTML=mapHTTPObj.responseText;}}
else
{var aObj=document.getElementById('traceme_info');if(aObj)
{aObj.innerHTML="Error: "+mapHTTPObj.statusText;}}}
else
{var tState=GPSJS_AJAXGetState(mapHTTPObj.readyState);}}
function requestServerInfo(aMarker,aType,aID,srcpoiid,poiType)
{var iInfo='';if(aType=='POI')
{iInfo='<div style="width: 250px; height: 98px; border: 1px; display: block;" id="traceme_info">';}
else
{iInfo='<div style="width: 240px; height: 80px; border: 1px; display: block;" id="traceme_info">';}
iInfo+='<center>';try{iInfo+='<br><br>'+res_map_loadinfo;}catch(exc){};iInfo+='</center>';iInfo+='</div>';aMarker.openInfoWindowHtml(iInfo);if(!mapHTTPObj){mapHTTPObj=GPSJS_AJAXGetHTTPObject();}
if(mapHTTPObj)
{var infoURL=gps_global_urlroot+'/mapinfo.cgi';var postInfo='id=';postInfo+=aID;postInfo+='&srcpoiid=';postInfo+=srcpoiid;postInfo+='&poitype=';postInfo+=poiType;GPSJS_AJAXPostRequest(mapHTTPObj,gps_global_sessionid,ajaxCallback,infoURL,aType,true,postInfo);}}
function centerMap(aLat,aLon)
{var center=new GLatLng(aLat,aLon);map.setCenter(center,map.getZoom());delete center;}
function showFriend(aUID,aLat,aLon,dist,fixZoom)
{addFriendMarker('PERSON',aUID,aLat,aLon,myUserid);if(fixZoom)
{centerMap(aLat,aLon);}}
function showPlace(aLat,aLon,aName,dist,aID,poiType,fixZoom)
{addPlaceMarker(aLat,aLon,aName,dist,aID,poiType);if(fixZoom)
{centerMap(aLat,aLon);}}
function placeCallback()
{if(mapHTTPObj.readyState==4)
{var aObj=document.getElementById('places');if(mapHTTPObj.status==200)
{if(aObj){aObj.innerHTML=mapHTTPObj.responseText;}}
else
{if(aObj){aObj.innerHTML="Error: "+mapHTTPObj.statusText;}}}
else
{var tState=GPSJS_AJAXGetState(mapHTTPObj.readyState);}}
function friendCallback()
{if(mapHTTPObj.readyState==4)
{var aObj=document.getElementById('friends');if(mapHTTPObj.status==200)
{if(aObj){aObj.innerHTML=mapHTTPObj.responseText;}}
else
{if(aObj){aObj.innerHTML="Error: "+mapHTTPObj.statusText;}}}
else
{var tState=GPSJS_AJAXGetState(mapHTTPObj.readyState);}}
function sendLoadRequest(aOp,aUID,aPage)
{document.getElementById(aOp+'_loading').innerHTML="<img width=16 height=16 src='"+gps_global_urlroot+"/skins/gypsii/images/gitter/en-us/processing.gif'>";if(!mapHTTPObj)
{mapHTTPObj=GPSJS_AJAXGetHTTPObject();}
if(mapHTTPObj)
{var infoURL=gps_global_urlroot+'/mapmeh.cgi';var postInfo='op='+aOp;postInfo+='&uid='+aUID;postInfo+='&ajax=1';if(aOp=='places')
{postInfo+='&page='+aPage;GPSJS_AJAXPostRequest(mapHTTPObj,gps_global_sessionid,placeCallback,infoURL,aOp,true,postInfo);}
else
{postInfo+='&fpage='+aPage;GPSJS_AJAXPostRequest(mapHTTPObj,gps_global_sessionid,friendCallback,infoURL,aOp,true,postInfo);}}}
function loadPlaces(aUID,aPage)
{sendLoadRequest('places',aUID,aPage);}
function loadFriends(aUID,aPage)
{sendLoadRequest('friends',aUID,aPage);}
function addFriendMarker(aType,aID,aLat,aLon,srcpoiid)
{var newMarker=null;var tPos=new GLatLng(aLat,aLon);var poiicon=new GIcon();poiicon.image=gps_global_urlroot+"/skins/"+gps_global_skin_dir+"/images/"+gps_global_style+"/"+gps_global_lang+"/map_o_person.png";poiicon.shadow=gps_global_urlroot+"/skins/"+gps_global_skin_dir+"/images/"+gps_global_style+"/"+gps_global_lang+"/map_me_shadow.png";poiicon.iconSize=new GSize(34,34);poiicon.shadowSize=new GSize(37,34);poiicon.iconAnchor=new GPoint(10,33);poiicon.infoWindowAnchor=new GPoint(8,1);var poiMarker=new GMarker(tPos,{draggable:false,icon:poiicon});delete tPos;centerMap(aLat,aLon);map.addOverlay(poiMarker);var newEventListener=new GEvent.bind(poiMarker,"click",this,function()
{requestServerInfo(poiMarker,aType,aID,srcpoiid,'');});peopleEventListeners.push(newEventListener);peopleMarkers.push(poiMarker);requestServerInfo(poiMarker,aType,aID,srcpoiid,'');}
function addPlaceMarker(aLat,aLon,aName,dist,aID,poiType)
{if(poiType==''){poiType='POI';}
var tPos=new GLatLng(aLat,aLon);var poiicon=new GIcon();poiicon.image=gps_global_urlroot+"/skins/"+gps_global_skin_dir+"/images/"+gps_global_style+"/"+gps_global_lang+"/map_o_place.png";poiicon.shadow=gps_global_urlroot+"/skins/"+gps_global_skin_dir+"/images/"+gps_global_style+"/"+gps_global_lang+"/map_me_shadow.png";poiicon.iconSize=new GSize(34,34);poiicon.shadowSize=new GSize(37,34);poiicon.iconAnchor=new GPoint(10,33);poiicon.infoWindowAnchor=new GPoint(8,1);var poiMarker=new GMarker(tPos,{draggable:false,icon:poiicon});delete tPos;map.addOverlay(poiMarker);var newEventListener=GEvent.bind(poiMarker,"click",this,function()
{requestServerInfo(poiMarker,poiType,aID,myUserid,'');});placeEventListeners.push(newEventListener);placeMarkers.push(poiMarker);requestServerInfo(poiMarker,poiType,aID,myUserid,'');}
function setLocation()
{var iInfo='<div style="width: 240px; height: 80px; border: 1px; display: block;" id="traceme_info">';iInfo+='<center>';try{iInfo+='<br><br>'+res_map_loadinfo;}catch(exc){};iInfo+='</center>';iInfo+='</div>';myMarker.openInfoWindowHtml(iInfo);if(!mapHTTPObj)
{mapHTTPObj=GPSJS_AJAXGetHTTPObject();}
if(mapHTTPObj)
{var desc='';var aType='PERSON';var srcpoiid='';var infoURL=gps_global_urlroot+'/mapinfo.cgi';var postInfo='id='+myUserid;postInfo+='&setloc=1';postInfo+='&lat='+lastMarkerLat;postInfo+='&lon='+lastMarkerLon;postInfo+='&desc='+escape(desc);GPSJS_AJAXPostRequest(mapHTTPObj,gps_global_sessionid,traceMeAJAXCallback,infoURL,aType,true,postInfo);}}
function traceMeAJAXCallback()
{if(mapHTTPObj.readyState==4)
{if(mapHTTPObj.status==200)
{var aObj=document.getElementById('traceme_info');if(aObj)
{aObj.innerHTML=mapHTTPObj.responseText;}}
else
{var aObj=document.getElementById('traceme_info');if(aObj)
{aObj.innerHTML="Error: "+mapHTTPObj.statusText;}}}
else
{var tState=GPSJS_AJAXGetState(mapHTTPObj.readyState);}}
function traceMeGoogle_showAddress(address)
{if(address=='')
{traceMe_SetLocation(lastMarkerLat,lastMarkerLon,map.getZoom());return;}
if(geocoder)
{geocoder.getLatLng(address,function(point){if(!point)
{if(!yahooXMLHTTP)
{yahooXMLHTTP=GPSJS_AJAXGetHTTPObject();}
CallYahooGeocode(address);}
else
{map.setCenter(point,map.getZoom());lastMarkerLat=point.lat();lastMarkerLon=point.lng();myMarker.setPoint(point);myMarker.openInfoWindowHtml(address);myMarker.openInfoWindowHtml('<center>'+res_map_newloc+address+
'<br><br><a href="javascript:setLocation()">'+res_mapme_here+'</a></center>');}});}}