/*
 * jQuery gvChart plugin
 * This plugin was created to simplify things when using Google Visualisation Charts. 
 * It still needs to be used with google script import tag, however now you can
 * crate chart from your table. 
 * All examples you will find on http://www.ivellios.toron.pl/technikalia/demos/gvChart/
 * @name jquery.gvChart-1.0.1.js
 * @author Janusz Kamieński - http://www.ivellios.toron.pl/technikalia
 * @version 1.0.1
 * @date December 04, 2010
 * @category jQuery plugin google charts
 * @copyright (c) 2010 Janusz Kamieński (www.ivellios.toron.pl)
 * @license CC Attribution Works 3.0 Poland - http://creativecommons.org/licenses/by/3.0/pl/deed.en_US
 * @example Visit http://www.ivellios.toron.pl/technikalia/demos/gvChart/ for more informations about this jQuery plugin
 */
(function (jQuery){
	jQuery.fn.gvChart = function(settings){

	defaults={
		hideTable: true,
		chartType: 'AreaChart',
		chartDivID: 'gvChartDiv',
		gvSettings: null
	};
	
	var el = document.createElement('div');
	jQuery(el).insertBefore(this);
	gvChartCount++;
	gvChartID = defaults.chartDivID+gvChartCount;
	jQuery(el).attr('id',gvChartID);
	jQuery(el).addClass('gvChart');

	if(settings){
	jQuery.extend(defaults,settings);
	}
	
	if(defaults.hideTable)
		$(this).hide();

	var data = new google.visualization.DataTable();

	// add X label
	data.addColumn('string','X labels');

	var a = new Array();

	var headers = $(this).find('thead').find('th');
	var rows = $(this).find('tbody').find('tr');

	rows.each(function(index){
		data.addColumn('number',$(this).find('th').text());
	});

	data.addRows(headers.length-1);

	headers.each(function(index){
		if(index){
			data.setCell(index-1, 0, $(this).text());
		}
	});

	rows.each(function(index){
			$(this).find('td').each(function(index2){
				data.setCell(index2, index+1, parseFloat($(this).text()));
			});
	});
	
	chartSettings = {
		title : $(this).find('caption').text()
	};
	
	if(defaults.gvSettings){
		jQuery.extend(chartSettings,defaults.gvSettings);
	}
	
	eval("var chart = new google.visualization."+defaults.chartType+"(document.getElementById('"+gvChartID+"'))");
	chart.draw(data, chartSettings);
  }
})(jQuery);


function gvChartInit(){
	gvChartCount = 0;
	google.load('visualization', '1', {packages: ['corechart']});
}

