var DATA_TABLE = 0;
var LINE_GRAPH = 1;
var COLUMN_GRAPH = 2;
var BAR_GRAPH = 3;
var PIE_GRAPH = 4;
var AREA_GRAPH = 5;
var MSLINE_GRAPH = 6;
var STACKED_COLUMN_GRAPH = 7;
var STACKED_BAR_GRAPH = 8;
var STACKED_AREA_GRAPH = 9;
var MULTI_COLUMN_GRAPH = 10;
var SCATTER_GRAPH = 11;
var STACKED_AREA_LINE_GRAPH = 12;
var COLUMN3D_GRAPH = 13;

var _fusion_chart_ids = Array();
var _fusion_chart_data_sources = Array();
var _fusion_chart_local = Array();

function create_stacked_area_line_graph(id, data_source, width, height, local)
{
	create_common_graph(STACKED_AREA_LINE_GRAPH, id, data_source, width, height, local);
}

function create_scatter_graph(id, data_source, width, height, local)
{
	create_common_graph(SCATTER_GRAPH, id, data_source, width, height, local);
}

function create_pie_graph(id, data_source, width, height, local)
{
	create_common_graph(PIE_GRAPH, id, data_source, width, height, local);
}

function create_mline_graph(id, data_source, width, height, local)
{
	create_common_graph(MSLINE_GRAPH, id, data_source, width, height, local);
}

function create_column3d_graph(id, data_source, width, height, local)
{
	create_common_graph(COLUMN3D_GRAPH, id, data_source, width, height, local);
}

function add_slice_to_pie_graph(label, data, color)
{
	return "\t<set name='" + label + "' value='" + data + "' color='" + color + "' />\n";	
}

function create_stacked_area_graph(id, data_source, width, height, local)
{
	create_common_graph(STACKED_AREA_GRAPH, id, data_source, width, height, local);
}

function generate_fusion_id(id)
{
	return "_fusion__graph_" + id;
}

function fusion_charts_get_chart_index(chartObj_dom_id)
{
	for (var i = 0; i < _fusion_chart_ids.length; i++)
	{
		if (_fusion_chart_ids[i] == chartObj_dom_id)
			return i;
	}
	return _fusion_chart_ids.length;
}

function create_common_graph(chart_type, id, data_source, width, height, local)
{
	var chartObj_dom_id = generate_fusion_id(id);
	var chart_index = fusion_charts_get_chart_index(chartObj_dom_id);
	
	if (typeof _fusion_chart_data_sources[chart_index] != "undefined")
	{
		if (_fusion_chart_data_sources[chart_index] == data_source)
		{
			return;
		}
	}
	
	// Update data
	_fusion_chart_data_sources[chart_index] = data_source;
		
	// New entry? 
	var successUpdating = false;
	if(chart_index != _fusion_chart_ids.length)
	{
		successUpdating = update_existing_chart(chartObj_dom_id);	
	}
	if (successUpdating == false)
	{
		swf_file = "";
		switch (chart_type)
		{
			case PIE_GRAPH:
				swf_file = "Pie3D.swf";
				break;
				
			case COLUMN_GRAPH:
				swf_file = "FCF_Column2D.swf";
				break;
				
			case BAR_GRAPH:
				swf_file = "FCF_Bar2D.swf";
				break;
				
			case MSLINE_GRAPH:
				swf_file = "MSLine.swf";
				break;
			
			case LINE_GRAPH:
				swf_file = "FCF_Line.swf";
				break;
				
			case AREA_GRAPH:
				swf_file = "FCF_MSArea2D.swf";
				break;	
			
			case STACKED_COLUMN_GRAPH:
				swf_file = "FCF_StackedColumn2D.swf";
				break;
			
			case STACKED_BAR_GRAPH:
				swf_file = "FCF_StackedBar2D.swf";
				break;
			
			case STACKED_AREA_GRAPH:
				swf_file = "StackedArea2D.swf";
				break;
				 
			case MULTI_COLUMN_GRAPH:
				swf_file = "FCF_MSColumn2D.swf";
				break;
			
			case SCATTER_GRAPH:
				swf_file = "Scatter.swf";
				break;
			
			case STACKED_AREA_LINE_GRAPH:
				swf_file = "MSCombi2D.swf";
				break;
			
			case COLUMN3D_GRAPH:
				swf_file = "Column3D.swf";
				break;
		}
/*	
		var hebrew_loading_chart = ".המתן אנא ,גרף תבנית טוען"; //"טוען תבנית גרף, אנא המתן"
		var hebrew_parsing_data = ".המתן אנא ,מידע מפענח"; //"מפענח מידע, אנא המתן"
		var hebrew_no_data_to_display = ".להצגה מידע אין"; //אין מידע להצגה
		var hebrew_RenderingChartText = ".המתן אנא ,הגרף את מצייר"; //מצייר את הגרף, אנא המתן
		var hebrew_InvalidXMLText = ".הגרף את לצייר אפשרות אין, שגוי המידע"; //המידע שגוי, אין אפשרות לצייר גרף
		var hebrew_LoadDataErrorText = ".המידע בטעינת שגיאה חלה";//חלה שגיאה בטעינת המידע.
		var hebrew_XMLLoadingText = ".המתן אנא, מידע טוען"; //"טוען מידע, אנא המתן"; 

		var chart = new FusionCharts("general/FusionCharts/charts/" + swf_file + "?PBarLoadingText=loading" + hebrew_loading_chart + "&ParsingDataText=" + hebrew_parsing_data + "&ChartNoDataText=" + hebrew_no_data_to_display + "&RenderingChartText=" + hebrew_RenderingChartText + "&InvalidXMLText=" + hebrew_InvalidXMLText + "&LoadDataErrorText=" + hebrew_LoadDataErrorText + "&XMLLoadingText=" + hebrew_XMLLoadingText, id + "_fusion__graph_", "" + width, "" + height);
		*/
		// Update data
		_fusion_chart_ids[chart_index] = chartObj_dom_id;
		_fusion_chart_local[chart_index] = local;
		
		var chart = new FusionCharts("general/FusionCharts/charts/" + swf_file, chartObj_dom_id, "" + width, "" + height, 0, 1);
		chart.setDataXML("<chart></chart>");
		chart.render(id);
	}
	
}

function update_existing_chart(chartObj_dom_id)
{
	var chartObj = getChartFromId(chartObj_dom_id);
	var chart_index = fusion_charts_get_chart_index(chartObj_dom_id);
	try
	{	
		if (_fusion_chart_local[chart_index])
		{
			chartObj.setDataXML(_fusion_chart_data_sources[chart_index])
		}
		else
		{
			chartObj.setDataURL(_fusion_chart_data_sources[chart_index])
		}
	}
	catch (e)
	{
		console.log(e);
		return false;
	}
	return true;
}

function FC_Rendered(chartObj_dom_id)
{
	update_existing_chart(chartObj_dom_id);
}
