document.addEvent("domready", function() {
	
	var results_calculator = $("results-calculator");
	if (results_calculator) {
		
		var result_items = results_calculator.getElements(".result-item");

		results_calculator.addClass("showcase");	
		
		// Build the navigation system.
		var results_menu = new Element("div", {
			"id" : "results-calculator-menu"
		}).inject(results_calculator, "top");
		
		result_items.each(function(item, index) {
			
			item.addClass("showcase");
			item.setStyle("opacity", 0);
			
			menu_item = item.getElement("h3");
			menu_item.inject(results_menu);
			menu_item.eTarget = item;
			
			menu_item.addEvent('click', function(evt) {
				
				evt.stop();
				
				// change the slides.
				results_calculator.getElement(".active").fade("out").removeClass("active");
				this.eTarget.fade('in').addClass("active");
				
				// active menu item
				var last_active_item = results_menu.getElement(".menu-active");
				if (last_active_item) { last_active_item.removeClass("menu-active"); }
				
				this.addClass("menu-active");
				
			});
			
			// build and apply the chart.
			var chartContainer = item.getElement(".chart");
			if (chartContainer) {
				
				var chartMeta = document.getElement("meta[name="+ chartContainer.get("name") +"]");
				if (chartMeta) {
					var chartData = JSON.decode(chartMeta.get("content"));
					var chart = new YUIChart({ chartData: chartData, container: chartContainer });
					var chartTitle = new Element("p", {"class": "chart-title", text: chartContainer.get("title") }).inject(chartContainer, "before");
				}
			}
			
		});
		
		results_menu.getElements("h3")[0].addClass("menu-active");
		result_items[0].setStyle("opacity", 1).addClass("active");
		results_calculator.setStyle("height", result_items[0].getSize().y);
		
	}	
});


var YUIChart = new Class({
	
	Implements: [Options],
	
	options: {
		chartData: [
			{ year: "2008 w/ IDEA", cost_of_sales: 12401, operating_expense: 4519, net_profit: 3391, roi: "156%" },
			{ year: "2008", cost_of_sales: 10334, operating_expense: 4519, net_profit: 1536, roi: "55%" },
			{ year: "2007", cost_of_sales: 10459, operating_expense: 4210, net_profit: 1804, roi: "63%" },
			{ year: "2006", cost_of_sales: 9922, operating_expense: 3859, net_profit: 1815, roi: "70%" },
			{ year: "2005", cost_of_sales: 8664, operating_expense: 3364, net_profit: 1416, roi: "63%" }
		],
		container: "",
		SWFURL: "http://yui.yahooapis.com/2.8.0r4/build/charts/assets/charts.swf"
	},
	
	initialize: function(options) {
		
		this.setOptions(options);
		if (YAHOO) {
			
			return this.loadChart();
			
		}
		
	},
	
	loadChart: function() {
		
		var self = this;
		
		YAHOO.widget.Chart.SWFURL = self.options.SWFURL;
		
		var chartDataSource = new YAHOO.util.DataSource( self.options.chartData );
		chartDataSource.responseType = YAHOO.util.DataSource.TYPE_JSARRAY;
		chartDataSource.responseSchema = { fields: [ "year", "cost_of_sales", "operating_expense", "net_profit", "roi" ] };
		
		var seriesDefinition = [{
			xField: "cost_of_sales",
			displayName: "Cost of Sales",
			style: {
				color: 0x20A5F2
			}
		},{
			xField: "operating_expense",
			displayName: "Operating Expense",
			style: {
				color: 0x89CCF3
			}
		},{
			xField: "net_profit",
			displayName: "Net Profit",
			style: {
				color: 0xFAA636
			}
		}
		// ,{
		// 			xField: "roi",
		// 			displayName: "ROI"
		//}
		];
		
		var currencyAxis = new YAHOO.widget.NumericAxis();
		// currencyAxis.minimum = 800;
		currencyAxis.stackingEnabled = true;
		currencyAxis.labelFunction = self.formatCurrencyAxisLabel;
		
		var chart = new YAHOO.widget.StackedBarChart( self.options.container, chartDataSource, {
			series: seriesDefinition,
			yField: "year",
			xAxis: currencyAxis,
			//only needed for flash player express install
			expressInstall: "assets/expressinstall.swf",
			style: {
				padding: 20,
				width: 600,
				legend:
				{
					display: "right",
					padding: 10,
					spacing: 5,
					font:
					{
						family: "Arial",
						size: 10
					}
				}
			}
	
		});
		
		return chart;
		
	},
	
	formatCurrencyAxisLabel: function( value ) {
		
		return YAHOO.util.Number.format( value, { prefix: "$", thousandsSeparator: ",", decimalPlaces: 0, suffix: " M" });
		
	}
	
	// ,
	// 
	// getDataTipText: function( item, index, series ) {
	// 	
	// 	var self = this;
	// 	
	// 	var toolTipText = series.displayName + " for " + item.year;
	// 	toolTipText += "\n" + self.formatCurrencyAxisLabel( item[series.yField] );
	// 	return toolTipText;
	// 	
	// }
	
});
