/**
 * @filename detailedData.js
 * 
 * @description 
 * 
 * @author Michael Bina
 * @email michael.bina@garmin.com
 *
 * Copyright(c) 2008, Garmin International
 */

/**
 * DetailedDataComponentConstants.formFieldNames
 */
var DetailedDataComponentConstants = {
	CHART_DATA_CONTAINER_ID: 'chartDataContainer',
	CHART_OUTER_CONTAINER_ID: 'chartOuterContainer',

	// Form Field IDs
	sections: [
		{
			data: 'timingDetails',
			tab: 'tabTiming',
			chart: {
				chartType: ChartType.area,
				indexAxis: ChartComponentConstants.chartAxes.INDEX_DURATION,
				primaryAxis: ChartComponentConstants.chartAxes.PRIMARY_TIME
			}
		},
		{
			data: 'elevationDetails',
			tab: 'tabElevation',
			chart: {
				chartType: ChartType.area,
				indexAxis: ChartComponentConstants.chartAxes.INDEX_DISTANCE,
				primaryAxis: ChartComponentConstants.chartAxes.PRIMARY_ELEVATION
			}
		},
		{
			data: 'heartRateDetails',
			tab: 'tabHeartRate',
			chart: {
				chartType: ChartType.area,
				indexAxis: ChartComponentConstants.chartAxes.INDEX_DURATION,
				primaryAxis: ChartComponentConstants.chartAxes.PRIMARY_HEART_RATE
			}
		},
		{
			data: 'cadenceDetails',
			tab: 'tabCadence',
			chart: {
				chartType: ChartType.area,
				indexAxis: ChartComponentConstants.chartAxes.INDEX_DURATION,
				primaryAxis: Activity.CADENCE_TYPE == 'biking' ? ChartComponentConstants.chartAxes.PRIMARY_BIKE_CADENCE : ChartComponentConstants.chartAxes.PRIMARY_RUN_CADENCE
			}
		},
		{
			data: 'powerDetails',
			tab: 'tabPower',
			chart: {
				chartType: ChartType.area,
				indexAxis: ChartComponentConstants.chartAxes.INDEX_DURATION,
				primaryAxis: ChartComponentConstants.chartAxes.PRIMARY_POWER
			}
		}
		
		/*,  // Removing laps tab CONNECT-3439
		{
			data: 'lapsDetails',
			tab: 'tabLaps',
			chart: null
		}*/
	]
};



DetailedDataComponent = function(){
	return {
		init : function(){
			Ext.QuickTips.init();
			this.chartDataContainer = Ext.get(DetailedDataComponentConstants.CHART_DATA_CONTAINER_ID);
			this.chartOuterContainer = Ext.get(DetailedDataComponentConstants.CHART_OUTER_CONTAINER_ID);
			
			this.showSection(DetailedDataComponentConstants.sections[0]);
			this.setTabHandlers();
		},
		
		showChart : function() {
			this.chartOuterContainer.show();
		},
		
		hideChart : function() {
			this.chartOuterContainer.hide();
		},
		
		setTabHandlers: function() {
			Ext.each(
				DetailedDataComponentConstants.sections,
				function(section, index, items) {
					var tabEl = Ext.get(section.tab);
					if(tabEl !== null) {
						tabEl.on('click', function(event, el, options) {
							this.showSection(section);
	
							Ext.each(
								DetailedDataComponentConstants.sections,
								function(section) {
									var tabToRemove = Ext.get(section.tab);
									if(tabToRemove !== null) {
										tabToRemove.removeClass('detailsTabSelected');
									}
								}
							);
							tabEl.addClass('detailsTabSelected');
						}.bind(this));
					}
				}.bind(this)
			);
		},
		
	    showSection: function(sectionObject) {
	    	var sectionDataElement = Ext.get(sectionObject.data);
	    	this.chartDataContainer.dom.innerHTML = sectionDataElement.dom.innerHTML;
	    	
  			if(sectionObject.chart === null || sectionDataElement.child('.noDataAvailable') !== null) {
				this.hideChart();
			} else {
				this.showChart();
		    	var chartSettings = sectionObject.chart;
				ChartComponent.setChartDisplay(chartSettings.chartType, chartSettings.indexAxis, chartSettings.primaryAxis);
			}
	    }
	 };
}();
Ext.EventManager.onDocumentReady(DetailedDataComponent.init, DetailedDataComponent, true);