function GVis(A,B){this.get_gChart=function(C){if(C=="table"){return google.visualization.Table}if(C=="piechart"){return google.visualization.PieChart}if(C=="barchart"){return google.visualization.BarChart}if(C=="columnchart"){return google.visualization.ColumnChart}if(C=="areachart"){return google.visualization.AreaChart}if(C=="linechart"){return google.visualization.LineChart}if(C=="scatterchart"){return google.visualization.ScatterChart}if(C=="imagesparkline"){return google.visualization.ImageSparkLine}if(C=="intensitymap"){return google.visualization.IntensityMap}if(C=="geomap"){return google.visualization.GeoMap}};this.data=new google.visualization.DataTable();this.currentRow=0;this.column_labels=new Array();this.setType=function(C){obj=this.get_gChart(C);this.chart=new obj(document.getElementById(this.div_id));this.chart_type=C;document.getElementById(this.div_id).innerHTML=""};if(A){this.div_id=A}else{return alert("No Container-Object Specified!")}if(B){this.setType(B)}else{this.setType("piechart")}this.clear=function(){this.column_labels=new Array();this.data.removeRows(0,this.data.getNumberOfRows());this.data.removeColumns(0,this.data.getNumberOfColumns())};this.setColumnLabels=function(C){this.column_labels=C};this.addColumns=function(C){for(param in C){this.data.addColumn(C[param],param)}};this.setRows=function(C){this.data.removeRows(0,this.data.getNumberOfRows());this.currentRow=0;this.addRows(C)};this.addRows=function(D){for(var C=0;C<D.length;C++){this.addRow(D[C])}};this.addRow=function(C){if(C.length==0){return }if(this.data.getNumberOfColumns()<C.length){for(var D=this.data.getNumberOfColumns();D<C.length;D++){if(this.column_labels[D]){l=this.column_labels[D]}else{l=""}t=typeof (C[D]);if(t=="boolean"){this.data.addColumn("boolean",l)}else{if(t=="number"){this.data.addColumn("number",l)}else{if(t=="string"){this.data.addColumn("string",l)}else{if(t=="object"){if(C[D].length==4){this.data.addColumn("timeofday",l)}else{try{if(C[D].getHours()>0){this.data.addColumn("datetime",l)}else{this.data.addColumn("date",l)}}catch(F){this.data.addColumn("string",l)}}}}}}}}this.data.addRows(1);for(var E=0;E<C.length;E++){this.data.setValue(this.currentRow,E,C[E])}this.currentRow++};this.draw=function(C){if(!(C)){C={}}if(!("height" in C)){C.height=360}if(!("width" in C)){C.width=600}this.chart.draw(this.data,C)}};