d3.slider=function module(){"use strict";var div,min=0,max=100,svg,svgGroup,value,classPrefix,axis,height=20,rect,rectHeight=10,tickSize=6,margin={top:5,right:10,bottom:4,left:10},ticks=0,tickValues,scale,tickFormat,dragger,width,range=false,callbackFn,stepValues,focus;function slider(selection){selection.each(function(){div=d3.select(this).classed('d3slider',true);width=parseInt(div.style("width"),10)-(margin.left + margin.right);value=value||min;scale=d3.scale.linear().domain([min,max]).range([0,width]).clamp(true);svg=div.append("svg").attr("class","d3slider-axis").attr("width",width+ margin.left+ margin.right).attr("height",height+ margin.top+ margin.bottom).append("g").attr("transform","translate("+ margin.left+","+ margin.top+")");svg.append("rect").attr("class","d3slider-rect-range").attr("width",width).attr("height",rectHeight);if(range){svg.append("rect").attr("class","d3slider-rect-value").attr("width",scale(value)).attr("height",rectHeight);} var axis=d3.svg.axis().scale(scale).orient("bottom");if(ticks!=0){axis.ticks(ticks);axis.tickSize(tickSize);}else if(tickValues){axis.tickValues(tickValues);axis.tickSize(tickSize);}else{axis.ticks(0);axis.tickSize(0);} if(tickFormat){axis.tickFormat(tickFormat);} svg.append("g").attr("transform","translate(0,"+ rectHeight+")").call(axis) var values=[value];dragger=svg.selectAll(".dragger").data(values).enter().append("g").attr("class","dragger").attr("transform",function(d){return"translate("+ scale(d)+")";}) var displayValue=null;if(tickFormat){displayValue=tickFormat(value);}else{displayValue=d3.format(",.0f")(value);} dragger.append("text").attr("x",0).attr("y",-15).attr("text-anchor","middle").attr("class","draggertext").text(displayValue);dragger.append("circle").attr("class","dragger-outer").attr("r",8).attr("transform",function(d){return"translate(0,5)";});dragger.append("circle").attr("class","dragger-inner").attr("r",4).attr("transform",function(d){return"translate(0,5)";});var dragBehaviour=d3.behavior.drag();dragBehaviour.on("drag",slider.drag);dragger.call(dragBehaviour);svg.on("click",slider.click);});} slider.draggerTranslateFn=function(){return function(d){return"translate("+ scale(d)+")";}} slider.click=function(){var pos=d3.event.offsetX||d3.event.layerX;slider.move(pos);} slider.drag=function(){var pos=d3.event.x;slider.move(pos+margin.left);} slider.move=function(pos){var l,u;var newValue=scale.invert(pos- margin.left);if(stepValues!=undefined){l=stepValues.reduce(function(p,c,i,arr){if(c