
function _xml2json(e){var getAttr=function(_e,name,t){if(!_e||_e.getAttribute(name)==null){return;}
var r=_e.getAttribute(name);if(t=="i"){r=parseInt(r,10);if(isNaN(r)){return;}}else if(t=="f"){r=parseFloat(r);if(isNaN(r)){return;}}
return r;};if(!e){return{};}
var obj={};var a,b,es,o,t;es=e.getElementsByTagName("marker");obj.markers=[];for(a=0;a<es.length;a++){o={};o.lat=getAttr(es[a],"lat","f");o.lng=getAttr(es[a],"lng","f");o.id=getAttr(es[a],"id","i");o.title=getAttr(es[a],"title");t=es[a].getElementsByTagName("action");if(t.length){t=t[0];o.action={};o.action.type=getAttr(t,"type");o.action.param=getAttr(t,"param");o.action.param2=getAttr(t,"param2");}
t=es[a].getElementsByTagName("icon");if(t.length){t=t[0];o.icon={};o.icon.imgsrc=getAttr(t,"imgsrc");o.icon.size=getAttr(t,"size");o.icon.simgsrc=getAttr(t,"simgsrc");o.icon.ssize=getAttr(t,"ssize");o.icon.anchor=getAttr(t,"anchor");o.icon.iwanchor=getAttr(t,"iwanchor");o.icon.map=getAttr(t,"map");}
t=es[a].getElementsByTagName("tabdata");if(t.length){o.tabs=[];}
for(b=0;b<t.length;b++){var no={};no.label=getAttr(t[b],"title");if(typeof t[b].textContent!="undefined"){no.html=t[b].textContent;}else if(typeof t[b].text!="undefined"){no.html=t[b].text;}
o.tabs.push(no);}
obj.markers.push(o);}
return obj;}
function RequestObj(){this._reqCount=0;this._xmlHttp=null;}
var _p=RequestObj.prototype;_p.loadingFunc=function(type){};_p.processDataFunc=function(obj){};_p.xml2json=function(xml){return{};};_p.request=function(url){var reqId=this._reqCount++;var _this=this;if(this._xmlHttp){this._xmlHttp.abort();this.loadingFunc(false);}
this._xmlHttp=GXmlHttp.create();this.loadingFunc(true);this._xmlHttp.open("GET",url,true);this._xmlHttp.onreadystatechange=function(){_this.onreadystatechange(reqId);};this._xmlHttp.send(null);};_p.onreadystatechange=function(id){var req=this._xmlHttp;var obj;if(id+1!=this._reqCount){this._xmlHttp=null;return;}
if(req.readyState==4){if(req.status&&req.status==200){if(req.getResponseHeader("Content-type").search(/xml/i)!=-1){obj=this.xml2json(req.responseXML);}else{obj=eval("("+req.responseText+")");}
this.processDataFunc(obj);this.loadingFunc(false);}
this._xmlHttp=null;}};function Gmjson(gmap,url,opt){BaseMap.call(this,gmap);var me=this;me._loading=0;me._loadingId="";if(!opt){opt={};}
var e=document.createElement("div");e.innerHTML=opt.loadingText||"Loading...";e.className="gm_loading";e.style.position="absolute";e.style.zIndex=2;e.style.display="none";e.style.paddingLeft="25px";me._loadingId=this._gmap.getContainer().id+"_loading";e.id=this._loadingId;me._gmap.getContainer().appendChild(e);var nrequest=function(){if(window.MapControls){MapControls.request();}};me._oldPos=me._gmap.getCenter();me._oldZoom=me._gmap.getZoom();me._layers="";me._url=url;me._x_diff=3||opt.x_diff;me._y_diff=3||opt.y_diff;GEvent.addListener(me._gmap,"moveend",nrequest);GEvent.addListener(me._gmap,"zoomend",nrequest);me._isXml=false;me._mm=new SimpleMarkerManager(me._gmap,{maxCache:25});me.cacheIcon(true);}
Gmjson.prototype=new BaseMap;_p=Gmjson.prototype;_p.loading=function(inc){if(inc){if(this._loading==0){document.getElementById(this._loadingId).style.display="block";}
this._loading++;}else{this._loading--;if(this._loading<1){this._loading=0;document.getElementById(this._loadingId).style.display="none";}}};_p.request=function(url){var _this=this;if(!this._requestObjMap){this._requestObjMap=new RequestObj();this._requestObjMap.loadingFunc=function(a){_this.loading(a);};this._requestObjMap.processDataFunc=function(a){_this.processData(a);};this._requestObjMap.xml2json=function(xml){return _xml2json(xml);};}
this._requestObjMap.request(url);};_p.processData=function(data){var a,mark,icon,m,s;var crea=0;for(a=0;a<data.markers.length;a++){m=data.markers[a];if(!this._mm.getMarker(m.id)){mark=this.createMarker(m);crea++;if(mark){this._mm.addMarker(m.id,mark);}}
this._mm.showMarker(m.id);}
this._mm.update();};_p.requestIW=function(url){if(!this._requestObjIW){var _this=this;this._requestObjIW=new RequestObj();this._requestObjIW.loadingFunc=function(a){_this.loading(a);};this._requestObjIW.processDataFunc=function(a){_this.processDataIW(a);};this._requestObjIW.xml2json=function(xml){return _xml2json(xml);};}
this._requestObjIW.request(url);};_p.processDataIW=function(obj){if(!obj||!obj.markers){return;}
var mark=this._mm.getMarker(obj.markers[0].id);if(!mark){return;}
GEvent.removeListener(mark.myData.actionHandler);mark.myData.actionHandler=null;var a,tabs=[];if(obj.markers[0].tabs){for(a=0;a<obj.markers[0].tabs.length;a++){tabs.push(new GInfoWindowTab(obj.markers[0].tabs[a].label,obj.markers[0].tabs[a].html));}
mark.bindInfoWindowTabsHtml(tabs);mark.openInfoWindowTabsHtml(tabs);}};_p.clearMarkers=function(){this._mm.clearMarkers();};_p.changeLayers=function(layers,mode){var ok=true;if(this._oldZoom!=this._gmap.getZoom()){this._oldZoom=this._gmap.getZoom();ok=false;}
var n,cx,cy,p;n=this._gmap.getCenter();p=[this._gmap.fromLatLngToDivPixel(n),this._gmap.fromLatLngToDivPixel(this._oldPos)];cx=p[0].x-p[1].x;if(cx<0){cx=-cx;}
cy=p[0].y-p[1].y;if(cy<0){cy=-cy;}
if(this._gmap.getSize().width/this._x_diff<cx||this._gmap.getSize().height/this._y_diff<cy){this._oldPos=n;ok=false;}
if(layers!=this._layers){this._layers=layers;ok=false;}
if(layers==""){ok=true;this.clearMarkers();}
if(!ok){n=this._gmap.getBounds();if(!mode){mode="";}
var url=this._url+"&mode="+mode+"&layer="+layers;url+="&south="+n.getSouthWest().lat()+"&north="+n.getNorthEast().lat()+"&west="+n.getSouthWest().lng()+"&east="+n.getNorthEast().lng();this.request(url);}};_p.setXml=function(xml){this._isXml=xml;};
