
function str2intarray(str,del){var s=str.split(del);var a;for(a=0;a<s.length;a++){s[a]=parseInt(s[a],10);}
return s;}
function BaseMap(gmap){this._gmap=null;if(gmap instanceof GMap2){this._gmap=gmap;}else if(gmap&&gmap.map){this._gmap=gmap.map;}
this._bCacheIcons=false;this._cacheIcons={};}
_p=BaseMap.prototype;_p.isInit=function(){return this._gmap!=null;};_p.cacheIcon=function(bCache){this._bCacheIcons=bCache;};_p.getMap=function(){return this._gmap;};_p.createIcon=function(i){var s,t;if(!i){return G_DEFAULT_ICON;}
if(this._bCacheIcons&&this._cacheIcons[i.imgsrc]){return this._cacheIcons[i.imgsrc];}
var icon=new GIcon();if(i.simgsrc&&i.ssize){icon.printShadow=icon.shadow=i.simgsrc;s=str2intarray(i.ssize,",");icon.shadowSize=new GSize(s[0],s[1]);}else{icon.printShadow=icon.shadow="";icon.shadowSize=new GSize(0,0);}
if(i.imgsrc&&i.size){s=str2intarray(i.size,",");icon.printImage=icon.mozPrintImage=icon.image=i.imgsrc;icon.transparent="";icon.iconSize=new GSize(s[0],s[1]);if(i.anchor){t=str2intarray(i.anchor,",");}else{t=s;}
icon.iconAnchor=new GPoint(t[0]/2-1,t[1]);if(i.iwanchor){t=str2intarray(i.iwanchor,",");}else{t=[s[0],0];}
icon.infoWindowAnchor=new GPoint(t[0]/2-1,t[1]);if(i.map){t=str2intarray(i.map,",");}else{t=[0,0,0,s[1],s[0],s[1],s[0],0];}
icon.imageMap=t;}
if(this._bCacheIcons){this._cacheIcons[i.imgsrc]=icon;}
return icon;};_p.zIndexProcessFunc=function(m,b){return GOverlay.getZIndex(m.getPoint().lat())+m.myData.zIndex*1000000;};_p.createMarker=function(m){if(!this.isInit()){return;}
var a;var clickable=true;if(typeof m.clickable!="undefined"){clickable=m.clickable;}
if(!m.clickable&&!m.action){clickable=false;}
if(m.tabs){clickable=true;}
var icon;if(m.iconObj){icon=m.iconObj;}else{icon=this.createIcon(m.icon);}
var options={"icon":icon,"title":m.title,"clickable":clickable,"draggable":m.draggable};if(m.zIndex){options.zIndexProcess=this.zIndexProcessFunc;}
var mark=new GMarker(new GLatLng(m.lat,m.lng),options);if(m.tabs){var tabs=[];for(a=0;a<m.tabs.length;a++){tabs.push(new GInfoWindowTab(m.tabs[a].label,m.tabs[a].html));}
mark.bindInfoWindowTabsHtml(tabs);}
mark.myData={};if(m.zIndex){mark.myData.zIndex=m.zIndex;}
this.addMarkerAction(mark,m);return mark;};_p.addMarkerAction=function(mark,m){var _this=this;if(m.action){if(m.action.type=="remote"){mark.myData.actionHandler=GEvent.addListener(mark,"click",function(){var url=m.action.param;url=url.replace(/&amp;/g,"&");_this.requestIW(url);});}else if(m.action.type=="redirect"){var url=m.action.param.replace(/&amp;/g,"&");GEvent.addListener(mark,"click",function(){var t=m.action.param2;if(t=="top"){window.top.location=url;}else if(t=="parent"){window.parent.location=url;}else{window.location=url;}});}}};_p.createPolyline=function(p){if(!p||(!p.latlngs&&!p.latlngObjs)){return;}
var latlngs=[];var a,opt={};opt.clickable=p.clickable;opt.geodesic=p.geodesic;if(!p.latlngObjs){for(a=0;a<p.latlngs.length;a+=2){latlngs.push(new GLatLng(parseFloat(p.latlngs[a]),parseFloat(p.latlngs[a+1])));}}else{latlngs=p.latlngObjs;}
var poly=new GPolyline(latlngs,p.color,parseInt(p.width,10),p.opacity,opt);return poly;};_p.createPolyline2=function(p){if(!p||(!p.latlngs&&!p.latlngObjs)){return;}
var a,opt={};var ret=[];opt.clickable=p.clickable;opt.geodesic=p.geodesic;var latlngs=[];if(!p.latlngObjs){for(a=0;a<p.latlngs.length-2;a+=2){latlngs=[];latlngs.push(new GLatLng(parseFloat(p.latlngs[a]),parseFloat(p.latlngs[a+1])));latlngs.push(new GLatLng(parseFloat(p.latlngs[a+2]),parseFloat(p.latlngs[a+3])));var poly=new GPolyline(latlngs,p.color,parseInt(p.width,10),p.opacity,opt);ret.push(poly);}}else{latlngs=p.latlngObjs;ret.push(new GPolyline(latlngs,p.color,parseInt(p.width,10),p.opacity,opt));}
return ret;};function Map(){BaseMap.call(this);}
Map.prototype=new BaseMap;_p=Map.prototype;_p.create=function(elemId){var map;try{if(GBrowserIsCompatible()){map=new GMap2(document.getElementById(elemId));BaseMap.call(this,map);}}catch(e){if(window.console){console.log("err",e);}}};_p.setType=function(t){if(!this.isInit()){return;}
switch(t){case 0:this._gmap.setMapType(G_NORMAL_MAP);break;case 1:this._gmap.setMapType(G_SATELLITE_MAP);break;case 2:this._gmap.setMapType(G_HYBRID_MAP);break;case 3:this._gmap.setMapType(G_PHYSICAL_MAP);break;}};_p.setPos=function(lat,lng){if(!this.isInit()){return;}
this._gmap.setCenter(new GLatLng(lat,lng));};_p.setZoom=function(z){if(!this.isInit()){return;}
this._gmap.setZoom(z);};_p.setControls=function(opt){if(!this.isInit()){return;}
opt=opt||{};if(opt.control){switch(opt.control){case 1:this._gmap.addControl(new GSmallMapControl());break;case 2:this._gmap.addControl(new GLargeMapControl());break;case 3:this._gmap.addControl(new GSmallZoomControl());break;}}
if(opt.scale){this._gmap.addControl(new GScaleControl());}
if(opt.type){this._gmap.addControl(new GMapTypeControl());this._gmap.addMapType(G_PHYSICAL_MAP);}
if(opt.overview){this._gmap.addControl(new GOverviewMapControl());}};_p.setConfiguration=function(opt){if(!this.isInit()){return;}
opt=opt||{};if(opt.drag){this._gmap.enableDragging();}else{this._gmap.disableDragging();}
if(opt.dblclick){this._gmap.enableDoubleClickZoom();}else{this._gmap.disableDoubleClickZoom();}
if(opt.conz){this._gmap.enableContinuousZoom();}else{this._gmap.disableContinuousZoom();}
if(opt.googlebar){this._gmap.enableGoogleBar();}else{this._gmap.disableGoogleBar();}
if(opt.wheelz){this._gmap.enableScrollWheelZoom();}else{this._gmap.disableScrollWheelZoom();}};_p.geocode=function(adr,error){if(!this.isInit()){return;}
if(!this._geocoder){this._geocoder=new GClientGeocoder();}
var _this=this;this._geocoder.getLatLng(adr,function(p){if(!p){alert(adr+" "+error);}else{_this.setPos(p.lat(),p.lng());}});};_p.addMarkers=function(arr){if(!this.isInit()||!arr){return[];}
if(!(arr instanceof Array)){arr=[arr];}
var a,mark,ret;ret=[];for(a=0;a<arr.length;a++){mark=this.createMarker(arr[a]);if(mark){this._gmap.addOverlay(mark);}
ret.push(mark);}
return ret;};_p.addPolylines=function(arr){if(!this.isInit()||!arr){return[];}
if(!(arr instanceof Array)){arr=[arr];}
var a,poly,ret=[];for(a=0;a<arr.length;a++){poly=this.createPolyline2(arr[a]);if(poly){for(p in poly){this.getMap().addOverlay(poly[p]);}}}};
