(function(f){f.fn.simpledraw=function(j,h,k){if(k&&this[0].vcanvas){return this[0].vcanvas}if(j==undefined){j=f(this).innerWidth()}if(h==undefined){h=f(this).innerHeight()}if(f.browser.hasCanvas){return new c(j,h,this)}else{if(f.browser.msie){return new d(j,h,this)}else{return false}}};var g=[];f.fn.sparkline=function(j,h){var h=f.extend({type:"line",lineColor:"#00f",fillColor:"#cdf",defaultPixelsPerValue:3,width:"auto",height:"auto",composite:false},h?h:{});return this.each(function(){var k=function(){var l=(j=="html"||j==undefined)?f(this).text().split(","):j;var n=h.width=="auto"?l.length*h.defaultPixelsPerValue:h.width;if(h.height=="auto"){if(!h.composite||!this.vcanvas){var m=document.createElement("span");m.innerHTML="a";f(this).html(m);height=f(m).innerHeight();f(m).remove()}}else{height=h.height}f.fn.sparkline[h.type].call(this,l,h,n,height)};if((f(this).html()&&f(this).is(":hidden"))||(f.fn.jquery<"1.3.0"&&f(this).parents().is(":hidden"))){g.push([this,k])}else{k.call(this)}})};f.sparkline_display_visible=function(){for(var h=g.length-1;h>=0;h--){var j=g[h][0];if(f(j).is(":visible")&&!f(j).parents().is(":hidden")){g[h][1].call(j);g.splice(h,1)}}};f.fn.sparkline.line=function(l,n,K,H){var n=f.extend({spotColor:"#f80",spotRadius:1.5,minSpotColor:"#f80",maxSpotColor:"#f80",lineWidth:1,normalRangeMin:undefined,normalRangeMax:undefined,normalRangeColor:"#ccc",chartRangeMin:undefined,chartRangeMax:undefined,chartRangeMinX:undefined,chartRangeMaxX:undefined},n?n:{});var w=[],u=[],E=[];for(N=0;N<l.length;N++){var F=l[N];var I=typeof(l[N])=="string";var r=typeof(l[N])=="object"&&l[N] instanceof Array;var O=I&&l[N].split(":");if(I&&O.length==2){w.push(Number(O[0]));u.push(Number(O[1]));E.push(Number(O[1]))}else{if(r){w.push(l[N][0]);u.push(l[N][1]);E.push(l[N][1])}else{w.push(N);if(l[N]===null||l[N]=="null"){u.push(null)}else{u.push(Number(l[N]));E.push(Number(l[N]))}}}}if(n.xvalues){w=n.xvalues}var m=Math.max.apply(Math,E);var A=m;var o=Math.min.apply(Math,E);var s=o;var p=Math.max.apply(Math,w);var t=p;var q=Math.min.apply(Math,w);var k=q;if(n.normalRangeMin!=undefined){if(n.normalRangeMin<o){o=n.normalRangeMin}if(n.normalRangeMax>m){m=n.normalRangeMax}}if(n.chartRangeMin!=undefined&&(n.chartRangeClip||n.chartRangeMin<o)){o=n.chartRangeMin}if(n.chartRangeMax!=undefined&&(n.chartRangeClip||n.chartRangeMax>m)){m=n.chartRangeMax}if(n.chartRangeMinX!=undefined&&(n.chartRangeClipX||n.chartRangeMinX<q)){q=n.chartRangeMinX}if(n.chartRangeMaxX!=undefined&&(n.chartRangeClipX||n.chartRangeMaxX>p)){p=n.chartRangeMaxX}var j=p-q==0?1:p-q;var h=m-o==0?1:m-o;var R=u.length-1;if(R<1){this.innerHTML="";return}var S=f(this).simpledraw(K,H,n.composite);if(S){var Q=S.pixel_width;var M=S.pixel_height;var T=0;var P=0;if(n.spotRadius&&(Q<(n.spotRadius*4)||M<(n.spotRadius*4))){n.spotRadius=0}if(n.spotRadius){if(n.minSpotColor||(n.spotColor&&u[R]==o)){M-=Math.ceil(n.spotRadius)}if(n.maxSpotColor||(n.spotColor&&u[R]==m)){M-=Math.ceil(n.spotRadius);T+=Math.ceil(n.spotRadius)}if(n.minSpotColor||n.maxSpotColor&&(u[0]==o||u[0]==m)){P+=Math.ceil(n.spotRadius);Q-=Math.ceil(n.spotRadius)}if(n.spotColor||(n.minSpotColor||n.maxSpotColor&&(u[R]==o||u[R]==m))){Q-=Math.ceil(n.spotRadius)}}M--;if(n.normalRangeMin!=undefined){var G=T+Math.round(M-(M*((n.normalRangeMax-o)/h)));var H=Math.round((M*(n.normalRangeMax-n.normalRangeMin))/h);S.drawRect(P,G,Q,H,undefined,n.normalRangeColor)}var J=[];var L=[J];for(var N=0,z=u.length;N<z;N++){var C=w[N],B=u[N];if(B===null){if(N){if(u[N-1]!==null){J=[];L.push(J)}}}else{if(B<o){B=o}if(B>m){B=m}if(!J.length){J.push([P+Math.round((C-q)*(Q/j)),T+M])}J.push([P+Math.round((C-q)*(Q/j)),T+Math.round(M-(M*((B-o)/h)))])}}for(var N=0,D=L.length;N<D;N++){J=L[N];if(!J.length){continue}if(n.fillColor){J.push([J[J.length-1][0],T+M-1]);S.drawShape(J,undefined,n.fillColor);J.pop()}if(J.length>2){J[0]=[J[0][0],J[1][1]]}S.drawShape(J,n.lineColor,undefined,n.lineWidth)}if(n.spotRadius&&n.spotColor){S.drawCircle(P+Math.round(w[w.length-1]*(Q/j)),T+Math.round(M-(M*((u[R]-o)/h))),n.spotRadius,undefined,n.spotColor)}if(m!=s){if(n.spotRadius&&n.minSpotColor){var C=w[u.indexOf(s)];S.drawCircle(P+Math.round((C-q)*(Q/j)),T+Math.round(M-(M*((s-o)/h))),n.spotRadius,undefined,n.minSpotColor)}if(n.spotRadius&&n.maxSpotColor){var C=w[u.indexOf(A)];S.drawCircle(P+Math.round((C-q)*(Q/j)),T+Math.round(M-(M*((A-o)/h))),n.spotRadius,undefined,n.maxSpotColor)}}}else{this.innerHTML=""}};f.fn.sparkline.bar=function(h,k,t,r){var k=f.extend({type:"bar",barColor:"#00f",negBarColor:"#f44",zeroColor:undefined,nullColor:undefined,zeroAxis:undefined,barWidth:4,barSpacing:1,chartRangeMax:undefined,chartRangeMin:undefined,chartRangeClip:false,colorMap:undefined},k?k:{});var t=(h.length*k.barWidth)+((h.length-1)*k.barSpacing);var l=[];for(var A=0,n=h.length;A<n;A++){if(h[A]=="null"||h[A]===null){h[A]=null}else{h[A]=Number(h[A]);l.push(Number(h[A]))}}var z=Math.max.apply(Math,l);var u=Math.min.apply(Math,l);if(k.chartRangeMin!=undefined&&(k.chartRangeClip||k.chartRangeMin<u)){u=k.chartRangeMin}if(k.chartRangeMax!=undefined&&(k.chartRangeClip||k.chartRangeMax>z)){z=k.chartRangeMax}if(k.zeroAxis==undefined){k.zeroAxis=u<0}var q=z-u==0?1:z-u;if(f.isArray(k.colorMap)){var m=k.colorMap;var s=null}else{var m=null;var s=k.colorMap}var C=f(this).simpledraw(t,r,k.composite);if(C){var B=C.pixel_width;var w=C.pixel_height;var j=u<0&&k.zeroAxis?w-Math.round(w*(Math.abs(u)/q))-1:w-1;for(var A=0,n=h.length;A<n;A++){var p=A*(k.barWidth+k.barSpacing);var D=h[A];if(D===null){if(k.nullColor){v=k.nullColor;D=(k.zeroAxis&&u<0)?0:u;var r=1;var o=(k.zeroAxis&&u<0)?j:w-r}else{continue}}else{if(D<u){D=u}if(D>z){D=z}var v=(D<0)?k.negBarColor:k.barColor;if(k.zeroAxis&&u<0){var r=Math.round(w*((Math.abs(D)/q)))+1;var o=(D<0)?j:j-r}else{var r=Math.round(w*((D-u)/q))+1;var o=w-r}if(D==0&&k.zeroColor!=undefined){v=k.zeroColor}if(s&&s[D]){v=s[D]}else{if(m&&m.length>A){v=m[A]}}if(v===null){continue}}C.drawRect(p,o,k.barWidth-1,r-1,v,v)}}else{this.innerHTML=""}};f.fn.sparkline.tristate=function(u,w,j,v){u=f.map(u,Number);var w=f.extend({barWidth:4,barSpacing:1,posBarColor:"#6f6",negBarColor:"#f44",zeroBarColor:"#999",colorMap:{}},w);var j=(u.length*w.barWidth)+((u.length-1)*w.barSpacing);if(f.isArray(w.colorMap)){var n=w.colorMap;var t=null}else{var n=null;var t=w.colorMap}var o=f(this).simpledraw(j,v,w.composite);if(o){var p=o.pixel_width;var h=o.pixel_height;var m=Math.round(h/2);for(var l=0,s=u.length;l<s;l++){var r=l*(w.barWidth+w.barSpacing);if(u[l]<0){var q=m;var v=m-1;var k=w.negBarColor}else{if(u[l]>0){var q=0;var v=m-1;var k=w.posBarColor}else{var q=m-1;var v=2;var k=w.zeroBarColor}}if(t&&t[u[l]]){k=t[u[l]]}else{if(n&&n.length>l){k=n[l]}}if(k===null){continue}o.drawRect(r,q,w.barWidth-1,v-1,k,k)}}else{this.innerHTML=""}};f.fn.sparkline.discrete=function(h,j,r,q){h=f.map(h,Number);var j=f.extend({lineHeight:"auto",thresholdColor:undefined,thresholdValue:0,chartRangeMax:undefined,chartRangeMin:undefined,chartRangeClip:false},j);r=j.width=="auto"?h.length*2:r;var y=Math.floor(r/h.length);var z=f(this).simpledraw(r,q,j.composite);if(z){var w=z.pixel_width;var t=z.pixel_height;var n=j.lineHeight=="auto"?Math.round(t*0.3):j.lineHeight;var l=t-n;var s=Math.min.apply(Math,h);var u=Math.max.apply(Math,h);if(j.chartRangeMin!=undefined&&(j.chartRangeClip||j.chartRangeMin<s)){s=j.chartRangeMin}if(j.chartRangeMax!=undefined&&(j.chartRangeClip||j.chartRangeMax>u)){u=j.chartRangeMax}var o=u-s;for(var v=0,k=h.length;v<k;v++){var A=h[v];if(A<s){A=s}if(A>u){A=u}var m=(v*y);var p=Math.round(l-l*((A-s)/o));z.drawLine(m,p,m,p+n,(j.thresholdColor&&A<j.thresholdValue)?j.thresholdColor:j.lineColor)}}else{this.innerHTML=""}};f.fn.sparkline.bullet=function(k,m,t,r){k=f.map(k,Number);var m=f.extend({targetColor:"red",targetWidth:3,performanceColor:"blue",rangeColors:["#D3DAFE","#A8B6FF","#7F94FF"],base:undefined},m);t=m.width=="auto"?"4.0em":t;var A=f(this).simpledraw(t,r,m.composite);if(A&&k.length>1){var z=A.pixel_width-Math.ceil(m.targetWidth/2);var v=A.pixel_height;var u=Math.min.apply(Math,k);var w=Math.max.apply(Math,k);if(m.base==undefined){var u=u<0?u:0}else{u=m.base}var p=w-u;for(i=2,vlen=k.length;i<vlen;i++){var n=parseInt(k[i]);var j=Math.round(z*((n-u)/p));A.drawRect(0,0,j-1,v-1,m.rangeColors[i-2],m.rangeColors[i-2])}var s=parseInt(k[1]);var h=Math.round(z*((s-u)/p));A.drawRect(0,Math.round(v*0.3),h-1,Math.round(v*0.4)-1,m.performanceColor,m.performanceColor);var q=parseInt(k[0]);var o=Math.round(z*((q-u)/p)-(m.targetWidth/2));var l=Math.round(v*0.1);var y=v-(l*2);A.drawRect(o,l,m.targetWidth-1,y-1,m.targetColor,m.targetColor)}else{this.innerHTML=""}};f.fn.sparkline.pie=function(u,w,l,v){u=f.map(u,Number);var w=f.extend({sliceColors:["#f00","#0f0","#00f"]},w);l=w.width=="auto"?v:l;var q=f(this).simpledraw(l,v,w.composite);if(q&&u.length>1){var r=q.pixel_width;var h=q.pixel_height;var p=Math.floor(Math.min(r,h)/2);var s=0;for(var n=0,t=u.length;n<t;n++){s+=u[n]}var o=0;if(w.offset){o+=(2*Math.PI)*(w.offset/360)}var j=2*Math.PI;for(var n=0,t=u.length;n<t;n++){var k=o;var m=o;if(s>0){m=o+(j*(u[n]/s))}q.drawPieSlice(p,p,p,k,m,undefined,w.sliceColors[n%w.sliceColors.length]);o=m}}};function a(j,k){if(k==2){var h=Math.floor(j.length/2);return j.length%2?j[h]:(j[h]+j[h+1])/2}else{var l=Math.floor(j.length/4);return j.length%2?(j[l*k]+j[l*k+1])/2:j[l*k]}}f.fn.sparkline.box=function(j,l,u,t){j=f.map(j,Number);var l=f.extend({raw:false,boxLineColor:"black",boxFillColor:"#cdf",whiskerColor:"black",outlierLineColor:"#333",outlierFillColor:"white",medianColor:"red",showOutliers:true,outlierIQR:1.5,spotRadius:1.5,target:undefined,targetColor:"#4a2",chartRangeMax:undefined,chartRangeMin:undefined},l);u=l.width=="auto"?"4.0em":u;minvalue=l.chartRangeMin==undefined?Math.min.apply(Math,j):l.chartRangeMin;maxvalue=l.chartRangeMax==undefined?Math.max.apply(Math,j):l.chartRangeMax;var B=f(this).simpledraw(u,t,l.composite);if(B&&j.length>1){var y=B.pixel_width;var v=B.pixel_height;if(l.raw){if(l.showOutliers&&j.length>5){var z=j[0],r=j[1],q=j[2],p=j[3],o=j[4],h=j[5],m=j[6]}else{var r=j[0],q=j[1],p=j[2],o=j[3],h=j[4]}}else{j.sort(function(D,C){return D-C});var q=a(j,1);var p=a(j,2);var o=a(j,3);var k=o-q;if(l.showOutliers){var r=undefined,h=undefined;for(var w=0,n=j.length;w<n;w++){if(r==undefined&&j[w]>q-(k*l.outlierIQR)){r=j[w]}if(j[w]<o+(k*l.outlierIQR)){h=j[w]}}var z=j[0];var m=j[j.length-1]}else{var r=j[0];var h=j[j.length-1]}}var A=y/(maxvalue-minvalue+1);var x=0;if(l.showOutliers){x=Math.ceil(l.spotRadius);y-=2*Math.ceil(l.spotRadius);var A=y/(maxvalue-minvalue+1);if(z<r){B.drawCircle((z-minvalue)*A+x,v/2,l.spotRadius,l.outlierLineColor,l.outlierFillColor)}if(m>h){B.drawCircle((m-minvalue)*A+x,v/2,l.spotRadius,l.outlierLineColor,l.outlierFillColor)}}B.drawRect(Math.round((q-minvalue)*A+x),Math.round(v*0.1),Math.round((o-q)*A),Math.round(v*0.8),l.boxLineColor,l.boxFillColor);B.drawLine(Math.round((r-minvalue)*A+x),Math.round(v/2),Math.round((q-minvalue)*A+x),Math.round(v/2),l.lineColor);B.drawLine(Math.round((r-minvalue)*A+x),Math.round(v/4),Math.round((r-minvalue)*A+x),Math.round(v-v/4),l.whiskerColor);B.drawLine(Math.round((h-minvalue)*A+x),Math.round(v/2),Math.round((o-minvalue)*A+x),Math.round(v/2),l.lineColor);B.drawLine(Math.round((h-minvalue)*A+x),Math.round(v/4),Math.round((h-minvalue)*A+x),Math.round(v-v/4),l.whiskerColor);B.drawLine(Math.round((p-minvalue)*A+x),Math.round(v*0.1),Math.round((p-minvalue)*A+x),Math.round(v*0.9),l.medianColor);if(l.target){var s=Math.ceil(l.spotRadius);B.drawLine(Math.round((l.target-minvalue)*A+x),Math.round((v/2)-s),Math.round((l.target-minvalue)*A+x),Math.round((v/2)+s),l.targetColor);B.drawLine(Math.round((l.target-minvalue)*A+x-s),Math.round(v/2),Math.round((l.target-minvalue)*A+x+s),Math.round(v/2),l.targetColor)}}else{this.innerHTML=""}};if(!Array.prototype.indexOf){Array.prototype.indexOf=function(j){for(var h=0,k=this.length;h<k;h++){if(this[h]==j){return h}}return -1}}if(f.browser.msie&&!document.namespaces.v){document.namespaces.add("v","urn:schemas-microsoft-com:vml","#default#VML")}if(f.browser.hasCanvas==undefined){var b=document.createElement("canvas");f.browser.hasCanvas=b.getContext!=undefined}var e=function(j,h,k){};e.prototype={init:function(j,h,k){this.width=j;this.height=h;this.target=k;if(k[0]){k=k[0]}k.vcanvas=this},drawShape:function(k,j,l,h){alert("drawShape not implemented")},drawLine:function(k,m,j,l,n,h){return this.drawShape([[k,m],[j,l]],n,h)},drawCircle:function(j,m,h,k,l){alert("drawCircle not implemented")},drawPieSlice:function(j,o,h,l,k,m,n){alert("drawPieSlice not implemented")},drawRect:function(j,n,k,h,l,m){alert("drawRect not implemented")},getElement:function(){return this.canvas},_insert:function(h,j){f(j).html(h)}};var c=function(j,h,k){return this.init(j,h,k)};c.prototype=f.extend(new e,{_super:e.prototype,init:function(j,h,k){this._super.init(j,h,k);this.canvas=document.createElement("canvas");if(k[0]){k=k[0]}k.vcanvas=this;f(this.canvas).css({display:"inline-block",width:j,height:h,verticalAlign:"top"});this._insert(this.canvas,k);this.pixel_height=f(this.canvas).height();this.pixel_width=f(this.canvas).width();this.canvas.width=this.pixel_width;this.canvas.height=this.pixel_height;f(this.canvas).css({width:this.pixel_width,height:this.pixel_height})},_getContext:function(k,l,h){var j=this.canvas.getContext("2d");if(k!=undefined){j.strokeStyle=k}j.lineWidth=h==undefined?1:h;if(l!=undefined){j.fillStyle=l}return j},drawShape:function(n,m,o,h){var k=this._getContext(m,o,h);k.beginPath();k.moveTo(n[0][0]+0.5,n[0][1]+0.5);for(var j=1,l=n.length;j<l;j++){k.lineTo(n[j][0]+0.5,n[j][1]+0.5)}if(m!=undefined){k.stroke()}if(o!=undefined){k.fill()}},drawCircle:function(j,n,h,l,m){if(isNaN(j)||isNaN(n)){return}var k=this._getContext(l,m);k.beginPath();k.arc(j,n,h,0,2*Math.PI,false);if(l!=undefined){k.stroke()}if(m!=undefined){k.fill()}},drawPieSlice:function(j,p,h,m,k,n,o){var l=this._getContext(n,o);l.beginPath();l.moveTo(j,p);l.arc(j,p,h,m,k,false);l.lineTo(j,p);l.closePath();if(n!=undefined){l.stroke()}if(o){l.fill()}},drawRect:function(j,n,k,h,l,m){return this.drawShape([[j,n],[j+k,n],[j+k,n+h],[j,n+h],[j,n]],l,m)}});var d=function(j,h,k){return this.init(j,h,k)};d.prototype=f.extend(new e,{_super:e.prototype,init:function(j,h,l){this._super.init(j,h,l);if(l[0]){l=l[0]}l.vcanvas=this;this.canvas=document.createElement("span");f(this.canvas).css({display:"inline-block",position:"relative",overflow:"hidden",width:j,height:h,margin:"0px",padding:"0px",verticalAlign:"top"});this._insert(this.canvas,l);this.pixel_height=f(this.canvas).height();this.pixel_width=f(this.canvas).width();this.canvas.width=this.pixel_width;this.canvas.height=this.pixel_height;var k='<v:group coordorigin="0 0" coordsize="'+this.pixel_width+" "+this.pixel_height+'" style="position:absolute;top:0;left:0;width:'+this.pixel_width+"px;height="+this.pixel_height+'px;"></v:group>';this.canvas.insertAdjacentHTML("beforeEnd",k);this.group=f(this.canvas).children()[0]},drawShape:function(t,o,h,l){var p=[];for(var k=0,j=t.length;k<j;k++){p[k]=""+(t[k][0])+","+(t[k][1])}var n=p.splice(0,1);l=l==undefined?1:l;var s=o==undefined?' stroked="false" ':' strokeWeight="'+l+'" strokeColor="'+o+'" ';var r=h==undefined?' filled="false"':' fillColor="'+h+'" filled="true" ';var m=p[0]==p[p.length-1]?"x ":"";var q='<v:shape coordorigin="0 0" coordsize="'+this.pixel_width+" "+this.pixel_height+'" '+s+r+' style="position:absolute;left:0px;top:0px;height:'+this.pixel_height+"px;width:"+this.pixel_width+'px;padding:0px;margin:0px;"  path="m '+n+" l "+p.join(", ")+" "+m+'e"> </v:shape>';this.group.insertAdjacentHTML("beforeEnd",q)},drawCircle:function(j,p,h,n,o){j-=h+1;p-=h+1;var m=n==undefined?' stroked="false" ':' strokeWeight="1" strokeColor="'+n+'" ';var l=o==undefined?' filled="false"':' fillColor="'+o+'" filled="true" ';var k="<v:oval "+m+l+' style="position:absolute;top:'+p+"px; left:"+j+"px; width:"+(h*2)+"px; height:"+(h*2)+'px"></v:oval>';this.group.insertAdjacentHTML("beforeEnd",k)},drawPieSlice:function(t,r,o,p,l,s,k){if(p==l){return}if((l-p)==(2*Math.PI)){p=0;l=(2*Math.PI)}var j=t+Math.round(Math.cos(p)*o);var h=r+Math.round(Math.sin(p)*o);var n=t+Math.round(Math.cos(l)*o);var m=r+Math.round(Math.sin(l)*o);if(j==n&&h==m&&(l-p)<Math.PI){return}var q=[t-o,r-o,t+o,r+o,j,h,n,m];var w=s==undefined?' stroked="false" ':' strokeWeight="1" strokeColor="'+s+'" ';var v=k==undefined?' filled="false"':' fillColor="'+k+'" filled="true" ';var u='<v:shape coordorigin="0 0" coordsize="'+this.pixel_width+" "+this.pixel_height+'" '+w+v+' style="position:absolute;left:0px;top:0px;height:'+this.pixel_height+"px;width:"+this.pixel_width+'px;padding:0px;margin:0px;"  path="m '+t+","+r+" wa "+q.join(", ")+' x e"> </v:shape>';this.group.insertAdjacentHTML("beforeEnd",u)},drawRect:function(j,n,k,h,l,m){return this.drawShape([[j,n],[j,n+h],[j+k,n+h],[j+k,n],[j,n]],l,m)}})})(jQuery);