﻿
Function.Delegate={createFromString:function(instance,methodString){var rex=new RegExp("\\(.*\\)");if(rex.test(methodString))
return function(){eval(methodString);};else{var method=eval(methodString);return Function.Delegate.create(instance,method);}},call:function(instance,method){Function.Delegate.create(instance,method).call(instance,arguments);},callFromString:function(instance,methodString){Function.Delegate.createFromString(instance,methodString).call(instance,arguments);}};if(typeof(Sys)=='undefined'){Function.Delegate.create=function(instance,method){return function(){return method.apply(instance,arguments);};};}
else{Function.Delegate.create=Function.createDelegate;}
Function.Handler={cache:{}};if(typeof(Sys)=='undefined'){Function.Handler.add=function(element,eventName,handler){var browserHandler;if(element.addEventListener){browserHandler=function(e){return handler.call(element,e);}
element.addEventListener(eventName,browserHandler,false);}
else if(element.attachEvent){browserHandler=function(){var e={};try{e=window.event;}catch(ex){}
return handler.call(element,e);}
element.attachEvent('on'+eventName,browserHandler);}
Function.Handler.cache[Function.Handler.cache.length]={handler:handler,browserHandler:browserHandler};};Function.Handler.remove=function(element,eventName,handler){var browserHandler=null;var cache=Function.Handler.cache;var i=0;var l=cache.length;for(;i<l;i++){if(cache[i].handler===handler){browserHandler=cache[i].browserHandler;break;}}
if(browserHandler){if(element.removeEventListener){element.removeEventListener(eventName,browserHandler,false);}
else if(element.detachEvent){element.detachEvent('on'+eventName,browserHandler);}
cache.splice(i,1);}};}
else{Function.Handler.add=$addHandler;Function.Handler.remove=$removeHandler;}
if(!Artem)var Artem={};if(!Artem.Web)Artem.Web={};Artem.Web.GoogleMapView={Normal:0,Satellite:1,Hybrid:2,Physical:3,MoonElevation:4,MoonVisible:5,MarsElevation:6,MarsVisible:7,MarsInfrared:8,SkyVisible:9,Satellite3D:10,MapMakerNormal:11,MapMakerHybrid:12,convert:function(gmapType){switch(gmapType){case G_SATELLITE_MAP:return Artem.Web.GoogleMapView.Satellite;case G_HYBRID_MAP:return Artem.Web.GoogleMapView.Hybrid;case G_PHYSICAL_MAP:return Artem.Web.GoogleMapView.Physical;case G_MOON_ELEVATION_MAP:return Artem.Web.GoogleMapView.MoonElevation;case G_MOON_VISIBLE_MAP:return Artem.Web.GoogleMapView.MoonVisible;case G_MARS_ELEVATION_MAP:return Artem.Web.GoogleMapView.MarsElevation;case G_MARS_VISIBLE_MAP:return Artem.Web.GoogleMapView.MarsVisible;case G_MARS_INFRARED_MAP:return Artem.Web.GoogleMapView.MarsInfrared;case G_SKY_VISIBLE_MAP:return Artem.Web.GoogleMapView.SkyVisible;case G_SATELLITE_3D_MAP:return Artem.Web.GoogleMapView.Satellite3D;case G_MAPMAKER_NORMAL_MAP:return Artem.Web.GoogleMapView.MapMakerNormal;case G_MAPMAKER_HYBRID_MAP:return Artem.Web.GoogleMapView.MapMakerHybrid;default:return Artem.Web.GoogleMapView.Normal;}}};Artem.Web.OpenInfoBehaviour={Click:0,DoubleClick:1,MouseDown:2,MouseOut:3,MouseOver:4,MouseUp:5};Artem.Web.GoogleManager={CurrentMap:null,Disposed:false,Initialized:false,Maps:new Array(),addMap:function(map){for(var i=0;i<this.Maps.length;i++){if(map.ClientID==this.Maps[i].ClientID)return;}
this.Maps[this.Maps.length]=(this.CurrentMap=map);},dispose:function(partial){if(!this.Disposed){GUnload();this.Disposed=true;}},initialize:function(){if(!this.Initialized){if(!GBrowserIsCompatible())throw"Your browser is not google maps api compatible!";var handler=Function.Delegate.create(this,this.dispose);if(typeof(Sys)!='undefined'){var rm=Sys.WebForms.PageRequestManager.getInstance();rm.add_beginRequest(handler);}
Function.Handler.add(window,"unload",handler);for(var i=0;i<document.forms.length;i++){try{document.forms[i].onsubmit=Function.Delegate.create(this,this.save);}
catch(ex){}}
this.Initialized=true;}},save:function(){try{for(var i=0;i<this.Maps.length;i++){try{this.Maps[i].save();}
catch(ex1){}}}
catch(ex){}}};Artem.Web.GoogleBounds=function(bounds){this.GBounds=bounds;};Artem.Web.GoogleBounds.prototype={save:function(){var state="{";if(this.GBounds){var sw=this.GBounds.getSouthWest();var ne=this.GBounds.getNorthEast();state+="\"SouthWest\":{\"Latitude\":"+sw.lat()+",\"Longitude\":"+sw.lng()+"},";state+="\"NorthEast\":{\"Latitude\":"+ne.lat()+",\"Longitude\":"+ne.lng()+"}";}
state+="}";return state;}};Artem.Web.GoogleDirection=function(map,config){this.Locale=config.Locale;this.Query=config.Query;this.RoutePanelId=config.RoutePanelId;var pane=null;if(this.RoutePanelId)pane=document.getElementById(this.RoutePanelId);this.GDirections=new GDirections(map.GMap,pane);};Artem.Web.GoogleDirection.prototype={save:function(){var state="{";state+="\"Locale\":\""+this.Locale+"\",";state+="\"Query\":\""+this.Query+"\",";state+="\"RoutePanelId\":\""+this.RoutePanelId+"\",";var distance=this.getDistance();state+="\"Distance\":{\"Meters\":"+distance.meters+",\"Html\":\""+distance.html+"\"},";var duration=this.getDuration();state+="\"Duration\":{\"Seconds\":"+duration.seconds+",\"Html\":\""+duration.html+"\"},";var bounds=new Artem.Web.GoogleBounds(this.getBounds());state+="\"Bounds\":";state+=bounds.save();state+="}";return state;},load:function(query,options){this.GDirections.load(query,options);},loadDefault:function(){var options=(this.Locale)?{locale:this.Locale}:null;this.load(this.Query,options);},loadFromWaypoints:function(waypoints,options){this.GDirections.loadFromWaypoints(waypoints,options);},clear:function(){this.GDirections.clear();},getStatus:function(){return this.GDirections.getStatus();},getBounds:function(){return this.GDirections.getBounds();},getNumRoutes:function(){return this.GDirections.getNumRoutes();},getRoute:function(i){return this.GDirections.getRoute(i);},getNumGeocodes:function(){return this.GDirections.getNumGeocodes();},getGeocode:function(i){return this.GDirections.getGeocode(i);},getCopyrightsHtml:function(){return this.GDirections.getCopyrightsHtml();},getSummaryHtml:function(){return this.GDirections.getSummaryHtml();},getDistance:function(){return this.GDirections.getDistance();},getDuration:function(){return this.GDirections.getDuration();},getPolyline:function(){return this.GDirections.getPolyline();},getMarker:function(i){return this.GDirections.getMarker(i);}};Artem.Web.GooglePolygon=function(map,index,config){this.GPolygon=null;this.Map=map;this.Index=index;this.Clickable=config.Clickable;this.FillColor=config.FillColor;this.FillOpacity=config.FillOpacity;this.Points=config.Points;this.StrokeColor=config.StrokeColor;this.StrokeOpacity=config.StrokeOpacity;this.StrokeWeight=config.StrokeWeight;var points=new Array();var options=new Object();if(this.Points){for(var i=0;i<this.Points.length;i++){points.push(new GLatLng(this.Points[i].Latitude,this.Points[i].Longitude));}}
options.clickable=this.Clickable;this.GPolygon=new GPolygon(points,this.StrokeColor,this.StrokeWeight,this.StrokeOpacity,this.FillColor,this.FillOpacity,options);if(map.PolygonEvents){this.ClientEvents=map.PolygonEvents.ClientEvents;this.ServerEvents=map.PolygonEvents.ServerEvents;}
this.attachEvents(this.ClientEvents,true);this.attachEvents(this.ServerEvents,false);};Artem.Web.GooglePolygon.prototype={attachEvents:function(events,clients){if(events){var key;for(var i=0;i<events.length;i++){key=events[i].Key;if(clients){GEvent.addListener(this.GPolygon,key,Function.Delegate.createFromString(this,events[i].Handler));}
else{var handler=events[i].Handler;var delegate=Function.Delegate.create(this,this.raiseEvent);GEvent.addListener(this.GPolygon,key,function(args){delegate.call(this,handler,args);});}}}},raiseEvent:function(handler,args){this.Map.save();if(handler){handler=handler.replace("INDEX",this.Index);if(args)
handler=handler.replace("ARGS",args);eval(handler);}},save:function(){var state="{";state+="\"Clickable\":"+this.Clickable+",";state+="\"FillColor\":\""+this.FillColor+"\",";state+="\"FillOpacity\":"+this.FillOpacity+",";state+="\"StrokeColor\":\""+this.StrokeColor+"\",";state+="\"StrokeOpacity\":"+this.StrokeOpacity+",";state+="\"StrokeWeight\":"+this.StrokeWeight+",";if(this.Points){state+="\"Points\":[";var point;for(var i=0;i<this.Points.length;i++){point=this.Points[i];state+="{\"Latitude\":"+point.Latitude+",\"Longitude\":"+point.Longitude+"},";}
state=state.substr(0,state.length-1);state+="],";}
var bounds=new Artem.Web.GoogleBounds(this.getBounds());state+="\"Bounds\":";state+=bounds.save();state+="}";return state;},getBounds:function(){return this.GPolygon.getBounds();},hide:function(){this.GPolygon.hide();},isHidden:function(){return this.GPolygon.isHidden();},show:function(){this.GPolygon.show();}};Artem.Web.GooglePolyline=function(map,index,config){this.GPolyline=null;this.Map=map;this.Index=index;this.Clickable=config.Clickable;this.Color=config.Color;this.Geodesic=config.Geodesic;this.Opacity=config.Opacity;this.Points=config.Points;this.Weight=config.Weight;var points=new Array();var options=new Object();if(this.Points){for(var i=0;i<this.Points.length;i++){points.push(new GLatLng(this.Points[i].Latitude,this.Points[i].Longitude));}}
options.clickable=this.Clickable;options.geodesic=this.Geodesic;this.GPolyline=new GPolyline(points,this.Color,this.Weight,this.Opacity,options);if(map.PolylineEvents){this.ClientEvents=map.PolylineEvents.ClientEvents;this.ServerEvents=map.PolylineEvents.ServerEvents;}
this.attachEvents(this.ClientEvents,true);this.attachEvents(this.ServerEvents,false);};Artem.Web.GooglePolyline.prototype={attachEvents:function(events,clients){if(events){var key;for(var i=0;i<events.length;i++){key=events[i].Key;if(clients){GEvent.addListener(this.GPolyline,key,Function.Delegate.createFromString(this,events[i].Handler));}
else{var handler=events[i].Handler;var delegate=Function.Delegate.create(this,this.raiseEvent);GEvent.addListener(this.GPolyline,key,function(args){delegate.call(this,handler,args);});}}}},raiseEvent:function(handler,args){this.Map.save();if(handler){handler=handler.replace("INDEX",this.Index);if(args)
handler=handler.replace("ARGS",args);eval(handler);}},save:function(){var state="{";state+="\"Clickable\":"+this.Clickable+",";state+="\"Color\":\""+this.Color+"\",";state+="\"Geodesic\":"+this.Geodesic+",";state+="\"Opacity\":"+this.Opacity+",";state+="\"Weight\":"+this.Weight+",";if(this.Points){state+="\"Points\":[";var point;for(var i=0;i<this.Points.length;i++){point=this.Points[i];state+="{\"Latitude\":"+point.Latitude+",\"Longitude\":"+point.Longitude+"},";}
state=state.substr(0,state.length-1);state+="],";}
var bounds=new Artem.Web.GoogleBounds(this.getBounds());state+="\"Bounds\":";state+=bounds.save();state+="}";return state;},getBounds:function(){return this.GPolyline.getBounds();},hide:function(){this.GPolyline.hide();},isHidden:function(){return this.GPolyline.isHidden();},show:function(){this.GPolyline.show();},supportsHide:function(){return this.GPolyline.supportsHide();}};Artem.Web.GoogleMarker=function(map,index,config){this.GMarker=null;this.Map=map;this.Index=index;this.Address=config.Address;this.AutoPan=config.AutoPan;this.Bouncy=config.Bouncy;this.Clickable=config.Clickable;this.Draggable=config.Draggable;this.DragCrossMove=config.DragCrossMove;this.IconAnchor=config.IconAnchor;this.IconSize=config.IconSize;this.IconUrl=config.IconUrl;this.InfoWindowAnchor=config.InfoWindowAnchor;this.Latitude=config.Latitude;this.Longitude=config.Longitude;this.OpenInfoBehaviour=config.OpenInfoBehaviour;this.OpenWindowContent=null;this.ShadowSize=config.ShadowSize;this.ShadowUrl=config.ShadowUrl;this.Text=config.Text;this.Title=config.Title;this.IsGeoload=false;if(map.MarkerEvents){this.ClientEvents=map.MarkerEvents.ClientEvents;this.ServerEvents=map.MarkerEvents.ServerEvents;}};Artem.Web.GoogleMarker.prototype={isLoaded:function(){return(this.GMarker!=null);},initialize:function(){var eventName;switch(this.OpenInfoBehaviour){case Artem.Web.OpenInfoBehaviour.Click:eventName="click";break;case Artem.Web.OpenInfoBehaviour.DoubleClick:eventName="dblclick";break;case Artem.Web.OpenInfoBehaviour.MouseDown:eventName="mousedown";break;case Artem.Web.OpenInfoBehaviour.MouseOut:eventName="mouseout";break;case Artem.Web.OpenInfoBehaviour.MouseOver:eventName="mouseover";break;case Artem.Web.OpenInfoBehaviour.MouseUp:eventName="mouseup";break;}
if(eventName)
GEvent.addListener(this.GMarker,eventName,Function.Delegate.create(this,this.openDefaultInfoWindow));this.attachEvents(this.ClientEvents,true);this.attachEvents(this.ServerEvents,false);},attachEvents:function(events,clients){if(events){var key;for(var i=0;i<events.length;i++){key=events[i].Key;if(key!='geoload'){if(clients){GEvent.addListener(this.GMarker,key,Function.Delegate.createFromString(this,events[i].Handler));}
else{var handler=events[i].Handler;var delegate=Function.Delegate.create(this,this.raiseEvent);GEvent.addListener(this.GMarker,key,function(args){delegate.call(this,handler,args);});}}
else if(this.IsGeoload){if(clients)
Function.Delegate.callFromString(this,events[i].Handler);else
this.raiseEvent(events[i].Handler,this.Address);}}}},raiseEvent:function(handler,args){this.Map.save();if(handler){handler=handler.replace("INDEX",this.Index);if(args)
handler=handler.replace("ARGS",args);eval(handler);}},load:function(point){if(point){this.Latitude=point.lat();this.Longitude=point.lng();var options=new Object();options.autoPan=this.AutoPan;options.bouncy=this.Bouncy;options.clickable=this.Clickable;options.draggable=this.Draggable;options.dragCrossMove=this.DragCrossMove;options.title=this.Title;options.icon=this.createIcon();this.GMarker=new GMarker(point,options);this.Map.addOverlay(this.GMarker);this.initialize();}},loadGeo:function(point){this.IsGeoload=true;this.load(point);},save:function(){var state="{";state+="\"Address\":\""+this.Address+"\",";state+="\"AutoPan\":"+this.AutoPan+",";state+="\"Bouncy\":"+this.Bouncy+",";state+="\"Clickable\":"+this.Clickable+",";state+="\"Draggable\":"+this.Draggable+",";state+="\"DragCrossMove\":"+this.DragCrossMove+",";if(this.IconAnchor)
state+="\"IconAnchor\":{X:"+this.IconAnchor.X+",Y:"+this.IconAnchor.Y+"},";if(this.IconSize)
state+="\"IconSize\":{Width:"+this.IconSize.Width+",Height:"+this.IconSize.Height+"},";state+="\"IconUrl\":\""+this.IconUrl+"\",";if(this.InfoWindowAnchor)
state+="\"InfoWindowAnchor\":{X:"+this.InfoWindowAnchor.X+",Y:"+this.InfoWindowAnchor.Y+"},";var point=this.getLatLng();if(point){state+="\"Latitude\":"+point.lat()+",";state+="\"Longitude\":"+point.lng()+",";}
else{state+="\"Latitude\":"+this.Latitude+",";state+="\"Longitude\":"+this.Longitude+",";}
state+="\"OpenInfoBehaviour\":"+this.OpenInfoBehaviour+",";if(this.ShadowSize)
state+="\"ShadowSize\":{Width:"+this.ShadowSize.Width+",Height:"+this.ShadowSize.Height+"},";state+="\"ShadowUrl\":\""+this.ShadowUrl+"\",";state+="\"Title\":\""+this.Title+"\",";state+="}";return state;},closeInfoWindow:function(){if(this.isLoaded())
this.GMarker.closeInfoWindow();},createIcon:function(){var icon=null;if(this.IconUrl){icon=new GIcon();icon.image=this.IconUrl;if(this.IconSize)
icon.iconSize=new GSize(this.IconSize.Width,this.IconSize.Height);if(this.IconAnchor)
icon.iconAnchor=new GPoint(this.IconAnchor.X,this.IconAnchor.Y);if(this.InfoWindowAnchor)
icon.infoWindowAnchor=new GPoint(this.InfoWindowAnchor.X,this.InfoWindowAnchor.Y);if(this.ShadowUrl)
icon.shadow=this.ShadowUrl;if(this.ShadowSize)
icon.shadowSize=new GSize(this.ShadowSize.Width,this.ShadowSize.Height);}
return icon;},disableDragging:function(){if(this.isLoaded())
this.GMarker.disableDragging();},draggable:function(){if(this.isLoaded())
return this.GMarker.draggable();},draggingEnabled:function(){if(this.isLoaded())
return this.GMarker.draggingEnabled();},enableDragging:function(){if(this.isLoaded())
this.GMarker.enableDragging();},getIcon:function(){if(this.isLoaded())
return this.GMarker.getIcon();},getLatLng:function(){if(this.isLoaded())
return this.GMarker.getLatLng();},getPoint:function(){if(this.isLoaded())
return this.GMarker.getPoint();},getTitle:function(){if(this.isLoaded())
return this.GMarker.getTitle();},hide:function(){if(this.isLoaded())
this.GMarker.hide();},isHidden:function(){if(this.isLoaded())
return this.GMarker.isHidden();},openDefaultInfoWindow:function(){if(this.isLoaded()){if(this.OpenWindowContent){var node=document.getElementById(this.OpenWindowContent);this.openInfoWindow(node.cloneNode(true));}
else
this.openInfoWindowHtml(this.Text);}},openInfoWindow:function(domnode){if(this.isLoaded())
this.GMarker.openInfoWindow(domnode);},openInfoWindowHtml:function(content){if(this.isLoaded())
this.GMarker.openInfoWindowHtml(content);},setImage:function(url){if(this.isLoaded())
this.GMarker.setImage(url);},setLatLng:function(point){if(this.isLoaded())
this.GMarker.setLatLng(point);},setPoint:function(point){if(this.isLoaded())
this.GMarker.setPoint(point);},show:function(){if(this.isLoaded())
this.GMarker.show();}};Artem.Web.GoogleMap=function(config){this.Address=config.Address;this.AddressNotFound=false;this.BaseCountryCode=config.BaseCountryCode;this.DefaultAddress=config.DefaultAddress;this.DefaultMapView=config.DefaultMapView;this.ClientID=config.ClientID;this.ClientMapID=config.ClientMapID;this.IsGeolocation=false;this.IsStatic=config.IsStatic;this.IsStreetView=config.IsStreetView;this.Key=config.Key;this.Latitude=config.Latitude;this.Longitude=config.Longitude;this.ShowMapTypeControl=config.ShowMapTypeControl;this.ShowScaleControl=config.ShowScaleControl;this.ShowTraffic=config.ShowTraffic;this.StreetViewMode=config.StreetViewMode;this.StreetViewPanoID=config.StreetViewPanoID;this.Zoom=config.Zoom;this.ZoomPanType=config.ZoomPanType;this.EnableContinuousZoom=config.EnableContinuousZoom;this.EnableDoubleClickZoom=config.EnableDoubleClickZoom;this.EnableDragging=config.EnableDragging;this.EnableGoogleBar=config.EnableGoogleBar;this.EnableInfoWindow=config.EnableInfoWindow;this.EnableMarkerManager=config.EnableMarkerManager;this.EnableReverseGeocoding=config.EnableReverseGeocoding;this.EnableScrollWheelZoom=config.EnableScrollWheelZoom;if(config.MapEvents){this.ClientEvents=config.MapEvents.ClientEvents;this.ServerEvents=config.MapEvents.ServerEvents;}
this.MarkerEvents=config.MarkerEvents;this.PolygonEvents=config.PolygonEvents;this.PolylineEvents=config.PolylineEvents;this.ClentAddressNotFoundIndex=null;this.ServerAddressNotFoundIndex=null;this.ClientGeoLoadedIndex=null;this.ServerGeoLoadedIndex=null;this.ClientLocationLoadedIndex=null;this.ServerLocationLoadedIndex=null;this.Actions=null;this.Directions=null;this.Markers=null;this.Polygons=null;this.Polylines=null;this.GMap=null;this.GMapPano=null;this.MarkerManager=null;this.Geocoder=new GClientGeocoder();if(config.BaseCountryCode)
this.Geocoder.setBaseCountryCode(config.BaseCountryCode);Artem.Web.GoogleManager.initialize();Artem.Web.GoogleManager.addMap(this);if(!this.IsStatic&&!(this.IsStreetView&&this.StreetViewMode==0)){var options;if(this.Width&&this.Height)
options={size:new GSize(this.Width,this.Height)};this.GMap=new GMap2(this.getElement(),options);this.attachEvents(this.ClientEvents,true);this.attachEvents(this.ServerEvents,false);}};Artem.Web.GoogleMap.prototype={initialize:function(){(this.EnableContinuousZoom)?this.enableContinuousZoom():this.disableContinuousZoom();(this.EnableDoubleClickZoom)?this.enableDoubleClickZoom():this.disableDoubleClickZoom();(this.EnableDragging)?this.enableDragging():this.disableDragging();(this.EnableGoogleBar)?this.enableGoogleBar():this.disableGoogleBar();(this.EnableInfoWindow)?this.enableInfoWindow():this.disableInfoWindow();(this.EnableScrollWheelZoom)?this.enableScrollWheelZoom():this.disableScrollWheelZoom();switch(this.ZoomPanType){case 1:this.GMap.addControl(new GLargeMapControl());break;case 2:this.GMap.addControl(new GSmallZoomControl());break;case 3:this.GMap.addControl(new GSmallZoomControl3D());break;case 4:this.GMap.addControl(new GLargeMapControl3D());break;default:this.GMap.addControl(new GSmallMapControl());break;}
if(this.ShowMapTypeControl)this.GMap.addControl(new GMapTypeControl());if(this.ShowScaleControl)this.GMap.addControl(new GScaleControl());if(this.ShowTraffic)this.GMap.addOverlay(new GTrafficOverlay());if(this.EnableMarkerManager)this.MarkerManager=new GMarkerManager(this.GMap);this.setMapView();if(this.IsStreetView&&this.StreetViewMode==1){var panoID=this.StreetViewPanoID||(this.ClientID+"_Pano");this.GMapPano=new GStreetviewPanorama(document.getElementById(panoID));this.GMap.addOverlay(new GStreetviewOverlay());GEvent.addListener(this.GMap,"click",Function.Delegate.create(this,this.setStreetView));}},attachEvents:function(events,clients){if(events){var key;for(var i=0;i<events.length;i++){key=events[i].Key;if(key!='geoload'&&key!='addressnotfound'&&key!='locationloaded'){if(clients){GEvent.addListener(this.GMap,key,Function.Delegate.createFromString(this,events[i].Handler));}
else{var handler=events[i].Handler;var delegate=Function.Delegate.create(this,this.raiseEvent);GEvent.addListener(this.GMap,key,function(overlay,args){delegate.call(this,handler,args);});}}
else if(key=='locationloaded'){if(clients)
this.ClientLocationLoadedIndex=i;else
this.ServerLocationLoadedIndex=i;}
else if(key=='addressnotfound'){if(clients)
this.ClientAddressNotFoundIndex=i;else
this.ServerAddressNotFoundIndex=i;}
else{if(clients)
this.ClientGeoLoadedIndex=i;else
this.ServerGeoLoadedIndex=i;}}}},raiseEvent:function(handler,args){this.save();if(handler){if(args)
handler=handler.replace("ARGS",args);eval(handler);}},load:function(point){if(point){if(!this.IsStatic&&!(this.IsStreetView&&this.StreetViewMode==0)){this.Latitude=point.lat();this.Longitude=point.lng();this.setCenter(point,this.Zoom);if(this.IsGeolocation){this.IsGeolocation=false;if(this.ClientGeoLoadedIndex!=null)
Function.Delegate.callFromString(this,this.ClientEvents[this.ClientGeoLoadedIndex].Handler);if(this.ServerGeoLoadedIndex!=null){this.raiseEvent(this.ServerEvents[this.ServerGeoLoadedIndex].Handler,this.Address);}}
if(this.EnableReverseGeocoding&&!this.Address){var delegate=Function.Delegate.create(this,this.setAddress);this.Geocoder.getLocations(point,delegate);}
this.initialize();this.render();this.checkResize();}
else if(this.IsStreetView){this.loadStreetView(point);}
else{this.loadStatic();}}
else{if((this.Latitude!=0)&&(this.Longitude!=0))
this.load(new GLatLng(this.Latitude,this.Longitude));else{if(!this.IsGeolocation){this.IsGeolocation=true;this.Geocoder.getLatLng(this.Address,Function.Delegate.create(this,this.load));}
else if(!this.AddressNotFound){if(this.ClientAddressNotFoundIndex!=null)
Function.Delegate.callFromString(this,this.ClientEvents[this.ClientAddressNotFoundIndex].Handler);if(this.ServerAddressNotFoundIndex!=null){this.raiseEvent(this.ServerEvents[this.ServerAddressNotFoundIndex].Handler,this.Address);}
this.AddressNotFound=true;if(this.DefaultAddress){this.Address=this.DefaultAddress;this.Geocoder.getLatLng(this.Address,Function.Delegate.create(this,this.load));}}}}},loadAddress:function(address){this.Address=address;this.IsGeolocation=true;this.Geocoder.getLatLng(this.Address,Function.Delegate.create(this,this.load));},loadStatic:function(){var el=this.getElement();var width=512;if(this.Didth&&this.Width<512)width=this.Width;var height=512;if(this.Height&&this.Height<512)height=this.Height;var src="http:\/\/maps.google.com\/staticmap?";src+="center="+this.Latitude+","+this.Longitude+"&";src+="zoom="+this.Zoom+"&";src+="size="+width+"x"+height+"&";src+="key="+this.Key;if(this.Markers){var i;src+="&markers=";for(i=0;i<this.Markers.length;i++)
src+=this.Markers[i].Latitude+","+this.Markers[i].Longitude+"|";}
var img=document.createElement("img");img.src=src;el.appendChild(img);},loadStreetView:function(point){this.GMap=new GStreetviewPanorama(this.getElement(),{latlng:point});this.GMap.checkResize();},render:function(){if(this.Markers){for(var i=0;i<this.Markers.length;i++){this.renderMarker(this.Markers[i]);}}
if(this.Directions){for(var i=0;i<this.Directions.length;i++){this.renderDirection(this.Directions[i]);}}
if(this.Polylines){for(var i=0;i<this.Polylines.length;i++){this.renderPolyline(this.Polylines[i]);}}
if(this.Polygons){for(var i=0;i<this.Polygons.length;i++){this.renderPolygon(this.Polygons[i]);}}
if(this.Actions){for(var i=0;i<this.Actions.length;i++){Function.Delegate.callFromString(this,this.Actions[i]);}}},renderDirection:function(d){d.loadDefault();},renderMarker:function(m){if((m.Latitude!=0)&&(m.Longitude!=0)){try{m.load(new GLatLng(m.Latitude,m.Longitude));}
catch(ex){}}
else{try{this.Geocoder.getLatLng(m.Address,Function.Delegate.create(m,m.loadGeo));}
catch(ex){}}},renderPolygon:function(pg){this.addOverlay(pg.GPolygon);},renderPolyline:function(pl){this.addOverlay(pl.GPolyline);},save:function(){var state="{";state+="\"Address\":\""+this.Address+"\"";state+=",\"BaseCountryCode\":\""+this.BaseCountryCode+"\"";state+=",\"DefaultMapView\":"+Artem.Web.GoogleMapView.convert(this.getCurrentMapType());state+=",\"EnableGoogleBar\":"+this.EnableGoogleBar;state+=",\"EnableMarkerManager\":"+this.EnableMarkerManager;state+=",\"EnableScrollWheelZoom\":"+this.EnableScrollWheelZoom;state+=",\"IsStatic\":"+this.IsStatic;var center=this.getCenter();if(center){state+=",\"Latitude\":"+center.lat();state+=",\"Longitude\":"+center.lng();}
else{state+=",\"Latitude\":"+this.Latitude;state+=",\"Longitude\":"+this.Longitude;}
state+=",\"ShowMapTypeControl\":"+this.ShowMapTypeControl;state+=",\"ShowTraffic\":"+this.ShowTraffic;state+=",\"Zoom\":"+this.getZoom();state+=",\"ZoomPanType\":"+this.ZoomPanType;var bounds=new Artem.Web.GoogleBounds(this.getBounds());state+=",\"Bounds\":";state+=bounds.save();if(this.Markers){state+=",\"Markers\":[";for(var i=0;i<this.Markers.length;i++){if(this.Markers[i].isLoaded())
state+=this.Markers[i].save();}
state+="]";}
if(this.Directions){state+=",\"Directions\":[";for(var i=0;i<this.Directions.length;i++){state+=this.Directions[i].save();}
state+="]";}
if(this.Polylines){state+=",\"Polylines\":[";for(var i=0;i<this.Polylines.length;i++){state+=this.Polylines[i].save();}
state+="]";}
if(this.Polygons){state+=",\"Polygons\":[";for(var i=0;i<this.Polygons.length;i++){state+=this.Polygons[i].save();}
state+="]";}
state+="}";var bag=document.getElementById(this.ClientID+"_State");bag.value=state;},setMapView:function(){if(this.DefaultMapView){switch(this.DefaultMapView){case Artem.Web.GoogleMapView.Normal:this.GMap.setMapType(G_NORMAL_MAP);break;case Artem.Web.GoogleMapView.Satellite:this.GMap.setMapType(G_SATELLITE_MAP);break;case Artem.Web.GoogleMapView.Hybrid:this.GMap.setMapType(G_HYBRID_MAP);break;case Artem.Web.GoogleMapView.Physical:this.GMap.addMapType(G_PHYSICAL_MAP);this.GMap.setMapType(G_PHYSICAL_MAP);break;case Artem.Web.GoogleMapView.MoonElevation:this.GMap.addMapType(G_MOON_ELEVATION_MAP);this.GMap.setMapType(G_MOON_ELEVATION_MAP);break;case Artem.Web.GoogleMapView.MoonVisible:this.GMap.addMapType(G_MOON_VISIBLE_MAP);this.GMap.setMapType(G_MOON_VISIBLE_MAP);break;case Artem.Web.GoogleMapView.MarsElevation:this.GMap.addMapType(G_MARS_ELEVATION_MAP);this.GMap.setMapType(G_MARS_ELEVATION_MAP);break;case Artem.Web.GoogleMapView.MarsVisible:this.GMap.addMapType(G_MARS_VISIBLE_MAP);this.GMap.setMapType(G_MARS_VISIBLE_MAP);break;case Artem.Web.GoogleMapView.MarsInfrared:this.GMap.addMapType(G_MARS_INFRARED_MAP);this.GMap.setMapType(G_MARS_INFRARED_MAP);break;case Artem.Web.GoogleMapView.SkyVisible:this.GMap.addMapType(G_SKY_VISIBLE_MAP);this.GMap.setMapType(G_SKY_VISIBLE_MAP);break;case Artem.Web.GoogleMapView.Satellite3D:this.GMap.addMapType(G_SATELLITE_3D_MAP);this.GMap.setMapType(G_SATELLITE_3D_MAP);break;case Artem.Web.GoogleMapView.MapMakerNormal:this.GMap.addMapType(G_MAPMAKER_NORMAL_MAP);this.GMap.setMapType(G_MAPMAKER_NORMAL_MAP);break;case Artem.Web.GoogleMapView.MapMakerHybrid:this.GMap.addMapType(G_MAPMAKER_HYBRID_MAP);this.GMap.setMapType(G_MAPMAKER_HYBRID_MAP);break;}}},setAddress:function(addresses){if(addresses.Status.code==200){try{this.Address=addresses.Placemark[0].address;this.save();if(this.ClientLocationLoadedIndex!=null){var delegate=Function.Delegate.createFromString(this,this.ClientEvents[this.ClientLocationLoadedIndex].Handler);delegate.call(this,this.Address);}
if(this.ServerLocationLoadedIndex!=null){this.raiseEvent(this.ServerEvents[this.ServerLocationLoadedIndex].Handler,this.Address);}}
catch(ex){}}},setStreetView:function(overlay,latlng){this.GMapPano.setLocationAndPOV(latlng);},addMarker:function(config,render){if(!this.Markers)this.Markers=new Array();var marker=new Artem.Web.GoogleMarker(this,this.Markers.length,config);this.Markers.push(marker);if(render)this.renderMarker(marker);},addPolygon:function(config,render){if(!this.Polygons)this.Polygons=new Array();var polygon=new Artem.Web.GooglePolygon(this,this.Polygons.length,config);this.Polygons.push(polygon);if(render)this.renderPolygon(polygon);},addPolyline:function(config,render){if(!this.Polylines)this.Polylines=new Array();var polyline=new Artem.Web.GooglePolyline(this,this.Polylines.length,config);this.Polylines.push(polyline);if(render)this.renderPolyline(polyline);},addDirection:function(config,render){if(!this.Directions)this.Directions=new Array();var dir=new Artem.Web.GoogleDirection(this,config);this.Directions.push(dir);if(render)this.renderDirection(dir);},addAction:function(action){if(!this.Actions)this.Actions=new Array();this.Actions.push(action);},clearMarkers:function(){if(this.Markers){var len=this.Markers.length;for(var i=0;i<len;i++){this.GMap.removeOverlay(this.Markers[i].GMarker);}
this.Markers=new Array();}},clearPolygons:function(config){if(this.Polygons)this.Polygons=new Array();},clearPolylines:function(config){if(this.Polylines)this.Polylines=new Array();},clearDirections:function(config){if(this.Directions)this.Directions=new Array();},clearActions:function(action){if(this.Actions)this.Actions=new Array();},getElement:function(){return document.getElementById(this.ClientID);},addControl:function(control,position){this.GMap.addControl(control,position);},addMapType:function(type){this.GMap.addMapType(type);},addOverlay:function(overlay){this.GMap.addOverlay(overlay);},checkResize:function(){this.GMap.checkResize();},clearOverlays:function(){this.GMap.clearOverlays();},closeInfoWindow:function(){this.GMap.closeInfoWindow();},continuousZoomEnabled:function(){return this.GMap.continuousZoomEnabled();},disableContinuousZoom:function(){this.GMap.disableContinuousZoom();},disableDoubleClickZoom:function(){this.GMap.disableDoubleClickZoom();},disableDragging:function(){this.GMap.disableDragging();},disableGoogleBar:function(){this.GMap.disableGoogleBar();},disableInfoWindow:function(){this.GMap.disableInfoWindow();},disableScrollWheelZoom:function(){this.GMap.disableScrollWheelZoom();},doubleClickZoomEnabled:function(){return this.GMap.doubleClickZoomEnabled();},draggingEnabled:function(){return this.GMap.draggingEnabled();},enableContinuousZoom:function(){this.GMap.enableContinuousZoom();},enableDoubleClickZoom:function(){this.GMap.enableDoubleClickZoom();},enableDragging:function(){this.GMap.enableDragging();},enableGoogleBar:function(){this.GMap.enableGoogleBar();},enableInfoWindow:function(){this.GMap.enableInfoWindow();},enableScrollWheelZoom:function(){this.GMap.enableScrollWheelZoom();},fromContainerPixelToLatLng:function(pixel){return this.GMap.fromContainerPixelToLatLng(pixel);},fromDivPixelToLatLng:function(pixel){return this.GMap.fromDivPixelToLatLng(pixel);},fromLatLngToDivPixel:function(latlng){return this.GMap.fromLatLngToDivPixel(latlng);},getBounds:function(){return this.GMap.getBounds();},getBoundsZoomLevel:function(){return this.GMap.getBoundsZoomLevel();},getCenter:function(){return this.GMap.getCenter();},getContainer:function(){return this.GMap.getContainer();},getCurrentMapType:function(){return this.GMap.getCurrentMapType();},getDragObject:function(){return this.GMap.getDragObject();},getInfoWindow:function(){return this.GMap.getInfoWindow();},getMapTypes:function(){return this.GMap.getMapTypes();},getPane:function(pane){return this.GMap.getPane();},getSize:function(){return this.GMap.getSize();},getZoom:function(){return this.GMap.getZoom();},infoWindowEnabled:function(){return this.GMap.infoWindowEnabled();},isLoaded:function(){return this.GMap.isLoaded();},openInfoWindow:function(point,node,opts){this.GMap.openInfoWindow(point,node,opts);},openInfoWindowHtml:function(point,html,opts){this.GMap.openInfoWindowHtml(point,html,opts);},panBy:function(distance){this.GMap.panBy(distance);},panDirection:function(dx,dy){this.GMap.panDirection(dx,dy);},panTo:function(center){this.GMap.panTo(center);},removeControl:function(control){this.GMap.removeControl(control);},removeMapType:function(type){this.GMap.removeMapType();},removeOverlay:function(overlay){this.GMap.removeOverlay(overlay);},returnToSavedPosition:function(){this.GMap.returnToSavedPosition();},savePosition:function(){this.GMap.savePosition();},scrollWheelZoomEnabled:function(){return this.GMap.scrollWheelZoomEnabled();},setCenter:function(point,zoom,type){this.GMap.setCenter(point,zoom,type);},setMapType:function(type){this.GMap.setMapType(type);},setZoom:function(level){this.GMap.setZoom(level);},zoomIn:function(){this.GMap.zoomIn();},zoomOut:function(){this.GMap.zoomOut();}};