// MLB Charts JavaScript Document
// Dependencies: jQuery, bam.js, bam.datagrid.js (v.2), bam.ajaxHelper.js
var mlbCharts = (function(){
	//Load dependencies
	bam.loadSync(
		bam.homePath + "bam.datagrid2.js",		
		bam.homePath + "bam.ajaxHelper.js"
	);
	/*
	bam.ajaxHelper.timeout = 10000;
	bam.ajaxHelper.autoRetry = true;
	bam.ajaxHelper.retryInterval = 15000;
	*/
	
	//Private members
	var _mlbChartsService = bam.ajaxHelper.createInstance({
		url: "/mlb/components/fantasy/bts/y2009/xml/all_time_streaks_mlb.xml",
		dataType: "xml",
		load: function(cb) {
			var _data, that = this;
			that.makeRequest(function(jObj) {
			_data = jObj;
			if(typeof(cb) ==="function"){cb(_data);}
		  });
		},
		onRetry: function(a) {
			$("#mlbCharts").html("Retry# " + a + " ...");
		},
		onFail: function(r) {
			$("#mlbCharts").html("We appologize for this inconvenience, but data is currently unavailable.</br>Please try again later.");
		}
	});
	var _btsChartsService = bam.ajaxHelper.createInstance({
		url: "/mlb/components/fantasy/bts/y2009/xml/all_time_streaks_bts.xml",
		dataType: "xml",
		load: function(cb) {
			var _data, that = this;
			that.makeRequest(function(jObj) {
			_data = jObj;
			if(typeof(cb) ==="function"){cb(_data);}
		  });
		},
		onRetry: function(a) {			
			$("#btsCharts").html("Retry# " + a + " ...");
		},
		onFail: function(r) {
			$("#btsCharts").html("We appologize for this inconvenience, but data is currently unavailable.</br>Please try again later.");
		}
	});
		
	var _dgMLB = new bam.datagrid.DataGrid({
			tableClass: "tblCharts",
			cellspacing: 1,
			dataType: "xml",
			summary: "Top All-Time MLB Streaks",
			caption: "Top All-Time MLB Streaks",
			columns: [
				{title:"_playerId", dataField: "player_id", visible:false},
				{title:"MLB Player", dataField:"name_display_first_last", sortable: false, style:"algnLeft", //name_display_last_first
					decorator: function(obj) {
						return "<a target=\"_blank\" href=\"/team/player.jsp?player_id=" + this.cell("player_id").value + "\">" + obj.value + "</a>";
					}
				},
				{title:"Team", dataField: "team_display", sortable: false},
				{title:"Year", dataField: "season", sortable: false, type:bam.datagrid.DataType.Number},
				{title:"Streak", dataField: "streak", sortable: false}
			],
			onColumnSort: function(){ this.parent.refresh(); }
		}),
		_dgBTS = new bam.datagrid.DataGrid({
			tableClass: "tblCharts",
			cellspacing: 1,
			dataType: "xml",
			summary: "Top All-Time BTS Streaks",
			caption: "Top All-Time BTS Streaks",
			columns: [
				{title:"_playerId", dataField: "broke_by_player_id", visible:false},
				{title:"BTS User", dataField: "nickname", sortable: false, style:"algnLeft"},
				{title:"Streak Breaker", dataField:"broke_by_name_display_first_last", sortable: false, style:"algnLeft", //player
					decorator: function(obj) {
						var _out = obj.value, _pid = this.cell("broke_by_player_id").value;
						if(!bam.validation.isEmpty(_pid)) {
							_out = "<a target=\"_blank\" href=\"/team/player.jsp?player_id=" + _pid + "\">" + obj.value + "</a>";
						}
						return _out;
					}
				},
				{title:"Date Ended", sortable: false, dataField: "broken_date", dateFormat:"M/d/yyyy", type:bam.datagrid.DataType.DateTime},
				{title:"Streak", dataField: "streak", sortable: false}
			],
			onColumnSort: function(){ this.parent.refresh(); }									  
		});
	
	//Public members
	var _self = {
		init: function() {
			_mlbChartsService.load(function(_data) {
				_dgMLB.loadData({data: _data, dataset: "all_time_streaks_mlb"}).render("mlbCharts");
		  	});
			_btsChartsService.load(function(_data) {
				_dgBTS.loadData({data: _data, dataset: "all_time_streaks_bts"}).render("btsCharts");
		  	});
		}		
	};
	
	return _self;
})();

//Initialize on page load
$(function() { mlbCharts.init(); });
