GMapPanoramWalker=function(a){this.gmap=a.gmap;this.pano=a.pano;this.interval=a.interval;this.panoclient=new GStreetviewClient();this.addEvents({start:true,next:true,end:true});this.runner=new Ext.util.TaskRunner();GMapPanoramWalker.superclass.constructor.call(this,arguments)};Ext.extend(GMapPanoramWalker,Ext.util.Observable,{steps:new Array(),getNearestPanorama:function(c,b,a){if(this.panoclient){this.panoclient.getNearestPanorama(c,b.createDelegate(a))}},addStep:function(b,a){if(b&&a){this.getNearestPanorama(b,function(c){if(c.code==200){if(a(b,c.location.latlng)){this.steps.push(c.location.latlng)}}else{a(b,null)}},this)}},moveStep:function(a,c,b){if(c&&b){this.getNearestPanorama(c,function(e){if(e.code==200){if(b(c,e.location.latlng)){var d=this.findStep(a);if(0<d){this.steps[d]=e.location.latlng}}}else{b(a,null)}},this)}},getSteps:function(){return steps},findStep:function(b){for(var a=0;a<this.steps.length;a++){if(latlang.equals(this.steps[a])){return a}}return -1},setInterval:function(a){this.interval=a},getInterval:function(){return this.interval},start:function(){if(this.task){this.stop()}if(this.fireEvent("start",this.gmap,this.pano)){this.index=0;this.task={run:function(){this.index++;this.fireEvent("next",this.gmap,this.pano,this.index,this.steps)},interval:this.interval,scope:this};this.runner.start(this.task)}},stop:function(){if(this.runner&&this.task){this.runner.stop(this.task);this.task=null;this.fireEvent("stop",this.gmap,this.pano)}},clear:function(){this.stop();this.steps=[]}});
