/**
 * Obiekt zarządzający formularzem zmiany danych w wykresach AnyChart
 */
var NCAnychart = {
	options : {},
	chart : null,
	resize : false,
	mode : 'single',
	init : function(){
		this.buildChart();
		/* wyłącza domyślną opcję wysyłania formularza */
		document.getElementById('chart-options-form').onsubmit = function(e){
			return false;
		};
		this.printer();
	},
	buildChart : function()
	{
		AnyChart.swfFile = 'webapps/front/html/swf/anychart/AnyChart.swf';
		
		var chart = new AnyChart();
		chart.width = "538";
		
		var period = document.getElementById('chart_period').value;
		
		if (period == 'daily') {
			chart.height = 300;
			this.mode = 'single';
		}
		else {
			chart.height = 600;
			this.mode = 'dual';
		}
		
		var language = document.getElementById('chart_language').value;
		
		switch (language) {
			case 'PL':
				chart.xmlLoadingText = "Pobieram dane... ";
				chart.initText = "Inicjalizacja... ";
				chart.preloaderLoadingText = "Ładowanie... ";
				chart.waitingForDataText = "Czekam na dane... ";
				break;
			case 'UA':
				chart.xmlLoadingText = "Pobieram dane... ";
				chart.initText = "Inicjalizacja... ";
				chart.preloaderLoadingText = "Ładowanie... ";
				chart.waitingForDataText = "Czekam na dane... ";
				break;			
			default: /* EN */
				chart.xmlLoadingText = "Loading data... ";
				chart.initText = "Initializing... ";
				chart.preloaderLoadingText = "Loading... ";
				chart.waitingForDataText = "Waiting for data... ";
				break;											
		}

		chart.setXMLFile(this.getDataSourceURL());
		chart.write("chart");
		this.chart = chart;		
	},
	reloadPage : function(){
		document.getElementById('chart-options-form').submit();
	},
	/* tworzy dynamiczny URL do pliku z danymi */
	getDataSourceURL : function()
	{
		var query;
		this.setup();
		
		var q = [];
		for (var i in this.options)
		{
			if (this.options.hasOwnProperty(i)) {
				q.push(i + '=' + this.options[i]);
			}
		}
		
		if ( ! this.options.period || this.options.period == 'daily')
		{
			query = 'anychartxml.php?';
		}
		else
		{
			query = 'anychartdashboard.php?';
		}
		
		query += q.join('&');	
		
		this.options = {};	
		
		return query;
	},
	/* zmienia w locie źródło danych */
	switchDataSource : function(e) {
		this.chart.setXMLFile(this.getDataSourceURL());
	},
	/* odczytuje wartość pola i zapisuje do opcji */
	addOption : function(fieldId)
	{
		var el = document.getElementById(fieldId);
		this.options[el.getAttribute('name')] = el.value;

		var self = this;
		if (el.nodeName.toLowerCase() == "select")
		{
			if (!el.onchange) {
				el.onchange = function(e){
					self.onChange.apply(self,[this]);
				};
			}
		}
	},
	onChange : function (el) {
		var m = this.mode;
		var n = el.getAttribute('name');
		var v = el.value;
		//inne zachowanie przy zmianie z/na daily period
		if (n == 'period' && m == 'single' && v != 'daily') { //zmiana z daily
			this.reloadPage();
		}
		else if (n == 'period' && m != 'single' && v == 'daily') { //zmiana na daily
			this.reloadPage();
		}
		else {
			this.switchDataSource();
		}		
	},
	setup : function() 
	{
		this.addOption('chart_ncc_index');
		this.addOption('chart_type');
		this.addOption('chart_period');
		this.addOption('chart_serie1');
		this.addOption('chart_serie2');
		this.addOption('chart_language');
	},
	/* drukowanie */
	printer : function()
	{
		var self = this;

		document.getElementById('print_chart').onclick = function(e) {
			self.chart.printChart();
			return false;
		};		
	}
};

NCAnychart.init();