﻿
Array.prototype.contains=function(element){for(var i=0;i<this.length;i++){if(this[i]==element){return true;}}
return false;}
redirect=function(url){window.location.href=url;}
function MapBuilder(googleMapId,defaultZoomlevel,defaultLatitude,defaultLongitude,iconUrl,contentLoadingCallback,showNavigation,showMapType,draggable){this.googleMapId=googleMapId;this.map=null;this.geocoder=null;this.defaultZoomlevel=defaultZoomlevel;this.defaultLatitude=defaultLatitude;this.defaultLongitude=defaultLongitude;this.defaultPosition=new google.maps.LatLng(defaultLatitude,defaultLongitude);this.markers=null;this.contentLoadingCallback=contentLoadingCallback;this.iconUrl=iconUrl;this.showNavigation=showNavigation;this.showMapType=showMapType;this.draggable=draggable;this.storeMarkers=function(markersJsonData)
{this.markers=jQuery.parseJSON(markersJsonData);}
this.isInitialized=false;this.tryInitialize=function(){if(this.isInitialized==false){this.initialize();}}
this.initialize=function(){this.geocoder=new google.maps.Geocoder();var options={zoom:this.defaultZoomlevel,center:this.defaultPosition,mapTypeId:google.maps.MapTypeId.ROADMAP,disableAutoPan:false,navigationControl:this.showNavigation,navigationControlOptions:{style:google.maps.NavigationControlStyle.BIG},mapTypeControl:this.showMapType,draggable:this.draggable,mapTypeControlOptions:{style:google.maps.MapTypeControlStyle.DROPDOWN_MENU},streetViewControl:false};this.map=new google.maps.Map(document.getElementById(this.googleMapId),options);for(i=0;i<this.markers.length;i++){var markerDataObject=this.markers[i];var marker=new google.maps.Marker({position:new google.maps.LatLng(this.markers[i].Latitude,this.markers[i].Longitude),title:this.markers[i].Title,icon:this.iconUrl});marker.setMap(this.map);var pageUrl=this.markers[i].PageUrl;this.attachClickEvent(marker,pageUrl);this.markers[i].Marker=marker;}
this.isInitialized=true;}
this.attachClickEvent=function(marker,link)
{google.maps.event.addListener(marker,'click',function(){redirect(link)});}
this.filterMap=function(group,type){for(i=0;i<this.markers.length;i++){if(this.markers[i].Groups.contains(group)){this.markers[i].Marker.setMap(this.map);}
else{this.markers[i].Marker.setMap(null);}}
if(this.contentLoadingCallback!=null&&typeof(this.contentLoadingCallback)=="function"){this.contentLoadingCallback(group,type);}}}
