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