this.scrollRight){e=this.scrollRight-this.width}this.tooltip.css({left:e,top:t})},remove:function(){this.tooltip.remove();this.sizetip.remove();this.sizetip=this.tooltip=n;r(window).unbind("resize.jqs scroll.jqs")}});M=function(){m(O)};r(M);B=[];r.fn.sparkline=function(t,i){return this.each(function(){var s=new r.fn.sparkline.options(this,i),o=r(this),u,a;u=function(){var i,u,a,f,l,c,h;if(t==="html"||t===n){h=this.getAttribute(s.get("tagValuesAttribute"));if(h===n||h===null){h=o.html()}i=h.replace(/(^\s*\s*$)|\s+/g,"").split(",")}else{i=t}u=s.get("width")==="auto"?i.length*s.get("defaultPixelsPerValue"):s.get("width");if(s.get("height")==="auto"){if(!s.get("composite")||!r.data(this,"_jqs_vcanvas")){f=e.createElement("span");f.innerHTML="a";o.html(f);a=r(f).innerHeight()||r(f).height();r(f).remove();f=null}}else{a=s.get("height")}if(!s.get("disableInteraction")){l=r.data(this,"_jqs_mhandler");if(!l){l=new w(this,s);r.data(this,"_jqs_mhandler",l)}else if(!s.get("composite")){l.reset()}}else{l=false}if(s.get("composite")&&!r.data(this,"_jqs_vcanvas")){if(!r.data(this,"_jqs_errnotify")){alert("Attempted to attach a composite sparkline to an element with no existing sparkline");r.data(this,"_jqs_errnotify",true)}return}c=new(r.fn.sparkline[s.get("type")])(this,i,s,u,a);c.render();if(l){l.registerSparkline(c)}};if(r(this).html()&&!s.get("disableHiddenCheck")&&r(this).is(":hidden")||!r(this).parents("body").length){if(!s.get("composite")&&r.data(this,"_jqs_pending")){for(a=B.length;a;a--){if(B[a-1][0]==this){B.splice(a-1,1)}}}B.push([this,u]);r.data(this,"_jqs_pending",true)}else{u.call(this)}})};r.fn.sparkline.defaults=s();r.sparkline_display_visible=function(){var e,t,n;var i=[];for(t=0,n=B.length;tthis.canvasWidth||r>this.canvasHeight||t<0||r<0){return null}o=this.getRegion(e,t,r);if(i!==o){if(i!==n&&s){this.removeHighlight()}this.currentRegion=o;if(o!==n&&s){this.renderHighlight()}return true}return false},clearRegionHighlight:function(){if(this.currentRegion!==n){this.removeHighlight();this.currentRegion=n;return true}return false},renderHighlight:function(){this.changeHighlight(true)},removeHighlight:function(){this.changeHighlight(false)},changeHighlight:function(e){},getCurrentRegionTooltip:function(){var e=this.options,t="",i=[],s,o,a,f,l,c,h,p,d,v,m,g,y,b;if(this.currentRegion===n){return""}s=this.getCurrentRegionFields();m=e.get("tooltipFormatter");if(m){return m(this,e,s)}if(e.get("tooltipChartTitle")){t+=''+e.get("tooltipChartTitle")+"
\n"}o=this.options.get("tooltipFormat");if(!o){return""}if(!r.isArray(o)){o=[o]}if(!r.isArray(s)){s=[s]}h=this.options.get("tooltipFormatFieldlist");p=this.options.get("tooltipFormatFieldlistKey");if(h&&p){d=[];for(c=s.length;c--;){v=s[c][p];if((b=r.inArray(v,h))!=-1){d[b]=s[c]}}s=d}a=o.length;y=s.length;for(c=0;c'+l+"")}}}if(i.length){return t+i.join("\n")}return""},getCurrentRegionFields:function(){},calcHighlightColor:function(e,n){var r=n.get("highlightColor"),i=n.get("highlightLighten"),s,o,u,f;if(r){return r}if(i){s=/^#([0-9a-f])([0-9a-f])([0-9a-f])$/i.exec(e)||/^#([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})$/i.exec(e);if(s){u=[];o=e.length===4?16:1;for(f=0;f<3;f++){u[f]=a(t.round(parseInt(s[f+1],16)*o*i),0,255)}return"rgb("+u.join(",")+")"}}return e}});S={changeHighlight:function(e){var t=this.currentRegion,n=this.target,i=this.regionShapes[t],s;if(i){s=this.renderRegion(t,e);if(r.isArray(s)||r.isArray(i)){n.replaceWithShapes(i,s);this.regionShapes[t]=r.map(s,function(e){return e.id})}else{n.replaceWithShape(i,s);this.regionShapes[t]=s.id}}},render:function(){var e=this.values,t=this.target,n=this.regionShapes,i,s,o,u;if(!this.cls._super.render.call(this)){return}for(o=e.length;o--;){i=this.renderRegion(o);if(i){if(r.isArray(i)){s=[];for(u=i.length;u--;){i[u].append();s.push(i[u].id)}n[o]=s}else{i.append();n[o]=i.id}}else{n[o]=null}}t.render()}};r.fn.sparkline.line=x=o(r.fn.sparkline._base,{type:"line",init:function(e,t,n,r,i){x._super.init.call(this,e,t,n,r,i);this.vertices=[];this.regionMap=[];this.xvalues=[];this.yvalues=[];this.yminmax=[];this.hightlightSpotId=null;this.lastShapeId=null;this.initTarget()},getRegion:function(e,t,r){var i,s=this.regionMap;for(i=s.length;i--;){if(s[i]!==null&&t>=s[i][0]&&t<=s[i][1]){return s[i][2]}}return n},getCurrentRegionFields:function(){var e=this.currentRegion;return{isNull:this.yvalues[e]===null,x:this.xvalues[e],y:this.yvalues[e],color:this.options.get("lineColor"),fillColor:this.options.get("fillColor"),offset:e}},renderHighlight:function(){var e=this.currentRegion,t=this.target,r=this.vertices[e],i=this.options,s=i.get("spotRadius"),o=i.get("highlightSpotColor"),u=i.get("highlightLineColor"),a,f;if(!r){return}if(s&&o){a=t.drawCircle(r[0],r[1],s,n,o);this.highlightSpotId=a.id;t.insertAfterShape(this.lastShapeId,a)}if(u){f=t.drawLine(r[0],this.canvasTop,r[0],this.canvasTop+this.canvasHeight,u);this.highlightLineId=f.id;t.insertAfterShape(this.lastShapeId,f)}},removeHighlight:function(){var e=this.target;if(this.highlightSpotId){e.removeShapeId(this.highlightSpotId);this.highlightSpotId=null}if(this.highlightLineId){e.removeShapeId(this.highlightLineId);this.highlightLineId=null}},scanValues:function(){var e=this.values,n=e.length,r=this.xvalues,i=this.yvalues,s=this.yminmax,o,u,a,f,l;for(o=0;othis.maxy){this.maxy=r}}if(e.get("chartRangeMin")!==n&&(e.get("chartRangeClip")||e.get("chartRangeMin")this.maxy)){this.maxy=e.get("chartRangeMax")}if(e.get("chartRangeMinX")!==n&&(e.get("chartRangeClipX")||e.get("chartRangeMinX")this.maxx)){this.maxx=e.get("chartRangeMaxX")}},drawNormalRange:function(e,r,i,s,o){var u=this.options.get("normalRangeMin"),a=this.options.get("normalRangeMax"),f=r+t.round(i-i*((a-this.miny)/o)),l=t.round(i*(a-u)/o);this.target.drawRect(e,f,s,l,n,this.options.get("normalRangeColor")).append()},render:function(){var e=this.options,i=this.target,s=this.canvasWidth,o=this.canvasHeight,u=this.vertices,a=e.get("spotRadius"),f=this.regionMap,l,c,h,p,d,v,m,g,y,w,E,S,T,N,C,k,L,A,O,M,_,D,P,H,B;if(!x._super.render.call(this)){return}this.scanValues();this.processRangeOptions();P=this.xvalues;H=this.yvalues;if(!this.yminmax.length||this.yvalues.length<2){return}p=d=0;l=this.maxx-this.minx===0?1:this.maxx-this.minx;c=this.maxy-this.miny===0?1:this.maxy-this.miny;h=this.yvalues.length-1;if(a&&(sthis.maxy){w=this.maxy}if(!m.length){m.push([S,p+o])}v=[S,p+t.round(o-o*((w-this.miny)/c))];m.push(v);u.push(v)}}L=[];A=[];O=g.length;for(B=0;B2){m[0]=[m[0][0],m[1][1]]}L.push(m)}}O=A.length;for(B=0;B-1;if(w||r.isArray(q)){H=true;if(w){q=i[C]=c(q.split(":"))}q=h(q,null);E=t.min.apply(t,q);S=t.max.apply(t,q);if(Ey){y=S}}}this.stacked=H;this.regionShapes={};this.barWidth=f;this.barSpacing=p;this.totalBarWidth=f+p;this.width=o=i.length*f+(i.length-1)*p;this.initTarget();if(m){D=d===n?-Infinity:d;P=v===n?Infinity:v}N=[];x=H?[]:N;var W=[];var X=[];for(C=0,k=i.length;C0){W[C]+=q}if(g<0&&y>0){if(q<0){X[C]+=t.abs(q)}else{x[C]+=q}}else{x[C]+=t.abs(q-(q<0?y:g))}N.push(q)}}}else{q=m?a(i[C],D,P):i[C];q=i[C]=l(q);if(q!==null){N.push(q)}}}this.max=_=t.max.apply(t,N);this.min=M=t.min.apply(t,N);this.stackMax=y=H?t.max.apply(t,W):_;this.stackMin=g=H?t.min.apply(t,N):M;if(s.get("chartRangeMin")!==n&&(s.get("chartRangeClip")||s.get("chartRangeMin")_)){_=s.get("chartRangeMax")}this.zeroAxis=A=s.get("zeroAxis",true);if(M<=0&&_>=0&&A){O=0}else if(A==false){O=M}else if(M>0){O=M}else{O=_}this.xaxisOffset=O;L=H?t.max.apply(t,x)+t.max.apply(t,X):_-M;this.canvasHeightEf=A&&M<0?this.canvasHeight-2:this.canvasHeight-1;if(M=0?y:_;R=(U-O)/L*this.canvasHeight;if(R!==t.ceil(R)){this.canvasHeightEf-=2;R=t.ceil(R)}}else{R=this.canvasHeight}this.yoffset=R;if(r.isArray(s.get("colorMap"))){this.colorMapByIndex=s.get("colorMap");this.colorMapByValue=null}else{this.colorMapByIndex=null;this.colorMapByValue=s.get("colorMap");if(this.colorMapByValue&&this.colorMapByValue.get===n){this.colorMapByValue=new b(this.colorMapByValue)}}this.range=L},getRegion:function(e,r,i){var s=t.floor(r/this.totalBarWidth);return s<0||s>=this.values.length?n:s},getCurrentRegionFields:function(){var e=this.currentRegion,t=g(this.values[e]),n=[],r,i;for(i=t.length;i--;){r=t[i];n.push({isNull:r===null,value:r,color:this.calcColor(i,r,e),offset:e})}return n},calcColor:function(e,t,i){var s=this.colorMapByIndex,o=this.colorMapByValue,u=this.options,a,f;if(this.stacked){a=u.get("stackedBarColor")}else{a=t<0?u.get("negBarColor"):u.get("barColor")}if(t===0&&u.get("zeroColor")!==n){a=u.get("zeroColor")}if(o&&(f=o.get(t))){a=f}else if(s&&s.length>i){a=s[i]}return r.isArray(a)?a[e%a.length]:a},renderRegion:function(e,i){var s=this.values[e],o=this.options,u=this.xaxisOffset,a=[],f=this.range,l=this.stacked,c=this.target,h=e*this.totalBarWidth,p=this.canvasHeightEf,v=this.yoffset,m,g,y,b,w,E,S,x,T,N;s=r.isArray(s)?s:[s];S=s.length;x=s[0];b=d(null,s);N=d(u,s,true);if(b){if(o.get("nullColor")){y=i?o.get("nullColor"):this.calcHighlightColor(o.get("nullColor"),o);m=v>0?v-1:v;return c.drawRect(h,m,this.barWidth-1,0,y,y)}else{return n}}w=v;for(E=0;E0){g=t.floor(p*(t.abs(x-u)/f))+1}else{g=1}if(xt){o=i[t]}else if(n[t]<0){o=r.get("negBarColor")}else if(n[t]>0){o=r.get("posBarColor")}else{o=r.get("zeroBarColor")}return o},renderRegion:function(e,n){var r=this.values,i=this.options,s=this.target,o,u,a,f,l,c;o=s.pixelHeight;a=t.round(o/2);f=e*this.totalBarWidth;if(r[e]<0){l=a;u=a-1}else if(r[e]>0){l=0;u=a-1}else{l=a-1;u=2}c=this.calcColor(r[e],e);if(c===null){return}if(n){c=this.calcHighlightColor(c,i)}return s.drawRect(f,l,this.barWidth-1,u-1,c,c)}});r.fn.sparkline.discrete=C=o(r.fn.sparkline._base,S,{type:"discrete",init:function(e,i,s,o,u){C._super.init.call(this,e,i,s,o,u);this.regionShapes={};this.values=i=r.map(i,Number);this.min=t.min.apply(t,i);this.max=t.max.apply(t,i);this.range=this.max-this.min;this.width=o=s.get("width")==="auto"?i.length*2:this.width;this.interval=t.floor(o/i.length);this.itemWidth=o/i.length;if(s.get("chartRangeMin")!==n&&(s.get("chartRangeClip")||s.get("chartRangeMin")this.max)){this.max=s.get("chartRangeMax")}this.initTarget();if(this.target){this.lineHeight=s.get("lineHeight")==="auto"?t.round(this.canvasHeight*.3):s.get("lineHeight")}},getRegion:function(e,n,r){return t.floor(n/this.itemWidth)},getCurrentRegionFields:function(){var e=this.currentRegion;return{isNull:this.values[e]===n,value:this.values[e],offset:e}},renderRegion:function(e,n){var r=this.values,i=this.options,s=this.min,o=this.max,u=this.range,f=this.interval,l=this.target,c=this.canvasHeight,h=this.lineHeight,p=c-h,d,v,m,g;v=a(r[e],s,o);g=e*f;d=t.round(p-p*((v-s)/u));m=i.get("thresholdColor")&&v0){for(a=n.length;a--;){u+=n[a]}}this.total=u;this.initTarget();this.radius=t.floor(t.min(this.canvasWidth,this.canvasHeight)/2)},getRegion:function(e,t,r){var i=this.target.getShapeAt(e,t,r);return i!==n&&this.shapes[i]!==n?this.shapes[i]:n},getCurrentRegionFields:function(){var e=this.currentRegion;return{isNull:this.values[e]===n,value:this.values[e],percent:this.values[e]/this.total*100,color:this.options.get("sliceColors")[e%this.options.get("sliceColors").length],offset:e}},changeHighlight:function(e){var t=this.currentRegion,n=this.renderSlice(t,e),r=this.valueShapes[t];delete this.shapes[r];this.target.replaceWithShape(r,n);this.valueShapes[t]=n.id;this.shapes[n.id]=t},renderSlice:function(e,r){var i=this.target,s=this.options,o=this.radius,u=s.get("borderWidth"),a=s.get("offset"),f=2*t.PI,l=this.values,c=this.total,h=a?2*t.PI*(a/360):0,p,d,v,m,g;m=l.length;for(v=0;v0){d=h+f*(l[v]/c)}if(e===v){g=s.get("sliceColors")[v%s.get("sliceColors").length];if(r){g=this.calcHighlightColor(g,s)}return i.drawPieSlice(o,o,o-u,p,d,n,g)}h=d}},render:function(){var e=this.target,r=this.values,i=this.options,s=this.radius,o=i.get("borderWidth"),u,a;if(!L._super.render.call(this)){return}if(o){e.drawCircle(s,s,t.floor(s-o/2),i.get("borderColor"),n,o).append()}for(a=r.length;a--;){if(r[a]){u=this.renderSlice(a).append();this.valueShapes[a]=u.id;this.shapes[u.id]=a}}e.render()}});r.fn.sparkline.box=A=o(r.fn.sparkline._base,{type:"box",init:function(e,t,n,i,s){A._super.init.call(this,e,t,n,i,s);this.values=r.map(t,Number);this.width=n.get("width")==="auto"?"4.0em":i;this.initTarget();if(!this.values.length){this.disabled=1}},getRegion:function(){return 1},getCurrentRegionFields:function(){var e=[{field:"lq",value:this.quartiles[0]},{field:"med",value:this.quartiles[1]},{field:"uq",value:this.quartiles[2]}];if(this.loutlier!==n){e.push({field:"lo",value:this.loutlier})}if(this.routlier!==n){e.push({field:"ro",value:this.routlier})}if(this.lwhisker!==n){e.push({field:"lw",value:this.lwhisker})}if(this.rwhisker!==n){e.push({field:"rw",value:this.rwhisker})}return e},render:function(){var e=this.target,r=this.values,i=r.length,s=this.options,o=this.canvasWidth,u=this.canvasHeight,a=s.get("chartRangeMin")===n?t.min.apply(t,r):s.get("chartRangeMin"),l=s.get("chartRangeMax")===n?t.max.apply(t,r):s.get("chartRangeMax"),c=0,h,p,d,v,m,g,y,b,w,E,S;if(!A._super.render.call(this)){return}if(s.get("raw")){if(s.get("showOutliers")&&r.length>5){p=r[0];h=r[1];v=r[2];m=r[3];g=r[4];y=r[5];b=r[6]}else{h=r[0];v=r[1];m=r[2];g=r[3];y=r[4]}}else{r.sort(function(e,t){return e-t});v=f(r,1);m=f(r,2);g=f(r,3);d=g-v;if(s.get("showOutliers")){h=y=n;for(w=0;wv-d*s.get("outlierIQR")){h=r[w]}if(r[w]y){e.drawCircle((b-a)*S+c,u/2,s.get("spotRadius"),s.get("outlierLineColor"),s.get("outlierFillColor")).append()}}e.drawRect(t.round((v-a)*S+c),t.round(u*.1),t.round((g-v)*S),t.round(u*.8),s.get("boxLineColor"),s.get("boxFillColor")).append();e.drawLine(t.round((h-a)*S+c),t.round(u/2),t.round((v-a)*S+c),t.round(u/2),s.get("lineColor")).append();e.drawLine(t.round((h-a)*S+c),t.round(u/4),t.round((h-a)*S+c),t.round(u-u/4),s.get("whiskerColor")).append();e.drawLine(t.round((y-a)*S+c),t.round(u/2),t.round((g-a)*S+c),t.round(u/2),s.get("lineColor")).append();e.drawLine(t.round((y-a)*S+c),t.round(u/4),t.round((y-a)*S+c),t.round(u-u/4),s.get("whiskerColor")).append();e.drawLine(t.round((m-a)*S+c),t.round(u*.1),t.round((m-a)*S+c),t.round(u*.9),s.get("medianColor")).append();if(s.get("target")){E=t.ceil(s.get("spotRadius"));e.drawLine(t.round((s.get("target")-a)*S+c),t.round(u/2-E),t.round((s.get("target")-a)*S+c),t.round(u/2+E),s.get("targetColor")).append();e.drawLine(t.round((s.get("target")-a)*S+c-E),t.round(u/2),t.round((s.get("target")-a)*S+c+E),t.round(u/2),s.get("targetColor")).append()}e.render()}});_=o({init:function(e,t,n,r){this.target=e;this.id=t;this.type=n;this.args=r},append:function(){this.target.appendShape(this);return this}});D=o({_pxregex:/(\d+)(px)?\s*$/i,init:function(e,t,n){if(!e){return}this.width=e;this.height=t;this.target=n;this.lastShapeId=null;if(n[0]){n=n[0]}r.data(n,"_jqs_vcanvas",this)},drawLine:function(e,t,n,r,i,s){return this.drawShape([[e,t],[n,r]],i,s)},drawShape:function(e,t,n,r){return this._genShape("Shape",[e,t,n,r])},drawCircle:function(e,t,n,r,i,s){return this._genShape("Circle",[e,t,n,r,i,s])},drawPieSlice:function(e,t,n,r,i,s,o){return this._genShape("PieSlice",[e,t,n,r,i,s,o])},drawRect:function(e,t,n,r,i,s){return this._genShape("Rect",[e,t,n,r,i,s])},getElement:function(){return this.canvas},getLastShapeId:function(){return this.lastShapeId},reset:function(){alert("reset not implemented")},_insert:function(e,t){r(t).html(e)},_calculatePixelDims:function(e,t,n){var i;i=this._pxregex.exec(t);if(i){this.pixelHeight=i[1]}else{this.pixelHeight=r(n).height()}i=this._pxregex.exec(e);if(i){this.pixelWidth=i[1]}else{this.pixelWidth=r(n).width()}},_genShape:function(e,t){var n=j++;t.unshift(n);return new _(this,n,e,t)},appendShape:function(e){alert("appendShape not implemented")},replaceWithShape:function(e,t){alert("replaceWithShape not implemented")},insertAfterShape:function(e,t){alert("insertAfterShape not implemented")},removeShapeId:function(e){alert("removeShapeId not implemented")},getShapeAt:function(e,t,n){alert("getShapeAt not implemented")},render:function(){alert("render not implemented")}});P=o(D,{init:function(t,i,s,o){P._super.init.call(this,t,i,s);this.canvas=e.createElement("canvas");if(s[0]){s=s[0]}r.data(s,"_jqs_vcanvas",this);r(this.canvas).css({display:"inline-block",width:t,height:i,verticalAlign:"top"});this._insert(this.canvas,s);this._calculatePixelDims(t,i,this.canvas);this.canvas.width=this.pixelWidth;this.canvas.height=this.pixelHeight;this.interact=o;this.shapes={};this.shapeseq=[];this.currentTargetShapeId=n;r(this.canvas).css({width:this.pixelWidth,height:this.pixelHeight})},_getContext:function(e,t,r){var i=this.canvas.getContext("2d");if(e!==n){i.strokeStyle=e}i.lineWidth=r===n?1:r;if(t!==n){i.fillStyle=t}return i},reset:function(){var e=this._getContext();e.clearRect(0,0,this.pixelWidth,this.pixelHeight);this.shapes={};this.shapeseq=[];this.currentTargetShapeId=n},_drawShape:function(e,t,r,i,s){var o=this._getContext(r,i,s),u,a;o.beginPath();o.moveTo(t[0][0]+.5,t[0][1]+.5);for(u=1,a=t.length;u';this.canvas.insertAdjacentHTML("beforeEnd",s);this.group=r(this.canvas).children()[0];this.rendered=false;this.prerender=""},_drawShape:function(e,t,r,i,s){var o=[],u,a,f,l,c,h,p;for(p=0,h=t.length;p'+" ";return c},_drawCircle:function(e,t,r,i,s,o,u){var a,f,l;t-=i;r-=i;a=s===n?' stroked="false" ':' strokeWeight="'+u+'px" strokeColor="'+s+'" ';f=o===n?' filled="false"':' fillColor="'+o+'" filled="true" ';l="';return l},_drawPieSlice:function(e,r,i,s,o,u,a,f){var l,c,h,p,d,v,m,g;if(o===u){return""}if(u-o===2*t.PI){o=0;u=2*t.PI}c=r+t.round(t.cos(o)*s);h=i+t.round(t.sin(o)*s);p=r+t.round(t.cos(u)*s);d=i+t.round(t.sin(u)*s);if(c===p&&h===d){if(u-o'+" ";return g},_drawRect:function(e,t,n,r,i,s,o){return this._drawShape(e,[[t,n],[t,n+i],[t+r,n+i],[t+r,n],[t,n]],s,o)},reset:function(){this.group.innerHTML=""},appendShape:function(e){var t=this["_draw"+e.type].apply(this,e.args);if(this.rendered){this.group.insertAdjacentHTML("beforeEnd",t)}else{this.prerender+=t}this.lastShapeId=e.id;return e.id},replaceWithShape:function(e,t){var n=r("#jqsshape"+e),i=this["_draw"+t.type].apply(this,t.args);n[0].outerHTML=i},replaceWithShapes:function(e,t){var n=r("#jqsshape"+e[0]),i="",s=t.length,o;for(o=0;o