var geograffiti=geograffiti||{};geograffiti.FilterBar=Class.create({initialize:function(a){this.element=$(a);this.tracker=$("filterbar-tracker");this.filterBarContainer=$("filterbar-container");this.tracker.setOpacity(0);this.initializeMouseListeners();this.lastX=0;this.lastPositionRecord=null;this.transitioning=false;this.trackerOffset=20;this.trackerPadding=5;this.activePositionRecord=null;this.buildPositionTable()},buildPositionTable:function(){var f=this;var a=this.element.select(".mapfilter");this.positionTable=new Array();var b=2*f.trackerPadding;var c,e,d,h,j,g;a.each(function(k){if(gg.debug){gg.log("self.trackerOffset is %d/NaN:%d",f.trackerOffset,isNaN(f.trackerOffset))}if(gg.debug){gg.log("self.trackerPadding is %d/NaN:%d",f.trackerPadding,isNaN(f.trackerPadding))}e=k.positionedOffset().left;if(gg.debug){gg.log("startCoordinate is %d/NaN:%d",e,isNaN(e))}h=e-25;if(gg.debug){gg.log("trackerStart is %d/NaN:%d",h,isNaN(h))}h+=f.trackerOffset;if(gg.debug){gg.log("trackerStart is %d/NaN:%d",h,isNaN(h))}g=k.getWidth();if(gg.debug){gg.log("filterWidth is %d/NaN:%d",g,isNaN(g))}j=g+b;if(gg.debug){gg.log("startCoordinate is %d/trackerStart is %d/filterWidth is %d/trackerWidth is %d",e,h,g,j)}var i={start:e,width:g,trackerStart:h,trackerWidth:j};d=e+k.getWidth();for(c=e;c<=d;++c){f.positionTable[c]=i}})},transitionTracker:function(b){var a=this;var c=[new Effect.Move(this.tracker,{x:b.trackerStart,mode:"absolute",sync:true,transition:Effect.Transitions.spring}),new Effect.Morph(this.tracker,{style:"width:"+b.trackerWidth+"px;",transition:Effect.Transitions.spring,sync:true})];if(this.tracker.getStyle("opacity")===0){c.push(new Effect.Opacity(this.tracker,{from:0,to:1,sync:true}))}new Effect.Parallel(c,{duration:1,afterFinish:function(){a.lastPositionRecord=b;a.transitioning=false}})},mouseMoved:function(b){gg.log("mouseMoved with event %o",b);b.stop();var c=b.clientX-$("filtercontent").cumulativeOffset().left;if(geograffiti.debug){gg.log("X = %d - %d = %d",b.clientX,$("filtercontent").cumulativeOffset().left,c)}if(this.transitioning!==true){this.transitioning=true;var a=this.positionTable[c];if(a){if(a!=this.lastPositionRecord){this.transitionTracker(a)}else{this.transitioning=false}}else{this.transitioning=false}}else{if(gg.debug){gg.log("transitioning...so skipping")}}},disappear:function(){var a=this;var b=[new Effect.Move(this.tracker,{x:0,mode:"absolute",sync:true,transition:Effect.Transitions.sinoidal}),new Effect.Morph(this.tracker,{style:"width: 20px",sync:true}),new Effect.Opacity(this.tracker,{from:1,to:0,sync:true})];new Effect.Parallel(b,{duration:0.5,afterFinish:function(){a.lastPositionRecord=null;a.transitioning=false}})},mouseInBounds:function(b,e){var d=this.filterBarContainer.getDimensions();var a=false;var c={topLeft:{x:0,y:0},bottomRight:{x:d.width,y:d.height}};if(b>=c.topLeft.x&&b<=c.bottomRight.x){if(e>=c.topLeft.y&&e<=c.bottomRight.y){a=true}}return a},mouseOut:function(b){gg.log("mouseOut with event %o",b);b.stop();var a=b.clientX-$("filtercontent").cumulativeOffset().left;var c=b.clientY-$("filterbar-container-outer").cumulativeOffset().top;if(this.mouseInBounds(a,c)===false){if(this.activePositionRecord===null){this.disappear()}else{this.transitionTracker(this.activePositionRecord)}}},mouseClick:function(c){gg.log("mouseClick with event %o",c);var a=c.clientX-$("filtercontent").cumulativeOffset().left;var b=this.positionTable[a];if(b){this.activePositionRecord=b}},initializeMouseListeners:function(){$("filterbar-container").observe("mouseover",this.mouseMoved.bindAsEventListener(this));$("filterbar-container").observe("mouseout",this.mouseOut.bindAsEventListener(this));$("filterbar-container").observe("click",this.mouseClick.bindAsEventListener(this))}});