1 (function($){var options
={crosshair
:{mode
:null,color
:"rgba(170, 0, 0, 0.80)",lineWidth
:1}};function init(plot
){var crosshair
={x
:-1,y
:-1,locked
:false};plot
.setCrosshair
=function setCrosshair(pos
){if(!pos
)crosshair
.x
=-1;else{var o
=plot
.p2c(pos
);crosshair
.x
=Math
.max(0,Math
.min(o
.left
,plot
.width()));crosshair
.y
=Math
.max(0,Math
.min(o
.top
,plot
.height()))}plot
.triggerRedrawOverlay()};plot
.clearCrosshair
=plot
.setCrosshair
;plot
.lockCrosshair
=function lockCrosshair(pos
){if(pos
)plot
.setCrosshair(pos
);crosshair
.locked
=true};plot
.unlockCrosshair
=function unlockCrosshair(){crosshair
.locked
=false};function onMouseOut(e
){if(crosshair
.locked
)return;if(crosshair
.x
!=-1){crosshair
.x
=-1;plot
.triggerRedrawOverlay()}}function onMouseMove(e
){if(crosshair
.locked
)return;if(plot
.getSelection
&&plot
.getSelection()){crosshair
.x
=-1;return}var offset
=plot
.offset();crosshair
.x
=Math
.max(0,Math
.min(e
.pageX
-offset
.left
,plot
.width()));crosshair
.y
=Math
.max(0,Math
.min(e
.pageY
-offset
.top
,plot
.height()));plot
.triggerRedrawOverlay()}plot
.hooks
.bindEvents
.push(function(plot
,eventHolder
){if(!plot
.getOptions().crosshair
.mode
)return;eventHolder
.mouseout(onMouseOut
);eventHolder
.mousemove(onMouseMove
)});plot
.hooks
.drawOverlay
.push(function(plot
,ctx
){var c
=plot
.getOptions().crosshair
;if(!c
.mode
)return;var plotOffset
=plot
.getPlotOffset();ctx
.save();ctx
.translate(plotOffset
.left
,plotOffset
.top
);if(crosshair
.x
!=-1){var adj
=plot
.getOptions().crosshair
.lineWidth
%2===0?0:.5;ctx
.strokeStyle
=c
.color
;ctx
.lineWidth
=c
.lineWidth
;ctx
.lineJoin
="round";ctx
.beginPath();if(c
.mode
.indexOf("x")!=-1){var drawX
=Math
.round(crosshair
.x
)+adj
;ctx
.moveTo(drawX
,0);ctx
.lineTo(drawX
,plot
.height())}if(c
.mode
.indexOf("y")!=-1){var drawY
=Math
.round(crosshair
.y
)+adj
;ctx
.moveTo(0,drawY
);ctx
.lineTo(plot
.width(),drawY
)}ctx
.stroke()}ctx
.restore()});plot
.hooks
.shutdown
.push(function(plot
,eventHolder
){eventHolder
.unbind("mouseout",onMouseOut
);eventHolder
.unbind("mousemove",onMouseMove
)})}$.plot
.plugins
.push({init
:init
,options
:options
,name
:"crosshair",version
:"1.0"})})(jQuery
);