
var IconManager=Class.create();IconManager.prototype={initialize:function(){this.iconArray=null;this.icons=null;},get:function(objtypes,callback){var url="/bybus/servlet/GetIconInfo";var prm="objtype="+objtypes;var me=this;var AjaxRequest=new Ajax.Request(url+"?"+prm,{method:'post',onComplete:function(request){me.icons=eval('('+request.responseText+')');me.iconArray=new Array();for(var i=0;i<me.icons.length;i++){var icon=new CaltaIcon(me.icons[i].iconid);icon.setAttribute(me.icons[i]);me.iconArray.push(icon);}
callback();}});},getAt:function(iconid){for(var i=0;i<this.iconArray.length;i++){if(iconid==this.iconArray[i].iconid){return this.iconArray[i];}}}}
var CaltaIcon=Class.create();CaltaIcon.prototype={initialize:function(iconid){this.icon=new GIcon();this.iconid=iconid;},setAttribute:function(obj){this.objtype=obj.objtype;this.icon.image=obj.image;this.icon.shadow=obj.shadow;this.name=obj.name;var w=obj.iconwidth;var h=obj.iconheight;this.icon.iconSize=new GSize(w,h);w=obj.shadowwidth;h=obj.shadowheight;this.icon.shadowSize=new GSize(w,h);w=obj.iconanchorx;h=obj.iconanchory;this.icon.iconAnchor=new GPoint(w,h);w=obj.infowindowanchorx;h=obj.infowindowanchory;this.icon.infoWindowAnchor=new GPoint(w,h);}}
var LandMarkManager=Class.create();LandMarkManager.prototype={initialize:function(){this.landmarkArray=new Array();this.mapClickListener=null;},overlay:function(res){var landmarks=res.getElementsByTagName("marker");if(G_PageNo==1){$('landmarklist').innerHTML="";}
for(i=0;i<landmarks.length;i++){var lat=landmarks[i].getAttribute("lat");var lng=landmarks[i].getAttribute("lng");var objtype=landmarks[i].getAttribute("objtype");var ldmkid=landmarks[i].getAttribute("ldmkid");var iconid=landmarks[i].getAttribute("iconid");var name=landmarks[i].getAttribute("name");if(G_PageNo==7){if(iconid>=251&&iconid<=254){continue;}}
var latlng;if(parseFloat(lat)==9999.0&&parseFloat(lng)==9999.0){latlng=null;}
else{latlng=new GLatLng(lat,lng);}
if(this.isContains(latlng)==true){var marker=new CaltaLandMark(ldmkid,objtype,iconid,name,latlng,null);marker.zoommin=landmarks[i].getAttribute("zoommin");marker.zoommax=landmarks[i].getAttribute("zoommax");try{marker.parking=landmarks[i].getAttribute("parking");marker.bicycle=landmarks[i].getAttribute("bicycle");marker.roof=landmarks[i].getAttribute("roof");marker.bench=landmarks[i].getAttribute("bench");}
catch(e){}
if(this.isExist(marker)==false){this.landmarkArray.push(marker);marker.addOverlay(false);}
if(G_PageNo==1){var a=document.createElement("a");a.href="#top1";a.setAttribute("ldmkid",marker.ldmkid);a.setAttribute("objtype",marker.objtype);a.onclick=function(){var ldmkid=this.getAttribute("ldmkid");var objtype=this.getAttribute("objtype");dispLandmarkInfo(ldmkid,objtype);}
var p=document.createElement("p");p.style.cssText="margin-left:10px";var img=document.createElement("img");img.setAttribute("align","bottom",0);var ico=App.iconManager.getAt(iconid);img.src=ico.icon.image;p.appendChild(img);a.appendChild(document.createTextNode(name));p.appendChild(document.createTextNode("　"));p.appendChild(a);$('landmarklist').appendChild(p);}}}
this.clearMarkers();},clearMarkers:function(){var zoom=getGmap().getZoom();for(var i=0;i<this.landmarkArray.length;i++){try{var marker=this.landmarkArray[i];if(this.isContains(new GLatLng(marker.point.y,marker.point.x))==false){getGmap().removeOverlay(marker.marker);this.landmarkArray.splice(i,1);i--;continue;}
if(marker.zoommin>zoom||marker.zoommax<zoom){getGmap().removeOverlay(marker.marker);this.landmarkArray.splice(i,1);i--;}}
catch(e){alert(e);}}},isContains:function(latlng){var cObj=getGmap().getBounds();var NorthEast=cObj.getNorthEast();var SouthWest=cObj.getSouthWest();if((latlng.lat()>=SouthWest.lat()&&latlng.lat()<=NorthEast.lat())&&(latlng.lng()>=SouthWest.lng()&&latlng.lng()<=NorthEast.lng())){return true;}
else{return false;}},getAt:function(idx){return this.landmarkArray[idx];},getAtFromLdmkid:function(ldmkid){for(var i=0;i<this.landmarkArray.length;i++){if(this.landmarkArray[i].ldmkid==ldmkid){return this.landmarkArray[i];}}},isExist:function(marker){for(var i=0;i<this.landmarkArray.length;i++){if(this.landmarkArray[i].ldmkid==marker.ldmkid){return true;}}
return false;},getLength:function(){return this.landmarkArray.length;},singleDisp:function(ldmkid){for(var i=0;i<this.landmarkArray.length;i++){if(this.landmarkArray[i].ldmkid!=ldmkid){getGmap().removeOverlay(this.landmarkArray[i].marker);}}},disableDragging:function(ldmkid){for(var i=0;i<this.landmarkArray.length;i++){if(this.landmarkArray[i].ldmkid==ldmkid){this.landmarkArray[i].addOverlay(false);return;}}},enableDragging:function(ldmkid){for(var i=0;i<this.landmarkArray.length;i++){if(this.landmarkArray[i].ldmkid==ldmkid){this.landmarkArray[i].addOverlay(true);if(G_PageNo==1){}
else if(G_PageNo==2){$('movecancel').innerHTML="";var el=document.createElement("input");el.type="button";el.value="バス停の移動を取消";var marker=this.landmarkArray[i];el.onclick=function(){marker.marker.disableDragging();App.gmap.showStop=false;App.cursor.hide();marker.point=marker.marker.getPoint();App.gmap.landMarkManger.allDisp();$('movecancel').innerHTML="";}
$('movecancel').appendChild(el);break;}
else if(G_PageNo==3){}}}},enableRegistNewPoint:function(ldmkid){manager=this;this.mapClickListener=GEvent.addListener(getGmap(),'click',function(overray,point){if(point){GEvent.removeListener(manager.mapClickListener);var busUpdater=new BusStopUpdater([{"param":"lat","value":point.y},{"param":"lng","value":point.x},{"param":"ldmkid","value":ldmkid}]);busUpdater.update(function(marker){App.gmap.showStop=false;if(marker==null)return;manager.landmarkArray.push(marker);marker.addOverlay();App.cursor.hide();var array=App.busStopInfoList.busStopArray;var j=0;for(j=0;j<array.length;j++){if(array[j].ldmkid==marker.ldmkid){array[j].marker=marker;App.gmap.landMarkManger.allDisp();App.busStopInfoList.renumber();break;}}});}});$('movecancel').innerHTML="";var el=document.createElement("input");el.type="button";el.value="バス停の登録を取消";el.onclick=function(){App.cursor.hide();App.gmap.showStop=false;App.gmap.landMarkManger.allDisp();$('movecancel').innerHTML="";}
$('movecancel').appendChild(el);},allDisp:function(){for(var i=0;i<this.landmarkArray.length;i++){getGmap().removeOverlay(this.landmarkArray[i].marker);getGmap().addOverlay(this.landmarkArray[i].marker);}}}
var CaltaLandMark=Class.create();CaltaLandMark.prototype={initialize:function(id,objtype,iconid,name,point,src){this.map=getGmap();this.ldmkid=id;this.point=point;this.src=src;this.name=name;this.updaterid=null;this.zoommin=null;this.zoommax=null;this.objtype=objtype;this.marker=null;this.infoClosedListener=null;this.creatorid=null;this.visible=false;this.index=0;this.movingid=-1;this.datefrom=null;this.dateto=null;this.update=true;this.parking=false;this.bicycle=false;this.roof=false;this.bench=false;this.dragendHandle=null;if(iconid==null){this.iconid=0;}
else{this.iconid=iconid;}},addOverlay:function(bDragging){if(G_PageNo==1){var ldmkid=this.ldmkid;var objtype=this.objtype;if(objtype==5){clickHandler=function(){dispLandmarkInfo(ldmkid,objtype);scrollTo(0,$('odekakeinfo').offsetTop);}}
else{clickHandler=function(){dispLandmarkInfo(ldmkid,objtype);scrollTo(0,$('odekakeinfo').offsetTop);}}}
else if(G_PageNo==2){clickHandler=function(){App.busStopInfoList.add(marker);}}
else if(G_PageNo==3){var ldmkid=this.ldmkid;clickHandler=function(){var url="/calta/servlet/BusStopInfo?ldmkid="+ldmkid;var ajax=new Ajax.Request(url,{method:"post",onComplete:function(request){var bus=eval("("+request.responseText+")");$('bsname').value=bus.name;$('description').value=bus.description;$('highway').checked=bus.iconid==21||bus.iconid==1?false:true;$('roof').checked=bus.roof=="true"?true:false;$('parking').checked=bus.parking=="true"?true:false;$('bicycle').checked=bus.bicycle=="true"?true:false;$('bench').checked=bus.bench=="true"?true:false;G_ldmkid=bus.ldmkid;Element.show("btupdate");Element.show("btmove");Element.show("btupcancel");Element.hide("btok");Element.hide("btcancel");App.gmap.landMarkManger.singleDisp(bus.ldmkid);$('opmessage').innerHTML="<br/>バス停「"+bus.name+"」の情報を更新します。内容を変更して右端の「更新」ボタンを押してください。更新操作を取り消す場合は「操作取消」ボタンを押します。「位置移動ボタン」を押すと、バス停の位置移動が行えます。"
Element.show("opmessage");}});}}
else if(G_PageNo==6){var ldmkid=this.ldmkid;clickHandler=function(){var url="/calta/servlet/CaltaServlet?ldmkid="+ldmkid+"&objtype=15";var ajax=new Ajax.Request(url,{method:"post",onComplete:function(request){var xml=request.responseXML;evts=xml.getElementsByTagName("marker");evt=evts[0];$('evtname').value=evt.getAttribute("name");$('evtdescription').value=evt.getAttribute("movingdescription");var fdate=evt.getAttribute("datefrom");var tdate=evt.getAttribute("dateto");$('evturl').value=evt.getAttribute("url");G_ldmkid=ldmkid;G_movingid=evt.getAttribute("movingid");$('fromyear').value=fdate.substr(0,4);$('frommonth').value=fdate.substr(5,2);$('fromday').value=fdate.substr(8,2);$('fromhour').value=fdate.substr(11,2);$('fromminute').value=fdate.substr(14,2);$('toyear').value=tdate.substr(0,4);$('tomonth').value=tdate.substr(5,2);$('today').value=tdate.substr(8,2);$('tohour').value=tdate.substr(11,2);$('tominute').value=tdate.substr(14,2);Element.show("btupdate");Element.show("btmove");Element.show("btupcancel");Element.hide("btok");Element.hide("btcancel");App.gmap.landMarkManger.singleDisp(ldmkid);}});}}
else if(G_PageNo==7){var ldmkid=this.ldmkid;clickHandler=function(){var url="/calta/servlet/CaltaServlet?ldmkid="+ldmkid+"&objtype=13&contents=true";var ajax=new Ajax.Request(url,{method:"post",onComplete:function(request){var xml=request.responseXML;evts=xml.getElementsByTagName("marker");evt=evts[0];$('spotname').value=evt.getAttribute("name");var dec=evt.getAttribute("description");if(dec!=null){$('spotdescription').value=evt.getAttribute("description");}
else{$('spotdescription').value="";}
var img=evt.getAttribute("imageurl");if(img!=null){if(img.length>0)
$('spotphotodiv').innerHTML='<img src=\"'+img+'\"/>';$('spoturl').value=img;}
else{$('spotphotodiv').innerHTML="";$('spoturl').value="";}
var iconid=evt.getAttribute("iconid");App.iconselector.selectIcon(iconid);$('opmessage').innerHTML="<br/>「"+$('spotname').value+"」の情報を更新します。内容を変更して右端の「更新」ボタンを押してください。更新操作を取り消す場合は「操作取消」ボタンを押します。「位置移動ボタン」を押すと、スポットの位置移動が行えます。"
G_ldmkid=ldmkid;Element.show("btupdate");Element.show("btmove");Element.show("btupcancel");Element.hide("btok");Element.hide("btcancel");App.gmap.landMarkManger.singleDisp(ldmkid);}});}}
if(this.marker!=null){getGmap().removeOverlay(this.marker);}
var cicon=App.iconManager.getAt(this.iconid);if(cicon!=null){this.marker=new GMarker(this.point,{draggable:bDragging,title:this.name,clickable:true,icon:cicon.icon,bouncy:true});getGmap().addOverlay(this.marker);}
else{this.marker=new GMarker(this.point,{draggable:bDragging,title:this.name,clickable:true,bouncy:true});getGmap().addOverlay(this.marker);}
var marker=this.marker;GEvent.addListener(this.marker,'click',clickHandler);if(bDragging==true){var marker=this;var dragendHandle=GEvent.addListener(this.marker,'dragend',function(){marker.marker.disableDragging();App.gmap.showStop=false;App.cursor.hide();marker.point=marker.marker.getPoint();if(G_PageNo==3||G_PageNo==2){var busUpdater=new BusStopUpdater([{"param":"lat","value":marker.point.y},{"param":"lng","value":marker.point.x},{"param":"ldmkid","value":marker.ldmkid},{"param":"highway","value":marker.iconid==22||marker.iconid==2?true:false}]);try{busUpdater.update(function(newmarker){App.gmap.landMarkManger.allDisp();GEvent.removeListener(dragendHandle);if(G_PageNo==2){App.busStopInfoList.renumber();}
else if(G_PageNo==3){bsUpCancel();}});}
catch(e){alert(e);}}
else if(G_PageNo==7){var spotUpdater=new SpotUpdater([{"param":"lat","value":marker.point.y},{"param":"lng","value":marker.point.x},{"param":"ldmkid","value":marker.ldmkid}]);spotUpdater.update(function(newmarker){GEvent.removeListener(dragendHandle);App.gmap.landMarkManger.allDisp();spotUpCancel();});}});}
this.visible=true;},removeOverlay:function(){getGmap().removeOverlay(this.marker);},setDraggable:function(bDraggable){if(bDraggable==true){this.marker.enableDragging();var marker=this;if(this.dragendHandle!=null){GEvent.removeListener(this.dragendHandle);}
var dragendHandle=GEvent.addListener(this.marker,'dragend',function(){marker.marker.disableDragging();App.gmap.showStop=false;marker.point=marker.marker.getPoint();GEvent.removeListener(dragendHandle);App.gmap.landMarkManger.allDisp();$('movecancel').innerHTML="";});this.dragendHandle=dragendHandle;}
else{this.marker.disableDragging();if(this.dragendHandle!=null){GEvent.removeListener(this.dragendHandle);this.dragendHandle=null;}}},getUpdateRequest:function(iconid,zoommin,zoommax){var lat=this.point.y;var lng=this.point.x;this.updaterid=userid;var url=getServletStr(0)
url+='?action=update';url+='&ldmkid='+this.ldmkid;url+='&lat='+lat+'&lng='+lng+'&name='+encodeURI(this.name);;url+='&objtype='+this.objtype;url+='&updaterid='+userid;if(zoommin!=null){url+='&zoommin='+zoommin;this.zoommin=zoommin;}
if(zoommax!=null){url+='&zoommax='+zoommax;this.zoommax=zoommax;}
if(iconid!=null){url+='&iconid='+iconid;}
return url;}}