(function(document,Math,undefined){(function(factory){if(typeof define==='function'&&define.amd){define(['jquery'],factory);}else if(jQuery&&!jQuery.fn.sparkline){factory(jQuery);}}(function($){'use strict';var UNSET_OPTION={},getDefaults,createClass,SPFormat,clipval,quartile,normalizeValue,normalizeValues,remove,isNumber,all,sum,addCSS,ensureArray,formatNumber,RangeMap,MouseHandler,Tooltip,barHighlightMixin,line,bar,tristate,discrete,bullet,pie,box,defaultStyles,initStyles,VShape,VCanvas_base,VCanvas_canvas,VCanvas_vml,pending,shapeCount=0;getDefaults=function(){return{common:{type:'line',lineColor:'#00f',fillColor:'#cdf',defaultPixelsPerValue:3,width:'auto',height:'auto',composite:false,tagValuesAttribute:'values',tagOptionsPrefix:'spark',enableTagOptions:false,enableHighlight:true,highlightLighten:1.4,tooltipSkipNull:true,tooltipPrefix:'',tooltipSuffix:'',disableHiddenCheck:false,numberFormatter:false,numberDigitGroupCount:3,numberDigitGroupSep:',',numberDecimalMark:'.',disableTooltips:false,disableInteraction:false},line:{spotColor:'#f80',highlightSpotColor:'#5f5',highlightLineColor:'#f22',spotRadius:1.5,minSpotColor:'#f80',maxSpotColor:'#f80',lineWidth:1,normalRangeMin:undefined,normalRangeMax:undefined,normalRangeColor:'#ccc',drawNormalOnTop:false,chartRangeMin:undefined,chartRangeMax:undefined,chartRangeMinX:undefined,chartRangeMaxX:undefined,tooltipFormat:new SPFormat(' {{prefix}}{{y}}{{suffix}}')},bar:{barColor:'#3366cc',negBarColor:'#f44',stackedBarColor:['#3366cc','#dc3912','#ff9900','#109618','#66aa00','#dd4477','#0099c6','#990099'],zeroColor:undefined,nullColor:undefined,zeroAxis:true,barWidth:4,barSpacing:1,chartRangeMax:undefined,chartRangeMin:undefined,chartRangeClip:false,colorMap:undefined,tooltipFormat:new SPFormat(' {{prefix}}{{value}}{{suffix}}')},tristate:{barWidth:4,barSpacing:1,posBarColor:'#6f6',negBarColor:'#f44',zeroBarColor:'#999',colorMap:{},tooltipFormat:new SPFormat(' {{value:map}}'),tooltipValueLookups:{map:{'-1':'Loss','0':'Draw','1':'Win'}}},discrete:{lineHeight:'auto',thresholdColor:undefined,thresholdValue:0,chartRangeMax:undefined,chartRangeMin:undefined,chartRangeClip:false,tooltipFormat:new SPFormat('{{prefix}}{{value}}{{suffix}}')},bullet:{targetColor:'#f33',targetWidth:3,performanceColor:'#33f',rangeColors:['#d3dafe','#a8b6ff','#7f94ff'],base:undefined,tooltipFormat:new SPFormat('{{fieldkey:fields}} - {{value}}'),tooltipValueLookups:{fields:{r:'Range',p:'Performance',t:'Target'}}},pie:{offset:0,sliceColors:['#3366cc','#dc3912','#ff9900','#109618','#66aa00','#dd4477','#0099c6','#990099'],borderWidth:0,borderColor:'#000',tooltipFormat:new SPFormat(' {{value}} ({{percent.1}}%)')},box:{raw:false,boxLineColor:'#000',boxFillColor:'#cdf',whiskerColor:'#000',outlierLineColor:'#333',outlierFillColor:'#fff',medianColor:'#f00',showOutliers:true,outlierIQR:1.5,spotRadius:1.5,target:undefined,targetColor:'#4a2',chartRangeMax:undefined,chartRangeMin:undefined,tooltipFormat:new SPFormat('{{field:fields}}: {{value}}'),tooltipFormatFieldlistKey:'field',tooltipValueLookups:{fields:{lq:'Lower Quartile',med:'Median',uq:'Upper Quartile',lo:'Left Outlier',ro:'Right Outlier',lw:'Left Whisker',rw:'Right Whisker'}}}};};defaultStyles='.jqstooltip { '+'position: absolute;'+'left: 0px;'+'top: 0px;'+'visibility: hidden;'+'background: rgb(0, 0, 0) transparent;'+'background-color: rgba(0,0,0,0.6);'+'filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000, endColorstr=#99000000);'+'-ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000, endColorstr=#99000000)";'+'color: white;'+'font: 10px arial, san serif;'+'text-align: left;'+'white-space: nowrap;'+'padding: 5px;'+'border: 1px solid white;'+'box-sizing: content-box;'+'z-index: 10000;'+'}'+'.jqsfield { '+'color: white;'+'font: 10px arial, san serif;'+'text-align: left;'+'}';createClass=function(){var Class,args;Class=function(){this.init.apply(this,arguments);};if(arguments.length>1){if(arguments[0]){Class.prototype=$.extend(new arguments[0](),arguments[arguments.length-1]);Class._super=arguments[0].prototype;}else{Class.prototype=arguments[arguments.length-1];}if(arguments.length>2){args=Array.prototype.slice.call(arguments,1,-1);args.unshift(Class.prototype);$.extend.apply($,args);}}else{Class.prototype=arguments[0];}Class.prototype.cls=Class;return Class;};$.SPFormatClass=SPFormat=createClass({fre:/\{\{([\w.]+?)(:(.+?))?\}\}/g,precre:/(\w+)\.(\d+)/,init:function(format,fclass){this.format=format;this.fclass=fclass;},render:function(fieldset,lookups,options){var self=this,fields=fieldset,match,token,lookupkey,fieldvalue,prec;return this.format.replace(this.fre,function(){var lookup;token=arguments[1];lookupkey=arguments[3];match=self.precre.exec(token);if(match){prec=match[2];token=match[1];}else{prec=false;}fieldvalue=fields[token];if(fieldvalue===undefined){return'';}if(lookupkey&&lookups&&lookups[lookupkey]){lookup=lookups[lookupkey];if(lookup.get){return lookups[lookupkey].get(fieldvalue)||fieldvalue;}else{return lookups[lookupkey][fieldvalue]||fieldvalue;}}if(isNumber(fieldvalue)){if(options.get('numberFormatter')){fieldvalue=options.get('numberFormatter')(fieldvalue);}else{fieldvalue=formatNumber(fieldvalue,prec,options.get('numberDigitGroupCount'),options.get('numberDigitGroupSep'),options.get('numberDecimalMark'));}}return fieldvalue;});}});$.spformat=function(format,fclass){return new SPFormat(format,fclass);};clipval=function(val,min,max){if(valmax){return max;}return val;};quartile=function(values,q){var vl;if(q===2){vl=Math.floor(values.length/2);return values.length%2?values[vl]:(values[vl-1]+values[vl])/2;}else{if(values.length%2){vl=(values.length*q+q)/4;return vl%1?(values[Math.floor(vl)]+values[Math.floor(vl)-1])/2:values[vl-1];}else{vl=(values.length*q+2)/4;return vl%1?(values[Math.floor(vl)]+values[Math.floor(vl)-1])/2:values[vl-1];}}};normalizeValue=function(val){var nf;switch(val){case'undefined':val=undefined;break;case'null':val=null;break;case'true':val=true;break;case'false':val=false;break;default:nf=parseFloat(val);if(val==nf){val=nf;}}return val;};normalizeValues=function(vals){var i,result=[];for(i=vals.length;i--;){result[i]=normalizeValue(vals[i]);}return result;};remove=function(vals,filter){var i,vl,result=[];for(i=0,vl=vals.length;i0;i-=groupsize){num.splice(i,0,groupsep);}return num.join('');};all=function(val,arr,ignoreNull){var i;for(i=arr.length;i--;){if(ignoreNull&&arr[i]===null)continue;if(arr[i]!==val){return false;}}return true;};sum=function(vals){var total=0,i;for(i=vals.length;i--;){total+=typeof vals[i]==='number'?vals[i]:0;}return total;};ensureArray=function(val){return $.isArray(val)?val:[val];};addCSS=function(css){var tag,iefail;if(document.createStyleSheet){try{document.createStyleSheet().cssText=css;return;}catch(e){iefail=true;}}tag=document.createElement('style');tag.type='text/css';document.getElementsByTagName('head')[0].appendChild(tag);if(iefail){document.styleSheets[document.styleSheets.length-1].cssText=css;}else{tag[(typeof document.body.style.WebkitAppearance=='string')?'innerText':'innerHTML']=css;}};$.fn.simpledraw=function(width,height,useExisting,interact){var target,mhandler;if(useExisting&&(target=this.data('_jqs_vcanvas'))){return target;}if($.fn.sparkline.canvas===false){return false;}else if($.fn.sparkline.canvas===undefined){var el=document.createElement('canvas');if(!!(el.getContext&&el.getContext('2d'))){$.fn.sparkline.canvas=function(width,height,target,interact){return new VCanvas_canvas(width,height,target,interact);};}else if(document.namespaces&&!document.namespaces.v){document.namespaces.add('v','urn:schemas-microsoft-com:vml','#default#VML');$.fn.sparkline.canvas=function(width,height,target,interact){return new VCanvas_vml(width,height,target);};}else{$.fn.sparkline.canvas=false;return false;}}if(width===undefined){width=$(this).innerWidth();}if(height===undefined){height=$(this).innerHeight();}target=$.fn.sparkline.canvas(width,height,this,interact);mhandler=$(this).data('_jqs_mhandler');if(mhandler){mhandler.registerCanvas(target);}return target;};$.fn.cleardraw=function(){var target=this.data('_jqs_vcanvas');if(target){target.reset();}};$.RangeMapClass=RangeMap=createClass({init:function(map){var key,range,rangelist=[];for(key in map){if(map.hasOwnProperty(key)&&typeof key==='string'&&key.indexOf(':')>-1){range=key.split(':');range[0]=range[0].length===0?-Infinity:parseFloat(range[0]);range[1]=range[1].length===0?Infinity:parseFloat(range[1]);range[2]=map[key];rangelist.push(range);}}this.map=map;this.rangelist=rangelist||false;},get:function(value){var rangelist=this.rangelist,i,range,result;if((result=this.map[value])!==undefined){return result;}if(rangelist){for(i=rangelist.length;i--;){range=rangelist[i];if(range[0]<=value&&range[1]>=value){return range[2];}}}return undefined;}});$.range_map=function(map){return new RangeMap(map);};MouseHandler=createClass({init:function(el,options){var $el=$(el);this.$el=$el;this.options=options;this.currentPageX=0;this.currentPageY=0;this.el=el;this.splist=[];this.tooltip=null;this.over=false;this.displayTooltips=!options.get('disableTooltips');this.highlightEnabled=!options.get('disableHighlight');},registerSparkline:function(sp){this.splist.push(sp);if(this.over){this.updateDisplay();}},registerCanvas:function(canvas){var $canvas=$(canvas.canvas);this.canvas=canvas;this.$canvas=$canvas;$canvas.mouseenter($.proxy(this.mouseenter,this));$canvas.mouseleave($.proxy(this.mouseleave,this));$canvas.click($.proxy(this.mouseclick,this));},reset:function(removeTooltip){this.splist=[];if(this.tooltip&&removeTooltip){this.tooltip.remove();this.tooltip=undefined;}},mouseclick:function(e){var clickEvent=$.Event('sparklineClick');clickEvent.originalEvent=e;clickEvent.sparklines=this.splist;this.$el.trigger(clickEvent);},mouseenter:function(e){$(document.body).unbind('mousemove.jqs');$(document.body).bind('mousemove.jqs',$.proxy(this.mousemove,this));this.over=true;this.currentPageX=e.pageX;this.currentPageY=e.pageY;this.currentEl=e.target;if(!this.tooltip&&this.displayTooltips){this.tooltip=new Tooltip(this.options);this.tooltip.updatePosition(e.pageX,e.pageY);}this.updateDisplay();},mouseleave:function(){$(document.body).unbind('mousemove.jqs');var splist=this.splist,spcount=splist.length,needsRefresh=false,sp,i;this.over=false;this.currentEl=null;if(this.tooltip){this.tooltip.remove();this.tooltip=null;}for(i=0;i