
var CanvasTextFunctions={};CanvasTextFunctions.letters={' ':{width:16,points:[]},'!':{width:10,points:[[5,21],[5,7],[-1,-1],[5,2],[4,1],[5,0],[6,1],[5,2]]},'"':{width:16,points:[[4,21],[4,14],[-1,-1],[12,21],[12,14]]},'#':{width:21,points:[[11,25],[4,-7],[-1,-1],[17,25],[10,-7],[-1,-1],[4,12],[18,12],[-1,-1],[3,6],[17,6]]},'$':{width:20,points:[[8,25],[8,-4],[-1,-1],[12,25],[12,-4],[-1,-1],[17,18],[15,20],[12,21],[8,21],[5,20],[3,18],[3,16],[4,14],[5,13],[7,12],[13,10],[15,9],[16,8],[17,6],[17,3],[15,1],[12,0],[8,0],[5,1],[3,3]]},'%':{width:24,points:[[21,21],[3,0],[-1,-1],[8,21],[10,19],[10,17],[9,15],[7,14],[5,14],[3,16],[3,18],[4,20],[6,21],[8,21],[10,20],[13,19],[16,19],[19,20],[21,21],[-1,-1],[17,7],[15,6],[14,4],[14,2],[16,0],[18,0],[20,1],[21,3],[21,5],[19,7],[17,7]]},'&':{width:26,points:[[23,12],[23,13],[22,14],[21,14],[20,13],[19,11],[17,6],[15,3],[13,1],[11,0],[7,0],[5,1],[4,2],[3,4],[3,6],[4,8],[5,9],[12,13],[13,14],[14,16],[14,18],[13,20],[11,21],[9,20],[8,18],[8,16],[9,13],[11,10],[16,3],[18,1],[20,0],[22,0],[23,1],[23,2]]},'\'':{width:10,points:[[5,19],[4,20],[5,21],[6,20],[6,18],[5,16],[4,15]]},'(':{width:14,points:[[11,25],[9,23],[7,20],[5,16],[4,11],[4,7],[5,2],[7,-2],[9,-5],[11,-7]]},')':{width:14,points:[[3,25],[5,23],[7,20],[9,16],[10,11],[10,7],[9,2],[7,-2],[5,-5],[3,-7]]},'*':{width:16,points:[[8,21],[8,9],[-1,-1],[3,18],[13,12],[-1,-1],[13,18],[3,12]]},'+':{width:26,points:[[13,18],[13,0],[-1,-1],[4,9],[22,9]]},',':{width:10,points:[[6,1],[5,0],[4,1],[5,2],[6,1],[6,-1],[5,-3],[4,-4]]},'-':{width:26,points:[[4,9],[22,9]]},'.':{width:10,points:[[5,2],[4,1],[5,0],[6,1],[5,2]]},'/':{width:22,points:[[20,25],[2,-7]]},'0':{width:20,points:[[9,21],[6,20],[4,17],[3,12],[3,9],[4,4],[6,1],[9,0],[11,0],[14,1],[16,4],[17,9],[17,12],[16,17],[14,20],[11,21],[9,21]]},'1':{width:20,points:[[6,17],[8,18],[11,21],[11,0]]},'2':{width:20,points:[[4,16],[4,17],[5,19],[6,20],[8,21],[12,21],[14,20],[15,19],[16,17],[16,15],[15,13],[13,10],[3,0],[17,0]]},'3':{width:20,points:[[5,21],[16,21],[10,13],[13,13],[15,12],[16,11],[17,8],[17,6],[16,3],[14,1],[11,0],[8,0],[5,1],[4,2],[3,4]]},'4':{width:20,points:[[13,21],[3,7],[18,7],[-1,-1],[13,21],[13,0]]},'5':{width:20,points:[[15,21],[5,21],[4,12],[5,13],[8,14],[11,14],[14,13],[16,11],[17,8],[17,6],[16,3],[14,1],[11,0],[8,0],[5,1],[4,2],[3,4]]},'6':{width:20,points:[[16,18],[15,20],[12,21],[10,21],[7,20],[5,17],[4,12],[4,7],[5,3],[7,1],[10,0],[11,0],[14,1],[16,3],[17,6],[17,7],[16,10],[14,12],[11,13],[10,13],[7,12],[5,10],[4,7]]},'7':{width:20,points:[[17,21],[7,0],[-1,-1],[3,21],[17,21]]},'8':{width:20,points:[[8,21],[5,20],[4,18],[4,16],[5,14],[7,13],[11,12],[14,11],[16,9],[17,7],[17,4],[16,2],[15,1],[12,0],[8,0],[5,1],[4,2],[3,4],[3,7],[4,9],[6,11],[9,12],[13,13],[15,14],[16,16],[16,18],[15,20],[12,21],[8,21]]},'9':{width:20,points:[[16,14],[15,11],[13,9],[10,8],[9,8],[6,9],[4,11],[3,14],[3,15],[4,18],[6,20],[9,21],[10,21],[13,20],[15,18],[16,14],[16,9],[15,4],[13,1],[10,0],[8,0],[5,1],[4,3]]},':':{width:10,points:[[5,14],[4,13],[5,12],[6,13],[5,14],[-1,-1],[5,2],[4,1],[5,0],[6,1],[5,2]]},',':{width:10,points:[[5,14],[4,13],[5,12],[6,13],[5,14],[-1,-1],[6,1],[5,0],[4,1],[5,2],[6,1],[6,-1],[5,-3],[4,-4]]},'<':{width:24,points:[[20,18],[4,9],[20,0]]},'=':{width:26,points:[[4,12],[22,12],[-1,-1],[4,6],[22,6]]},'>':{width:24,points:[[4,18],[20,9],[4,0]]},'?':{width:18,points:[[3,16],[3,17],[4,19],[5,20],[7,21],[11,21],[13,20],[14,19],[15,17],[15,15],[14,13],[13,12],[9,10],[9,7],[-1,-1],[9,2],[8,1],[9,0],[10,1],[9,2]]},'@':{width:27,points:[[18,13],[17,15],[15,16],[12,16],[10,15],[9,14],[8,11],[8,8],[9,6],[11,5],[14,5],[16,6],[17,8],[-1,-1],[12,16],[10,14],[9,11],[9,8],[10,6],[11,5],[-1,-1],[18,16],[17,8],[17,6],[19,5],[21,5],[23,7],[24,10],[24,12],[23,15],[22,17],[20,19],[18,20],[15,21],[12,21],[9,20],[7,19],[5,17],[4,15],[3,12],[3,9],[4,6],[5,4],[7,2],[9,1],[12,0],[15,0],[18,1],[20,2],[21,3],[-1,-1],[19,16],[18,8],[18,6],[19,5]]},'A':{width:18,points:[[9,21],[1,0],[-1,-1],[9,21],[17,0],[-1,-1],[4,7],[14,7]]},'B':{width:21,points:[[4,21],[4,0],[-1,-1],[4,21],[13,21],[16,20],[17,19],[18,17],[18,15],[17,13],[16,12],[13,11],[-1,-1],[4,11],[13,11],[16,10],[17,9],[18,7],[18,4],[17,2],[16,1],[13,0],[4,0]]},'C':{width:21,points:[[18,16],[17,18],[15,20],[13,21],[9,21],[7,20],[5,18],[4,16],[3,13],[3,8],[4,5],[5,3],[7,1],[9,0],[13,0],[15,1],[17,3],[18,5]]},'D':{width:21,points:[[4,21],[4,0],[-1,-1],[4,21],[11,21],[14,20],[16,18],[17,16],[18,13],[18,8],[17,5],[16,3],[14,1],[11,0],[4,0]]},'E':{width:19,points:[[4,21],[4,0],[-1,-1],[4,21],[17,21],[-1,-1],[4,11],[12,11],[-1,-1],[4,0],[17,0]]},'F':{width:18,points:[[4,21],[4,0],[-1,-1],[4,21],[17,21],[-1,-1],[4,11],[12,11]]},'G':{width:21,points:[[18,16],[17,18],[15,20],[13,21],[9,21],[7,20],[5,18],[4,16],[3,13],[3,8],[4,5],[5,3],[7,1],[9,0],[13,0],[15,1],[17,3],[18,5],[18,8],[-1,-1],[13,8],[18,8]]},'H':{width:22,points:[[4,21],[4,0],[-1,-1],[18,21],[18,0],[-1,-1],[4,11],[18,11]]},'I':{width:8,points:[[4,21],[4,0]]},'J':{width:16,points:[[12,21],[12,5],[11,2],[10,1],[8,0],[6,0],[4,1],[3,2],[2,5],[2,7]]},'K':{width:21,points:[[4,21],[4,0],[-1,-1],[18,21],[4,7],[-1,-1],[9,12],[18,0]]},'L':{width:17,points:[[4,21],[4,0],[-1,-1],[4,0],[16,0]]},'M':{width:24,points:[[4,21],[4,0],[-1,-1],[4,21],[12,0],[-1,-1],[20,21],[12,0],[-1,-1],[20,21],[20,0]]},'N':{width:22,points:[[4,21],[4,0],[-1,-1],[4,21],[18,0],[-1,-1],[18,21],[18,0]]},'O':{width:22,points:[[9,21],[7,20],[5,18],[4,16],[3,13],[3,8],[4,5],[5,3],[7,1],[9,0],[13,0],[15,1],[17,3],[18,5],[19,8],[19,13],[18,16],[17,18],[15,20],[13,21],[9,21]]},'P':{width:21,points:[[4,21],[4,0],[-1,-1],[4,21],[13,21],[16,20],[17,19],[18,17],[18,14],[17,12],[16,11],[13,10],[4,10]]},'Q':{width:22,points:[[9,21],[7,20],[5,18],[4,16],[3,13],[3,8],[4,5],[5,3],[7,1],[9,0],[13,0],[15,1],[17,3],[18,5],[19,8],[19,13],[18,16],[17,18],[15,20],[13,21],[9,21],[-1,-1],[12,4],[18,-2]]},'R':{width:21,points:[[4,21],[4,0],[-1,-1],[4,21],[13,21],[16,20],[17,19],[18,17],[18,15],[17,13],[16,12],[13,11],[4,11],[-1,-1],[11,11],[18,0]]},'S':{width:20,points:[[17,18],[15,20],[12,21],[8,21],[5,20],[3,18],[3,16],[4,14],[5,13],[7,12],[13,10],[15,9],[16,8],[17,6],[17,3],[15,1],[12,0],[8,0],[5,1],[3,3]]},'T':{width:16,points:[[8,21],[8,0],[-1,-1],[1,21],[15,21]]},'U':{width:22,points:[[4,21],[4,6],[5,3],[7,1],[10,0],[12,0],[15,1],[17,3],[18,6],[18,21]]},'V':{width:18,points:[[1,21],[9,0],[-1,-1],[17,21],[9,0]]},'W':{width:24,points:[[2,21],[7,0],[-1,-1],[12,21],[7,0],[-1,-1],[12,21],[17,0],[-1,-1],[22,21],[17,0]]},'X':{width:20,points:[[3,21],[17,0],[-1,-1],[17,21],[3,0]]},'Y':{width:18,points:[[1,21],[9,11],[9,0],[-1,-1],[17,21],[9,11]]},'Z':{width:20,points:[[17,21],[3,0],[-1,-1],[3,21],[17,21],[-1,-1],[3,0],[17,0]]},'[':{width:14,points:[[4,25],[4,-7],[-1,-1],[5,25],[5,-7],[-1,-1],[4,25],[11,25],[-1,-1],[4,-7],[11,-7]]},'\\':{width:14,points:[[0,21],[14,-3]]},']':{width:14,points:[[9,25],[9,-7],[-1,-1],[10,25],[10,-7],[-1,-1],[3,25],[10,25],[-1,-1],[3,-7],[10,-7]]},'^':{width:16,points:[[6,15],[8,18],[10,15],[-1,-1],[3,12],[8,17],[13,12],[-1,-1],[8,17],[8,0]]},'_':{width:16,points:[[0,-2],[16,-2]]},'`':{width:10,points:[[6,21],[5,20],[4,18],[4,16],[5,15],[6,16],[5,17]]},'a':{width:19,points:[[15,14],[15,0],[-1,-1],[15,11],[13,13],[11,14],[8,14],[6,13],[4,11],[3,8],[3,6],[4,3],[6,1],[8,0],[11,0],[13,1],[15,3]]},'b':{width:19,points:[[4,21],[4,0],[-1,-1],[4,11],[6,13],[8,14],[11,14],[13,13],[15,11],[16,8],[16,6],[15,3],[13,1],[11,0],[8,0],[6,1],[4,3]]},'c':{width:18,points:[[15,11],[13,13],[11,14],[8,14],[6,13],[4,11],[3,8],[3,6],[4,3],[6,1],[8,0],[11,0],[13,1],[15,3]]},'d':{width:19,points:[[15,21],[15,0],[-1,-1],[15,11],[13,13],[11,14],[8,14],[6,13],[4,11],[3,8],[3,6],[4,3],[6,1],[8,0],[11,0],[13,1],[15,3]]},'e':{width:18,points:[[3,8],[15,8],[15,10],[14,12],[13,13],[11,14],[8,14],[6,13],[4,11],[3,8],[3,6],[4,3],[6,1],[8,0],[11,0],[13,1],[15,3]]},'f':{width:12,points:[[10,21],[8,21],[6,20],[5,17],[5,0],[-1,-1],[2,14],[9,14]]},'g':{width:19,points:[[15,14],[15,-2],[14,-5],[13,-6],[11,-7],[8,-7],[6,-6],[-1,-1],[15,11],[13,13],[11,14],[8,14],[6,13],[4,11],[3,8],[3,6],[4,3],[6,1],[8,0],[11,0],[13,1],[15,3]]},'h':{width:19,points:[[4,21],[4,0],[-1,-1],[4,10],[7,13],[9,14],[12,14],[14,13],[15,10],[15,0]]},'i':{width:8,points:[[3,21],[4,20],[5,21],[4,22],[3,21],[-1,-1],[4,14],[4,0]]},'j':{width:10,points:[[5,21],[6,20],[7,21],[6,22],[5,21],[-1,-1],[6,14],[6,-3],[5,-6],[3,-7],[1,-7]]},'k':{width:17,points:[[4,21],[4,0],[-1,-1],[14,14],[4,4],[-1,-1],[8,8],[15,0]]},'l':{width:8,points:[[4,21],[4,0]]},'m':{width:30,points:[[4,14],[4,0],[-1,-1],[4,10],[7,13],[9,14],[12,14],[14,13],[15,10],[15,0],[-1,-1],[15,10],[18,13],[20,14],[23,14],[25,13],[26,10],[26,0]]},'n':{width:19,points:[[4,14],[4,0],[-1,-1],[4,10],[7,13],[9,14],[12,14],[14,13],[15,10],[15,0]]},'o':{width:19,points:[[8,14],[6,13],[4,11],[3,8],[3,6],[4,3],[6,1],[8,0],[11,0],[13,1],[15,3],[16,6],[16,8],[15,11],[13,13],[11,14],[8,14]]},'p':{width:19,points:[[4,14],[4,-7],[-1,-1],[4,11],[6,13],[8,14],[11,14],[13,13],[15,11],[16,8],[16,6],[15,3],[13,1],[11,0],[8,0],[6,1],[4,3]]},'q':{width:19,points:[[15,14],[15,-7],[-1,-1],[15,11],[13,13],[11,14],[8,14],[6,13],[4,11],[3,8],[3,6],[4,3],[6,1],[8,0],[11,0],[13,1],[15,3]]},'r':{width:13,points:[[4,14],[4,0],[-1,-1],[4,8],[5,11],[7,13],[9,14],[12,14]]},'s':{width:17,points:[[14,11],[13,13],[10,14],[7,14],[4,13],[3,11],[4,9],[6,8],[11,7],[13,6],[14,4],[14,3],[13,1],[10,0],[7,0],[4,1],[3,3]]},'t':{width:12,points:[[5,21],[5,4],[6,1],[8,0],[10,0],[-1,-1],[2,14],[9,14]]},'u':{width:19,points:[[4,14],[4,4],[5,1],[7,0],[10,0],[12,1],[15,4],[-1,-1],[15,14],[15,0]]},'v':{width:16,points:[[2,14],[8,0],[-1,-1],[14,14],[8,0]]},'w':{width:22,points:[[3,14],[7,0],[-1,-1],[11,14],[7,0],[-1,-1],[11,14],[15,0],[-1,-1],[19,14],[15,0]]},'x':{width:17,points:[[3,14],[14,0],[-1,-1],[14,14],[3,0]]},'y':{width:16,points:[[2,14],[8,0],[-1,-1],[14,14],[8,0],[6,-4],[4,-6],[2,-7],[1,-7]]},'z':{width:17,points:[[14,14],[3,0],[-1,-1],[3,14],[14,14],[-1,-1],[3,0],[14,0]]},'{':{width:14,points:[[9,25],[7,24],[6,23],[5,21],[5,19],[6,17],[7,16],[8,14],[8,12],[6,10],[-1,-1],[7,24],[6,22],[6,20],[7,18],[8,17],[9,15],[9,13],[8,11],[4,9],[8,7],[9,5],[9,3],[8,1],[7,0],[6,-2],[6,-4],[7,-6],[-1,-1],[6,8],[8,6],[8,4],[7,2],[6,1],[5,-1],[5,-3],[6,-5],[7,-6],[9,-7]]},'|':{width:8,points:[[4,25],[4,-7]]},'}':{width:14,points:[[5,25],[7,24],[8,23],[9,21],[9,19],[8,17],[7,16],[6,14],[6,12],[8,10],[-1,-1],[7,24],[8,22],[8,20],[7,18],[6,17],[5,15],[5,13],[6,11],[10,9],[6,7],[5,5],[5,3],[6,1],[7,0],[8,-2],[8,-4],[7,-6],[-1,-1],[8,8],[6,6],[6,4],[7,2],[8,1],[9,-1],[9,-3],[8,-5],[7,-6],[5,-7]]},'~':{width:24,points:[[3,6],[3,8],[4,11],[6,12],[8,12],[10,11],[14,8],[16,7],[18,7],[20,8],[21,10],[-1,-1],[3,8],[4,10],[6,11],[8,11],[10,10],[14,7],[16,6],[18,6],[20,7],[21,10],[21,12]]}};CanvasTextFunctions.letter=function(ch)
{return CanvasTextFunctions.letters[ch];}
CanvasTextFunctions.ascent=function(font,size)
{return size;}
CanvasTextFunctions.descent=function(font,size)
{return 7.0*size/25.0;}
CanvasTextFunctions.measure=function(font,size,str)
{var total=0;var len=str.length;for(i=0;i<len;i++){var c=CanvasTextFunctions.letter(str.charAt(i));if(c)total+=c.width*size/25.0;}
return total;}
CanvasTextFunctions.draw=function(ctx,font,size,x,y,str)
{var total=0;var len=str.length;var mag=size/25.0;ctx.save();ctx.lineCap="round";ctx.lineWidth=2.0*mag;for(i=0;i<len;i++){var c=CanvasTextFunctions.letter(str.charAt(i));if(!c)continue;ctx.beginPath();var penUp=1;var needStroke=0;for(j=0;j<c.points.length;j++){var a=c.points[j];if(a[0]==-1&&a[1]==-1){penUp=1;continue;}
if(penUp){ctx.moveTo(x+a[0]*mag,y-a[1]*mag);penUp=false;}else{ctx.lineTo(x+a[0]*mag,y-a[1]*mag);}}
ctx.stroke();x+=c.width*mag;}
ctx.restore();return total;}
CanvasTextFunctions.enable=function(ctx)
{ctx.drawText=function(font,size,x,y,text){return CanvasTextFunctions.draw(ctx,font,size,x,y,text);};ctx.measureText=function(font,size,text){return CanvasTextFunctions.measure(font,size,text);};ctx.fontAscent=function(font,size){return CanvasTextFunctions.ascent(font,size);}
ctx.fontDescent=function(font,size){return CanvasTextFunctions.descent(font,size);}
ctx.drawTextRight=function(font,size,x,y,text){var w=CanvasTextFunctions.measure(font,size,text);return CanvasTextFunctions.draw(ctx,font,size,x-w,y,text);};ctx.drawTextCenter=function(font,size,x,y,text){var w=CanvasTextFunctions.measure(font,size,text);return CanvasTextFunctions.draw(ctx,font,size,x-w/2,y,text);};}
if(!window.CanvasRenderingContext2D){(function(){var m=Math;var mr=m.round;var ms=m.sin;var mc=m.cos;var G_vmlCanvasManager_={init:function(opt_doc){var doc=opt_doc||document;if(/MSIE/.test(navigator.userAgent)&&!window.opera){var self=this;doc.attachEvent("onreadystatechange",function(){self.init_(doc);});}},init_:function(doc,e){if(doc.readyState=="complete"){if(!doc.namespaces["g_vml_"]){doc.namespaces.add("g_vml_","urn:schemas-microsoft-com:vml");}
var ss=doc.createStyleSheet();ss.cssText="canvas{display:inline-block;overflow:hidden;"+"text-align:left;}"+"g_vml_\\:*{behavior:url(#default#VML)}";var els=doc.getElementsByTagName("canvas");for(var i=0;i<els.length;i++){if(!els[i].getContext){this.initElement(els[i]);}}}},fixElement_:function(el){var outerHTML=el.outerHTML;var newEl=document.createElement(outerHTML);if(outerHTML.slice(-2)!="/>"){var tagName="/"+el.tagName;var ns;while((ns=el.nextSibling)&&ns.tagName!=tagName){ns.removeNode();}
if(ns){ns.removeNode();}}
el.parentNode.replaceChild(newEl,el);return newEl;},initElement:function(el){el=this.fixElement_(el);el.getContext=function(){if(this.context_){return this.context_;}
return this.context_=new CanvasRenderingContext2D_(this);};el.attachEvent('onresize',onResize);var attrs=el.attributes;if(attrs.width&&attrs.width.specified){el.style.width=attrs.width.nodeValue+"px";}
if(attrs.height&&attrs.height.specified){el.style.height=attrs.height.nodeValue+"px";}
return el;}};function onPropertyChange(e){switch(e.propertyName){case'width':case'height':break;}}
function onResize(e){var el=e.srcElement;if(el.firstChild){el.firstChild.style.width=el.clientWidth+'px';el.firstChild.style.height=el.clientHeight+'px';}}
G_vmlCanvasManager_.init();var dec2hex=[];for(var i=0;i<16;i++){for(var j=0;j<16;j++){dec2hex[i*16+j]=i.toString(16)+j.toString(16);}}
function createMatrixIdentity(){return[[1,0,0],[0,1,0],[0,0,1]];}
function matrixMultiply(m1,m2){var result=createMatrixIdentity();for(var x=0;x<3;x++){for(var y=0;y<3;y++){var sum=0;for(var z=0;z<3;z++){sum+=m1[x][z]*m2[z][y];}
result[x][y]=sum;}}
return result;}
function copyState(o1,o2){o2.fillStyle=o1.fillStyle;o2.lineCap=o1.lineCap;o2.lineJoin=o1.lineJoin;o2.lineWidth=o1.lineWidth;o2.miterLimit=o1.miterLimit;o2.shadowBlur=o1.shadowBlur;o2.shadowColor=o1.shadowColor;o2.shadowOffsetX=o1.shadowOffsetX;o2.shadowOffsetY=o1.shadowOffsetY;o2.strokeStyle=o1.strokeStyle;}
function processStyle(styleString){var str,alpha=1;styleString=String(styleString);if(styleString.substring(0,3)=="rgb"){var start=styleString.indexOf("(",3);var end=styleString.indexOf(")",start+1);var guts=styleString.substring(start+1,end).split(",");str="#";for(var i=0;i<3;i++){str+=dec2hex[parseInt(guts[i])];}
if((guts.length==4)&&(styleString.substr(3,1)=="a")){alpha=guts[3];}}else{str=styleString;}
return[str,alpha];}
function processLineCap(lineCap){switch(lineCap){case"butt":return"flat";case"round":return"round";case"square":default:return"square";}}
function CanvasRenderingContext2D_(surfaceElement){this.m_=createMatrixIdentity();this.mStack_=[];this.aStack_=[];this.currentPath_=[];this.strokeStyle="#000";this.fillStyle="#ccc";this.lineWidth=1;this.lineJoin="miter";this.lineCap="butt";this.miterLimit=10;this.globalAlpha=1;var el=document.createElement('div');el.style.width=surfaceElement.clientWidth+'px';el.style.height=surfaceElement.clientHeight+'px';el.style.overflow='hidden';el.style.position='absolute';surfaceElement.appendChild(el);this.element_=el;this.arcScaleX_=1;this.arcScaleY_=1;};var contextPrototype=CanvasRenderingContext2D_.prototype;contextPrototype.clearRect=function(){this.element_.innerHTML="";this.currentPath_=[];};contextPrototype.beginPath=function(){this.currentPath_=[];};contextPrototype.moveTo=function(aX,aY){this.currentPath_.push({type:"moveTo",x:aX,y:aY});};contextPrototype.lineTo=function(aX,aY){this.currentPath_.push({type:"lineTo",x:aX,y:aY});};contextPrototype.bezierCurveTo=function(aCP1x,aCP1y,aCP2x,aCP2y,aX,aY){this.currentPath_.push({type:"bezierCurveTo",cp1x:aCP1x,cp1y:aCP1y,cp2x:aCP2x,cp2y:aCP2y,x:aX,y:aY});};contextPrototype.quadraticCurveTo=function(aCPx,aCPy,aX,aY){this.bezierCurveTo(aCPx,aCPy,aCPx,aCPy,aX,aY);};contextPrototype.arc=function(aX,aY,aRadius,aStartAngle,aEndAngle,aClockwise){aRadius*=10;var arcType=aClockwise?"at":"wa";var xStart=aX+(mc(aStartAngle)*aRadius)-5;var yStart=aY+(ms(aStartAngle)*aRadius)-5;var xEnd=aX+(mc(aEndAngle)*aRadius)-5;var yEnd=aY+(ms(aEndAngle)*aRadius)-5;this.currentPath_.push({type:arcType,x:aX,y:aY,radius:aRadius,xStart:xStart,yStart:yStart,xEnd:xEnd,yEnd:yEnd});};contextPrototype.rect=function(aX,aY,aWidth,aHeight){this.moveTo(aX,aY);this.lineTo(aX+aWidth,aY);this.lineTo(aX+aWidth,aY+aHeight);this.lineTo(aX,aY+aHeight);this.closePath();};contextPrototype.strokeRect=function(aX,aY,aWidth,aHeight){this.beginPath();this.moveTo(aX,aY);this.lineTo(aX+aWidth,aY);this.lineTo(aX+aWidth,aY+aHeight);this.lineTo(aX,aY+aHeight);this.closePath();this.stroke();};contextPrototype.fillRect=function(aX,aY,aWidth,aHeight){this.beginPath();this.moveTo(aX,aY);this.lineTo(aX+aWidth,aY);this.lineTo(aX+aWidth,aY+aHeight);this.lineTo(aX,aY+aHeight);this.closePath();this.fill();};contextPrototype.createLinearGradient=function(aX0,aY0,aX1,aY1){var gradient=new CanvasGradient_("gradient");return gradient;};contextPrototype.createRadialGradient=function(aX0,aY0,aR0,aX1,aY1,aR1){var gradient=new CanvasGradient_("gradientradial");gradient.radius1_=aR0;gradient.radius2_=aR1;gradient.focus_.x=aX0;gradient.focus_.y=aY0;return gradient;};contextPrototype.drawImage=function(image,var_args){var dx,dy,dw,dh,sx,sy,sw,sh;var w=image.width;var h=image.height;if(arguments.length==3){dx=arguments[1];dy=arguments[2];sx=sy=0;sw=dw=w;sh=dh=h;}else if(arguments.length==5){dx=arguments[1];dy=arguments[2];dw=arguments[3];dh=arguments[4];sx=sy=0;sw=w;sh=h;}else if(arguments.length==9){sx=arguments[1];sy=arguments[2];sw=arguments[3];sh=arguments[4];dx=arguments[5];dy=arguments[6];dw=arguments[7];dh=arguments[8];}else{throw"Invalid number of arguments";}
var d=this.getCoords_(dx,dy);var w2=(sw/2);var h2=(sh/2);var vmlStr=[];vmlStr.push(' <g_vml_:group',' coordsize="1000,1000"',' coordorigin="0, 0"',' style="width:100px;height:100px;position:absolute;');if(this.m_[0][0]!=1||this.m_[0][1]){var filter=[];filter.push("M11='",this.m_[0][0],"',","M12='",this.m_[1][0],"',","M21='",this.m_[0][1],"',","M22='",this.m_[1][1],"',","Dx='",d.x,"',","Dy='",d.y,"'");var max=d;var c2=this.getCoords_(dx+dw,dy);var c3=this.getCoords_(dx,dy+dh);var c4=this.getCoords_(dx+dw,dy+dh);max.x=Math.max(max.x,c2.x,c3.x,c4.x);max.y=Math.max(max.y,c2.y,c3.y,c4.y);vmlStr.push(" padding:0 ",mr(max.x),"px ",mr(max.y),"px 0;filter:progid:DXImageTransform.Microsoft.Matrix(",filter.join(""),", sizingmethod='clip');")}else{vmlStr.push(" top:",d.y,"px;left:",d.x,"px;")}
vmlStr.push(' ">','<g_vml_:image src="',image.src,'"',' style="width:',dw,';',' height:',dh,';"',' cropleft="',sx/w,'"',' croptop="',sy/h,'"',' cropright="',(w-sx-sw)/w,'"',' cropbottom="',(h-sy-sh)/h,'"',' />','</g_vml_:group>');this.element_.insertAdjacentHTML("BeforeEnd",vmlStr.join(""));};contextPrototype.stroke=function(aFill){var lineStr=[];var lineOpen=false;var a=processStyle(aFill?this.fillStyle:this.strokeStyle);var color=a[0];var opacity=a[1]*this.globalAlpha;lineStr.push('<g_vml_:shape',' fillcolor="',color,'"',' filled="',Boolean(aFill),'"',' style="position:absolute;width:10;height:10;"',' coordorigin="0 0" coordsize="100 100"',' stroked="',!aFill,'"',' strokeweight="',this.lineWidth,'"',' strokecolor="',color,'"',' path="');var newSeq=false;var min={x:null,y:null};var max={x:null,y:null};for(var i=0;i<this.currentPath_.length;i++){var p=this.currentPath_[i];if(p.type=="moveTo"){lineStr.push(" m ");var c=this.getCoords_(p.x,p.y);lineStr.push(mr(c.x),",",mr(c.y));}else if(p.type=="lineTo"){lineStr.push(" l ");var c=this.getCoords_(p.x,p.y);lineStr.push(mr(c.x),",",mr(c.y));}else if(p.type=="close"){lineStr.push(" x ");}else if(p.type=="bezierCurveTo"){lineStr.push(" c ");var c=this.getCoords_(p.x,p.y);var c1=this.getCoords_(p.cp1x,p.cp1y);var c2=this.getCoords_(p.cp2x,p.cp2y);lineStr.push(mr(c1.x),",",mr(c1.y),",",mr(c2.x),",",mr(c2.y),",",mr(c.x),",",mr(c.y));}else if(p.type=="at"||p.type=="wa"){lineStr.push(" ",p.type," ");var c=this.getCoords_(p.x,p.y);var cStart=this.getCoords_(p.xStart,p.yStart);var cEnd=this.getCoords_(p.xEnd,p.yEnd);lineStr.push(mr(c.x-this.arcScaleX_*p.radius),",",mr(c.y-this.arcScaleY_*p.radius)," ",mr(c.x+this.arcScaleX_*p.radius),",",mr(c.y+this.arcScaleY_*p.radius)," ",mr(cStart.x),",",mr(cStart.y)," ",mr(cEnd.x),",",mr(cEnd.y));}
if(c){if(min.x==null||c.x<min.x){min.x=c.x;}
if(max.x==null||c.x>max.x){max.x=c.x;}
if(min.y==null||c.y<min.y){min.y=c.y;}
if(max.y==null||c.y>max.y){max.y=c.y;}}}
lineStr.push(' ">');if(typeof this.fillStyle=="object"){var focus={x:"50%",y:"50%"};var width=(max.x-min.x);var height=(max.y-min.y);var dimension=(width>height)?width:height;focus.x=mr((this.fillStyle.focus_.x/width)*100+50)+"%";focus.y=mr((this.fillStyle.focus_.y/height)*100+50)+"%";var colors=[];if(this.fillStyle.type_=="gradientradial"){var inside=(this.fillStyle.radius1_/dimension*100);var expansion=(this.fillStyle.radius2_/dimension*100)-inside;}else{var inside=0;var expansion=100;}
var insidecolor={offset:null,color:null};var outsidecolor={offset:null,color:null};this.fillStyle.colors_.sort(function(cs1,cs2){return cs1.offset-cs2.offset;});for(var i=0;i<this.fillStyle.colors_.length;i++){var fs=this.fillStyle.colors_[i];colors.push((fs.offset*expansion)+inside,"% ",fs.color,",");if(fs.offset>insidecolor.offset||insidecolor.offset==null){insidecolor.offset=fs.offset;insidecolor.color=fs.color;}
if(fs.offset<outsidecolor.offset||outsidecolor.offset==null){outsidecolor.offset=fs.offset;outsidecolor.color=fs.color;}}
colors.pop();lineStr.push('<g_vml_:fill',' color="',outsidecolor.color,'"',' color2="',insidecolor.color,'"',' type="',this.fillStyle.type_,'"',' focusposition="',focus.x,', ',focus.y,'"',' colors="',colors.join(""),'"',' opacity="',opacity,'" />');}else if(aFill){lineStr.push('<g_vml_:fill color="',color,'" opacity="',opacity,'" />');}else{lineStr.push('<g_vml_:stroke',' opacity="',opacity,'"',' joinstyle="',this.lineJoin,'"',' miterlimit="',this.miterLimit,'"',' endcap="',processLineCap(this.lineCap),'"',' weight="',this.lineWidth,'px"',' color="',color,'" />');}
lineStr.push("</g_vml_:shape>");this.element_.insertAdjacentHTML("beforeEnd",lineStr.join(""));this.currentPath_=[];};contextPrototype.fill=function(){this.stroke(true);}
contextPrototype.closePath=function(){this.currentPath_.push({type:"close"});};contextPrototype.getCoords_=function(aX,aY){return{x:10*(aX*this.m_[0][0]+aY*this.m_[1][0]+this.m_[2][0])-5,y:10*(aX*this.m_[0][1]+aY*this.m_[1][1]+this.m_[2][1])-5}};contextPrototype.save=function(){var o={};copyState(this,o);this.aStack_.push(o);this.mStack_.push(this.m_);this.m_=matrixMultiply(createMatrixIdentity(),this.m_);};contextPrototype.restore=function(){copyState(this.aStack_.pop(),this);this.m_=this.mStack_.pop();};contextPrototype.translate=function(aX,aY){var m1=[[1,0,0],[0,1,0],[aX,aY,1]];this.m_=matrixMultiply(m1,this.m_);};contextPrototype.rotate=function(aRot){var c=mc(aRot);var s=ms(aRot);var m1=[[c,s,0],[-s,c,0],[0,0,1]];this.m_=matrixMultiply(m1,this.m_);};contextPrototype.scale=function(aX,aY){this.arcScaleX_*=aX;this.arcScaleY_*=aY;var m1=[[aX,0,0],[0,aY,0],[0,0,1]];this.m_=matrixMultiply(m1,this.m_);};contextPrototype.clip=function(){};contextPrototype.arcTo=function(){};contextPrototype.createPattern=function(){return new CanvasPattern_;};function CanvasGradient_(aType){this.type_=aType;this.radius1_=0;this.radius2_=0;this.colors_=[];this.focus_={x:0,y:0};}
CanvasGradient_.prototype.addColorStop=function(aOffset,aColor){aColor=processStyle(aColor);this.colors_.push({offset:1-aOffset,color:aColor});};function CanvasPattern_(){}
G_vmlCanvasManager=G_vmlCanvasManager_;CanvasRenderingContext2D=CanvasRenderingContext2D_;CanvasGradient=CanvasGradient_;CanvasPattern=CanvasPattern_;})();}
var CHART_LINE=1;var CHART_AREA=2;var CHART_BAR=3;var CHART_SCATTER=4;var CHART_STACKED=8;var SERIES_FLOAT=1;var SERIES_TIME=2;function Chart(el){this._cont=el;this._yMin=null;this._yMax=null;this._xGridDensity=0;this._yGridDensity=0;this._flags=0;this._series=new Array();this._labelPrecision=0;this._horizontalLabels=new Array();this._horizontalLabelValues=new Array();this._barWidth=10;this._barDistance=2;this._bars=0;this._showLegend=true;this._bgColor='white';this._gridColor='silver';this._axisColor='black';this._hAxisLabelsClassName='';this._vAxisLabelsClassName='';if((typeof CanvasChartPainterFactory!='undefined')&&(window.CanvasRenderingContext2D)&&((document.all&&(navigator.userAgent.toLowerCase().indexOf("opera")==-1))||((document.createElement('canvas')&&document.createElement('canvas').getContext)))){this._painterFactory=CanvasChartPainterFactory;}
else if(typeof JsGraphicsChartPainterFactory!='undefined'){this._painterFactory=JsGraphicsChartPainterFactory;}
else{this._painterFactory=null;}}
Chart.prototype.setPainterFactory=function(f){this._painterFactory=f;};Chart.prototype.setVerticalRange=function(min,max){this._yMin=min;this._yMax=max;};Chart.prototype.setBackgroundColor=function(color){this._bgColor=color;};Chart.prototype.setGridColor=function(color){this._gridColor=color;};Chart.prototype.setAxisColor=function(color){this._axisColor=color;};Chart.prototype.setHAxisLabelsClassName=function(s){this._hAxisLabelsClassName=s;};Chart.prototype.setVAxisLabelsClassName=function(s){this._vAxisLabelsClassName=s;};Chart.prototype.setLabelPrecision=function(precision){this._labelPrecision=precision;};Chart.prototype.setShowLegend=function(b){this._showLegend=b;};Chart.prototype.setGridDensity=function(horizontal,vertical){this._xGridDensity=horizontal;this._yGridDensity=vertical;};Chart.prototype.setHorizontalLabels=function(labels){this._horizontalLabels=labels;};Chart.prototype.setHorizontalLabelValues=function(values){this._horizontalLabelValues=values;};Chart.prototype.setDefaultType=function(flags){this._flags=flags;};Chart.prototype.setBarWidth=function(width){this._barWidth=width;};Chart.prototype.setBarDistance=function(distance){this._barDistance=distance;};Chart.prototype.add=function(label,shortLabel,color,fillColor,strokeWidth,type,values,tooltips,flags){var o,offset;if(!flags){flags=this._flags;}
if((flags&CHART_BAR)==CHART_BAR){offset=this._barDistance+this._bars*(this._barWidth+this._barDistance);this._bars++;}
else{offset=0;}
o=new ChartSeries(label,shortLabel,color,fillColor,strokeWidth,type,values,tooltips,flags,offset);this._series.push(o);};Chart.prototype.draw=function(){var painter,i,o,o2,len,xlen,ymin,ymax,series,type,self,bLabels;if(!this._painterFactory){return;}
series=new Array();stackedSeries=new Array();xlen=0;ymin=this._yMin;ymax=this._yMax;for(i=0;i<this._series.length;i++){o=this._series[i]
if((o.flags&CHART_STACKED)==CHART_STACKED){series.push(o);}}
for(i=series.length-2;i>=0;i--){o=series[i].values;o2=series[i+1].values;len=(o2.length>o.length)?o2.length:o.length;for(j=0;j<len;j++){if((series[i].getValueAsFloat(j))&&(!series[i+1].getValueAsFloat(j))){continue;}
if((!series[i].getValueAsFloat(j))&&(series[i+1].getValueAsFloat(j))){series[i].setValue(j,series[i+1].getValueAsFloat(j));}
else{series[i].setValue(j,parseInt(series[i].getValueAsFloat(j))+parseFloat(series[i+1].getValueAsFloat(j)));}}}
for(i=0;i<this._series.length;i++){o=this._series[i]
if((o.flags&CHART_STACKED)!=CHART_STACKED){series.push(o);}}
for(i=0;i<series.length;i++){o=series[i]
if(o.values.length>xlen){xlen=o.values.length;}
for(j=0;j<o.values.length;j++){v=parseInt(series[i].getValueAsFloat(j));if((v<ymin)||(ymin==null)){ymin=v;}
if(v>ymax){ymax=v;}}}
bLabels=((this._xGridDensity)&&(this._yGridDensity)&&(this._horizontalLabels.length>=this._xGridDensity));if(this._series.length==this._bars){xlen++;this._xGridDensity++;}
painter=this._painterFactory();painter.create(this._cont);painter.init(xlen,ymin,ymax,this._xGridDensity,this._yGridDensity,bLabels);if(this._bgColor!='transparent'){painter.drawBackground(this._bgColor);};if(this._showLegend){painter.drawLegend(series);}
if(bLabels){painter.drawVerticalAxis(this._yGridDensity,this._labelPrecision,this._axisColor,this._vAxisLabelsClassName);painter.drawHorizontalAxis(xlen,this._horizontalLabels,this._xGridDensity,this._labelPrecision,this._axisColor,this._hAxisLabelsClassName);painter.drawTooltips(this._xGridDensity,this._horizontalLabelValues,series);}
painter.drawChart(this._horizontalLabels,this._gridColor);for(i=0;i<series.length;i++){type=series[i].flags&~CHART_STACKED;switch(type){case CHART_LINE:painter.drawLine(series[i].color,series[i].fillColor,series[i].strokeWidth,series[i].getAllValuesAsFloats());break;case CHART_SCATTER:painter.drawScatter(series[i].color,series[i].fillColor,series[i].strokeWidth,series[i].getAllValuesAsFloats());break;case CHART_AREA:painter.drawArea(series[i].color,series[i].fillColor,series[i].strokeWidth,series[i].getAllValuesAsFloats());break;case CHART_BAR:painter.drawBars(series[i].color,series[i].fillColor,series[i].strokeWidth,series[i].getAllValuesAsFloats(),xlen-1,series[i].offset,this._barWidth);break;default:;};}
painter.drawAxis(this._axisColor);};function ChartSeries(label,shortLabel,color,fillColor,strokeWidth,type,values,tooltips,flags,offset){this.label=label;this.color=color;this.fillColor=fillColor;this.strokeWidth=strokeWidth;this.values=values;this.tooltips=tooltips;this.flags=flags;this.offset=offset;this.shortLabel=shortLabel;this.type=type;}
ChartSeries.prototype.getValueAsFloat=function(i){if(this.type==SERIES_TIME){var datefrac=this.values[i].toString().split(":");return parseFloat(datefrac[0])+parseFloat((parseFloat(datefrac[1])/60));};return this.values[i];};ChartSeries.prototype.getAllValuesAsFloats=function(){if(this.type==SERIES_TIME){var na=new Array();for(i=0;i<this.values.length;i++){na[na.length]=this.getValueAsFloat(i);};return na;}
else{return this.values;};};ChartSeries.prototype.getValue=function(i){return this.values[i];};ChartSeries.prototype.getTooltip=function(i){return this.tooltips[i];};ChartSeries.prototype.setValue=function(i,v){if(this.type==SERIES_TIME){var h,m,tv;h=Math.floor(v).toString();tv=v-h;m=Math.floor(60*tv).toString();if(m.length==1){m='0'+m;};this.values[i]=h+':'+m;};this.values[i]=v;};function AbstractChartPainter(){};AbstractChartPainter.prototype.calc=function(w,h,xlen,ymin,ymax,xgd,ygd){this.range=ymax-ymin;this.xstep=w/(xlen-1);this.xgrid=(xgd)?w/(xgd-1):0;this.ygrid=(ygd)?h/(ygd-1):0;this.ymin=ymin;this.ymax=ymax;};AbstractChartPainter.prototype.create=function(el){};AbstractChartPainter.prototype.init=function(xlen,ymin,ymax,xgd,ygd,bLabels){};AbstractChartPainter.prototype.drawLegend=function(series){};AbstractChartPainter.prototype.drawVerticalAxis=function(ygd,precision,axisColor,vAxisLabelsClassName){};AbstractChartPainter.prototype.drawHorizontalAxis=function(xlen,labels,xgd,precision,axisColor,hAxisLabelsClassName){};AbstractChartPainter.prototype.drawTooltips=function(xgd,labelValues,series){};AbstractChartPainter.prototype.drawAxis=function(axisColor){};AbstractChartPainter.prototype.drawBackground=function(bgcolor){};AbstractChartPainter.prototype.drawChart=function(){};AbstractChartPainter.prototype.drawArea=function(color,fillColor,strokeWidth,values){};AbstractChartPainter.prototype.drawLine=function(color,fillColor,strokeWidth,values){};AbstractChartPainter.prototype.drawScatter=function(color,fillColor,strokeWidth,values){};AbstractChartPainter.prototype.drawBars=function(color,fillColor,strokeWidth,values,xlen,xoffset,width){};function BetterInnerHTML(element,HTML,clearfirst){function Load(xmlString){var xml;if(typeof DOMParser!="undefined")xml=(new DOMParser()).parseFromString(xmlString,"application/xml");else{var ieDOM=["MSXML2.DOMDocument","MSXML.DOMDocument","Microsoft.XMLDOM"];for(var i=0;i<ieDOM.length&&!xml;i++){try{xml=new ActiveXObject(ieDOM[i]);xml.loadXML(xmlString);}
catch(e){}}}
return xml;}
function Copy(domNode,xmlDoc,level){if(typeof level=="undefined")level=1;if(level>1){if(xmlDoc.nodeType==1){var thisNode=document.createElement(xmlDoc.nodeName);for(var a=0,attr=xmlDoc.attributes.length;a<attr;a++){var aName=xmlDoc.attributes[a].name,aValue=xmlDoc.attributes[a].value,evt=(aName.substr(0,2)=="on");if(!evt){switch(aName){case"class":thisNode.className=aValue;break;case"for":thisNode.htmlFor=aValue;break;default:thisNode.setAttribute(aName,aValue);}}}
domNode=domNode.appendChild(thisNode);if(evt)domNode[aName]=function(){eval(aValue);};}
else if(xmlDoc.nodeType==3){var text=(xmlDoc.nodeValue?xmlDoc.nodeValue:"");var test=text.replace(/^\s*|\s*$/g,"");if(test.indexOf("<!--")!=0&&test.indexOf("-->")!=(test.length-3))domNode.appendChild(document.createTextNode(text));}}
for(var i=0,j=xmlDoc.childNodes.length;i<j;i++)Copy(domNode,xmlDoc.childNodes[i],level+1);}
HTML="<root>"+HTML+"</root>";var xmlDoc=Load(HTML);if(element&&xmlDoc){if(clearfirst!=false)while(element.lastChild)element.removeChild(element.lastChild);Copy(element,xmlDoc.documentElement);}}
var jg_ihtm,jg_ie,jg_fast,jg_dom,jg_moz,jg_n4=(document.layers&&typeof document.classes!="undefined");function chkDHTM(x,i)
{x=document.body||null;jg_ie=x&&typeof x.insertAdjacentHTML!="undefined";jg_dom=(x&&!jg_ie&&typeof x.appendChild!="undefined"&&typeof document.createRange!="undefined"&&typeof(i=document.createRange()).setStartBefore!="undefined"&&typeof i.createContextualFragment!="undefined");jg_ihtm=!jg_ie&&!jg_dom&&x&&typeof x.innerHTML!="undefined";jg_fast=jg_ie&&document.all&&!window.opera;jg_moz=jg_dom&&typeof x.style.MozOpacity!="undefined";}
function pntDoc()
{this.wnd.document.write(jg_fast?this.htmRpc():this.htm);this.htm='';}
function pntCnvDom()
{try{var x=document.createRange();x.setStartBefore(this.cnv);x=x.createContextualFragment(jg_fast?this.htmRpc():this.htm);}
catch(err){var x=document.createElement('div');BetterInnerHTML(x,(jg_fast?this.htmRpc():this.htm));};this.cnv.appendChild(x);this.htm='';}
function pntCnvIe()
{this.cnv.insertAdjacentHTML("BeforeEnd",jg_fast?this.htmRpc():this.htm);this.htm='';}
function pntCnvIhtm()
{this.cnv.innerHTML+=this.htm;this.htm='';}
function pntCnv()
{this.htm='';}
function mkDiv(x,y,w,h)
{this.htm+='<div style="position:absolute;'+'left:'+x+'px;'+'top:'+y+'px;'+'width:'+w+'px;'+'height:'+h+'px;'+'clip:rect(0,'+w+'px,'+h+'px,0);'+'background-color:'+this.color+
(!jg_moz?';overflow:hidden':'')+';"><\/div>';}
function mkDivIe(x,y,w,h)
{this.htm+='%%'+this.color+';'+x+';'+y+';'+w+';'+h+';';}
function mkDivPrt(x,y,w,h)
{this.htm+='<div style="position:absolute;'+'border-left:'+w+'px solid '+this.color+';'+'left:'+x+'px;'+'top:'+y+'px;'+'width:0px;'+'height:'+h+'px;'+'clip:rect(0,'+w+'px,'+h+'px,0);'+'background-color:'+this.color+
(!jg_moz?';overflow:hidden':'')+';"><\/div>';}
function mkLyr(x,y,w,h)
{this.htm+='<layer '+'left="'+x+'" '+'top="'+y+'" '+'width="'+w+'" '+'height="'+h+'" '+'bgcolor="'+this.color+'"><\/layer>\n';}
var regex=/%%([^;]+);([^;]+);([^;]+);([^;]+);([^;]+);/g;function htmRpc()
{return this.htm.replace(regex,'<div style="overflow:hidden;position:absolute;background-color:'+'$1;left:$2;top:$3;width:$4;height:$5"></div>\n');}
function htmPrtRpc()
{return this.htm.replace(regex,'<div style="overflow:hidden;position:absolute;background-color:'+'$1;left:$2;top:$3;width:$4;height:$5;border-left:$4px solid $1"></div>\n');}
function mkLin(x1,y1,x2,y2)
{if(x1>x2)
{var _x2=x2;var _y2=y2;x2=x1;y2=y1;x1=_x2;y1=_y2;}
var dx=x2-x1,dy=Math.abs(y2-y1),x=x1,y=y1,yIncr=(y1>y2)?-1:1;if(dx>=dy)
{var pr=dy<<1,pru=pr-(dx<<1),p=pr-dx,ox=x;while((dx--)>0)
{++x;if(p>0)
{this.mkDiv(ox,y,x-ox,1);y+=yIncr;p+=pru;ox=x;}
else p+=pr;}
this.mkDiv(ox,y,x2-ox+1,1);}
else
{var pr=dx<<1,pru=pr-(dy<<1),p=pr-dy,oy=y;if(y2<=y1)
{while((dy--)>0)
{if(p>0)
{this.mkDiv(x++,y,1,oy-y+1);y+=yIncr;p+=pru;oy=y;}
else
{y+=yIncr;p+=pr;}}
this.mkDiv(x2,y2,1,oy-y2+1);}
else
{while((dy--)>0)
{y+=yIncr;if(p>0)
{this.mkDiv(x++,oy,1,y-oy);p+=pru;oy=y;}
else p+=pr;}
this.mkDiv(x2,oy,1,y2-oy+1);}}}
function mkLin2D(x1,y1,x2,y2)
{if(x1>x2)
{var _x2=x2;var _y2=y2;x2=x1;y2=y1;x1=_x2;y1=_y2;}
var dx=x2-x1,dy=Math.abs(y2-y1),x=x1,y=y1,yIncr=(y1>y2)?-1:1;var s=this.stroke;if(dx>=dy)
{if(dx>0&&s-3>0)
{var _s=(s*dx*Math.sqrt(1+dy*dy/(dx*dx))-dx-(s>>1)*dy)/dx;_s=(!(s-4)?Math.ceil(_s):Math.round(_s))+1;}
else var _s=s;var ad=Math.ceil(s/2);var pr=dy<<1,pru=pr-(dx<<1),p=pr-dx,ox=x;while((dx--)>0)
{++x;if(p>0)
{this.mkDiv(ox,y,x-ox+ad,_s);y+=yIncr;p+=pru;ox=x;}
else p+=pr;}
this.mkDiv(ox,y,x2-ox+ad+1,_s);}
else
{if(s-3>0)
{var _s=(s*dy*Math.sqrt(1+dx*dx/(dy*dy))-(s>>1)*dx-dy)/dy;_s=(!(s-4)?Math.ceil(_s):Math.round(_s))+1;}
else var _s=s;var ad=Math.round(s/2);var pr=dx<<1,pru=pr-(dy<<1),p=pr-dy,oy=y;if(y2<=y1)
{++ad;while((dy--)>0)
{if(p>0)
{this.mkDiv(x++,y,_s,oy-y+ad);y+=yIncr;p+=pru;oy=y;}
else
{y+=yIncr;p+=pr;}}
this.mkDiv(x2,y2,_s,oy-y2+ad);}
else
{while((dy--)>0)
{y+=yIncr;if(p>0)
{this.mkDiv(x++,oy,_s,y-oy+ad);p+=pru;oy=y;}
else p+=pr;}
this.mkDiv(x2,oy,_s,y2-oy+ad+1);}}}
function mkLinDott(x1,y1,x2,y2)
{if(x1>x2)
{var _x2=x2;var _y2=y2;x2=x1;y2=y1;x1=_x2;y1=_y2;}
var dx=x2-x1,dy=Math.abs(y2-y1),x=x1,y=y1,yIncr=(y1>y2)?-1:1,drw=true;if(dx>=dy)
{var pr=dy<<1,pru=pr-(dx<<1),p=pr-dx;while((dx--)>0)
{if(drw)this.mkDiv(x,y,1,1);drw=!drw;if(p>0)
{y+=yIncr;p+=pru;}
else p+=pr;++x;}
if(drw)this.mkDiv(x,y,1,1);}
else
{var pr=dx<<1,pru=pr-(dy<<1),p=pr-dy;while((dy--)>0)
{if(drw)this.mkDiv(x,y,1,1);drw=!drw;y+=yIncr;if(p>0)
{++x;p+=pru;}
else p+=pr;}
if(drw)this.mkDiv(x,y,1,1);}}
function mkOv(left,top,width,height)
{var a=width>>1,b=height>>1,wod=width&1,hod=(height&1)+1,cx=left+a,cy=top+b,x=0,y=b,ox=0,oy=b,aa=(a*a)<<1,bb=(b*b)<<1,st=(aa>>1)*(1-(b<<1))+bb,tt=(bb>>1)-aa*((b<<1)-1),w,h;while(y>0)
{if(st<0)
{st+=bb*((x<<1)+3);tt+=(bb<<1)*(++x);}
else if(tt<0)
{st+=bb*((x<<1)+3)-(aa<<1)*(y-1);tt+=(bb<<1)*(++x)-aa*(((y--)<<1)-3);w=x-ox;h=oy-y;if(w&2&&h&2)
{this.mkOvQds(cx,cy,-x+2,ox+wod,-oy,oy-1+hod,1,1);this.mkOvQds(cx,cy,-x+1,x-1+wod,-y-1,y+hod,1,1);}
else this.mkOvQds(cx,cy,-x+1,ox+wod,-oy,oy-h+hod,w,h);ox=x;oy=y;}
else
{tt-=aa*((y<<1)-3);st-=(aa<<1)*(--y);}}
this.mkDiv(cx-a,cy-oy,a-ox+1,(oy<<1)+hod);this.mkDiv(cx+ox+wod,cy-oy,a-ox+1,(oy<<1)+hod);}
function mkOv2D(left,top,width,height)
{var s=this.stroke;width+=s-1;height+=s-1;var a=width>>1,b=height>>1,wod=width&1,hod=(height&1)+1,cx=left+a,cy=top+b,x=0,y=b,aa=(a*a)<<1,bb=(b*b)<<1,st=(aa>>1)*(1-(b<<1))+bb,tt=(bb>>1)-aa*((b<<1)-1);if(s-4<0&&(!(s-2)||width-51>0&&height-51>0))
{var ox=0,oy=b,w,h,pxl,pxr,pxt,pxb,pxw;while(y>0)
{if(st<0)
{st+=bb*((x<<1)+3);tt+=(bb<<1)*(++x);}
else if(tt<0)
{st+=bb*((x<<1)+3)-(aa<<1)*(y-1);tt+=(bb<<1)*(++x)-aa*(((y--)<<1)-3);w=x-ox;h=oy-y;if(w-1)
{pxw=w+1+(s&1);h=s;}
else if(h-1)
{pxw=s;h+=1+(s&1);}
else pxw=h=s;this.mkOvQds(cx,cy,-x+1,ox-pxw+w+wod,-oy,-h+oy+hod,pxw,h);ox=x;oy=y;}
else
{tt-=aa*((y<<1)-3);st-=(aa<<1)*(--y);}}
this.mkDiv(cx-a,cy-oy,s,(oy<<1)+hod);this.mkDiv(cx+a+wod-s+1,cy-oy,s,(oy<<1)+hod);}
else
{var _a=(width-((s-1)<<1))>>1,_b=(height-((s-1)<<1))>>1,_x=0,_y=_b,_aa=(_a*_a)<<1,_bb=(_b*_b)<<1,_st=(_aa>>1)*(1-(_b<<1))+_bb,_tt=(_bb>>1)-_aa*((_b<<1)-1),pxl=new Array(),pxt=new Array(),_pxb=new Array();pxl[0]=0;pxt[0]=b;_pxb[0]=_b-1;while(y>0)
{if(st<0)
{st+=bb*((x<<1)+3);tt+=(bb<<1)*(++x);pxl[pxl.length]=x;pxt[pxt.length]=y;}
else if(tt<0)
{st+=bb*((x<<1)+3)-(aa<<1)*(y-1);tt+=(bb<<1)*(++x)-aa*(((y--)<<1)-3);pxl[pxl.length]=x;pxt[pxt.length]=y;}
else
{tt-=aa*((y<<1)-3);st-=(aa<<1)*(--y);}
if(_y>0)
{if(_st<0)
{_st+=_bb*((_x<<1)+3);_tt+=(_bb<<1)*(++_x);_pxb[_pxb.length]=_y-1;}
else if(_tt<0)
{_st+=_bb*((_x<<1)+3)-(_aa<<1)*(_y-1);_tt+=(_bb<<1)*(++_x)-_aa*(((_y--)<<1)-3);_pxb[_pxb.length]=_y-1;}
else
{_tt-=_aa*((_y<<1)-3);_st-=(_aa<<1)*(--_y);_pxb[_pxb.length-1]--;}}}
var ox=0,oy=b,_oy=_pxb[0],l=pxl.length,w,h;for(var i=0;i<l;i++)
{if(typeof _pxb[i]!="undefined")
{if(_pxb[i]<_oy||pxt[i]<oy)
{x=pxl[i];this.mkOvQds(cx,cy,-x+1,ox+wod,-oy,_oy+hod,x-ox,oy-_oy);ox=x;oy=pxt[i];_oy=_pxb[i];}}
else
{x=pxl[i];this.mkDiv(cx-x+1,cy-oy,1,(oy<<1)+hod);this.mkDiv(cx+ox+wod,cy-oy,1,(oy<<1)+hod);ox=x;oy=pxt[i];}}
this.mkDiv(cx-a,cy-oy,1,(oy<<1)+hod);this.mkDiv(cx+ox+wod,cy-oy,1,(oy<<1)+hod);}}
function mkOvDott(left,top,width,height)
{var a=width>>1,b=height>>1,wod=width&1,hod=height&1,cx=left+a,cy=top+b,x=0,y=b,aa2=(a*a)<<1,aa4=aa2<<1,bb=(b*b)<<1,st=(aa2>>1)*(1-(b<<1))+bb,tt=(bb>>1)-aa2*((b<<1)-1),drw=true;while(y>0)
{if(st<0)
{st+=bb*((x<<1)+3);tt+=(bb<<1)*(++x);}
else if(tt<0)
{st+=bb*((x<<1)+3)-aa4*(y-1);tt+=(bb<<1)*(++x)-aa2*(((y--)<<1)-3);}
else
{tt-=aa2*((y<<1)-3);st-=aa4*(--y);}
if(drw)this.mkOvQds(cx,cy,-x,x+wod,-y,y+hod,1,1);drw=!drw;}}
function mkRect(x,y,w,h)
{var s=this.stroke;this.mkDiv(x,y,w,s);this.mkDiv(x+w,y,s,h);this.mkDiv(x,y+h,w+s,s);this.mkDiv(x,y+s,s,h-s);}
function mkRectDott(x,y,w,h)
{this.drawLine(x,y,x+w,y);this.drawLine(x+w,y,x+w,y+h);this.drawLine(x,y+h,x+w,y+h);this.drawLine(x,y,x,y+h);}
function jsgFont()
{this.PLAIN='font-weight:normal;';this.BOLD='font-weight:bold;';this.ITALIC='font-style:italic;';this.ITALIC_BOLD=this.ITALIC+this.BOLD;this.BOLD_ITALIC=this.ITALIC_BOLD;}
var Font=new jsgFont();function jsgStroke()
{this.DOTTED=-1;}
var Stroke=new jsgStroke();function jsGraphics(id,wnd)
{this.setColor=new Function('arg','this.color = arg.toLowerCase();');this.setStroke=function(x)
{this.stroke=x;if(!(x+1))
{this.drawLine=mkLinDott;this.mkOv=mkOvDott;this.drawRect=mkRectDott;}
else if(x-1>0)
{this.drawLine=mkLin2D;this.mkOv=mkOv2D;this.drawRect=mkRect;}
else
{this.drawLine=mkLin;this.mkOv=mkOv;this.drawRect=mkRect;}};this.setPrintable=function(arg)
{this.printable=arg;if(jg_fast)
{this.mkDiv=mkDivIe;this.htmRpc=arg?htmPrtRpc:htmRpc;}
else this.mkDiv=jg_n4?mkLyr:arg?mkDivPrt:mkDiv;};this.setFont=function(fam,sz,sty)
{this.ftFam=fam;this.ftSz=sz;this.ftSty=sty||Font.PLAIN;};this.drawPolyline=this.drawPolyLine=function(x,y,s)
{for(var i=0;i<x.length-1;i++)
this.drawLine(x[i],y[i],x[i+1],y[i+1]);};this.fillRect=function(x,y,w,h)
{this.mkDiv(x,y,w,h);};this.drawPolygon=function(x,y)
{this.drawPolyline(x,y);this.drawLine(x[x.length-1],y[x.length-1],x[0],y[0]);};this.drawEllipse=this.drawOval=function(x,y,w,h)
{this.mkOv(x,y,w,h);};this.fillEllipse=this.fillOval=function(left,top,w,h)
{var a=(w-=1)>>1,b=(h-=1)>>1,wod=(w&1)+1,hod=(h&1)+1,cx=left+a,cy=top+b,x=0,y=b,ox=0,oy=b,aa2=(a*a)<<1,aa4=aa2<<1,bb=(b*b)<<1,st=(aa2>>1)*(1-(b<<1))+bb,tt=(bb>>1)-aa2*((b<<1)-1),pxl,dw,dh;if(w+1)while(y>0)
{if(st<0)
{st+=bb*((x<<1)+3);tt+=(bb<<1)*(++x);}
else if(tt<0)
{st+=bb*((x<<1)+3)-aa4*(y-1);pxl=cx-x;dw=(x<<1)+wod;tt+=(bb<<1)*(++x)-aa2*(((y--)<<1)-3);dh=oy-y;this.mkDiv(pxl,cy-oy,dw,dh);this.mkDiv(pxl,cy+y+hod,dw,dh);ox=x;oy=y;}
else
{tt-=aa2*((y<<1)-3);st-=aa4*(--y);}}
this.mkDiv(cx-a,cy-oy,w+1,(oy<<1)+hod);};this.fillPolygon=function(array_x,array_y)
{var i;var y;var miny,maxy;var x1,y1;var x2,y2;var ind1,ind2;var ints;var n=array_x.length;if(!n)return;miny=array_y[0];maxy=array_y[0];for(i=1;i<n;i++)
{if(array_y[i]<miny)
miny=array_y[i];if(array_y[i]>maxy)
maxy=array_y[i];}
for(y=miny;y<=maxy;y++)
{var polyInts=new Array();ints=0;for(i=0;i<n;i++)
{if(!i)
{ind1=n-1;ind2=0;}
else
{ind1=i-1;ind2=i;}
y1=array_y[ind1];y2=array_y[ind2];if(y1<y2)
{x1=array_x[ind1];x2=array_x[ind2];}
else if(y1>y2)
{y2=array_y[ind1];y1=array_y[ind2];x2=array_x[ind1];x1=array_x[ind2];}
else continue;if((y>=y1)&&(y<y2))
polyInts[ints++]=Math.round((y-y1)*(x2-x1)/(y2-y1)+x1);else if((y==maxy)&&(y>y1)&&(y<=y2))
polyInts[ints++]=Math.round((y-y1)*(x2-x1)/(y2-y1)+x1);}
polyInts.sort(integer_compare);for(i=0;i<ints;i+=2)
this.mkDiv(polyInts[i],y,polyInts[i+1]-polyInts[i]+1,1);}};this.drawString=function(txt,x,y)
{this.htm+='<div style="position:absolute;white-space:nowrap;'+'left:'+x+'px;'+'top:'+y+'px;'+'font-family:'+this.ftFam+';'+'font-size:'+this.ftSz+';'+'color:'+this.color+';'+this.ftSty+'">'+
txt+'<\/div>';};this.drawStringRect=function(txt,x,y,width,halign)
{this.htm+='<div style="position:absolute;overflow:hidden;'+'left:'+x+'px;'+'top:'+y+'px;'+'width:'+width+'px;'+'text-align:'+halign+';'+'font-family:'+this.ftFam+';'+'font-size:'+this.ftSz+';'+'color:'+this.color+';'+this.ftSty+'">'+
txt+'<\/div>';};this.drawImage=function(imgSrc,x,y,w,h,a)
{this.htm+='<div style="position:absolute;'+'left:'+x+'px;'+'top:'+y+'px;'+'width:'+w+';'+'height:'+h+';">'+'<img src="'+imgSrc+'" width="'+w+'" height="'+h+'"'+(a?(' '+a):'')+'>'+'<\/div>';};this.clear=function()
{this.htm="";if(this.cnv)this.cnv.innerHTML=this.defhtm;};this.mkOvQds=function(cx,cy,xl,xr,yt,yb,w,h)
{this.mkDiv(xr+cx,yt+cy,w,h);this.mkDiv(xr+cx,yb+cy,w,h);this.mkDiv(xl+cx,yb+cy,w,h);this.mkDiv(xl+cx,yt+cy,w,h);};this.setStroke(1);this.setFont('verdana,geneva,helvetica,sans-serif',String.fromCharCode(0x31,0x32,0x70,0x78),Font.PLAIN);this.color='#000000';this.htm='';this.wnd=wnd||window;if(!(jg_ie||jg_dom||jg_ihtm))chkDHTM();if(typeof id!='string'||!id)this.paint=pntDoc;else
{this.cnv=document.all?(this.wnd.document.all[id]||null):document.getElementById?(this.wnd.document.getElementById(id)||null):null;this.defhtm=(this.cnv&&this.cnv.innerHTML)?this.cnv.innerHTML:'';this.paint=jg_dom?pntCnvDom:jg_ie?pntCnvIe:jg_ihtm?pntCnvIhtm:pntCnv;}
this.setPrintable(false);}
function integer_compare(x,y)
{return(x<y)?-1:((x>y)*1);}
function CanvasChartPainterFactory(){return new CanvasChartPainter();}
function CanvasChartPainter(){this.base=AbstractChartPainter;};CanvasChartPainter.prototype=new AbstractChartPainter;CanvasChartPainter.prototype.create=function(el){while(el.firstChild){el.removeChild(el.lastChild);}
this.el=el;this.w=el.clientWidth-4;this.h=el.clientHeight;this.canvas=document.createElement('canvas');this.canvas.width=this.w;this.canvas.height=this.h;this.canvas.style.width=this.w+'px';this.canvas.style.height=this.h+'px';el.appendChild(this.canvas);if((!this.canvas.getContext)&&(typeof G_vmlCanvasManager!="undefined")){this.canvas=G_vmlCanvasManager.initElement(this.canvas);}};CanvasChartPainter.prototype.init=function(xlen,ymin,ymax,xgd,ygd,bLegendLabels){this.ctx=this.canvas.getContext('2d');this.chartx=0;this.chartw=this.w;this.charth=this.h;this.charty=0;this.xlen=xlen;this.ymin=ymin;this.ymax=ymax;this.xgd=xgd;this.ygd=ygd;this.calc(this.chartw,this.charth,xlen,ymin,ymax,xgd,ygd);};CanvasChartPainter.prototype.drawLegend=function(series){var legend,list,item,label;legend=document.createElement('div');legend.className='legend';legend.style.position='absolute';list=document.createElement('ul');for(i=0;i<series.length;i++){item=document.createElement('li');item.style.color=series[i].color;label=document.createElement('span');label.appendChild(document.createTextNode(series[i].label));label.style.color='black';item.appendChild(label);list.appendChild(item);}
legend.appendChild(list);this.el.appendChild(legend);legend.style.right='0px';legend.style.top=this.charty+(this.charth/2)-(legend.offsetHeight/2)+'px';this.legend=legend;this.chartw=this.w-(this.legend.offsetWidth+5);this.calc(this.chartw,this.charth,this.xlen,this.ymin,this.ymax,this.xgd,this.ygd);};CanvasChartPainter.prototype.drawVerticalAxis=function(ygd,precision,axisColor,vAxisLabelsClassName){var axis,item,step,y,ty,n,yoffset,value,multiplier,w,items,pos,labelskew;multiplier=Math.pow(10,precision);step=this.range/(ygd-1);axis=document.createElement('div');axis.className=vAxisLabelsClassName;axis.style.position='absolute';axis.style.left='0px';axis.style.top='0px';axis.style.textAlign='right';this.el.appendChild(axis);this.ctx.fillStyle=axisColor;w=0;items=new Array();for(n=0,i=this.ymax;(i>this.ymin)&&(n<ygd-1);i-=step,n++){item=document.createElement('span');value=parseInt(i*multiplier)/multiplier;item.appendChild(document.createTextNode(value));axis.appendChild(item);items.push([i,item]);if(item.offsetWidth>w){w=item.offsetWidth;}}
item=document.createElement('span');item.appendChild(document.createTextNode(this.ymin));axis.appendChild(item);items.push([this.ymin,item]);if(item.offsetWidth>w){w=item.offsetWidth;}
axis.style.width=w+'px';this.chartx=w+5;this.charty=item.offsetHeight/2;this.charth=this.h-((item.offsetHeight*1.5)+5);this.chartw=this.w-(((this.legend)?this.legend.offsetWidth:0)+w+10);this.calc(this.chartw,this.charth,this.xlen,this.ymin,this.ymax,this.xgd,this.ygd);n=this.range/this.charth;yoffset=(this.ymin/n);labelskew=item.offsetHeight/2;for(i=0;i<items.length;i++){item=items[i][1];pos=items[i][0];if(pos==this.ymin){y=this.charty+this.charth-1;}
else{y=this.charty+(this.charth-(pos/n)+yoffset);}
this.ctx.fillRect(this.chartx-5,y,5,1);ty=y-labelskew;item.style.position='absolute';item.style.right='0px';item.style.top=(Math.round(100*ty)*0.01)+'px';}};CanvasChartPainter.prototype.drawHorizontalAxis=function(xlen,labels,xgd,precision,axisColor,hAxisLabelsClassName){var axis,item,step,x,tx,n,multiplier,ow;multiplier=Math.pow(10,precision);n=this.chartw/(xgd-1);axis=document.createElement('div');axis.className=hAxisLabelsClassName;axis.style.position='absolute';axis.style.left='0px';axis.style.top=(this.charty+this.charth+5)+'px';axis.style.width=this.w+'px';this.el.appendChild(axis);this.ctx.fillStyle=axisColor;for(i=0;i<xgd;i++){if((labels[i]!=undefined)&&(labels[i]!='')){item=document.createElement('span');item.appendChild(document.createTextNode(labels[i]));axis.appendChild(item);x=this.chartx+(n*i);ow=item.offsetWidth;tx=Math.min(this.chartx+this.chartw-ow,x-(ow/2));item.style.position='absolute';item.style.left=tx+'px';item.style.top='0px';this.ctx.fillRect(x,this.charty+this.charth,1,5);};}};CanvasChartPainter.prototype.drawTooltips=function(xgd,labelValues,series){var item,x,n,title;n=this.chartw/(xgd-1);for(i=0;i<xgd;i++){if(labelValues[i]!=undefined){var title,item;title=labelValues[i];for(j=0,k=series.length;j<k;j++){title+=" | "+series[j].shortLabel+": "+series[j].getTooltip(i);};item=document.createElement('span');item.onmouseover=function(){window.status=this.title;};item.onmouseout=function(){window.status='';};item.title=title;x=this.chartx+(n*i);item.style.position='absolute';item.style.top=this.charty+'px';item.style.height=this.charth+'px';item.style.left=x+'px';item.style.width=Math.min(this.chartw+this.chartx-x,n+1)+'px';this.el.appendChild(item);};}};CanvasChartPainter.prototype.drawAxis=function(axisColor){this.ctx.fillStyle=axisColor;this.ctx.fillRect(this.chartx,this.charty,1,this.charth-1);this.ctx.fillRect(this.chartx,this.charty+this.charth-1,this.chartw+1,1);};CanvasChartPainter.prototype.drawBackground=function(bgcolor){this.ctx.fillStyle=bgcolor;this.ctx.fillRect(0,0,this.w,this.h);};CanvasChartPainter.prototype.drawChart=function(labels,color){this.ctx.fillStyle=color;if(this.xgrid){var j=1;for(i=this.xgrid;i<this.chartw;i+=this.xgrid){if(labels[j]!=''){this.ctx.fillRect(this.chartx+i,this.charty,1,this.charth-1);};j++;}}
if(this.ygrid){for(i=this.charth-this.ygrid;i>0;i-=this.ygrid){this.ctx.fillRect(this.chartx+1,this.charty+i,this.chartw,1);}}};CanvasChartPainter.prototype.drawArea=function(color,fillColor,strokeWidth,values){var i,len,x,y,n,yoffset,oldStrokeWidth,skew;skew=Math.floor(strokeWidth/2);n=this.range/this.charth;yoffset=(this.ymin/n);len=values.length;if(len){oldStrokeWidth=this.ctx.lineWidth;this.ctx.lineWidth=0;this.ctx.fillStyle=fillColor;this.ctx.strokeStyle=color;x=this.chartx+1;this.ctx.beginPath();this.ctx.moveTo(x,this.charty+this.charth-1);y=this.charty+this.charth-(values[0]/n)+yoffset;this.ctx.lineTo(x,y);for(i=1;i<len;i++){y=this.charty+this.charth-(values[i]/n)+yoffset;x+=this.xstep;this.ctx.lineTo(x,y);}
this.ctx.lineTo(x,this.charty+this.charth-1);this.ctx.closePath();this.ctx.fill();this.ctx.lineWidth=strokeWidth;x=this.chartx+1;this.ctx.beginPath();y=this.charty+this.charth-(values[0]/n)+yoffset;this.ctx.moveTo(x,y+skew);for(i=1;i<len;i++){y=this.charty+this.charth-(values[i]/n)+yoffset;x+=this.xstep;this.ctx.lineTo(x,y+skew);}
this.ctx.stroke();this.ctx.lineWidth=oldStrokeWidth;}};CanvasChartPainter.prototype.drawLine=function(color,fillColor,strokeWidth,values){var i,len,x,y,n,yoffset,oldStrokeWidth;n=this.range/this.charth;yoffset=(this.ymin/n);len=values.length;if(len){oldStrokeWidth=this.ctx.lineWidth;this.ctx.lineWidth=strokeWidth;this.ctx.strokeStyle=color;x=this.chartx+1;y=this.charty+this.charth-(values[0]/n)+yoffset;this.ctx.beginPath();this.ctx.moveTo(x,y);for(i=1;i<len;i++){y=this.charty+this.charth-(values[i]/n)+yoffset;x+=this.xstep;this.ctx.lineTo(x,y);}
this.ctx.stroke();this.ctx.lineWidth=oldStrokeWidth;}};CanvasChartPainter.prototype.drawScatter=function(color,fillColor,strokeWidth,values){var i,len,x,y,n,yoffset,oldStrokeWidth;n=this.range/this.charth;yoffset=(this.ymin/n);len=values.length;if(len){oldStrokeWidth=this.ctx.lineWidth;this.ctx.lineWidth=strokeWidth;this.ctx.strokeStyle=color;x=this.chartx+1;if(values[0]!='-'){y=this.charty+this.charth-(values[0]/n)+yoffset;this.drawCross(x,y);};for(i=1;i<len;i++){x+=this.xstep;if(values[i]!='-'){y=this.charty+this.charth-(values[i]/n)+yoffset;this.drawCross(x,y);};}
this.ctx.lineWidth=oldStrokeWidth;}};CanvasChartPainter.prototype.drawCross=function(x,y){delta=4;this.ctx.beginPath();this.ctx.moveTo(x-delta,y);this.ctx.lineTo(x+delta,y);this.ctx.stroke();this.ctx.beginPath();this.ctx.moveTo(x,y-delta);this.ctx.lineTo(x,y+delta);this.ctx.stroke();};CanvasChartPainter.prototype.drawBars=function(color,fillColor,strokeWidth,values,xlen,xoffset,width){var i,len,x,y,n,yoffset,oldStrokeWidth,skew;skew=Math.floor(strokeWidth/2);n=this.range/this.charth;yoffset=(this.ymin/n);len=values.length;if(len>xlen){len=xlen;}
if(len){oldStrokeWidth=this.ctx.lineWidth;this.ctx.lineWidth=strokeWidth;this.ctx.strokeStyle=color;this.ctx.fillStyle=fillColor;x=this.chartx+xoffset+1;for(i=0;i<len;i++){y=this.charty+this.charth-(values[i]/n)+yoffset;for(j=0;j<2;j++){this.ctx.beginPath();this.ctx.moveTo(x+skew,this.charty+this.charth-skew);this.ctx.lineTo(x+skew,y+skew);this.ctx.lineTo(x+width-skew,y+skew);this.ctx.lineTo(x+width-skew,this.charty+this.charth-skew);this.ctx.moveTo(x+skew,this.charty+this.charth-skew);this.ctx.closePath();if(j==0){this.ctx.fill();}
else{this.ctx.stroke();};};x+=this.xstep;}
this.ctx.lineWidth=oldStrokeWidth;}};function JsGraphicsChartPainterFactory(){return new JsGraphicsChartPainter();}
function JsGraphicsChartPainter(){this.base=AbstractChartPainter;};JsGraphicsChartPainter.prototype=new AbstractChartPainter;JsGraphicsChartPainter.prototype.create=function(el){while(el.firstChild){el.removeChild(el.lastChild);}
this.el=el;this.w=el.clientWidth-4;this.h=el.clientHeight;this.canvas=document.createElement('div');this.canvas.width=this.w;this.canvas.height=this.h;this.canvas.style.width=this.w+'px';this.canvas.style.height=this.h+'px';this.canvas.style.position="relative";this.canvas.id="canvas_"+el.id;this.canvas.onselectstart=function(){return false;};el.appendChild(this.canvas);};JsGraphicsChartPainter.prototype.init=function(xlen,ymin,ymax,xgd,ygd,bLegendLabels){this.ctx=new jsGraphics(this.canvas.id);this.chartx=0;this.chartw=this.w;this.charth=this.h;this.charty=0;this.xlen=xlen;this.ymin=ymin;this.ymax=ymax;this.xgd=xgd;this.ygd=ygd;this.calc(this.chartw,this.charth,xlen,ymin,ymax,xgd,ygd);};JsGraphicsChartPainter.prototype.drawLegend=function(series){var legend,list,item,label;legend=document.createElement('div');legend.className='legend';legend.style.position='absolute';list=document.createElement('ul');for(i=0;i<series.length;i++){item=document.createElement('li');item.style.color=series[i].color;label=document.createElement('span');label.appendChild(document.createTextNode(series[i].label));label.style.color='black';item.appendChild(label);list.appendChild(item);}
legend.appendChild(list);this.el.appendChild(legend);legend.style.right='0px';legend.style.top=this.charty+(this.charth/2)-(legend.offsetHeight/2)+'px';this.legend=legend;this.chartw=this.w-(this.legend.offsetWidth+5);this.calc(this.chartw,this.charth,this.xlen,this.ymin,this.ymax,this.xgd,this.ygd);};JsGraphicsChartPainter.prototype.drawVerticalAxis=function(ygd,precision,axisColor,vAxisLabelsClassName){var axis,item,step,y,ty,n,yoffset,value,multiplier,w,items,pos,labelskew;multiplier=Math.pow(10,precision);step=this.range/(ygd-1);axis=document.createElement('div');axis.className=vAxisLabelsClassName;axis.style.position='absolute';axis.style.left='0px';axis.style.top='0px';axis.style.textAlign='right';this.el.appendChild(axis);this.ctx.setColor(axisColor);w=0;items=new Array();for(n=0,i=this.ymax;(i>this.ymin)&&(n<ygd-1);i-=step,n++){item=document.createElement('span');value=parseInt(i*multiplier)/multiplier;item.appendChild(document.createTextNode(value));axis.appendChild(item);items[items.length]=new Array(i,item);if(item.offsetWidth>w){w=item.offsetWidth;}}
item=document.createElement('span');item.appendChild(document.createTextNode(this.ymin));axis.appendChild(item);items[items.length]=new Array(this.ymin,item);if(item.offsetWidth>w){w=item.offsetWidth;}
axis.style.width=w+'px';this.chartx=w+5;this.charty=item.offsetHeight/2;this.charth=this.h-((item.offsetHeight*1.5)+5);this.chartw=this.w-(((this.legend)?this.legend.offsetWidth:0)+w+10);this.calc(this.chartw,this.charth,this.xlen,this.ymin,this.ymax,this.xgd,this.ygd);n=this.range/this.charth;yoffset=(this.ymin/n);labelskew=item.offsetHeight/2;for(i=0;i<items.length;i++){item=items[i][1];pos=items[i][0];if(pos==this.ymin){y=this.charty+this.charth-1;}
else{y=this.charty+(this.charth-(pos/n)+yoffset);}
this.ctx.drawLine(this.chartx-5,y,this.chartx,y);ty=y-labelskew;item.style.position='absolute';item.style.right='0px';item.style.top=(Math.round(100*ty)*0.01)+'px';}};JsGraphicsChartPainter.prototype.drawHorizontalAxis=function(xlen,labels,xgd,precision,axisColor,hAxisLabelsClassName){var axis,item,step,x,tx,y1,y2,n,multiplier,ow;multiplier=Math.pow(10,precision);n=this.chartw/(xgd-1);axis=document.createElement('div');axis.className=hAxisLabelsClassName;axis.style.position='absolute';axis.style.left='0px';axis.style.top=(this.charty+this.charth+5)+'px';axis.style.width=this.w+'px';this.el.appendChild(axis);this.ctx.setColor(axisColor);y1=this.charty+this.charth;y2=this.charty+this.charth+5;for(i=0;i<xgd;i++){if((labels[i]!=undefined)&&(labels[i]!='')){item=document.createElement('span');item.appendChild(document.createTextNode(labels[i]));axis.appendChild(item);x=this.chartx+(n*i);ow=item.offsetWidth;tx=Math.min(this.chartx+this.chartw-ow,x-(ow/2));item.style.position='absolute';item.style.left=tx+'px';item.style.top='0px';this.ctx.drawLine(x,y1,x,y2);};}};JsGraphicsChartPainter.prototype.drawTooltips=function(xgd,labelValues,series){var item,x,n,title;n=this.chartw/(xgd-1);for(i=0;i<xgd;i++){if(labelValues[i]!=undefined){var title,item;title=labelValues[i];for(j=0,k=series.length;j<k;j++){title+=" | "+series[j].shortLabel+": "+series[j].getTooltip(i);};item=document.createElement('span');item.onmouseover=function(){window.status=this.title;};item.onmouseout=function(){window.status='';};item.title=title;x=this.chartx+(n*i);item.style.position='absolute';item.style.top=this.charty+'px';item.style.height=this.charth+'px';item.style.left=x+'px';item.style.width=Math.min(this.chartw+this.chartx-x,n+1)+'px';this.el.appendChild(item);};}};JsGraphicsChartPainter.prototype.drawAxis=function(axisColor){var x1,x2,y1,y2;this.ctx.setColor(axisColor);x1=this.chartx;x2=this.chartx+this.chartw+1;y1=this.charty;y2=this.charty+this.charth-1;this.ctx.drawLine(x1,y1,x1,y2);this.ctx.drawLine(x1,y2,x2,y2);this.ctx.paint();};JsGraphicsChartPainter.prototype.drawBackground=function(bgcolor){this.ctx.setColor(bgcolor);this.ctx.fillRect(0,0,this.w,this.h);};JsGraphicsChartPainter.prototype.drawChart=function(labels,color){this.ctx.setColor(color);if(this.xgrid){var j=1;for(i=this.xgrid;i<this.chartw;i+=this.xgrid){if(labels[j]!=''){this.ctx.drawLine(this.chartx+i,this.charty,this.chartx+i,this.charty+this.charth-1);};j++;}}
if(this.ygrid){for(i=this.charth-this.ygrid;i>0;i-=this.ygrid){this.ctx.drawLine(this.chartx+1,this.charty+i,this.chartx+this.chartw+1,this.charty+i);}}};JsGraphicsChartPainter.prototype.drawArea=function(color,fillColor,strokeWidth,values){var i,len,x,y,n,yoffset,skew;skew=Math.floor(strokeWidth/2);var XPoints=new Array();var YPoints=new Array();n=this.range/this.charth;yoffset=(this.ymin/n);len=values.length;if(len){this.ctx.setColor(fillColor);x=this.chartx+1;y=this.charty+this.charth-1;XPoints[XPoints.length]=x;YPoints[YPoints.length]=y;y=this.charty+this.charth-(values[0]/n)+yoffset;XPoints[XPoints.length]=x;YPoints[YPoints.length]=y;for(i=1;i<len;i++){y=this.charty+this.charth-(values[i]/n)+yoffset;x+=this.xstep;XPoints[XPoints.length]=x;YPoints[YPoints.length]=y;}
XPoints[XPoints.length]=x;YPoints[YPoints.length]=this.charty+this.charth-1;this.ctx.fillPolygon(XPoints,YPoints);this.ctx.setStroke(strokeWidth);this.ctx.setColor(color);XPoints.shift();YPoints.shift();for(i=0;i<(XPoints.length-2);i++){this.ctx.drawLine(XPoints[i]-skew,YPoints[i]-skew,XPoints[i+1]-skew,YPoints[i+1]-skew);};this.ctx.setStroke(1);}};JsGraphicsChartPainter.prototype.drawLine=function(color,fillColor,strokeWidth,values){var i,len,x1,y1,x2,y2,n,yoffset,skew;skew=Math.floor(strokeWidth/2);n=this.range/this.charth;yoffset=(this.ymin/n);len=values.length;if(len){this.ctx.setStroke(strokeWidth);this.ctx.setColor(color);x1=this.chartx+1;y1=this.charty+this.charth-(values[0]/n)+yoffset;for(i=1;i<len;i++){y2=this.charty+this.charth-(values[i]/n)+yoffset;x2=x1+this.xstep;this.ctx.drawLine(x1-skew,y1-skew,x2-skew,y2-skew);x1=x2;y1=y2;}
this.ctx.setStroke(1);}};JsGraphicsChartPainter.prototype.drawScatter=function(color,fillColor,strokeWidth,values){var i,len,x1,y1,x2,y2,n,yoffset,skew;skew=Math.floor(strokeWidth/2);n=this.range/this.charth;yoffset=(this.ymin/n);len=values.length;if(len){this.ctx.setStroke(strokeWidth);this.ctx.setColor(color);x1=this.chartx+1;y1=this.charty+this.charth-(values[0]/n)+yoffset;this.drawCross(x1,y1,skew);for(i=1;i<len;i++){y2=this.charty+this.charth-(values[i]/n)+yoffset;x2=x1+this.xstep;x1=x2;this.drawCross(x2,y2,skew);}
this.ctx.setStroke(1);}};JsGraphicsChartPainter.prototype.drawCross=function(x,y,skew){delta=4;this.ctx.drawLine(x-delta-skew,y-skew,x+delta-skew,y-skew);this.ctx.drawLine(x-skew,y-delta-skew,x-skew,y+delta-skew);};JsGraphicsChartPainter.prototype.drawBars=function(color,fillColor,strokeWidth,values,xlen,xoffset,width){var i,len,x,y,n,yoffset,skew;skew=Math.floor(strokeWidth/2);n=this.range/this.charth;yoffset=(this.ymin/n);len=values.length;if(len>xlen){len=xlen;}
if(len){this.ctx.setStroke(strokeWidth);x=this.chartx+xoffset+1;for(i=0;i<len;i++){this.ctx.setColor(fillColor);y=this.charty+this.charth-(values[i]/n)+yoffset;this.ctx.fillRect(x,y,width,this.charty+this.charth-y);this.ctx.setColor(color);this.ctx.drawLine(x,this.charty+this.charth-strokeWidth,x,y);this.ctx.drawLine(x,y,x+width-strokeWidth,y);this.ctx.drawLine(x+width-strokeWidth,y,x+width-strokeWidth,this.charty+this.charth-strokeWidth);x+=this.xstep;}
this.ctx.setStroke(1);}};function SVGChartPainterFactory(){return new SVGChartPainter();}
function SVGChartPainter(){this.base=AbstractChartPainter;};SVGChartPainter.prototype=new AbstractChartPainter;SVGChartPainter.prototype.create=function(el){this.svg=el;this.w=this.svg.getAttribute('width');this.h=this.svg.getAttribute('height');if((this.w==null)&&(this.h==null)){this.w=el.offsetWidth;this.h=el.offsetHeight;this.svg=document.createElementNS('http://www.w3.org/2000/svg','svg');this.svg.setAttribute('width',this.w);this.svg.setAttribute('height',this.h);el.appendChild(this.svg);};};SVGChartPainter.prototype.init=function(xlen,ymin,ymax,xgd,ygd,bLegendLabels){this.calc(this.w,this.h,xlen,ymin,ymax,xgd,ygd);};SVGChartPainter.prototype.drawBackground=function(bgcolor){while(this.svg.firstChild){this.svg.removeChild(this.svg.lastChild);}
this._drawRect(bgcolor,0,0,this.w,this.h);};SVGChartPainter.prototype.drawChart=function(labels,color){if(this.xgrid){var j=1;for(i=this.xgrid;i<this.w;i+=this.xgrid){if(labels[j]!=''){this._drawRect(color,0+i,0,1,this.h-1);};j++;}}
if(this.ygrid){for(i=this.h-this.ygrid;i>0;i-=this.ygrid){this._drawRect(color,1,0+i,this.w,1);}}};SVGChartPainter.prototype.drawAxis=function(axisColor){this._drawRect(axisColor,0,0,1,this.h);this._drawRect(axisColor,0,this.h-1,this.w,1);};SVGChartPainter.prototype.drawArea=function(color,fillColor,strokeWidth,values){var i,len,x,y,n,yoffset,path,o;n=this.range/this.h;yoffset=(this.ymin/n);len=values.length;if(len){x=1;path='M'+x+','+(this.h-1);y=this.h-(values[0]/n)+yoffset;path+=' L'+x+','+y;for(i=1;i<len;i++){y=this.h-(values[i]/n)+yoffset;x+=this.xstep;path+=' L'+x+','+y;}
path+=' L'+x+','+(this.h-1)+' Z';o=document.createElementNS('http://www.w3.org/2000/svg','path');o.setAttribute('stroke',color);o.setAttribute('fill',color);o.setAttribute('d',path);this.svg.appendChild(o);}};SVGChartPainter.prototype.drawLine=function(color,fillColor,strokeWidth,values){var i,len,x,y,n,yoffset,path,o;n=this.range/this.h;yoffset=(this.ymin/n);len=values.length;if(len){x=1;y=this.h-(values[0]/n)+yoffset;path='M'+x+','+y;for(i=1;i<len;i++){y=this.h-(values[i]/n)+yoffset;x+=this.xstep;path+=' L'+x+','+y;}
o=document.createElementNS('http://www.w3.org/2000/svg','path');o.setAttribute('stroke',color);o.setAttribute('fill','none');o.setAttribute('stroke-width','1px');o.setAttribute('d',path);this.svg.appendChild(o);}};SVGChartPainter.prototype.drawScatter=function(color,fillColor,strokeWidth,values){var i,len,x,y,n,yoffset,path,o;n=this.range/this.h;yoffset=(this.ymin/n);len=values.length;if(len){x=1;y=this.h-(values[0]/n)+yoffset;this.drawCross(x,y,color);for(i=1;i<len;i++){y=this.h-(values[i]/n)+yoffset;x+=this.xstep;this.drawCross(x,y,color);}}};SVGChartPainter.prototype.drawCross=function(x,y,color){delta=4;path='M'+(x-delta)+','+y;path+=' L'+(x+delta)+','+y;path+=' M'+x+','+(y-delta);path+=' L'+x+','+(y+delta);o=document.createElementNS('http://www.w3.org/2000/svg','path');o.setAttribute('stroke',color);o.setAttribute('fill','none');o.setAttribute('stroke-width','1px');o.setAttribute('d',path);this.svg.appendChild(o);};SVGChartPainter.prototype.drawBars=function(color,fillColor,strokeWidth,values,xoffset,width){var i,len,x,y,n,yoffset;n=this.range/this.h;yoffset=(this.ymin/n);len=values.length;if(len){x=xoffset+1;for(i=0;i<len;i++){y=this.h-(values[i]/n);this._drawRect(color,x,y,width,this.h-y);x+=this.xstep;}}};SVGChartPainter.prototype._drawRect=function(color,x,y,w,h){var rect;rect=document.createElementNS('http://www.w3.org/2000/svg','rect');rect.setAttribute('stroke','none');rect.setAttribute('fill',color);rect.setAttribute('x',x+'px');rect.setAttribute('y',y+'px');rect.setAttribute('width',w+'px');rect.setAttribute('height',h+'px');this.svg.appendChild(rect);};var Table4Chart_config={TABLE4CHART_JS_SOURCE:'t4c-minified.js',TABLE4CHART_DEFAULT_LANG:'en',CSV_ENABLE:true,CSV_SERVER_SIDE_PATH:'csv/csv.php',IMG_ICON_TABLE_PATH:'icons/to_table.png',IMG_ICON_CHART_PATH:'icons/to_chart.png',IMG_ICON_CSV_PATH:'icons/to_csv.png',DIV_MAIN_HOOK_CLASS:'table4chart',TABLE_HEADER_CELL_HIDELABEL_CLASS:'t4c-hidelabel',TABLE_HEADER_CELL_USETITLE_CLASS:'t4c-usetitle',DIV_TOOLS_CLASS:'t4c-ui-tools',DIV_GRAPH_CLASS:'t4c-ui-graph',DIV_TOOLS_TITLE_CLASS:'t4c-title',DIV_TOOLS_SUBTITLE_CLASS:'t4c-subtitle',DIV_TOOLS_BUTTON_CLASS:'t4c-button',COLGROUP_RANGE_CLASS:'t4c-range',COLGROUP_TICKS_CLASS:'t4c-ticks',CHART_AXIS_CLASS:'t4c-axis',CHART_GRID_CLASS:'t4c-grid',CHART_HAXIS_CLASS:'t4c-haxis',CHART_VAXIS_CLASS:'t4c-vaxis',CHART_DATASET_PREFIX:'t4c-dataset',CHART_TYPE:{BAR:1,LINE:2,SCATTER:4,AREA:8,SKIP:16,DEFAULT:1},CHART_TYPE_CLASS:{BAR:'t4c-barchart',LINE:'t4c-linechart',SCATTER:'t4c-scatterchart',AREA:'t4c-areachart',SKIP:'t4c-skipchart'},DATA_TYPE:{FLOAT:1,TIME:2,DEFAULT:1},DATA_TYPE_CLASS:{FLOAT:'t4c-dt-float',TIME:'t4c-dt-time'},TITLE_CSV_BUTTON:{en:'Export to CSV file',fr:'Exporter en fichier CSV'},TITLE_GRAPH_BUTTON:{en:'Toggle between graph and table',fr:'Alterner entre graphique et table'}};function Table4Chart_ui(){var graph_div;var table;var tools_div;var b1;var wrapper_div;var state_is_graph;var needs_resize;var cached_dataset;var csv;function init(t,dataset){cached_dataset=dataset;table=t;csv='';wrapper_div=t.parentNode;var wrapper_div_height=wrapper_div.offsetHeight;table.style.display='none';if(table.caption){table.caption.style.display='none';};tools_div=document.createElement('div');tools_div.className=Table4Chart_config.DIV_TOOLS_CLASS;tools_div.style.width='100%';tools_div.style.position='relative';wrapper_div.insertBefore(tools_div,table);create_tools(cached_dataset);var tools_div_height=tools_div.offsetHeight;var graph_div_height=wrapper_div_height-tools_div_height-4;tools_div.style.height=tools_div_height+'px';graph_div=document.createElement('div');graph_div.className=Table4Chart_config.DIV_GRAPH_CLASS;if(wrapper_div.id!=''){graph_div.id='t4c-graph-div-'+wrapper_div.id;};graph_div.style.width='100%';graph_div.style.height=graph_div_height+'px';table.style.height=graph_div_height+'px';table.style.overflow='auto';graph_div.style.position='relative';wrapper_div.appendChild(graph_div);Table4Chart_plot_webfx.draw(graph_div,cached_dataset);Table4Chart_helper.add_event(window,'resize',handle_resize);wrapper_div.refresh=function(){handle_resize();};needs_resize=false;};function handle_resize(){if(state_is_graph){for(i=graph_div.childNodes.length-1;i>0;i--){graph_div.removeChild(graph_div.childNodes.item(i));};Table4Chart_plot_webfx.draw(graph_div,cached_dataset);needs_resize=false;}
else{needs_resize=true;};};function create_tools(data){var f1=document.createElement('form');f1.style.width='22px';f1.style.height='18px';f1.style.position='absolute';f1.style.right=0;f1.style.top=0;f1.style.margin=0;f1.style.padding=0;b1=document.createElement('input');b1.type='image';b1.title=Table4Chart_config.TITLE_GRAPH_BUTTON[Table4Chart_helper.get_js_param('lang')];b1.src=Table4Chart_helper.get_table4chart_working_directory()+Table4Chart_config.IMG_ICON_TABLE_PATH;b1.style.backgroundColor='transparent';b1.style.borderWidth=0;b1.style.height='16px';b1.style.margin=0;b1.style.outlineWidth=0;b1.style.padding=0;b1.style.width='16px';b1.name='t2c';b1.value='t2c';f1.appendChild(b1);tools_div.appendChild(f1);Table4Chart_helper.add_event(f1,'submit',toggle_state);if(Table4Chart_config.CSV_ENABLE){var f2=document.createElement('form');f2.method='post';f2.action=Table4Chart_helper.get_table4chart_working_directory()+Table4Chart_config.CSV_SERVER_SIDE_PATH;f2.style.width='22px';f2.style.height='18px';f2.style.position='absolute';f2.style.right='22px';f2.style.top=0;f2.style.margin=0;f2.style.padding=0;var ta=document.createElement('textarea');ta.style.display='none';ta.name='data';f2.appendChild(ta);var b2=document.createElement('input');b2.type='image';b2.title=Table4Chart_config.TITLE_CSV_BUTTON[Table4Chart_helper.get_js_param('lang')];b2.src=Table4Chart_helper.get_table4chart_working_directory()+Table4Chart_config.IMG_ICON_CSV_PATH;b2.style.backgroundColor='transparent';b2.style.borderWidth=0;b2.style.height='16px';b2.style.margin=0;b2.style.outlineWidth=0;b2.style.padding=0;b2.style.width='16px';b2.name='csv';b2.value='csv';f2.appendChild(b2);tools_div.appendChild(f2);Table4Chart_helper.add_event(f2,'submit',get_csv_in_form);};var d=document.createElement('div');d.className=Table4Chart_config.DIV_TOOLS_TITLE_CLASS;var title=data.get_title();if(title==''){title='\u00a0';};var t=document.createTextNode(title);d.appendChild(t);tools_div.appendChild(d);d=document.createElement('div');d.className=Table4Chart_config.DIV_TOOLS_SUBTITLE_CLASS;t=document.createTextNode(data.get_subtitle());d.appendChild(t);tools_div.appendChild(d);state_is_graph=true;};function get_graph_div(){return graph_div;};function toggle_state(evt){if(state_is_graph){graph_div.style.display='none';table.style.display='block';b1.src=Table4Chart_helper.get_table4chart_working_directory()+Table4Chart_config.IMG_ICON_CHART_PATH;state_is_graph=false;}
else{table.style.display='none';graph_div.style.display='block';b1.src=Table4Chart_helper.get_table4chart_working_directory()+Table4Chart_config.IMG_ICON_TABLE_PATH;state_is_graph=true;if(needs_resize){setTimeout(function(){handle_resize()},1);};};if(evt.stopPropagation){evt.stopPropagation();}
else{evt.cancelBubble=true;};if(evt.preventDefault){evt.preventDefault();}
else{evt.returnValue=false;};return false;};function get_csv_in_form(evt){extract_csv();if(evt.target){elem=evt.target;}
else{elem=evt.srcElement;};elem.getElementsByTagName('textarea')[0].value=csv;return true;};function extract_csv(){var c;var row;var rows;var line;if(csv!=''){return;};rows=table.getElementsByTagName('tr');for(var i=0;i<rows.length;i++){row=rows.item(i);line='';for(var j=0;j<row.childNodes.length;j++){c=row.childNodes.item(j);if((c.nodeType==1)&&((c.tagName.toLowerCase()=='th')||(c.tagName.toLowerCase()=='td'))){if(c.hasChildNodes()){nodevalue=c.firstChild.nodeValue;}
else{nodevalue='';};if(line==''){line='"'+nodevalue+'"';}
else{line+=', "'+nodevalue+'"';};};};csv+=line+"\u000a";};};return{get_graph_div:get_graph_div,init:init};};function Table4Chart_data_set(){var datatype='';var title='';var short_title='';var graph_type='';var border_color='';var bg_color='';var line_thickness=1;var values=new Array();var tooltips=new Array();function add_value(s,t){values.push(s);if(typeof t=="undefined"){tooltips.push(s);}
else{tooltips.push(t);};};function get_bg_color(){return bg_color;};function get_border_color(){return border_color;};function get_datatype(){return datatype;};function get_graph_type(){return graph_type;};function get_line_thickness(){return line_thickness;};function get_short_title(){return short_title;};function get_title(){return title;};function get_tooltips(){return tooltips;};function get_values(){return values;};function get_values_as_floats(){switch(datatype){case Table4Chart_config.DATA_TYPE.TIME:var out=new Array();for(var i=0;i<values.length;i++){out.push(Table4Chart_helper.time_to_float(values[i]));};return out;break;case Table4Chart_config.DATA_TYPE.FLOAT:return values;break;};};function length(){return values.length;};function set_bg_color(c){bg_color=c;};function set_border_color(c){border_color=c;};function set_datatype(s){datatype=s;};function set_graph_type(s){graph_type=s;};function set_line_thickness(t){line_thickness=t;};function set_short_title(s){short_title=s;};function set_title(s){title=s;};return{add_value:add_value,get_bg_color:get_bg_color,get_border_color:get_border_color,get_datatype:get_datatype,get_graph_type:get_graph_type,get_line_thickness:get_line_thickness,get_short_title:get_short_title,get_title:get_title,get_tooltips:get_tooltips,get_values:get_values,get_values_as_floats:get_values_as_floats,length:length,set_bg_color:set_bg_color,set_border_color:set_border_color,set_datatype:set_datatype,set_graph_type:set_graph_type,set_line_thickness:set_line_thickness,set_short_title:set_short_title,set_title:set_title};};function Table4Chart_table_data(){var datasets=new Array();var subtitle='';var title='';var x_labels=new Array();var x_label_values=new Array();var forced_y_min_value=0;var forced_y_max_value=0;var forced_y_range=false;var number_of_y_ticks=5;var grid_color='#999';var axis_color='#333';var default_colors=['#f90','#f00','#00c','#090','#c0c','#099','#999','#333'];function add_dataset(s){datasets.push(s);};function add_x_label(s){x_labels.push(s);};function add_x_label_value(s){x_label_values.push(s);};function get_axis_color(){return axis_color;};function get_grid_color(){return grid_color;};function get_dataset(n){return datasets[n];};function get_datasets(){return datasets;};function get_datasets_border_colors(){var newcolor;var colors=default_colors.slice();for(var i=0;i<datasets.length;i++){newcolor=datasets[i].get_border_color();if(newcolor!=''){colors[i]=newcolor;};};return colors;};function get_datasets_bg_colors(){var newcolor;var colors=default_colors.slice();for(var i=0;i<datasets.length;i++){newcolor=datasets[i].get_bg_color();if(newcolor!=''){colors[i]=newcolor;};};return colors;};function get_min_value(){if(forced_y_range){return forced_y_min_value;};var result=[0];for(var i=0;i<datasets.length;i++){result=result.concat(datasets[i].get_values_as_floats());};return Math.min.apply(null,result);};function get_max_value(){if(forced_y_range){return forced_y_max_value;};var result=[0];for(var i=0;i<datasets.length;i++){result=result.concat(datasets[i].get_values_as_floats());};return Math.max.apply(null,result);};function get_number_of_datasets(){return datasets.length;};function get_number_of_values(){return datasets[0].length();};function get_number_of_y_ticks(){return number_of_y_ticks;};function get_subtitle(){return subtitle;};function get_title(){return title;};function get_x_labels(){return x_labels;};function get_x_label_values(){return x_label_values;};function set_subtitle(s){subtitle=s;};function set_title(s){title=s;};function set_axis_color(c){axis_color=c;};function set_grid_color(c){grid_color=c;};function set_x_labels(s){x_labels=s;};function set_x_label_values(s){x_label_values=s;};function set_y_range(min,max){forced_y_range=true;forced_y_min_value=min;forced_y_max_value=max;};function set_y_ticks(t){number_of_y_ticks=t;};return{add_dataset:add_dataset,add_x_label:add_x_label,add_x_label_value:add_x_label_value,get_axis_color:get_axis_color,get_grid_color:get_grid_color,get_dataset:get_dataset,get_datasets:get_datasets,get_datasets_border_colors:get_datasets_border_colors,get_datasets_bg_colors:get_datasets_bg_colors,get_min_value:get_min_value,get_max_value:get_max_value,get_number_of_datasets:get_number_of_datasets,get_number_of_values:get_number_of_values,get_number_of_y_ticks:get_number_of_y_ticks,get_subtitle:get_subtitle,get_title:get_title,get_x_labels:get_x_labels,get_x_label_values:get_x_label_values,set_axis_color:set_axis_color,set_grid_color:set_grid_color,set_subtitle:set_subtitle,set_title:set_title,set_x_label_values:set_x_label_values,set_y_range:set_y_range,set_y_ticks:set_y_ticks};};var Table4Chart_helper=(function(){var cwd='';var js_param=new Array();var add_event=function(obj,ev_type,fn){if(window.opera&&obj.addEventListener){obj.addEventListener(ev_type,fn,false);return true;}
else if(obj.addEventListener){obj.addEventListener(ev_type,fn,true);return true;}
else if(obj.attachEvent){var r=obj.attachEvent("on"+ev_type,fn);return r;};return false;};var array_has=function(a,v){return array_find(a,v)!==-1;};var array_find=function(a,v,s){s=s||0;for(var i=s;i<a.length;i++)
if(a[i]==v){return i;};return-1;};var color_to_hex=function(color_string,prefix){if(prefix==null){prefix='#';};var r,g,b;if(color_string.charAt(0)=='#'){color_string=color_string.substr(1,6);};var simple_colors={aliceblue:'f0f8ff',antiquewhite:'faebd7',aqua:'00ffff',aquamarine:'7fffd4',azure:'f0ffff',beige:'f5f5dc',bisque:'ffe4c4',black:'000000',blanchedalmond:'ffebcd',blue:'0000ff',blueviolet:'8a2be2',brown:'a52a2a',burlywood:'deb887',cadetblue:'5f9ea0',chartreuse:'7fff00',chocolate:'d2691e',coral:'ff7f50',cornflowerblue:'6495ed',cornsilk:'fff8dc',crimson:'dc143c',cyan:'00ffff',darkblue:'00008b',darkcyan:'008b8b',darkgoldenrod:'b8860b',darkgray:'a9a9a9',darkgreen:'006400',darkkhaki:'bdb76b',darkmagenta:'8b008b',darkolivegreen:'556b2f',darkorange:'ff8c00',darkorchid:'9932cc',darkred:'8b0000',darksalmon:'e9967a',darkseagreen:'8fbc8f',darkslateblue:'483d8b',darkslategray:'2f4f4f',darkturquoise:'00ced1',darkviolet:'9400d3',deeppink:'ff1493',deepskyblue:'00bfff',dimgray:'696969',dodgerblue:'1e90ff',feldspar:'d19275',firebrick:'b22222',floralwhite:'fffaf0',forestgreen:'228b22',fuchsia:'ff00ff',gainsboro:'dcdcdc',ghostwhite:'f8f8ff',gold:'ffd700',goldenrod:'daa520',gray:'808080',green:'008000',greenyellow:'adff2f',honeydew:'f0fff0',hotpink:'ff69b4',indianred:'cd5c5c',indigo:'4b0082',ivory:'fffff0',khaki:'f0e68c',lavender:'e6e6fa',lavenderblush:'fff0f5',lawngreen:'7cfc00',lemonchiffon:'fffacd',lightblue:'add8e6',lightcoral:'f08080',lightcyan:'e0ffff',lightgoldenrodyellow:'fafad2',lightgrey:'d3d3d3',lightgreen:'90ee90',lightpink:'ffb6c1',lightsalmon:'ffa07a',lightseagreen:'20b2aa',lightskyblue:'87cefa',lightslateblue:'8470ff',lightslategray:'778899',lightsteelblue:'b0c4de',lightyellow:'ffffe0',lime:'00ff00',limegreen:'32cd32',linen:'faf0e6',magenta:'ff00ff',maroon:'800000',mediumaquamarine:'66cdaa',mediumblue:'0000cd',mediumorchid:'ba55d3',mediumpurple:'9370d8',mediumseagreen:'3cb371',mediumslateblue:'7b68ee',mediumspringgreen:'00fa9a',mediumturquoise:'48d1cc',mediumvioletred:'c71585',midnightblue:'191970',mintcream:'f5fffa',mistyrose:'ffe4e1',moccasin:'ffe4b5',navajowhite:'ffdead',navy:'000080',oldlace:'fdf5e6',olive:'808000',olivedrab:'6b8e23',orange:'ffa500',orangered:'ff4500',orchid:'da70d6',palegoldenrod:'eee8aa',palegreen:'98fb98',paleturquoise:'afeeee',palevioletred:'d87093',papayawhip:'ffefd5',peachpuff:'ffdab9',peru:'cd853f',pink:'ffc0cb',plum:'dda0dd',powderblue:'b0e0e6',purple:'800080',red:'ff0000',rosybrown:'bc8f8f',royalblue:'4169e1',saddlebrown:'8b4513',salmon:'fa8072',sandybrown:'f4a460',seagreen:'2e8b57',seashell:'fff5ee',sienna:'a0522d',silver:'c0c0c0',skyblue:'87ceeb',slateblue:'6a5acd',slategray:'708090',snow:'fffafa',springgreen:'00ff7f',steelblue:'4682b4',tan:'d2b48c',teal:'008080',thistle:'d8bfd8',tomato:'ff6347',turquoise:'40e0d0',violet:'ee82ee',violetred:'d02090',wheat:'f5deb3',white:'ffffff',whitesmoke:'f5f5f5',yellow:'ffff00',yellowgreen:'9acd32'};for(var key in simple_colors){if(color_string==key){color_string=simple_colors[key];};};color_string=color_string.replace(/ /g,'');color_string=color_string.toLowerCase();var color_defs=[{re:/^rgb\((\d{1,3}),\s*(\d{1,3}),\s*(\d{1,3})\)$/,process:function(bits){return[parseInt(bits[1]),parseInt(bits[2]),parseInt(bits[3])];}},{re:/^(\w{2})(\w{2})(\w{2})$/,process:function(bits){return[parseInt(bits[1],16),parseInt(bits[2],16),parseInt(bits[3],16)];}},{re:/^(\w{1})(\w{1})(\w{1})$/,process:function(bits){return[parseInt(bits[1]+bits[1],16),parseInt(bits[2]+bits[2],16),parseInt(bits[3]+bits[3],16)];}}];for(var i=0;i<color_defs.length;i++){var re=color_defs[i].re;var processor=color_defs[i].process;var bits=re.exec(color_string);if(bits){channels=processor(bits);r=channels[0];g=channels[1];b=channels[2];};};r=(r<0||isNaN(r))?0:((r>255)?255:r);g=(g<0||isNaN(g))?0:((g>255)?255:g);b=(b<0||isNaN(b))?0:((b>255)?255:b);r=r.toString(16);g=g.toString(16);b=b.toString(16);if(r.length==1){r='0'+r;};if(g.length==1){g='0'+g;};if(b.length==1){b='0'+b;};return prefix+r+g+b;};var element_has_class=function(e,c){return array_has(e.className.split(' '),c)};var element_get_class_arguments=function(e,base_class){var c=e.className;var r=new RegExp('^.*\\b('+base_class+')([-A-Za-z0-9_]*)\\b.*$');var arg_string=c.replace(r,"$2");if(arg_string==''){return false;};arg_string=arg_string.replace(/--/,'-!');var arg_array=arg_string.split(/-/);if(arg_array[0]==''){arg_array.shift();};for(var i=0;i<arg_array.length;i++){arg_array[i]=arg_array[i].replace(/!/,'-');};return arg_array;};var get_js_param=function(p){if(js_param.length<1){js_param['lang']=Table4Chart_config.TABLE4CHART_DEFAULT_LANG='en';parse_script_path();};return js_param[p];};var get_table4chart_working_directory=function(){if(cwd==''){parse_script_path();};return cwd;};var parse_script_path=function(){var js_path='';var js_param_tmp='';var script_tags=document.getElementsByTagName("script");var r_to_match=new RegExp('^(.*)'+Table4Chart_config.TABLE4CHART_JS_SOURCE+'\\??(.*)$');for(var i=0;i<script_tags.length;i++){s=script_tags[i];if(s.nodeType!=1||s.tagName.toLowerCase()!="script"){continue;};var re=false;if((re=s.src.match(r_to_match))){cwd=re[1];js_param_tmp=re[2];if(js_param_tmp!=''){var js_param_tmp_a=js_param_tmp.split('&');var var_holder;for(var j=0;j<js_param_tmp_a.length;j++){var_holder=js_param_tmp_a[j].split('=');js_param[var_holder[0]]=var_holder[1];};};break;};};if(cwd==''){window.alert("Cannot find the current table4chart installation path.  Fix the code :)");};};var get_style=function(element,rule){if(document.defaultView&&document.defaultView.getComputedStyle){var value=document.defaultView.getComputedStyle(element,'').getPropertyValue(rule.replace(/[A-Z]/g,function(match){return"-"+match.toLowerCase();}));}
else if(element.currentStyle){var value=element.currentStyle[rule];}
else{var value=false;};return value;};var listen=function(event,elem,func){if(elem.addEventListener){elem.addEventListener(event,func,false);}
else if(elem.attachEvent){elem.attachEvent('on'+event,function(){func(new W3CDOM_Event(elem))});}
else{throw'cannot add event listener';};};var time_to_float=function(t){var datefrac=t.toString().split(":");return parseFloat(datefrac[0])+parseFloat((parseFloat(datefrac[1])/60));};return{add_event:add_event,array_has:array_has,color_to_hex:color_to_hex,element_has_class:element_has_class,element_get_class_arguments:element_get_class_arguments,get_js_param:get_js_param,get_table4chart_working_directory:get_table4chart_working_directory,get_style:get_style,time_to_float:time_to_float};})();var Table4Chart_plot_webfx=(function(){var draw=function(container,table_data){var skip_row;var c=new Chart(container);c.setGridColor(table_data.get_grid_color());c.setAxisColor(table_data.get_axis_color());c.setGridDensity(table_data.get_number_of_values(),table_data.get_number_of_y_ticks());c.setVerticalRange(table_data.get_min_value(),table_data.get_max_value());c.setHorizontalLabels(table_data.get_x_labels());c.setHorizontalLabelValues(table_data.get_x_label_values());c.setBackgroundColor('transparent');c.setHAxisLabelsClassName(Table4Chart_config.CHART_HAXIS_CLASS);c.setVAxisLabelsClassName(Table4Chart_config.CHART_VAXIS_CLASS);var estimated_bar_width=parseInt(container.offsetWidth)-100;estimated_bar_width/=table_data.get_number_of_datasets();estimated_bar_width/=table_data.get_number_of_values();estimated_bar_width=parseInt(estimated_bar_width);c.setBarWidth(estimated_bar_width);var border_color=table_data.get_datasets_border_colors();var bg_color=table_data.get_datasets_bg_colors();for(var j=0,jj=table_data.get_number_of_datasets();j<jj;j++){skip_row=false;d=table_data.get_dataset(j);switch(d.get_graph_type()){case Table4Chart_config.CHART_TYPE.LINE:var graphtype=CHART_LINE;break;case Table4Chart_config.CHART_TYPE.SCATTER:var graphtype=CHART_SCATTER;break;case Table4Chart_config.CHART_TYPE.BAR:var graphtype=CHART_BAR;break;case Table4Chart_config.CHART_TYPE.AREA:var graphtype=CHART_AREA;break;case Table4Chart_config.CHART_TYPE.SKIP:skip_row=true;break;};switch(d.get_datatype()){case Table4Chart_config.DATA_TYPE.TIME:var graphdatatype=SERIES_TIME;break;case Table4Chart_config.DATA_TYPE.FLOAT:var graphdatatype=SERIES_FLOAT;};if(skip_row==false){c.add(d.get_title(),d.get_short_title(),border_color[j],bg_color[j],d.get_line_thickness(),graphdatatype,d.get_values(),d.get_tooltips(),graphtype);};};c.setShowLegend(false);c.draw();};return{draw:draw}})();var Table4Chart=(function(){var tables_to_process=new Array();var tables_to_process_data=new Array();var find_table_divs_to_process=function(){to_process=new Array();divs=document.getElementsByTagName('div');for(var i=0,ii=divs.length;i<ii;i++){var d=divs.item(i);if(Table4Chart_helper.element_has_class(d,Table4Chart_config.DIV_MAIN_HOOK_CLASS)){to_process.push(d.getElementsByTagName('table').item(0));};};tables_to_process=to_process;};var initialize_data_sets=function(t,ds){var thead=t.getElementsByTagName('thead');if(thead.length){var ths=thead.item(0).getElementsByTagName('th');for(var i=1;i<ths.length;i++){ds.push(new Table4Chart_data_set());};}
else{var tbody=t.getElementsByTagName('tbody');if(tbody.length){var tbody2=tbody.item(0);var tr=tbody2.getElementsByTagName('tr').item(0);}
else{var tr=t.getElementsByTagName('tr').item(0);};var ths=tr.getElementsByTagName('td');for(var i=0;i<ths.length;i++){ds.push(new Table4Chart_data_set());};};};var push_data_sets_in_table_data=function(ds,td){for(var j=0,jj=ds.length;j<jj;j++){td.add_dataset(ds[j]);};};var retrieve_dataset_styles=function(t,ds){var test_bg_colors=new Array();var test_border_colors=new Array();var colordiv;var border_color_was_set;var border_width;var border_color;colordiv=document.createElement('div');colordiv.style.backgroundColor='#000';colordiv.style.color='#000';t.parentNode.appendChild(colordiv);for(var i=0;i<ds.length;i++){s=document.createElement('span');s.className=Table4Chart_config.CHART_DATASET_PREFIX+'-'+i;colordiv.appendChild(s);test_bg_colors.push(Table4Chart_helper.get_style(s,'backgroundColor'));test_border_colors.push(Table4Chart_helper.get_style(s,'borderTopColor'));};t.parentNode.removeChild(colordiv);colordiv=document.createElement('div');colordiv.style.backgroundColor='#fff';colordiv.style.color='#fff';t.parentNode.appendChild(colordiv);for(var i=0;i<ds.length;i++){s=document.createElement('span');s.className=Table4Chart_config.CHART_DATASET_PREFIX+'-'+i;colordiv.appendChild(s);border_width=parseInt(Table4Chart_helper.get_style(s,'borderTopWidth'));if((isNaN(border_width))||(border_width==0)){border_width=1;};ds[i].set_line_thickness(border_width);border_color_was_set=false;if((test_border_colors[i]==Table4Chart_helper.get_style(s,'borderTopColor'))&&(test_border_colors[i]!='transparent')){ds[i].set_border_color(Table4Chart_helper.color_to_hex(test_border_colors[i]));border_color_was_set=true;};if((test_bg_colors[i]==Table4Chart_helper.get_style(s,'backgroundColor'))&&(test_bg_colors[i]!='transparent')){ds[i].set_bg_color(Table4Chart_helper.color_to_hex(test_bg_colors[i]));}
else if(border_color_was_set){ds[i].set_bg_color(Table4Chart_helper.color_to_hex(test_border_colors[i]));};};t.parentNode.removeChild(colordiv);};var retrieve_graph_colors=function(t,td){var s_axis,s_grid;var s_axis_first_try,s_grid_first_try;var out_colors=new Array();var colordiv;colordiv=document.createElement('div');colordiv.style.color='#000';t.parentNode.appendChild(colordiv);s_axis=document.createElement('span');s_axis.className=Table4Chart_config.CHART_AXIS_CLASS;colordiv.appendChild(s_axis);s_axis_first_try=Table4Chart_helper.get_style(s_axis,'color');s_grid=document.createElement('span');s_grid.className=Table4Chart_config.CHART_GRID_CLASS;colordiv.appendChild(s_grid);s_grid_first_try=Table4Chart_helper.get_style(s_grid,'color');t.parentNode.removeChild(colordiv);colordiv=document.createElement('div');colordiv.style.color='#fff';t.parentNode.appendChild(colordiv);s_axis=document.createElement('span');s_axis.className=Table4Chart_config.CHART_AXIS_CLASS;colordiv.appendChild(s_axis);if(s_axis_first_try==Table4Chart_helper.get_style(s_axis,'color')){td.set_axis_color(Table4Chart_helper.color_to_hex(s_axis_first_try));};s_grid=document.createElement('span');s_grid.className=Table4Chart_config.CHART_GRID_CLASS;colordiv.appendChild(s_grid);if(s_grid_first_try==Table4Chart_helper.get_style(s_grid,'color')){td.set_grid_color(Table4Chart_helper.color_to_hex(s_grid_first_try));};t.parentNode.removeChild(colordiv);};var retrieve_data_title=function(t){return(t.caption?t.caption.firstChild.nodeValue:'');};var retrieve_data_subtitle=function(t){var st=t.getAttribute('summary');if((st!=undefined)&&(st!=null)&&(st!='')){return st;};return'';};var retrieve_data_y_range=function(t){var thead=t.getElementsByTagName('thead');if(thead.length){var row=thead.item(0).getElementsByTagName('tr').item(0);var tentative_y_range=Table4Chart_helper.element_get_class_arguments(row,Table4Chart_config.COLGROUP_RANGE_CLASS);if(tentative_y_range!==false){return new Array(tentative_y_range[0],tentative_y_range[1]);};};return false;};var retrieve_data_y_ticks=function(t){var thead=t.getElementsByTagName('thead');if(thead.length){var row=thead.item(0).getElementsByTagName('tr').item(0);var tentative_y_ticks=Table4Chart_helper.element_get_class_arguments(row,Table4Chart_config.COLGROUP_TICKS_CLASS);if(tentative_y_ticks!==false){return tentative_y_ticks[0];};};return false;};var retrieve_data_short_titles=function(t,ds){var thead=t.getElementsByTagName('thead');if(thead.length){var ths=thead.item(0).getElementsByTagName('th');for(var i=0;i<ds.length;i++){var th_abbr_value=ths.item(i+1).abbr;if((th_abbr_value==null)||(th_abbr_value=='')){var tentative_th_value=ths.item(i+1);if(tentative_th_value.firstChild){ds[i].set_short_title(tentative_th_value.firstChild.nodeValue);}
else{ds[i].set_short_title(String.fromCharCode(65+i));};}
else{ds[i].set_short_title(th_abbr_value);};};}
else{for(var i=0;i<ds.length;i++){ds[i].set_short_title(String.fromCharCode(65+i));};};};var retrieve_data_titles=function(t,ds){var thead=t.getElementsByTagName('thead');if(thead.length){var ths=thead.item(0).getElementsByTagName('th');for(var i=0;i<ds.length;i++){var tentative_th_value=ths.item(i+1);if(tentative_th_value.firstChild){ds[i].set_title(tentative_th_value.firstChild.nodeValue);}
else{ds[i].set_title(String.fromCharCode(65+i));};};}
else{for(var i=0;i<ds.length;i++){ds[i].set_title(String.fromCharCode(65+i));};};};var retrieve_data_types=function(t,ds){var thead=t.getElementsByTagName('thead');if(thead.length){var ths=thead.item(0).getElementsByTagName('th');for(var i=0;i<ds.length;i++){if(Table4Chart_helper.element_has_class(ths.item(i+1),Table4Chart_config.DATA_TYPE_CLASS.TIME)){ds[i].set_datatype(Table4Chart_config.DATA_TYPE.TIME);}
else if(Table4Chart_helper.element_has_class(ths.item(i+1),Table4Chart_config.DATA_TYPE_CLASS.FLOAT)){ds[i].set_datatype(Table4Chart_config.DATA_TYPE.FLOAT);}
else{ds[i].set_datatype(Table4Chart_config.DATA_TYPE.DEFAULT);};};}
else{for(var i=0;i<ds.length;i++){ds[i].set_datatype(Table4Chart_config.DATA_TYPE.DEFAULT);};};};var retrieve_graph_types=function(t,ds){var thead=t.getElementsByTagName('thead');if(thead.length){var ths=thead.item(0).getElementsByTagName('th');for(var j=0;j<ds.length;j++){if(Table4Chart_helper.element_has_class(ths.item(j+1),Table4Chart_config.CHART_TYPE_CLASS.BAR)){ds[j].set_graph_type(Table4Chart_config.CHART_TYPE.BAR);}
else if(Table4Chart_helper.element_has_class(ths.item(j+1),Table4Chart_config.CHART_TYPE_CLASS.LINE)){ds[j].set_graph_type(Table4Chart_config.CHART_TYPE.LINE);}
else if(Table4Chart_helper.element_has_class(ths.item(j+1),Table4Chart_config.CHART_TYPE_CLASS.SCATTER)){ds[j].set_graph_type(Table4Chart_config.CHART_TYPE.SCATTER);}
else if(Table4Chart_helper.element_has_class(ths.item(j+1),Table4Chart_config.CHART_TYPE_CLASS.AREA)){ds[j].set_graph_type(Table4Chart_config.CHART_TYPE.AREA);}
else if(Table4Chart_helper.element_has_class(ths.item(j+1),Table4Chart_config.CHART_TYPE_CLASS.SKIP)){ds[j].set_graph_type(Table4Chart_config.CHART_TYPE.SKIP);}
else{ds[j].set_graph_type(Table4Chart_config.CHART_TYPE.DEFAULT);};};}
else{for(var j=0;j<ds.length;j++){ds[j].set_graph_type(Table4Chart_config.CHART_TYPE.DEFAULT);};};};var retrieve_x_labels=function(t,td){var tbody=t.getElementsByTagName('tbody');if(!tbody.length){var trows=t.getElementsByTagName('tr');}
else{var trows=tbody.item(0).getElementsByTagName('tr');};for(var j=0;j<trows.length;j++){var tentative_x_label=trows.item(j).getElementsByTagName('th').item(0);td.add_x_label_value(tentative_x_label.firstChild.nodeValue);if(Table4Chart_helper.element_has_class(tentative_x_label,Table4Chart_config.TABLE_HEADER_CELL_HIDELABEL_CLASS)){td.add_x_label('');}
else{if(Table4Chart_helper.element_has_class(tentative_x_label,Table4Chart_config.TABLE_HEADER_CELL_USETITLE_CLASS)){td.add_x_label(tentative_x_label.title);}
else{td.add_x_label(tentative_x_label.firstChild.nodeValue);};};};};var retrieve_values=function(t,ds){var tooltip;var tbody=t.getElementsByTagName('tbody');if(tbody.length){var trows=tbody.item(0).getElementsByTagName('tr');}
else{var trows=t.getElementsByTagName('tr');};for(var j=0;j<trows.length;j++){var trvalues=trows.item(j).getElementsByTagName('td');for(var k=0;k<trvalues.length;k++){if(trvalues.item(k).firstChild){if(trvalues.item(k).title!=''){tooltip=trvalues.item(k).title;}
else{tooltip=trvalues.item(k).firstChild.nodeValue;};ds[k].add_value(trvalues.item(k).firstChild.nodeValue,tooltip);};};};};var retrieve_data=function(){for(var i=0;i<tables_to_process.length;i++){var range;var t=tables_to_process[i];var table_data=new Table4Chart_table_data();table_data.set_subtitle(retrieve_data_subtitle(t));table_data.set_title(retrieve_data_title(t));if((range=retrieve_data_y_range(t))!==false){table_data.set_y_range(range[0],range[1]);};if((ticks=retrieve_data_y_ticks(t))!==false){table_data.set_y_ticks(ticks);};var t4c_data_sets=new Array();initialize_data_sets(t,t4c_data_sets);retrieve_data_types(t,t4c_data_sets);retrieve_graph_types(t,t4c_data_sets);retrieve_data_titles(t,t4c_data_sets);retrieve_data_short_titles(t,t4c_data_sets);retrieve_x_labels(t,table_data);retrieve_values(t,t4c_data_sets);retrieve_dataset_styles(t,t4c_data_sets);retrieve_graph_colors(t,table_data);push_data_sets_in_table_data(t4c_data_sets,table_data);tables_to_process_data.push(table_data);};};var tables_draw=function(){for(var i=0;i<tables_to_process.length;i++){var ui=new Table4Chart_ui();ui.init(tables_to_process[i],tables_to_process_data[i]);};};var start=function(){find_table_divs_to_process();retrieve_data();tables_draw();};return{start:start};})();var addDOMLoadEvent=(function(){var load_events=[],load_timer,script,done,exec,old_onload,init=function(){done=true;clearInterval(load_timer);while(exec=load_events.shift()){exec();};if(script){script.onreadystatechange='';};};return function(func){if(done){return func();};if(!load_events[0]){old_onload=window.onload;window.onload=function(){init();if(old_onload)old_onload();};};load_events.push(func);};})();addDOMLoadEvent(function(){Table4Chart.start();});