File: /home/barbeatleanalyti/www/barisnew.beatleanalytics.com/theme/black/rgraph/RGraph.drawing.xaxis.js
RGraph=window.RGraph||{isRGraph:true};RGraph.Drawing=RGraph.Drawing||{};RGraph.Drawing.XAxis=function(conf)
{if(typeof conf==='object'&&typeof conf.y==='number'&&typeof conf.id==='string'){var id=conf.id
var y=conf.y;var parseConfObjectForOptions=true;}else{var id=conf;var y=arguments[1];}
this.id=id;this.canvas=document.getElementById(this.id);this.context=this.canvas.getContext('2d');this.canvas.__object__=this;this.y=y;this.coords=[];this.coordsText=[];this.original_colors=[];this.firstDraw=true;this.type='drawing.xaxis';this.isRGraph=true;this.uid=RGraph.CreateUID();this.canvas.uid=this.canvas.uid?this.canvas.uid:RGraph.CreateUID();this.properties={'chart.margin.left':25,'chart.margin.right':25,'chart.colors':['black'],'chart.text.color':'black','chart.text.font':'Arial, Verdana, sans-serif','chart.text.size':12,'chart.text.bold':false,'chart.text.italic':false,'chart.text.accessible':true,'chart.text.accessible.overflow':'visible','chart.text.accessible.pointerevents':false,'chart.xaxis.labels':null,'chart.xaxis.labels.position':'section','chart.xaxis.labels.count':5,'chart.xaxis.labels.font':null,'chart.xaxis.labels.size':null,'chart.xaxis.labels.color':null,'chart.xaxis.labels.bold':null,'chart.xaxis.labels.italic':null,'chart.xaxis.tickmarks.align':'bottom','chart.xaxis.tickmarks.count':5,'chart.xaxis.tickmarks.last.left':true,'chart.xaxis.tickmarks.last.right':true,'chart.xaxis.scale.visible':true,'chart.xaxis.scale.formatter':null,'chart.xaxis.scale.decimals':0,'chart.xaxis.scale.point':'.','chart.xaxis.scale.thousand':',','chart.xaxis.scale.invert':false,'chart.xaxis.scale.zerostart':true,'chart.xaxis.scale.units.pre':'','chart.xaxis.scale.units.post':'','chart.xaxis.title':'','chart.xaxis.title.font':null,'chart.xaxis.title.size':null,'chart.xaxis.title.color':null,'chart.xaxis.title.bold':null,'chart.xaxis.title.italic':null,'chart.xaxis.tickmarks.count':null,'chart.xaxis':true,'chart.xaxis.scale.max':null,'chart.xaxis.scale.min':0,'chart.xaxis.position':'bottom','chart.yaxis.position':'left','chart.hmargin':0,'chart.linewidth':1,'chart.tooltips':null,'chart.tooltips.effect':'fade','chart.tooltips.css.class':'RGraph_tooltip','chart.tooltips.event':'onclick','chart.events.click':null,'chart.events.mousemove':null,'chart.clearto':'rgba(0,0,0,0)'}
if(!this.canvas){alert('[DRAWING.XAXIS] No canvas support');return;}
this.$0={};if(!this.canvas.__rgraph_aa_translated__){this.context.translate(0.5,0.5);this.canvas.__rgraph_aa_translated__=true;}
var RG=RGraph,ca=this.canvas,co=ca.getContext('2d'),prop=this.properties,pa2=RG.path2,win=window,doc=document,ma=Math
if(RG.Effects&&typeof RG.Effects.decorate==='function'){RG.Effects.decorate(this);}
this.set=this.Set=function(name)
{var value=typeof arguments[1]==='undefined'?null:arguments[1];if(arguments.length===1&&typeof name==='object'){RG.parseObjectStyleConfig(this,name);return this;}
if(name.substr(0,6)!='chart.'){name='chart.'+name;}
while(name.match(/([A-Z])/)){name=name.replace(/([A-Z])/,'.'+RegExp.$1.toLowerCase());}
prop[name]=value;return this;};this.get=this.Get=function(name)
{if(name.substr(0,6)!='chart.'){name='chart.'+name;}
while(name.match(/([A-Z])/)){name=name.replace(/([A-Z])/,'.'+RegExp.$1.toLowerCase());}
return prop[name.toLowerCase()];};this.draw=this.Draw=function()
{RG.FireCustomEvent(this,'onbeforedraw');this.coordsText=[];this.marginLeft=prop['chart.margin.left'];this.marginRight=prop['chart.margin.right'];if(!this.colorsParsed){this.parseColors();this.colorsParsed=true;}
this.drawXAxis();RG.installEventListeners(this);if(this.firstDraw){this.firstDraw=false;RG.fireCustomEvent(this,'onfirstdraw');this.firstDrawFunc();}
RG.FireCustomEvent(this,'ondraw');return this;};this.exec=function(func)
{func(this);return this;};this.getObjectByXY=function(e)
{if(this.getShape(e)){return this;}};this.getShape=function(e)
{var mouseXY=RG.getMouseXY(e);var mouseX=mouseXY[0];var mouseY=mouseXY[1];if(mouseX>=this.marginLeft&&mouseX<=(ca.width-this.marginRight)&&mouseY>=this.y-(prop['chart.xaxis.tickmarks.align']=='top'?(prop['chart.text.size']*1.5)+5:0)&&mouseY<=(this.y+(prop['chart.xaxis.tickmarks.align']=='top'?0:(prop['chart.text.size']*1.5)+5))){var x=this.marginLeft;var y=this.y;var w=ca.width-this.marginLeft-this.marginRight;var h=15;return{0:this,1:x,2:y,3:w,4:h,5:0,'object':this,'x':x,'y':y,'width':w,'height':h,'index':0,'tooltip':prop['chart.tooltips']?prop['chart.tooltips'][0]:null};}
return null;};this.highlight=this.Highlight=function(shape)
{if(typeof prop['chart.highlight.style']==='function'){(prop['chart.highlight.style'])(shape);}};this.parseColors=function()
{if(this.original_colors.length===0){this.original_colors['chart.colors']=RG.arrayClone(prop['chart.colors']),this.original_colors['chart.text.color']=RG.arrayClone(prop['chart.text.color']),this.original_colors['chart.xaxis.labels.color']=RG.arrayClone(prop['chart.xaxis.labels.color']),this.original_colors['chart.xaxis.title.color']=RG.arrayClone(prop['chart.xaxis.title.color'])}
prop['chart.colors'][0]=this.parseSingleColorForGradient(prop['chart.colors'][0]);prop['chart.text.color']=this.parseSingleColorForGradient(prop['chart.text.color']);prop['chart.xaxis.labels.color']=this.parseSingleColorForGradient(prop['chart.xaxis.labels.color']);prop['chart.xaxis.title.color']=this.parseSingleColorForGradient(prop['chart.xaxis.title.color']);};this.reset=function()
{};this.parseSingleColorForGradient=function(color)
{if(!color){return color;}
if(typeof color==='string'&&color.match(/^gradient\((.*)\)$/i)){if(color.match(/^gradient\(({.*})\)$/i)){return RGraph.parseJSONGradient({object:this,def:RegExp.$1});}
var parts=RegExp.$1.split(':');var grad=co.createLinearGradient(prop['chart.margin.left'],0,ca.width-prop['chart.margin.right'],0);var diff=1/(parts.length-1);grad.addColorStop(0,RG.trim(parts[0]));for(var j=1,len=parts.length;j<len;++j){grad.addColorStop(j*diff,RG.trim(parts[j]));}}
return grad?grad:color;};this.drawXAxis=this.DrawXAxis=function()
{var marginLeft=prop['chart.margin.left'],marginRight=prop['chart.margin.right'],x=this.marginLeft,y=this.y,min=+prop['chart.xaxis.scale.min'],max=+prop['chart.xaxis.scale.max'],labels=prop['chart.xaxis.labels'],labels_position=prop['chart.xaxis.labels.position'],color=prop['chart.colors'][0],title_color=prop['chart.xaxis.title.color'],width=ca.width-this.marginLeft-this.marginRight,align=prop['chart.xaxis.tickmarks.align'],numlabels=prop['chart.xaxis.labels.count'],formatter=prop['chart.xaxis.scale.formatter'],decimals=Number(prop['chart.xaxis.scale.decimals']),invert=prop['chart.xaxis.scale.invert'],scale_visible=prop['chart.xaxis.scale.visible'],units_pre=prop['chart.xaxis.scale.units.pre'],units_post=prop['chart.xaxis.scale.units.post'],title=prop['chart.xaxis.title']
numticks=prop['chart.xaxis.tickmarks.count'],hmargin=prop['chart.hmargin'],linewidth=prop['chart.linewidth'],leftendtick=prop['chart.xaxis.tickmarks.last.left'],rightendtick=prop['chart.xaxis.tickmarks.last.right'],noxaxis=!prop['chart.xaxis'],xaxispos=prop['chart.xaxis.position'],yaxispos=prop['chart.yaxis.position']
if(RG.isNull(numticks)){if(labels&&labels.length){numticks=labels.length;}else if(!labels&&max!=0){numticks=10;}else{numticks=numlabels;}}
co.lineWidth=linewidth+0.001;co.strokeStyle=color;if(!noxaxis){pa2(co,'b m % % l % % s %',x,ma.round(y),x+width,ma.round(y),co.strokeStyle);co.beginPath();for(var i=(leftendtick?0:1);i<=(numticks-(rightendtick?0:1));++i){if(yaxispos==='center'&&i===(numticks/2)){continue;}
co.moveTo(ma.round(x+((width/numticks)*i)),xaxispos==='center'?(align==='bottom'?y-3:y+3):y);co.lineTo(ma.round(x+((width/numticks)*i)),y+(align=='bottom'?3:-3));}
co.stroke();}
if(labels){var textConf=RG.getTextConf({object:this,prefix:'chart.xaxis.labels'});numlabels=labels.length;var h=0;var l=0;var single_line=RG.MeasureText('Mg',false,textConf.font,textConf.size);for(var i=0,len=labels.length;i<len;++i){var dimensions=RG.measureText(labels[i],false,textConf.font,textConf.size);var h=ma.max(h,dimensions[1]);var l=ma.max(l,labels[i].split('\r\n').length);}
for(var i=0,len=labels.length;i<len;++i){if(labels_position=='edge'){var x=((((width-hmargin-hmargin)/(labels.length-1))*i)+marginLeft+hmargin);}else{var graphWidth=(width-hmargin-hmargin);var label_segment_width=(graphWidth/labels.length);var x=((label_segment_width*i)+(label_segment_width/2)+marginLeft+hmargin);}
RG.text2(this,{font:textConf.font,size:textConf.size,color:textConf.color,bold:textConf.bold,italic:textConf.italic,x:x,y:align=='bottom'?y+5:y-5-h+single_line[1],text:String(labels[i]),valign:align=='bottom'?'top':'bottom',halign:'center',tag:'labels'});}}else if(scale_visible){if(!max){alert('[DRAWING.XAXIS] If not specifying xaxisLabels you must specify xaxisScaleMax!');}
if(yaxispos=='center'){width/=2;var additionalX=width;}else{var additionalX=0;}
var textConf=RG.getTextConf({object:this,prefix:'chart.xaxis.labels'});for(var i=0;i<=numlabels;++i){if(i==0&&!prop['chart.xaxis.scale.zerostart']){continue;}
var original=(((max-min)/numlabels)*i)+min;var hmargin=prop['chart.hmargin'];if(typeof formatter==='function'){var text=formatter(this,original)}else{text=RG.numberFormat({object:this,number:original.toFixed(original===0?0:decimals),unitspre:units_pre,unitspost:units_post,point:prop['chart.xaxis.scale.point'],thousand:prop['chart.xaxis.scale.thousand']});}
if(invert){var x=((width-hmargin-((width-hmargin-hmargin)/numlabels)*i))+marginLeft+additionalX;}else{var x=(((width-hmargin-hmargin)/numlabels)*i)+marginLeft+hmargin+additionalX;}
RG.text2(this,{font:textConf.font,size:textConf.size,color:textConf.color,bold:textConf.bold,italic:textConf.italic,x:x,y:align=='bottom'?y+5:y-5,text:text,valign:align=='bottom'?'top':'bottom',halign:'center',tag:'scale'});}
if(yaxispos=='center'){for(var i=0;i<numlabels;++i){var original=(((max-min)/numlabels)*(numlabels-i))+min;var hmargin=prop['chart.hmargin'];var text=String(typeof(formatter)=='function'?formatter(this,original):RG.numberFormat({object:this,number:original.toFixed(decimals),unitspre:units_pre,unitspost:units_post}));if(invert){var x=((width-hmargin-((width-hmargin-hmargin)/numlabels)*i))+marginLeft;}else{var x=(((width-hmargin-hmargin)/numlabels)*i)+marginLeft+hmargin;}
RG.text2(this,{font:textConf.font,size:textConf.size,color:textConf.color,bold:textConf.bold,italic:textConf.italic,x:x,y:align=='bottom'?y+5:y-5,'text':'-'+text,valign:align=='bottom'?'top':'bottom',halign:'center',tag:'scale'});}}}
if(title){var textConf=RG.getTextConf({object:this,prefix:'chart.xaxis.title'});var dimensions=RG.measureText({text:title,bold:textConf.bold,font:textConf.font,size:textConf.size});RG.text2(this,{font:textConf.font,size:textConf.size,color:textConf.color,bold:textConf.bold,italic:textConf.italic,x:(ca.width-this.marginLeft-this.marginRight)/2+this.marginLeft,y:align=='bottom'?y+dimensions[1]+5:y-dimensions[1]-5,text:title,valign:'top',halign:'center',tag:'title'});}};this.on=function(type,func)
{if(type.substr(0,2)!=='on'){type='on'+type;}
if(typeof this[type]!=='function'){this[type]=func;}else{RG.addCustomEventListener(this,type,func);}
return this;};this.firstDrawFunc=function()
{};RG.Register(this);if(parseConfObjectForOptions){RG.parseObjectStyleConfig(this,conf.options);}};