!function(h){function n(t,e){this.init(t,e)}var m=h.each;h.extend(n.prototype,{init:function(t,e){this.options=t,this.chartOptions=e,this.columns=t.columns||this.rowsToColumns(t.rows)||[],this.columns.length?this.dataFound():(this.parseCSV(),this.parseTable(),this.parseGoogleSpreadsheet())},getColumnDistribution:function(){function e(t){return(h.seriesTypes[t||"line"].prototype.pointArrayMap||[0]).length}var t=this.chartOptions,n=t&&t.chart&&t.chart.type,i=[];m(t&&t.series||[],function(t){i.push(e(t.type||n))}),this.valueCount={global:e(n),individual:i}},dataFound:function(){this.parseTypes(),this.findHeaderRow(),this.parsed(),this.complete()},parseCSV:function(){var t,o=this,r=this.options,e=r.csv,a=this.columns,l=r.startRow||0,u=r.endRow||Number.MAX_VALUE,h=r.startColumn||0,c=r.endColumn||Number.MAX_VALUE,p=0;e&&(t=e.replace(/\r\n/g,"\n").replace(/\r/g,"\n").split(r.lineDelimiter||"\n"),m(t,function(t,e){var n,i=o.trim(t),s=0===i.indexOf("#");!(l<=e&&e<=u)||s||""===i||(n=t.split(r.itemDelimiter||","),m(n,function(t,e){h<=e&&e<=c&&(a[e-h]||(a[e-h]=[]),a[e-h][p]=t)}),p+=1)}),this.dataFound())},parseTable:function(){var n,t=this.options,e=t.table,i=this.columns,s=t.startRow||0,o=t.endRow||Number.MAX_VALUE,r=t.startColumn||0,a=t.endColumn||Number.MAX_VALUE;e&&("string"==typeof e&&(e=document.getElementById(e)),m(e.getElementsByTagName("tr"),function(t,e){n=0,s<=e&&e<=o&&m(t.childNodes,function(t){("TD"===t.tagName||"TH"===t.tagName)&&r<=n&&n<=a&&(i[n]||(i[n]=[]),i[n][e-s]=t.innerHTML,n+=1)})}),this.dataFound())},parseGoogleSpreadsheet:function(){var a,l,u=this,t=this.options,e=t.googleSpreadsheetKey,h=this.columns,c=t.startRow||0,p=t.endRow||Number.MAX_VALUE,m=t.startColumn||0,d=t.endColumn||Number.MAX_VALUE;e&&jQuery.getJSON("https://spreadsheets.google.com/feeds/cells/"+e+"/"+(t.googleSpreadsheetWorksheet||"od6")+"/public/values?alt=json-in-script&callback=?",function(t){var e,n,i=t.feed.entry,s=i.length,o=0,r=0;for(n=0;n<s;n++)e=i[n],o=Math.max(o,e.gs$cell.col),r=Math.max(r,e.gs$cell.row);for(n=0;n<o;n++)m<=n&&n<=d&&(h[n-m]=[],h[n-m].length=Math.min(r,p-c));for(n=0;n<s;n++)e=i[n],a=e.gs$cell.row-1,l=e.gs$cell.col-1,m<=l&&l<=d&&c<=a&&a<=p&&(h[l-m][a-c]=e.content.$t);u.dataFound()})},findHeaderRow:function(){m(this.columns,function(t){"string"!=typeof t[0]&&0}),this.headerRow=0},trim:function(t){return"string"==typeof t?t.replace(/^\s+|\s+$/g,""):t},parseTypes:function(){for(var t,e,n,i,s,o=this.columns,r=o.length;r--;)for(t=o[r].length;t--;)e=o[r][t],n=parseFloat(e),(i=this.trim(e))==n?31536e6<(o[r][t]=n)?o[r].isDatetime=!0:o[r].isNumeric=!0:(s=this.parseDate(e),0!==r||"number"!=typeof s||isNaN(s)?o[r][t]=""===i?null:i:(o[r][t]=s,o[r].isDatetime=!0))},dateFormats:{"YYYY-mm-dd":{regex:"^([0-9]{4})-([0-9]{2})-([0-9]{2})$",parser:function(t){return Date.UTC(+t[1],t[2]-1,+t[3])}}},parseDate:function(t){var e,n,i,s,o=this.options.parseDate;if(o&&(e=o(t)),"string"==typeof t)for(n in this.dateFormats)i=this.dateFormats[n],(s=t.match(i.regex))&&(e=i.parser(s));return e},rowsToColumns:function(t){var e,n,i,s,o;if(t)for(o=[],n=t.length,e=0;e<n;e++)for(s=t[e].length,i=0;i<s;i++)o[i]||(o[i]=[]),o[i][e]=t[e][i];return o},parsed:function(){this.options.parsed&&this.options.parsed.call(this,this.columns)},complete:function(){var t,e,n,i,s,o,r,a,l=this.columns,u=this.options;if(u.complete){for(this.getColumnDistribution(),1<l.length&&(t=l.shift(),0===this.headerRow&&t.shift(),t.isDatetime?e="datetime":t.isNumeric||(e="category")),o=0;o<l.length;o++)0===this.headerRow&&(l[o].name=l[o].shift());for(i=[],a=o=0;o<l.length;a++){for(n=h.pick(this.valueCount.individual[a],this.valueCount.global),s=[],r=0;r<l[o].length;r++)s[r]=[t[r],void 0!==l[o][r]?l[o][r]:null],1<n&&s[r].push(void 0!==l[o+1][r]?l[o+1][r]:null),2<n&&s[r].push(void 0!==l[o+2][r]?l[o+2][r]:null),3<n&&s[r].push(void 0!==l[o+3][r]?l[o+3][r]:null),4<n&&s[r].push(void 0!==l[o+4][r]?l[o+4][r]:null);i[a]={name:l[o].name,data:s},o+=n}u.complete({xAxis:{type:e},series:i})}}}),h.Data=n,h.data=function(t,e){return new n(t,e)},h.wrap(h.Chart.prototype,"init",function(t,i,e){var s=this;i&&i.data?h.data(h.extend(i.data,{complete:function(n){i.series&&m(i.series,function(t,e){i.series[e]=h.merge(t,n.series[e])}),i=h.merge(n,i),t.call(s,i,e)}}),i):t.call(s,i,e)})}(Highcharts);
|