/* File: js/proximity_dives.js, Ratio: 32.2% */

var DS_map_circle;var DS_map_circleCenter;var DS_map_zoom;var DS_map_bounds;var DS_map_autozoom=false;var DS_map_element;var DS_divesiteId;var DS_redirect;var DS_openHTML=true;var DS_setMap=function(element,options){DS_map_element=element;if(!options)options={};defaultOptions={lat:41.89001042401827,lng:12.469482421875,zoom:6,scale:'m',maxd:50,redirect:false};var opt=new Array();for(var option in defaultOptions){if(typeof(options[option])!='undefined'){opt[option]=options[option];}else{opt[option]=defaultOptions[option];}}
options=opt;var geocoder;diveLocations=[];divePoints=[];diveServices=[];var lat=options.lat;var lng=options.lng;DS_map_zoom=options.zoom;DS_redirect=options.redirect;max_distance=options.maxd;map=new GMap2(element);map.setCenter(new GLatLng(lat,lng),DS_map_zoom,G_SATELLITE_MAP);map.setUIToDefault();map.addMapType(G_SATELLITE_MAP);var geocoder=new GClientGeocoder();DS_makeLocator(lat,lng,null);};var DS_loading=function(st){h=DS_map_element.getHeight();if(!$('DS_loading')){DS_map_element.insert(new Element('div',{'id':'DS_loading','style':'display: none'}));DS_map_element.insert(new Element('img',{'id':'DS_loading_img','src':'/img/gmap/loader.gif'}));}
if(st=='close'){$('DS_loading').setStyle({'display':'none'});$('DS_loading_img').setStyle({'display':'none'});}else{$('DS_loading').setStyle({'display':'block','height':h+'px','opacity':0.3});$('DS_loading_img').setStyle({'display':'block'});}};var DS_setBaseIcon=function(){var baseIcon=new GIcon();baseIcon.image="/img/gmap/overlay-cross.png";baseIcon.iconSize=new GSize(50,50);baseIcon.iconAnchor=new GPoint(25,25);return baseIcon;};var DS_setcenterCicleIcon=function(){var baseIcon2=new GIcon();baseIcon2.shadow="/img/gmap/shadow.png";baseIcon2.image="/img/gmap/shadow.png";baseIcon2.iconSize=new GSize(16,16);baseIcon2.shadowSize=new GSize(16,16);baseIcon2.iconAnchor=new GPoint(8,8);return baseIcon2;};var DS_setDivesite=function(lat,lng,id,openHTML){Element.scrollTo(DS_map_element);DS_divesiteId=id;DS_openHTML=(openHTML||openHTML===false)?openHTML:true;DS_moveLocator(lat,lng);}
var DS_makeLocator=function(lat,lng,msg)
{var locatorIcon=new GIcon(G_DEFAULT_ICON);locatorIcon.image="/img/gmap/pin.png";locatorIcon.iconSize=new GSize(25,51);locatorIcon.iconAnchor=new GPoint(12,45);locatorOptions={icon:locatorIcon,draggable:true,zIndexProcess:DS_importanceOrder};locator=new GMarker(new GLatLng(lat,lng),locatorOptions);locator.importance=2;GEvent.addListener(locator,"dragend",function(){DS_locatorMovend(locator.getLatLng().lat(),locator.getLatLng().lng(),'y');});map.addOverlay(locator);};var DS_moveLocator=function(lat,lng,movend)
{var lat=(!lat)?locator.getLatLng().lat():lat;var lng=(!lng)?locator.getLatLng().lng():lng;if(!movend)var movend='y';locator.setLatLng(new GLatLng(lat,lng));DS_locatorMovend(lat,lng,movend);};var DS_locatorMovend=function(lat,lng,movend){var lat=(!lat)?locator.getLatLng().lat():lat;var lng=(!lng)?locator.getLatLng().lng():lng;if(DS_redirect!==false){document.location.href=((DS_redirect.indexOf("/")==0)?'':'/')+DS_redirect+lat+'/'+lng;return;}
if(!movend)var movend='y';if($('current-lat')&&$('current-lng')){$('current-lat').value=lat;$('current-lng').value=lng;}
if($('DivesiteLatitude')&&$('DivesiteLongitude')){$('DivesiteLatitude').value=lat;$('DivesiteLongitude').value=lng;}
DS_centerCircle();if(movend=='y'){new Ajax.Request('/divesites/localization',{parameters:{lat:lat,lng:lng,max:max_distance},onSuccess:function(transport){data=transport.responseText.evalJSON();DS_updateDivePoint();}});DiveServices_load(lat,lng);}};var DS_getGeoInfo=function(lat,lng){new Ajax.Request('/locations/getGeoInfo/',{parameters:{lat:lat,lng:lng},onSuccess:function(transport){data=transport.responseText.evalJSON();geoInfo=data['geoInfo'];i=0;s='';data['geoParent']['Geoname'].each(function(g){if(i>0)s+='/'+g['name'];i++;});$('DivesiteGeonamePath').value=s;}});};var DS_centerMap=function(){if(!DS_map_zoom)DS_map_zoom=8;lat=locator.getLatLng().lat();lng=locator.getLatLng().lng();if(($('autozoom')&&$('autozoom').checked==true)||DS_map_autozoom==true)map.setZoom(DS_map_zoom);map.panTo(new GLatLng(lat,lng));};var DS_updateMap=function(lat,lng,maxd){lat=(!lat)?locator.getLatLng().lat():lat;lng=(!lng)?locator.getLatLng().lng():lng;max_distance=(!maxd)?max_distance:maxd;DS_centerMap();DS_centerCircle();new Ajax.Request('/divesites/localization',{parameters:{lat:lat,lng:lng,max:max_distance},onSuccess:function(transport){data=transport.responseText.evalJSON();DS_updateDivePoint();}});DiveServices_load(lat,lng);}
var DS_updateDivePoint=function(){if(divePoints.size()>0){for(var id in divePoints){if(id>0)divePoints[id].hideMarker();}
divePoints.clear();}
if(!data||data.length==0){map.setZoom(9);return;}
for(i=0;i<data.length;i++){var divePoint=new DS_setdivePoint(data[i]);id=data[i]['divesites']['id'];divePoints[id]=divePoint;divePoints[id].showMarker();}
DS_filter();};var DS_setdivePoint=function(dp_info){this.distance=dp_info[0]['distance'];for(var option in dp_info['divesites']){this[option]=dp_info['divesites'][option];}
this.divepoint=DS_createdivePoint(this.name,this.latitude,this.longitude,this.id);this.showMarker=objFuncShowMarker;this.hideMarker=objFuncHideMarker;this.toggleMarker=objFuncToggleMarker;};function objFuncShowMarker()
{map.addOverlay(this.divepoint);}
function objFuncHideMarker()
{map.removeOverlay(this.divepoint);}
function objFuncToggleMarker(obj)
{if(obj.checked)
{map.addOverlay(this.divepoint);}else
{map.removeOverlay(this.divepoint);}}
DS_importanceOrder=function(marker,b){return GOverlay.getZIndex(marker.getPoint().lat())+marker.importance*1000000;}
var DS_createdivePoint=function(name,lat,lng,id,scubish){var diveIcon=new GIcon(G_DEFAULT_ICON);if(DS_divesiteId==id){diveIcon.image="/img/gmap/scubishm.png";}else{diveIcon.image="/img/gmap/dive_marker.png";}
opts={icon:diveIcon,title:name,zIndexProcess:DS_importanceOrder};var point=new GLatLng(lat,lng);var tmpMarker=new GMarker(point,opts);if(DS_divesiteId==id&&DS_openHTML==true){tmpMarker.importance=3;new Ajax.Request('/divesites/diveServiceInfo',{parameters:{'id':id},onSuccess:function(transport){var myHtml=transport.responseText;map.openInfoWindowHtml(new GLatLng(lat,lng),myHtml);}});}else{tmpMarker.importance=1;}
GEvent.addListener(tmpMarker,"click",function(){new Ajax.Request('/divesites/divePointInfo',{parameters:{'id':id},onSuccess:function(transport){var myHtml=transport.responseText;map.openInfoWindowHtml(new GLatLng(lat,lng),myHtml);}});});return tmpMarker;}
var DS_createCircle=function(radius,center,color){var points=[];var distance=radius;DS_map_bounds=new GLatLngBounds();for(i=0;i<72;i++){var latlng=DS_destination(center,i*360/72,distance);points.push(latlng);DS_map_bounds.extend(latlng);}
latlng=DS_destination(center,0,distance);DS_map_bounds.extend(latlng);points.push(DS_destination(center,0,distance));DS_map_circle=new GPolygon(points,color,1,1,color,0.2);map.addOverlay(DS_map_circle);if(($('autozoom')&&$('autozoom').checked==true)||DS_map_autozoom==true)DS_map_zoom=map.getBoundsZoomLevel(DS_map_bounds)-1;};var DS_unsetCircle=function(){if(DS_map_circle)map.removeOverlay(DS_map_circle);DS_centerMap();}
var DS_centerCircle=function(){if(DS_map_circle)map.removeOverlay(DS_map_circle);lat=locator.getLatLng().lat();lng=locator.getLatLng().lng();var point=new GLatLng(lat,lng);DS_createCircle(max_distance,point,"#046FD9");if(!DS_map_circleCenter)DS_setcircleCenter();DS_map_circleCenter.setLatLng(point);DS_centerMap();}
var DS_setcircleCenter=function(){centerCicleIcon=DS_setcenterCicleIcon();var markerOptions={icon:centerCicleIcon,clickable:false};DS_map_circleCenter=new GMarker(new GLatLng(lat,lng),markerOptions);map.addOverlay(DS_map_circleCenter);};var DS_destination=function(orig,hdng,dist){var R=3959;var oX,oY;var x,y;var d=dist/R;hdng=hdng*Math.PI/180;oX=orig.x*Math.PI/180;oY=orig.y*Math.PI/180;y=Math.asin(Math.sin(oY)*Math.cos(d)+Math.cos(oY)*Math.sin(d)*Math.cos(hdng));x=oX+Math.atan2(Math.sin(hdng)*Math.sin(d)*Math.cos(oY),Math.cos(d)-Math.sin(oY)*Math.sin(y));y=y*180/Math.PI;x=x*180/Math.PI;return new GLatLng(y,x);};var DS_filter=function(){opt=[];$$('.divesite-filters input').each(function(el){if(el.checked==true)opt.push(el.getValue());});divePoints.each(function(el){v=0;for(i=0;i<opt.length;i++){if(el[opt[i]]=='Y')v++;}
if(v==opt.length)el.showMarker();else el.hideMarker();})};var DiveServices_load=function(lat,lng){new Ajax.Request('/diveservices/localization',{parameters:{lat:lat,lng:lng},onSuccess:function(transport){data_=transport.responseText.evalJSON();DiveServices_update(data_);}});}
var DiveServices_update=function(data_){if(diveServices.size()>0){for(var id in diveServices){if(id>0)diveServices[id].hideMarker();}
diveServices.clear();}
if(!data_||data_.length==0){return;}
for(i=0;i<data_.length;i++){var diveService=new DiveServices_set(data_[i]);id=data_[i]['Diveservice']['id'];diveServices[id]=diveService;diveServices[id].showMarker();}};var DiveServices_set=function(dp_info){this.distance=dp_info[0]['distance'];for(var option in dp_info['Diveservice']){this[option]=dp_info['Diveservice'][option];}
this.diveservice=DiveServices_create(this.name,this.latitude,this.longitude,this.id);this.showMarker=DiveServices_objFuncShowMarker;this.hideMarker=DiveServices_objFuncHideMarker;this.toggleMarker=DiveServices_objFuncToggleMarker;};var DiveServices_create=function(name,lat,lng,id){var diveIcon=new GIcon(G_DEFAULT_ICON);diveIcon.image="/img/gmap/diving_marker.png";diveIcon.iconSize=new GSize(24,40);diveIcon.shadowSize=new GSize(0,0);opts={icon:diveIcon,title:name,zIndexProcess:DS_importanceOrder};var point=new GLatLng(lat,lng);var tmpMarker=new GMarker(point,opts);tmpMarker.importance=3;GEvent.addListener(tmpMarker,"click",function(){new Ajax.Request('/diveservices/diveserviceInfo',{parameters:{'id':id},onSuccess:function(transport){var myHtml=transport.responseText;map.openInfoWindowHtml(new GLatLng(lat,lng),myHtml);}});});return tmpMarker;}
function DiveServices_objFuncShowMarker()
{map.addOverlay(this.diveservice);}
function DiveServices_objFuncHideMarker()
{map.removeOverlay(this.diveservice);}
function DiveServices_objFuncToggleMarker(obj)
{if(obj.checked)
{map.addOverlay(this.diveservice);}else
{map.removeOverlay(this.diveservice);}}
