(function() {

  // bam.loadSync(bam.homePath + "bam.datagrid.v1.js");
  bam.loadSync(bam.homePath + "bam.url.js");
  bam.loadSync(bam.homePath + "bam.popModule.js");
  bam.loadSync(bam.homePath + "bam.xml.js");

  var DT = bam.datetime,
      getQueryResults   = bam.util.getQueryResults,
      countQueryResults = bam.util.countQueryResults;

  
  playerbio = {}; // global

  playerbio.NUM_AWARDS_IN_A_ROW = 3;
  playerbio.TOTAL_NUM_NEWS_STORIES = 7;
  // @allison Removed:
  // playerbio.DIVIDE_ROWS = 5;

  playerbio.player_personal_info = (function(){
  	//var _curr_url_obj = new bam.url.Location(window.location);
  	//var _player_id = _curr_url_obj.getParam("player_id") ? _curr_url_obj.getParam("player_id") : "";
  	var _self = {
  		//player_id : _player_id,
  		player_info_url : function() {
  							if (globals.player_id) {
  								var info_url = "/lookup/json/named.player_info.bam?sport_code=%27mlb%27";
  								info_url += "&player_id="+globals.player_id;
  								return info_url;
  							} else {
  								return false;
  							}
  						},
  		player_obj : function(data) {

  			var row = data.player_info.queryResults.row;
  			var playa =  {
  				player_id:              row.player_id || "",
  				birth_date:             row.birth_date || "",
  				birth_city:             row.birth_city || "",
  				birth_state:            row.birth_state || "",	
  				birth_country:          row.birth_country || "",	
  				height_feet:            row.height_feet || "",
  				height_inches:          row.height_inches || "",
  				weight:                 row.weight || "",
  				display_name:           row.name_display_first_last_html || "",
  				primary_position_txt:   row.primary_position_txt || "",
  				stat_type:              (row.primary_position==="1") ? "2": "1",
  				bats:                   row.bats || "",
  				pro_debut_date:         row.pro_debut_date || "",
  				college:                row.college || "",
  				tosses:                 row["throws"] || "",
  				team_code:              row.team_code || "",
  				club_code:              row.file_code || "",
  				team_id:                row.team_id || "",
  				team_name:              row.team_name || "",
  				name_first:             row.name_first || "",
  				name_middle:            row.name_middle || "",
  				name_last:              row.name_last || "",
  				name_nick:              row.name_nick || "",
  				status:                 row.status || "",
  				jersey_number:          row.jersey_number || ""		
  			};
        // @todo find a better way to access in postseason table than adding to globals?
  				globals.playerStatus = playa.status;
				globals.teamId = playa.team_id;				
				//playerbio.build_team.append_stats_nav(playa.pro_debut_date);
  			if ((!globals.statType) || (globals.statType === "null")) {
  				globals.statType = playa.stat_type;
  			}
  			if (flags.is_historical === "true") {
  				playerbio.build_player_info.top_left_historical(playa);
				if ((flags.cms_info !== "false") && (flags.cms_info)) {
  					playerbio.lookup_urls.cms_info_query();
  				} else {
  					playerbio.build_player_info.no_cms_data_fallback();
  				}
  			} else {
  				playerbio.build_player_info.top_bio_info(playa);
  				playerbio.build_player_info.large_photo(playa);
  			}
  			//lookup_urls.getDataUrl(playa);
  		}
  	}; //end self
  	return _self;
  })();

  playerbio.utils = (function () {

    // @allison Replaced:
    // var _dt = new Date();
    // var _curr_url_obj  =  new bam.url.Location(window.location);
    // with:
    var year = bam.url.parseQueryParameters()['year'] || (new Date()).getFullYear();

  	var _self = {

        // @allison Replaced:
        // get_year : function () {
        //  var this_year = _dt.getFullYear();
        //  var year = _curr_url_obj.getParam("year") ? _curr_url_obj.getParam("year") : this_year;
        //  return year;
        // },
        // with:
    		get_year : function () {
    			return year;
    		},
			
			ordinal : function(n) {
  				n = parseInt(n, 10);
  				return (n > 10 && n < 20) ? 'th' : ['th', 'st', 'nd', 'rd', 'th', 'th', 'th', 'th', 'th', 'th'][n % 10];
			},

  			data_query : function (data_url, cb, failure_cb,is_async) {
				if (!is_async) {
					is_async = true;
				}
  				$.ajax({
  						type: "GET",
  						url: data_url,
  						dataType: "json",
  						error: failure_cb,
  						async: is_async,
  						success: cb					
  					});	
  			},
			//Makes several deferred url requests
			deferred_query: function(urls, cb, fb) {
				var deferred_requests = [];
				
				for(var i = 0, l = urls.length; l > i; i++) {
					deferred_requests[i] = $.getJSON(urls[i]);
				}
				
				$.when.apply($, deferred_requests).then(cb, fb);
			},

  			sort_object : function(obj,direction) {
				var y;
  				var sortable = [];
  				if(typeof(obj) === "object" && !!obj) {
  					for (y in obj) {
  						if (!obj.hasOwnProperty || obj.hasOwnProperty(y)) {
  							sortable.push([y, obj[y]]);
  						}
  					}
  				}
  				if (direction === "asc") {
  					sortable.sort(function(a, b) {return a[0] - b[0];});
  				} else {
  					sortable.sort(function(a, b) {return b[0] - a[0];});
  				}
  				return sortable;
  			},

  			launch_pop : function(iframe_src) {
  					if (iframe_src) {
  						bam.popModule.show({
  							htmlContent:"<iframe src='"+iframe_src+"' name='bio_iframe_name' id='bio_iframe' width='100%' height='375' frameborder='0'></iframe>",
  							width:600
  						});
  					}
  				},
  			is_empty_object : function(o) {
				var p;
  				if(typeof(o) === "object" && !!o) {
    					for(p in o) {
  						if (!o.hasOwnProperty || o.hasOwnProperty(p)) {
      						if (o[p] != o.constructor.prototype[p]) {
       			 				return false;
  							}
  						}
    					}
  				}
  				return true;
  			},
  			equalize_module_div_height : function(c_name) {
  				var heights = $("div."+c_name).map(function(){
  					return $(this).outerHeight(true);
  				});
  				var not_loaded_yet = false;
  				for (var j=0;j<heights.length;j++) {
  					if ((heights[j] === 0) || (heights[j] === undefined)) {
  						not_loaded_yet = true;
  					}
  				}
  				if (not_loaded_yet) {
  					return false;
  				} else {
  					heights.sort(function(a,b){ return b-a; });
  					$('div.'+c_name).each(function() { 
  						$(this).height(heights[0]);
  					});
  				}
  			}
  	}; //end self
  	return _self;
  })();

  playerbio.lookup_urls = (function(){
  		var _self = {
  			get_standings_query : function() {
  				var standings_url = "";
  				if (globals.player_id) {
  					if (parseInt(globals.statType,10) === 1) {
  						standings_url = "/lookup/json/named.mlb_individual_hitting_rank.bam?player_id="+globals.player_id;
  					} else {
  						standings_url = "/lookup/json/named.mlb_individual_pitching_rank.bam?player_id="+globals.player_id;
  					}
  					return standings_url;
  				} else {
  					return false;
  				}
  			},
  		undefined_photo_query : function() {
  				//var team_generic_photo_url = "/gen/"+clubProps[globals.cid].club+"/components/multimedia/photogallerygen.xml";
  				var team_generic_photo_url = "/gen/"+clubProps[globals.cid].club+"/team-related.xml";
  				$.ajax({
  					type: "GET",
  					url: team_generic_photo_url,
  					dataType: "xml",
  					async: false,
  					error : function () {
  						//alert('error retrieving generic photo info: '+team_generic_photo_url);
  						return false;
  					},
  					success: function(_xdata) {			
  						var json = bam.xml.xmlToJSON(_xdata, {outputType: 1});
  							if(!!json) {
  								playerbio.build_player_info.team_photos(json);
  							}
  					}		
  				}); //end ajax call
  			},

  			undefined_news_query : function(number) {
  				var team_generic_news_url = "/gen/"+clubProps[globals.cid].club+"/components/news/headlinesgen.xml";
  				$.ajax({
  					type: "GET",
  					url: team_generic_news_url,
  					dataType: "xml",
  					async: false,
  					error : function () {
  						//alert('error retrieving generic news info: '+team_generic_news_url);
  						return false;
  					},
  					success: function(_xdata) {			
  						var json = bam.xml.xmlToJSON(_xdata, {outputType: 1});
  							if(!!json) {
  								playerbio.build_player_info.team_news(json,number);
  							}
  					}		
  				}); //end ajax call
  			},

  			cms_info_query : function() {
  				//var cms_url = "/gen/team/players/xml/id_121347.xml";
  				var cms_url = "/gen/team/players/xml/id_"+globals.player_id+".xml";
  				$.ajax({
  					type: "GET",
  					url: cms_url,
  					dataType: "xml",
  					async: false,
  					error : function () {
  						//alert('error retrieving cms-based info');
  						playerbio.build_player_info.no_cms_data_fallback();
  					},
  					success: function(_xdata) {		
  						var json = bam.xml.xmlToJSON(_xdata, {outputType: 1});
  							if(!!json) {
  								playerbio.build_player_info.bio_link(json);
  								playerbio.build_player_info.build_news(json);
  								//playerbio.build_player_info.build_video(json);
  								playerbio.build_player_info.build_photos(json);
  							}
  					}		
  				}); //end ajax call
  			},

  			/*player_info_query : function(info_url) {
  				$.ajax({
  					type: "GET",
  					url: info_url,
  					dataType: "json",
  					async: false,
  					error : function () {
  						alert('error retrieving player info');
  					},
  					success: function(data) {								
  						playerbio.player_personal_info.player_obj(data);
  					}		
  				}); //end ajax call
  			},*/

  			forty_man_query: function(r_y,team) {
				var roster_query,team_info,t_id,league,historical_roster_url;
  				if (r_y == "current") {
  					team_info = team.split("_");
  					t_id = team_info[0];
  					if (isNaN(parseInt(t_id,10))) {
  						roster_query = "/lookup/json/named.roster_all.bam?file_code='"+t_id+"'";
  					} else {
  						roster_query = "/lookup/json/named.roster_all.bam?team_id="+t_id;
  					}
  					return roster_query;  				
  				} else {
  					historical_roster_url = _self.historical_forty_man_query(r_y,team);
  					playerbio.utils.data_query(historical_roster_url,function(data) {playerbio.build_team.historical_roster(data,r_y);});
  					return false;
  				}
  				
  				/*
  				if (parseInt(r_y,10) !== parseInt(globals.season,10)) {
  					var historical_roster_url = _self.historical_forty_man_query(r_y,team);
  					playerbio.utils.data_query(historical_roster_url,function(data) {playerbio.build_team.historical_roster(data,r_y);});
  					return false;
  				} else {
  					roster_query = "";
  					team_info = team.split("_");
  					t_id = team_info[0];
  					league = team_info[1];
  					if (isNaN(parseInt(t_id,10))) {
  						roster_query =  "/lookup/json/named.roster_all.bam?file_code=%27"+t_id+"%27";
						//was roster_40
  					} else {
  						roster_query = "/lookup/json/named.roster_all.bam?team_id="+t_id;
						//was roster_40
  					}
  					return roster_query;
  				}
  				*/
  			},

  			historical_forty_man_query : function(r_y,team) {
  				var historical_roster_query = "";
				var roster_query,team_info,t_id,league;
  				//if (!r_y || parseInt(r_y,10) === parseInt(globals.season,10)) {
  				if (r_y == "current") {
  					roster_query = _self.forty_man_query(r_y,team);
  					playerbio.utils.data_query(roster_query,function(data) {playerbio.build_team.roster(data,r_y);});
  					return false;
  				} else {
  					team_info = team.split("_");
  					t_id = team_info[0];
  					league = team_info[1];
  					if (league === "American") {
  						league = "AL";
  					} else if (league === "National") {
  						league = "NL";
  					}
  					if (isNaN(parseInt(t_id,10))) {
  						historical_roster_query = "/lookup/json/named.historical_roster.bam?file_code='"+t_id+"'&league_code='"+league+"'&season="+r_y;
  					} else {
  						historical_roster_query = "/lookup/json/named.historical_roster.bam?team_id="+t_id+"&league_code='"+league+"'&season="+r_y;
  					}
  					return historical_roster_query;
  				}
  			},

  			getDataUrl : function(year) {
				var position,src_url;
  				if (!year) {
  					if (globals.season) {
  						year = globals.season;
  					} else {
  						year = playerbio.utils.get_year();
  					}
  				}
  				if (globals.player_id) {
  					position="";
					
  					if ((!globals.statType) || (globals.statType === "null")) {
  						globals.statType = 1;
  					}
  					if (parseInt(globals.statType,10) === 1) {
  						position = "batting";
  					} else if (globals.statType === 2) {
  						position = "pitching";
  					}
  					src_url = "/lookup/json/named.bio_page_"+position+".bam?sport_code=%27mlb%27&game_type=%27R%27&num_games=10&range=0&num_fantasy=5";
  					src_url += "&year="+year;
  					src_url += "&player_id="+globals.player_id;
  				return src_url;

  				} else {
  					return false;
  				}
  			}

  		};
  		//_self.this_year = _dt.getFullYear();
  		//_self.curr_year = _self.curr_url_obj.getParam("year") ? _self.curr_url_obj.getParam("year") : _self.this_year;
  		return _self;
  })();

  playerbio.build_player_info = (function(){

  	var _self = {
  		no_team_or_player_photos_fallback : function() {
  			$("td#player_photo_module").empty();
  			var content_div = "<div width='245' style='margin:10px;'><h4>PHOTOS</h4><p>No photos available for this player.</p></div>";
  			$("td#player_photo_module").html(content_div);

  		},
  		no_team_or_player_headlines_fallback : function() {
  			$("td#player_news_module").empty();
  			var content_div = "<div width='245' style='margin:10px;'><h4>NEWS STORIES</h4><p>No news headlines available for this player.</p></div>";
  			$("td#player_news_module").html(content_div);
  		},
  		no_video_fallback : function() {
  			$("div#mw-vod-1").hide();
  			$("div#mw-vod-2").hide();
  		},
  		no_cms_data_fallback : function() {
  			$("a#bio_link").hide();
  			_self.no_video_fallback();
  			if ((flags.team_photos === "false") || (!flags.team_photos) ) {
  				_self.no_team_or_player_photos_fallback();
  			} else {
  				playerbio.lookup_urls.undefined_photo_query();
  			}
  			if ((flags.team_headlines === "false") || (!flags.team_headlines) ) {
  				_self.no_team_or_player_headlines_fallback();
  			} else {
  				playerbio.lookup_urls.undefined_news_query();
  			}
  			//utils.equalize_module_div_height("module");
  		},

  		bio_link : function(data) {
  			if (!data.playerbio[0].Text || flags.hide_bio) {
  		 		$("a#bio_link").hide();
  			} else {
  				$("a#bio_link").live('click',function (e) {
					e.preventDefault();
  					bam.popModule.init({});	playerbio.utils.launch_pop("/components/team/player/bio_iframe.html?is_mug_shot="+flags.mug_shot+"&roster_cid="+globals.roster_cid+"&cid="+globals.cid+"&player_id="+globals.player_id);
  				});
  			}
  		},
		
		has_stat_type: function(data) {
	
			$("#stat_type_nav").empty();
			var $batting_label = "<label for='stats_nav_type_batting'>Batting</label>";
			var $batting_el = "<input type='radio' name='stats_nav_type' id='stats_nav_type_batting' value='1'>";
			
			var $pitching_label = "<label for='stats_nav_type_pitching'>Pitching</label>";
			var $pitching_el = "<input type='radio' name='stats_nav_type' id='stats_nav_type_pitching' value='2'>";
			
			var $fielding_label = '<label for="stats_nav_type_fielding">Fielding</label>';
			var $fielding_el = '<input type="radio" name="stats_nav_type" id="stats_nav_type_fielding" value="3">';
			
			var preset_stat_type = bbq_stats.getBbqVal("statType");
			
			var data_types = bam.util.getQueryResults(data, "mlb_individual_has_stats_year");
			
			if (parseInt(globals.statType,10) === 1) {
				if (data_types[0].cb_first_year !== "") {
					$("#stat_type_nav").append($batting_label).append($batting_el);
					if (data_types[0].cp_first_year !== "") {
						$("#stat_type_nav").append($pitching_label).append($pitching_el);
					}
				} 
			} else {
				if (data_types[0].cp_first_year !== "") {
					$("#stat_type_nav").append($pitching_label).append($pitching_el);
					if (data_types[0].cb_first_year !== "") {
						$("#stat_type_nav").append($batting_label).append($batting_el);
					}
				}
			} 
			
			if (data_types[0].cf_first_year !== "") {
				$("#stat_type_nav").append($fielding_label).append($fielding_el);
			} 
			if ((preset_stat_type) && ($("#stat_type_nav input[name='stats_nav_type'][value='"+preset_stat_type+"']").length > 0)) {
				$("#stat_type_nav input[name='stats_nav_type'][value='"+preset_stat_type+"']").attr("checked","checked");
			} else {
				if (parseInt(globals.statType,10) === 1) {
					$("#stat_type_nav input[name='stats_nav_type'][value='1']").attr("checked","checked");
				} else {
					$("#stat_type_nav input[name='stats_nav_type'][value='2']").attr("checked","checked");
				}
			}
			
			$("#stat_type_nav").buttonset();
			if ((data_types[0].pgb_first_year === "") && (data_types[0].pgp_first_year === "") && (data_types[0].pgf_first_year === "")) {
				$("#gameLogTab").hide();
			} else {
				$("#gameLogTab").show();
			}
			if ((data_types[0].csb_first_year === "") && (data_types[0].csp_first_year === "") && (data_types[0].csf_first_year === "")) {
				$("#splitsCareerTab").hide();
			} else {
				$("#splitsCareerTab").show();
			}
			globals.start_splits_batting_year = data_types[0].csb_first_year;
			globals.end_splits_batting_year = data_types[0].csb_last_year;
			globals.start_splits_pitching_year = data_types[0].csp_first_year;
			globals.end_splits_pitching_year = data_types[0].csp_last_year;
			globals.start_splits_fielding_year = data_types[0].csf_first_year;
			globals.end_splits_fielding_year = data_types[0].csf_last_year;
			globals.start_game_log_batting_year = data_types[0].pgb_first_year;
			globals.end_game_log_batting_year = data_types[0].pgb_last_year;
			globals.start_game_log_pitching_year = data_types[0].pgp_first_year;
			globals.end_game_log_pitching_year = data_types[0].pgp_last_year;
			globals.start_game_log_fielding_year = data_types[0].pgf_first_year;
			globals.end_game_log_fielding_year = data_types[0].pgf_last_year;
			playerbio.build_team.append_stats_nav();
			playerbio.build_team.append_bvp_team_nav();
		},

  		team_photos : function(data) {
  			$("td#player_photo_module div").empty();
  			//var $hed = $("<h4></h4>").html("PHOTOS");
  			//$("td#player_photo_module").append($hed);
  			var team_photos_arr = data.children[0].item[0].members[0].item;
  			var team_photos_arr_length = team_photos_arr.length;
  			var photos_arr = [];
  			for (var b=0;b<team_photos_arr_length;b++) {
  				//if (team_photos_arr[b].members !== undefined) {
  					//var team_photos_child_arr = team_photos_arr[b].members[0].item;
  					//var team_photos_child_arr_length = team_photos_child_arr.length;
  					//for (var a=0;a<team_photos_child_arr_length;a++) {
  						//if (team_photos_child_arr[a].type == "images") {

                // @allison Replaced:
                // var photos = {};
                // photos.height = team_photos_arr[b].height[0].Text;
                // photos.width = team_photos_arr[b].width[0].Text;
                // photos.caption = team_photos_arr[b].caption[0].Text;
                // photos.src = team_photos_arr[b].url[0].Text;
                // photos_arr.push(photos);
                // with:
                var photo = team_photos_arr[b];
  							photos_arr.push({
    							height:  photo.height[0].Text,
    							width:   photo.width[0].Text,
    							caption: photo.caption[0].Text,
    							src:     photo.url[0].Text
  							});

  						//}
  					//}
  				//}
  			}
  			var $photo_div_1 = $("<div></div>").attr("id","photo_1_contents").addClass("blurb");
  			var $photo_div_2 = $("<div></div>").attr("id","photo_2_contents").addClass("blurb");
  			var $img_1 = $("<img></img>").attr("src",photos_arr[0].src).attr("height","72").attr("width","96").attr("alt",photos_arr[0].caption);
  			//var $caption_1 = $("<span></span>").html(photos_arr[0].caption);
  			var $caption_1 = $("<span></span>").html("View Photos &gt;");
  			$photo_div_1.append($img_1).append($caption_1);
  			$("td#player_photo_module div#photo_1").append($photo_div_1);

  			if (photos_arr.length > 1) {
  				var $img_2 = $("<img></img>").attr("src",photos_arr[1].src).attr("height","72").attr("width","96").attr("alt",photos_arr[1].caption);
  				//var $caption_2 = $("<span></span>").html(photos_arr[1].caption);
  				var $caption_2 = $("<span></span>").html("View Photos &gt;");
  				$photo_div_2.append($img_2).append($caption_2);
  				$("td#player_photo_module div#photo_2").append($photo_div_2);
  			}
  		},

  		build_photos : function(data) {
  			$("td#player_photo_module div").empty();
			var $caption_1,$caption_2,p,photo_items_arr,photo_items_arr_len,q,photo,photo_gallery_popup_hrf,$photo_div_1,$photo_div_2,$popup_link,$img_1,$img_2;
  			var plugins_arr = data.plugins[0].members;
  			var plugins_length = plugins_arr.length;
  			var photos_arr = [];
  			for (p=0;p<plugins_length;p++) {
  				if (plugins_arr[p].key === "related-thumbs") {
  					photo_items_arr = plugins_arr[p].item;
  					if (!photo_items_arr) {
  						if ((flags.team_photos === "false") || (!flags.team_photos) ) {
  							_self.no_team_or_player_photos_fallback();
  							return true;
  						} else {
  							playerbio.lookup_urls.undefined_photo_query();
  							return true;
  						}
  					} else {
  						photo_items_arr_len = photo_items_arr.length;
  						for (q=0;q<photo_items_arr_len;q++) {
                			photo = photo_items_arr[q];
  							photos_arr.push({
    							height:  photo.height[0].Text,
    							width:   photo.width[0].Text,
    							caption: photo.caption[0].Text,
    							src:     photo.url[0].Text
  							});

  						}
  					}
  				}
  			}
  			photo_gallery_popup_hrf = "";
  			if (flags.player_gallery) {
  				photo_gallery_popup_hrf = "/photos/player.jsp?player_id="+globals.player_id;
  			}
  			$photo_div_1 = $("<div></div>").attr("id","photo_1_contents").addClass("blurb");
  			$photo_div_2 = $("<div></div>").attr("id","photo_2_contents").addClass("blurb");
  			$popup_link = "";
  			if (photo_gallery_popup_hrf) {
  				$popup_link = $("<a></a>").attr("href",photo_gallery_popup_hrf);
  			}
  			$img_1 = $("<img></img>").attr("src",photos_arr[0].src).attr("height","72").attr("width","96").attr("alt",photos_arr[0].caption);
  			 
  			if ($popup_link) {
				$caption_1 = $("<span></span>").html("View Photos &gt;");
  				$caption_1.wrapInner($popup_link);
  			}
  			$photo_div_1.append($img_1).append($caption_1);
  			$("td#player_photo_module div#photo_1").append($photo_div_1);
  			if (photos_arr.length > 1) {
  				$img_2 = $("<img></img>").attr("src",photos_arr[1].src).attr("height","72").attr("width","96").attr("alt",photos_arr[1].caption);
  				if ($popup_link) {
					$caption_2 = $("<span></span>").html("View Photos &gt;");
  					$caption_2.wrapInner($popup_link);
  				}
  				$photo_div_2.append($img_2).append($caption_2);
  				$("td#player_photo_module div#photo_2").append($photo_div_2);
  			}
  		},

  		team_news : function(data,number) {
  			if ((!number) || (number === playerbio.TOTAL_NUM_NEWS_STORIES)) {
  				$("td#player_news_module").empty();
  				var $hed = $("<h4></h4>").html("NEWS STORIES");
  				$("td#player_news_module").append($hed);
  				var $expand_link = $("<a></a>").attr("href","#").html("+expand").attr("id","expand_news");
  				if ((flags.expanded_news != "false") && (flags.expanded_news)) {
  					$("td#player_news_module").append($expand_link);
  				}
  				$("td#player_news_module").append("<br style='clear:both;' />");
  			}
  			var team_news_arr = data.members[0].item;
  			var team_news_arr_length = team_news_arr.length;
  			var news_arr = [];
  			for (var b=0;b<team_news_arr_length;b++) {
  				var news = {};
  				news.headline = team_news_arr[b].headline[0].Text;
  				news.url = team_news_arr[b].url[0].Text;
  				news_arr.push(news);
  			}
  			var $news_stories_list;
  			if ($("ul#news_stories_list li").length > 1) {
  				$news_stories_list = $("ul#news_stories_list");
  			} else {
  				$news_stories_list = $("<ul></ul>").attr("id","news_stories_list").addClass("bullet_square_black");
  				$("td#player_news_module").append($news_stories_list);
  			}
  			var nlen = news_arr.length;
  			var iterator_size = "";
  			if (nlen >= number) {
  				iterator_size = number;
  			} else {
  				iterator_size = nlen;
  			}
  			for (var c=0;c<iterator_size;c++) {
  				var $href = $("<a></a>").html(news_arr[c].headline).attr("href",news_arr[c].url);
  				var $list_item = $("<li></li>").append($href);
  				$news_stories_list.append($list_item);
  			}
  		},

  		build_news : function(data) {
  			$("td#player_news_module").empty();
  			var plugins_arr = data.plugins[0].members;
  			var plugins_length = plugins_arr.length;
  			var news_arr = [];
  			for (var p=0;p<plugins_length;p++) {
  				if (plugins_arr[p].key === "related-articles") {
  					var news_items_arr = plugins_arr[p].item;
  					if (!news_items_arr) {
  					 	if ((flags.team_headlines === "false") || (!flags.team_headlines) ) {
  							_self.no_team_or_player_headlines_fallback();
  							return true;
  						} else {
  							playerbio.lookup_urls.undefined_news_query(playerbio.TOTAL_NUM_NEWS_STORIES);
  							return true;
  						}
  					} else {
  						var news_items_arr_len = news_items_arr.length;
  						for (var q=0;q<news_items_arr_len;q++) {

  						  // @allison Replaced:
                // var news = {};
                // news.headline = news_items_arr[q].headline[0].Text;
                // news.date = news_items_arr[q].createdate[0].Text;
                // news.contentid = news_items_arr[q].contentid;
                // news.kicker = news_items_arr[q].kicker[0].Text;            
                // news_arr.push(news);
                // with:
                var news = news_items_arr[q];
                news_arr.push({
                  headline:  news.headline[0].Text,
                  date:      news.createdate[0].Text,
                  contentid: news.contentid,
                  kicker:    news.kicker[0].Text
                });

  						}
  					}
  				}
  			}
  			var $news_stories_list = $("<ul></ul>").attr("id","news_stories_list").addClass("bullet_square_black");
  			var nlen = news_arr.length;
  			var mx = "";
  			if (playerbio.TOTAL_NUM_NEWS_STORIES > nlen) {
  				mx = nlen;
  			} else {
  				mx = playerbio.TOTAL_NUM_NEWS_STORIES;
  			}
  			for (var c=0;c<mx;c++) {
  				var xml_date = news_arr[c].date;
  			 	var date_string_arr = xml_date.split("T");
  				var date_string = date_string_arr[0].replace(/-/g,"");
  				var news_link = "/news/article.jsp?ymd="+date_string+"&content_id="+news_arr[c].contentid+"&vkey=news_"+clubProps[globals.cid].club+"&fext=.jsp&c_id="+clubProps[globals.cid].club;
  				var $href = $("<a></a>").html(news_arr[c].headline).attr("href",news_link);
  				var $list_item = $("<li></li>").append($href);
  				$news_stories_list.append($list_item);
  			}
  			var $hed = $("<h4></h4>").html("NEWS STORIES");
  			$("td#player_news_module").append($hed);
  			var $expand_link = $("<a></a>").attr("href","#").html("+expand").attr("id","expand_news");
  			if ((flags.expanded_news != "false") && (flags.expanded_news)) {
  				$("td#player_news_module").append($expand_link);
  			}
  			$("td#player_news_module").append("<br style='clear:both;' />");
  			$("td#player_news_module").append($news_stories_list);
  			if ((nlen < playerbio.TOTAL_NUM_NEWS_STORIES) && (clubProps[globals.cid].club != "mlb")) {
  				var diff = playerbio.TOTAL_NUM_NEWS_STORIES - nlen;
  				playerbio.lookup_urls.undefined_news_query(diff);
  			}
  		}, 

  		build_video : function(data) {
  			var video_items_arr = $.ensureArray(data.mediaContent);
  			var video_items_arr_length = video_items_arr.length;
  			var video_arr = [];
			if (!video_items_arr || video_items_arr_length === 0) {
  				_self.no_video_fallback();
  				return true;
  			} else {
  				for (var q=0;q<video_items_arr_length;q++) {
  					var video = {};
  					video.video_date = video_items_arr[q].dateCreated || "";
					if (video_items_arr[q].title !== "") {
  						video.video_headline = video_items_arr[q].title;
					} else if (video_items_arr[q].blurb !== "") {
						video.video_headline = video_items_arr[q].blurb;
					} else {
						video.video_headline = "";
					}
							
  					video.video_contentid = video_items_arr[q].contentId || "";
					var thumb_arr = $.ensureArray(video_items_arr[q].thumbnails);
					var thumb_arr_length = thumb_arr.length;
  					for (var r=0;r<thumb_arr_length;r++) {
						if (thumb_arr[r].type === "7") {
  							video.thumb_src = thumb_arr[r].src;
  						}
					}
  					video_arr.push(video);
  				}
  			}
  			var more_link = "<a id='more_video' href='/search/media.jsp?player_id="+globals.player_id+"'><br />More Video &gt;</a>";

  			$("div#player_media_thumb").empty();
  			var $video_thumb = $("<img></img>").attr("height","40").attr("width","71").attr("src",video_arr[0].thumb_src);
  			$("div#player_media_thumb").append($video_thumb);
  			$("div#player_media_link_text").empty();
  			$("div#player_media_link_text").html(video_arr[0].video_headline);
  			$("div#player_media_thumb").click(function () {
  				bam.zPlayer.play(video_arr[0].video_contentid);
  			});
  			$("img#video_play_btn").click(function () {
  					bam.zPlayer.play(video_arr[0].video_contentid);
  			});
			if (video_arr.length > 1) {
  				$("div#player_media_link_text").append(more_link);
			}

  			if (video_arr.length > 1) {
  				$("div#player_media_thumb_2").empty();
  				var $video_thumb_2 = $("<img></img>").attr("height","40").attr("width","71").attr("src",video_arr[1].thumb_src);
  				$("div#player_media_thumb_2").append($video_thumb_2);
  				$("div#player_media_link_text_2").empty();
  				var $url_link_2 = $("<span></span>").attr("id","player_media_link_href_2").html(video_arr[1].video_url);
  				$("div#player_media_link_text_2").html(video_arr[1].video_headline);
  				$("div#player_media_link_text_2").append($url_link_2);
  				$("div#player_media_thumb_2").click(function () {
  					bam.zPlayer.play(video_arr[1].video_contentid);
  				});
  				$("img#video_play_btn_2").click(function () {
  					bam.zPlayer.play(video_arr[1].video_contentid);
  				});
  				$("div#player_media_link_text_2").append(more_link);
  			} else {
  				$("div#mw-vod-2").remove();
  			}
  		},

  		fantasy_news : function(data) {
  			var $fantasy_news_module = $("td#player_fantasy_news_module");
  			$fantasy_news_module.empty();
  			var $headline = $("<h4></h4>").html("Fantasy News");
  			$fantasy_news_module.append($headline);
  			var $content_div = $("<div></div>").attr("width","245").css("margin","10px");
  			$fantasy_news_module.append($content_div);
  			var num_results = countQueryResults(data, 'wsfb_fantasy_news_byplayer');
  			if (num_results > 0) {
  				var news_head = data.wsfb_fantasy_news_byplayer.queryResults.row.teaser;
  				var news_text = data.wsfb_fantasy_news_byplayer.queryResults.row.story;
  				var news_link = "/mlb/fantasy/news/#player_id="+globals.player_id;
  				var news_headline = "<a id='fantasy_news_headline' href='"+news_link+"'>"+news_head+"</a><br />";
  				$content_div.append(news_headline).append("<p>"+news_text+"</p>");
  			} else {
  				var hrf = "/mlb/fantasy/wsfb/news/index.jsp?team="+clubProps[globals.cid].club;
  				var lnk = "<a href="+hrf+">"+clubProps[globals.cid].club_full_name+"</a>";
  				var txt = "No fantasy news results for this player. View all " + lnk + " fantasy news.";
  				$content_div.html(txt);
  			}
  		},

  		standings : function (data) {
			var include_pitching = ["ERA","W","SO","SV","WHIP","AVG","GS","CG","SHO","IP","G","HLD"];
			var include_batting = ["AVG","HR", "RBI", "OBP","SLG", "OPS", "R","SB", "BB", "H", "H2B", "H3B"];

  			var pitching_stats_map = {
  				W : "WINS",
  				SO : "STRIKEOUTS",
  				G : "GAMES",
  				GS : "GAMES STARTED",
  				IP : "INNINGS PITCHED",
  				SV : "SAVES",
  				HLD : "HOLDS",
  				AVG : "BATTING AVERAGE AGAINST",
  				ERA : "ERA",
				CG : "COMPLETE GAMES",
				SHO: "SHUTOUTS",
				WHIP : "WHIP",
				PA : "PLATE APPEARANCES",//not specified by cory
				SVO : "SAVE OPPORTUNITIES", //not specified by cory
				GO : "GROUND OUTS", //not specified by cory
				H : "HITS", //not specified by cory
				AO : "AIR OUTS", //not specified by cory
				GIDP : "GROUND INTO DOUBLE PLAY", //not specified by cory
				S : "STRIKES", //not specified by cory
				ER : "EARNED RUNS", //not specified by cory
				R : "RUNS", //not specified by cory
				BB : "WALKS", //not specified by cory
				NP : "NUMBER OF PITCHES", //not specified by cory
				BK : "BALKS", //not specified by cory
				IBB : "INTENTIONAL WALKS", //not specified by cory
				IRS : "INHERITED RUNNERS WHO SCORED", //not specified by cory
				HB : "HIT BATSMEN", //not specified by cory
				L : "LOSSES" ,//not specified by cory,
				HR : "HOME RUNS", //not specified by cory
				AB : "AT BATS", //not specified by cory
				WP : "WILD PITCHES" //not specified by cory
				
				
  			};
  			var batting_stats_map = {
  				HR : "HOME RUNS",
  				RBI : "RUNS BATTED IN",
  				R : "RUNS",
  				H : "HITS",
  				SB : "STOLEN BASES",
  				AVG : "AVG",
  				OBP : "OBP",
  				SLG : "SLG",
  				OPS : "OPS",
				H2B : "DOUBLES",
				H3B : "TRIPLES",
				BB : "WALKS",
				GO : "GROUND OUTS", //not specified by cory
				HBP : "HIT BY PITCH",//not specified by cory
				AB : "AT BATS", //not specified by cory
				GO_AO : "GROUND OUTS/AIR OUTS", //not specified by cory
				CS : "CAUGHT STEALING", //not specified by cory
				IBB : "INTENTIONAL WALKS", //not specified by cory
				TB : "TOTAL BASES", //not specified by cory
				AO : "AIR OUTS", //not specified by cory,
				G : "GAMES", //not specified by cory
				SO : "STRIKEOUTS" //not specified by cory
  			};
  			var executed_standings = false;
        	var prop = (parseInt(globals.statType,10) === 1) ? 'mlb_individual_hitting_rank' : 'mlb_individual_pitching_rank';
  			var standings_arr = getQueryResults(data, prop);
  			var has_results = (standings_arr.length > 0);

  			if (has_results === true && executed_standings === false) {
  				var counter=0;
  				//2.5ms
  				$("table#ranks_table").empty();
  				var $tbody = $("<tbody></tbody>");
  				$("table#ranks_table").append($tbody);
  				var $tr = $("<tr></tr>");

  				var standings_arr_len = standings_arr.length;
  				var batter_rated_stats = ["avg", "obp", "ops", "slg"];
  				var pitcher_rated_stats = ["era","avg"];
  				var standings_obj = {};
  				var num_standings = 0;
				var c,y,i,j,k,p,yr,key,kk,stat,is_qualified,qualifies,b_rated_stats_len,p_rated_stats_len,stand_arr,ssn,ssn2,stat_to_sort,sorted_arr,sorted_arr_len;
				var is_empty_standings,num_boxes_in_last_row,statistic,$rank,$interior_table,$td,headline,suffix,is_first,rnk,sortable_player_string;
				var sortable_player_hrf,row_leader_class,first_highlight_td,season_td,standings_td,rank_td,interior_row,st,valid_stat,arr_to_check,arr_check_len;
				var data_obj,sorted_standings_obj = {};
				if (parseInt(globals.statType,10) === 2) {
					arr_to_check = include_pitching;
				} else {
					arr_to_check = include_batting;
				}
				arr_check_len = arr_to_check.length;
  				//3ms
  				for (j=0;j<standings_arr_len;j++) {
  					if(typeof(standings_arr[j]) === "object" && !!standings_arr[j]) {
  						for (k in standings_arr[j]) {
  							if (!standings_arr[j].hasOwnProperty || standings_arr[j].hasOwnProperty(k)) {
  								if (k.match(/_rank/) && standings_arr[j][k]) {
  									stand_arr = k.split(/_/);
  									stat = stand_arr[0];
  									is_qualified = true;
  									qualifies = standings_arr[j].qualifies;
  									if (qualifies === "N") {
  										if (parseInt(globals.statType,10) === 1) {
  											b_rated_stats_len = batter_rated_stats.length;
  											for (i=0;i<b_rated_stats_len;i++) {
  												if (stat === batter_rated_stats[i]) {
  													is_qualified = false;
  												}
  											}
  										} else {
  											p_rated_stats_len = pitcher_rated_stats.length;
  											for (c=0; c<p_rated_stats_len;c++) {
  												if (stat === pitcher_rated_stats[c]) {
  													is_qualified = false;
  												}
  											}
  										}
  									}
									
  									if (is_qualified === true && ($.inArray(stat.toUpperCase(),arr_to_check) > -1)) {
  							 				if	(standings_obj[stat] !== undefined) {
  												ssn = standings_arr[j].season;
  												standings_obj[stat][ssn] = {};
  												standings_obj[stat][ssn].rank = standings_arr[j][k];
  												standings_obj[stat][ssn].value = standings_arr[j][stat];
  												standings_obj[stat][ssn].league = standings_arr[j].league_code;
  											} else {
  												standings_obj[stat] = {};
  												ssn2 = standings_arr[j].season;
  												standings_obj[stat][ssn2] = {};
  												standings_obj[stat][ssn2].rank = standings_arr[j][k];
  												standings_obj[stat][ssn2].value = standings_arr[j][stat];
  												standings_obj[stat][ssn2].league = standings_arr[j].league_code;
  												num_standings++;
  											}// if standings object already exists for stat
  										} //if is qualified
  								} //if stat is a rank
  							} // if standings_arr hasOwnProperty
  						} // for in
  					} //if typeof standings arr is obj
  				} //for standings array
  				//sort each by date asc
  			
  				for (stat_to_sort in standings_obj) {
  					sorted_arr = playerbio.utils.sort_object(standings_obj[stat_to_sort],"asc");
  					sorted_arr_len = sorted_arr.length;
  					for (y=0;y<sorted_arr_len;y++) {
  						yr = sorted_arr[y][0];
  						data_obj = sorted_arr[y][1];
  						if (sorted_standings_obj[stat_to_sort] !== undefined) {
  							sorted_standings_obj[stat_to_sort][yr] = data_obj;
  						} else {
  							sorted_standings_obj[stat_to_sort] = {};
  							sorted_standings_obj[stat_to_sort][yr] = data_obj;
  						}
  					}
  				}
				
  			//end build object, begin dom manipulation
  				is_empty_standings = playerbio.utils.is_empty_object(sorted_standings_obj);
  				if (!is_empty_standings) {
  					num_boxes_in_last_row = 0;
  					if(typeof(sorted_standings_obj) === "object" && !!sorted_standings_obj) {
						for (p=0;p<arr_check_len;p++) {
						statistic = arr_to_check[p].toLowerCase();
						if (typeof(sorted_standings_obj[statistic]) !== "undefined") {
  						//for (statistic in sorted_standings_obj) {
  							if (!sorted_standings_obj.hasOwnProperty || sorted_standings_obj.hasOwnProperty(statistic)) {
  								if ( (counter % playerbio.NUM_AWARDS_IN_A_ROW === 0) && (counter > 0)) {
  									$("table#ranks_table > tbody").append($tr);
  									$tr = $("<tr></tr>");
  								}
  								$td = $("<td></td>");
  								headline = "";
  								if (parseInt(globals.statType,10) === 1) {
  									if(typeof(batting_stats_map) === "object" && !!batting_stats_map) {
  										for (key in batting_stats_map) {
  											if (!batting_stats_map.hasOwnProperty || batting_stats_map.hasOwnProperty(key)) {
  												if (key === statistic.toUpperCase()) {
  													headline = "<h6>"+batting_stats_map[key]+"</h6>";
  												}
  											}
  										} 
  									}
  								} else {
  									if(typeof(pitching_stats_map) === "object" && !!pitching_stats_map) {
  										for (kk in pitching_stats_map) {
  											if (!pitching_stats_map.hasOwnProperty || pitching_stats_map.hasOwnProperty(kk)) {
  												if (kk === statistic.toUpperCase()) {
  													headline = "<h6>"+pitching_stats_map[kk]+"</h6>";
  												}
  											}
  										} 
  									}
  								}
  								$rank = $("<div></div>").addClass("rank");
  								$interior_table = $("<table></table>").attr("id",statistic).attr("summary",statistic).attr("width","225");
  								if(typeof(sorted_standings_obj[statistic]) === "object" && !!sorted_standings_obj[statistic]) {
  									for (season in sorted_standings_obj[statistic]) {
  										if (!sorted_standings_obj[statistic].hasOwnProperty || sorted_standings_obj[statistic].hasOwnProperty(season)) {
  											suffix = "th";
  											is_first = false;
  											rnk = sorted_standings_obj[statistic][season].rank;
				
											if (parseInt(rnk,10) === 1) {
												is_first = true;
											}
											suffix = playerbio.utils.ordinal(rnk);
											if (parseInt(globals.statType,10) === 1) {
												st = "hitting";
											} else if (parseInt(globals.statType,10) === 2) {
												st = "pitching";
											} else if (parseInt(globals.statType,10) === 3) {
												st = "fielding";
											}
  											sortable_player_string = "/stats/sortable.jsp?c_id="+clubProps[globals.cid].club+"#statType="+st+"&game_type=%27R%27&season="+season+"&sortColumn="+statistic+"&league_code=%27"+sorted_standings_obj[statistic][season].league+"%27";
  											sortable_player_hrf = "<a href='"+sortable_player_string+"'>"+season+"</a>";
  											row_leader_class="";
  											first_highlight_td = "";
  											if (is_first) {
  												first_highlight_td = "<td class='tiny one'>*</td>";
  												row_leader_class= " class='leader'";
  											} else {
  												first_highlight_td = "<td class='tiny'>&nbsp;</td>";
  											}
  											season_td = "<td class='year'>"+sortable_player_hrf+"</td>";
  											standings_td = "<td>"+sorted_standings_obj[statistic][season].value+"</td>";
  											rank_td = "<td>("+rnk+suffix+" in "+sorted_standings_obj[statistic][season].league+")";
  											interior_row = "<tr"+row_leader_class+">"+first_highlight_td+season_td+standings_td+rank_td+"</tr>";
  											$interior_table.append(interior_row);
  										}
  									}
  								}
  								$rank.append($interior_table);
  								$td.append(headline).append($rank);
  								$tr.append($td);
  								counter ++;
  								$interior_table = "";
  								if (counter === (num_standings+num_boxes_in_last_row)) {
  									$("table#ranks_table > tbody").append($tr);
  								}
  								$("h5#ranks_headline").show();
  								$("table#ranks_table").show();
  							}
						} //if statistic is not undefined
  					} //for statistic in sorted standing
  				} // if sorted standings is an object
  			} //if not is empty standings
  		} //if has results
  		executed_standings = true;
  	},

  		awards : function (data) {
  			if (data.player_awards.queryResults.totalSize > 0) {
  				$("table#awards_table").empty();
  				$tbody = $("<tbody></tbody>");
  				$("table#awards_table").append($tbody);
  				$("h5#awards_headline").show();
  				var raw_awards_arr;
				var sorted_awards_obj = {};
				var num_awards = 0;
				var counter = 0;
				var award_arr = [];
				var award_name,i,j,$tr,award,$td,render_award,$headline,$list,$stat_table,$rank,$li,$span,mon,day,yr,mont,yrr,awardDate,awardDateObj,dt,retired_number,team,standings_url;
  				if (parseInt(data.player_awards.queryResults.totalSize,10) === 1) {
  					raw_awards_arr = [data.player_awards.queryResults.row];
  				} else {
  					raw_awards_arr = data.player_awards.queryResults.row;
  				}

  				//sort by award
  				for (j=0;j<raw_awards_arr.length;j++) {
  					award_name = raw_awards_arr[j].award;
  					if (award_name.match(/^(AL|NL)\b/)) {
  						raw_awards_arr[j].lg = "&nbsp;("+ award_name.substr(0,2) + ")";
  						award_name = award_name.substr(3);
  					} 
  					if (sorted_awards_obj[award_name] !== undefined) {
  						sorted_awards_obj[award_name].push(raw_awards_arr[j]);
  					} else {
  						sorted_awards_obj[award_name] = [raw_awards_arr[j]];
  						num_awards++;
  					}
  				}
  				$tr = $("<tr></tr>").attr('id','0');
  				if(typeof(sorted_awards_obj) === "object" && !!sorted_awards_obj) {
  					for (award in sorted_awards_obj) {
  						if (!sorted_awards_obj.hasOwnProperty || sorted_awards_obj.hasOwnProperty(award)) {
  							if ((counter % playerbio.NUM_AWARDS_IN_A_ROW === 0) && (counter > 0)) {
  								$("table#awards_table tbody").append($tr);
  								$tr = $("<tr></tr>").attr('id',counter);
  							}
  							$td = $("<td></td>");
  							render_award = award.toUpperCase();
  							$headline = $("<h6></h6>").text(render_award);
  							$list = $("<ul></ul>").addClass("list");
  							$stat_table = $("<table></table>").attr("cellspacing","0").attr("id",award);
  							$rank = $("<div></div>").addClass("rank");
  							$td.append($headline);

  							award_arr = sorted_awards_obj[award];
  							award_arr.reverse();
  							for (i=0; i<award_arr.length; i++) {
  								//var table_string = "<tr><td class='year'>"+award_arr[i].display_date+"</td><td>"+award_arr[i].team+"</td></tr>";
  								awardDate = award_arr[i].award_date;
  								awardDateObj = DT.parseISODate(awardDate);	
  								dt = "";
  								if (/week/i.test(award)) {
  									mon = awardDateObj.getMonth();
  									mon++;
  									day = awardDateObj.getDate();
  									yr = awardDateObj.getFullYear();
  									dt = mon+"/"+day+"/"+yr;
  								} else if (/month/i.test(award)) {
  									mont = awardDateObj.getMonth();
  									mont++;
  									yrr = awardDateObj.getFullYear();
  									dt = mont+"/"+yrr;
  								} else {
  									dt = awardDateObj.getFullYear();
  								}

  								retired_number = "";
  								if ((/number\s*retired/i.test(award)) && award_arr[i].notes) {
  								 retired_number = "#"+award_arr[i].notes;
  								}
  								$li = $("<li></li>");
  								$span = $("<span></span>").text(dt+": ");
  								team = award_arr[i].team;
  								if (award_arr[i].lg !== undefined) {
  									team += award_arr[i].lg;
  								} else if (award_arr[i].league_abbrev) {
  									team += "&nbsp;("+award_arr[i].league_abbrev+")";
  								}
  								if (retired_number) {
  									team += "&nbsp;"+retired_number;
  								}
  								$li.append($span);
  								$li.append(team);
  								$list.append($li);
  								//$stat_table.append(table_string);
  							}
  							//$stat_table.appendTo($rank);
  							$list.appendTo($td);
  							$tr.append($td);
  							counter ++;
  							if (counter === num_awards) {
  								$("table#awards_table tbody").append($tr);
  							}
  						}
  					}
  				}

  				$("table#awards_table").show();
  			}
  			standings_url = playerbio.lookup_urls.get_standings_query();
  			playerbio.utils.data_query(standings_url,function(data) {playerbio.build_player_info.standings(data);});
  			//playerbio.lookup_urls.standings_query();
  		},
  		additional_links : function() {
  			var splits_hrf = "/stats/individual_player_splits.jsp?c_id="+clubProps[globals.cid].club+"&playerID="+globals.player_id+"&statType="+globals.statType;
  			var game_log_hrf = "/stats/individual_player_gamebygamelog.jsp?c_id="+clubProps[globals.cid].club+"&playerID="+globals.player_id+"&statType="+globals.statType;
  			var bat_vs_pitch_hrf = "/stats/batter_vs_pitcher.jsp?c_id="+clubProps[globals.cid].club;
  			var hit_chart_hrf = "/stats/individual_player_hitting_chart.jsp?c_id="+clubProps[globals.cid].club+"&playerID="+globals.player_id+"&statType="+globals.statType;
  			var postseason_hrf = "/stats/individual_player_postseason.jsp?playerID="+globals.player_id+"&statType="+globals.statType;
  			var more_stats_hrf = "/stats/individual_stats_player.jsp?c_id="+clubProps[globals.cid].club+"&playerID="+globals.player_id;
  			$("a#postseason_hrf").attr('href',postseason_hrf);
  			$("a#game_log_hrf").attr('href',game_log_hrf);
  			$("a#splits_hrf").attr('href',splits_hrf);
  			$("a#bat_vs_pitch_hrf").attr('href',bat_vs_pitch_hrf);
  			$("a#hit_chart_hrf").attr('href',hit_chart_hrf);
  			$("a#game_log_hrf").attr('href',game_log_hrf);
  			$("a#more_stats_hrf").attr('href',more_stats_hrf);
			$("div#more_links").show();
  		},

  		remove_additional_links : function() {
			if ($("div#more_links").length > 0) {
  				$("div#more_links").hide();
			} 
  		},

  		top_left_historical : function(info) {
  			var left_list = "";
  			$("div#feature").addClass("historical");
  			$("div#main_image").empty();
  			$("div#modules").remove();
  			var headshot = "";
  			if (flags.mug_shot === "true") {
  				headshot = "<img class='head_shot' src='/images/players/mugshot/ph_"+globals.player_id+".jpg' />";
  			} else {
  				if (clubProps[globals.cid]) {
  					headshot = "<img class='head_shot' src='/images/players/mugshot/placeholders/"+clubProps[globals.cid].club+".jpg' alt='"+clubProps[globals.cid].name_display_long+"' />";
  				} else {
  					headshot = "&nbsp;";
  				}
  			}
  			$("div#main_image").append(headshot);
  			$("div#stats_current").remove();
  			$("div#stats_current_date").remove();
  			var $hed = $("<h3></h3>");
  			var $team_logo = "";
  			if (clubProps[globals.cid]) {
  				var team_logo_src="/images/logos/30x34/"+clubProps[globals.cid].team_code+"_logo.png";
  				$team_logo = $("<img>").attr("id",'player_team_logo').addClass("logo").addClass("png").attr("src",team_logo_src).attr("alt",clubProps[globals.cid].name_display_long+" Logo").attr("align",'absmiddle');
  				if (globals.cid === "la") {
  					$team_logo.css("backgroundColor","#0F3E6F");
  				}
  			} else {
  				$team_logo = "&nbsp;";
  			}
  			$hed.append($team_logo);
  			var display_name = info.display_name + "&nbsp;";
  			$hed.append(display_name);

  			if (info.jersey_number) {
  				var player_num = "<span id='player_number'>"+info.jersey_number+"</span>";
  				$hed.append(player_num);
  			} 
  			if (info.primary_position_txt) {
  				var player_pos = "<span id='player_position'>&nbsp;|&nbsp;"+info.primary_position_txt+"</span>";
  				$hed.append(player_pos);
  			}

  			var $main_name = $("<div></div>").attr("id","main_name");
  			$main_name.append($hed);
			if (!flags.hide_bio) {
  				var bio_span = "<span class='bio'><a id='bio_link' href='#'>Bio &gt;</a>";
  				$hed.after(bio_span);
			}
  			var $stats_physical = $("<div></div>").attr("id","stats_physical");
  			$stats_physical.append($main_name);
  			$("div#main_image").after($stats_physical);

  			var $first_list = $("<ul></ul>").addClass("stats_historical");
  			$("div#main_name").after($first_list);
  			var name = "<li>Full Name: <strong>";
  			if (info.name_first) {
  				name += info.name_first + "&nbsp;";
  			} 
  			if (info.name_nick) {
  				name += "\""+info.name_nick + "\"&nbsp;";
  			}
  			if (info.name_middle) {
  				name += info.name_middle + "&nbsp;";
  			}
  			if (info.name_last) {
  				name += info.name_last + "&nbsp;";
  			}
  			name += "</strong></li>";
  			//$first_list.append($li_name);
  			left_list += name;
  			var month_names = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"];
  			var birthdayObj = DT.parseISODate(info.birth_date);
  			var birth_date = birthdayObj.getDate();
  			var birth_month = birthdayObj.getMonth();
  			var birth_year = birthdayObj.getFullYear();
  			var birthday_long = month_names[birth_month] + " " + birth_date + ", " + birth_year;
  			var birth_city = "";
  			if (info.birth_city) {
  				birth_city += info.birth_city;
  			}
  			if (info.birth_state) {
  				birth_city += ", "+info.birth_state;
  			}
  			if (info.birth_country != "USA") {
  				birth_city += ", "+info.birth_country;
  			}
  			if (birth_city) {
  				var li_born = "<li>Born: <strong>"+birthday_long+" in "+birth_city+"</strong>";
  				left_list += li_born;
  			}
  			if (info.height_feet && info.height_inches) {
  				var li_height = "<li>Height: <strong>"+info.height_feet+"' "+info.height_inches+"'' </strong>";
  				left_list += li_height;
  			}
  			if (info.weight) {
  				var li_weight = "<li>Weight: <strong>"+info.weight+"</strong>";
  				left_list += li_weight;
  			}
  			$first_list.html(left_list);
  			var right_list = "";
  			var $list_2 = $("<ul></ul>").addClass("stats_historical");
  			if (info.bats) {
  				var bat = "";
  				switch (info.bats) {
  				case "L":
  					bat = "Left";
  					break;
  				case "R":
  					bat = "Right";
  					break;
  				case "S":
  					bat = "Switch";
  					break;
  				default:
  					bat = "N/A";
  				}
  				var li_bats = "<li>Bats: <strong>"+bat+"</strong>";
  				//$list_2.append(li_bats);
  				right_list += li_bats;
  			}
  			if (info.tosses) {
  				var thro = "";
  				switch (info.tosses) {
  				case "L":
  					thro = "Left";
  					break;
  				case "R":
  					thro = "Right";
  					break;
  				case "S":
  					thro = "Switch";
  					break;
  				default:
  					thro = "N/A";
  				}
  				var li_throws = "<li>Throws: <strong>"+thro+"</strong>";
  				right_list += li_throws;
  			}
  			var li_college;
  			if (info.college) {
  				li_college = "<li>College: <strong>"+info.college+"</strong>";
  			} else {
  				li_college = "<li>College: <strong>N/A</strong>";
  			}
  			right_list += li_college;
  			if (info.pro_debut_date) {
  				var debut_fulldate = info.pro_debut_date;
  				var debutObj = DT.parseISODate(debut_fulldate);
  				var debut_date = debutObj.getDate();
  				var debut_month = debutObj.getMonth();
  				var debut_year = debutObj.getFullYear();
  				var debut_long = month_names[debut_month] + " " + debut_date + ", " + debut_year;
  				var li_debut = "<li>MLB Debut: <strong>"+debut_long+"</strong>";
  				right_list += li_debut;
  			}
  			$list_2.html(right_list);
  			$first_list.after($list_2);
  			if (flags.action_shot === "true") {
  				var action_img_src = "/images/players/action/ph_"+globals.player_id+".jpg";
  				var action_img = "<img class='action_shot' src='"+action_img_src+"' alt='"+info.display_name+"' />";
  				$stats_physical.after(action_img);
  			}
  		},	
  		large_photo : function(info) {
  			var background_image_src = "";
  			if ((flags.large_photo === "false") || (!flags.large_photo)) {
  				background_image_src = "/images/players/525x330/placeholders/"+clubProps[globals.cid].club+".jpg";
  			} else {
  				 background_image_src = "/images/players/525x330/"+globals.player_id+".jpg";
  			}
  			$("div#main_image").css("background-image","url('"+background_image_src+"')");
  			//$("h1#player_name").text(info.display_name);
  			$("span#player_number").text(info.jersey_number);
  			$("span#player_position").html("&nbsp;|&nbsp;"+info.primary_position_txt);
  			var team_logo_src="/images/logos/30x34/"+clubProps[globals.cid].team_code+"_logo.png";
  			$("img#player_team_logo").addClass("logo").addClass("png").attr('src',team_logo_src).attr('alt',clubProps[globals.cid].name_display_long + " Logo");
  			var large_photo_src = "/images/players/mugshot/ph_"+globals.player_id+".jpg";
  			$("img#player_large_photo").attr('src',large_photo_src).attr('alt',info.display_name);
  			var strikebreaker_player_ids = ["132788","407791"];
  			if ($.inArray(globals.player_id,strikebreaker_player_ids) > -1) {
  				$("img#players_choice_logo").hide();
  			}
  		},
		process_date : function(orig_date) {
			var bucket_arr,m,d,y,ymd_arr,start_date,returned_date;
			bucket_arr = orig_date.split("T");
			ymd_arr = bucket_arr[0].split("-");
			y = ymd_arr[0];
			m = parseInt(ymd_arr[1],10) - 1;
			d = ymd_arr[2];
			returned_date = new Date();
			returned_date.setFullYear(y,m,d);
			return returned_date;
		},
		set_default_game_type : function() {		
			var curr_date = new Date();
			var curr_year = curr_date.getFullYear();
			var org_history_url = "/lookup/json/named.org_game_type_date_info.bam";
			var org_history_data = {
				season: curr_year,
				sport_code: "'mlb'",
				game_type : ["'S'","'A'","'R'","'D'","'L'","'W'"]
			};
			var current_season;
			var current_game_type;
			 $.ajax({
  				url: org_history_url,
				data : org_history_data,
				traditional:true,
				dataType: "json",
  				success: function (data) {
        			var org_history_arr = bam.util.getQueryResults(data,"org_game_type_date_info");
					var i,n,world_series,all_star;
					var s_arr =[];
					var r_arr = [];
					var l_arr = [];
					var d_arr = [];
			//set dates
					for (i=0;i<org_history_arr.length;i++) {
						if (org_history_arr[i].game_type === "S") {
							s_arr.push(playerbio.build_player_info.process_date(org_history_arr[i].first_game_date));
						}
						if (org_history_arr[i].game_type === "A") {
							all_star = playerbio.build_player_info.process_date(org_history_arr[i].first_game_date);
						}
						if (org_history_arr[i.game_type] === "D") {
							d_arr.push(playerbio.build_player_info.process_date(org_history_arr[i].first_game_date));
						}
						if (org_history_arr[i].game_type === "L") {
							l_arr.push(playerbio.build_player_info.process_date(org_history_arr[i].first_game_date));
						}
						if (org_history_arr[i].game_type === "R") {
							r_arr.push(playerbio.build_player_info.process_date(org_history_arr[i].first_game_date));
						}
						if (org_history_arr[i].game_type === "W") {
							world_series = playerbio.build_player_info.process_date(org_history_arr[i].first_game_date);
						}
					}
					s_arr.sort();
					d_arr.sort();
					l_arr.sort();
					r_arr.sort();
					//test against current date
					if (curr_date < s_arr[0]) {
						current_season = curr_year - 1;
						current_game_type = "'W'";
					} else {
						current_season = curr_year;
						if (curr_date === all_star) {
							current_game_type = "'A'";
						}
						if (s_arr[0] <= curr_date < r_arr[0]) {
							current_game_type = "'S'";
						}
						if ((r_arr[0] <= curr_date < d_arr[0]) && (current_game_type !== "'A'")) {
							current_game_type = "'R'";
						}
						if (d_arr[0] <= curr_date < l_arr[0]) {
							current_game_type = "'D'";
						}
						if (l_arr[0] <= curr_date < world_series) {
							current_game_type = "'L'";
						}
						if (world_series >= curr_date) {
							current_game_type = "'W'";
						}
					}
					if ((current_game_type === "'W'") || (current_game_type === "'L'") || (current_game_type === "'D'")) {
						current_game_type = "'P'";
					}
					$('#stats_nav_game_type').val(current_game_type);
					//.selectmenu();
      			},
				error: function(a,b,c) {
				}
			});
		},


  		top_bio_info : function(info) {
			var name_complete = info.name_first + " " + info.name_middle + " " + info.name_last;
  			var month_names = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"];
  			var birthdayObj = DT.parseISODate(info.birth_date);
  			var birth_date = birthdayObj.getDate();
  			var birth_month = birthdayObj.getMonth();
  			var birth_year = birthdayObj.getFullYear();
			birth_month = parseInt(birth_month,10) + 1;
  			var birthday_long = birth_month + "/" + birth_date + "/" + birth_year;
			
			var debut_fulldate,debutObj,debut_date,debut_month,debut_year,debut_long,player_shop_link;
			
  			$("span#player_birthday").text(birthday_long);

  			$("span#player_birth_city").text(info.birth_city);
  			$("span#player_birth_state").text(info.birth_state);
  			if (info.birth_country != "USA") {
  				$("span#player_birth_country").text(info.birth_country);
  			}
			$("span#bvp_player_last").html(info.name_last+"&nbsp;vs.&nbsp;");
  			$("span#player_bats").text(info.bats);
  			$("span#player_throws").text(info.tosses);
  			$("span#player_height_feet").text(info.height_feet);
  			$("span#player_height_inches").text(info.height_inches);
  			$("span#player_weight").text(info.weight);

  			if (info.college) {
  				$("span#college").text(info.college);
  			} else {
  				$("span#college").text("N/A");
  			}
  			if (info.pro_debut_date) {
  				debut_fulldate = info.pro_debut_date;
  				debutObj = DT.parseISODate(debut_fulldate);
  				debut_date = debutObj.getDate();
  				debut_month = debutObj.getMonth();
  				debut_year = debutObj.getFullYear();
  				debut_month = parseInt(debut_month,10) + 1;
  				debut_long = debut_month + "/" + debut_date + "/" + debut_year;
  				$("span#mlb_debut").text(debut_long);
  			}
  			$("div#player_status").html("Status:&nbsp;"+info.status);
			$("#player_full_name").text(name_complete);
			$("#stats_summary_headline").html(info.display_name.toUpperCase()+"&nbsp;STATS SUMMARY");
  			player_shop_link = "<a href='http://shop.mlb.com/search/index.jsp?kwCatId="+clubProps[globals.cid].club+"&amp;kw="+info.display_name+"&amp;origkw="+info.display_name+"&amp;sr=1;' target='_blank'>Get "+info.display_name+" gear at the "+info.team_name+" shop&nbsp;&gt;</a>";
  			$("div#player_shop_link").html(player_shop_link);
  		}
  	}; //end self
  	return _self;
  })();

  playerbio.build_team = (function(){
  	var _self = {
		append_roster_season : function() {			
			var roster_select_year = "";
			var output_year = "";
			var i,opt_node;
			
			if (globals.roster_year && globals.roster_year != "null") {
				roster_select_year = globals.roster_year;
			} else {
				//roster_select_year = globals.season;
				roster_select_year = "current";
			}
			$("#team_roster_season").append("<option value=\"current\">Current</option>");
			for (i=globals.season; i>=1871; i--) {
				output_year = i;
				opt_node = $("<option></option>").val(i).text(output_year);
				if (parseInt(i,10) === parseInt(roster_select_year,10)) {
					opt_node.attr("selected","selected");
				}
				$("#team_roster_season").append(opt_node);
			}
			
		},
		append_bvp_team_nav : function() {
			
			$("#bvp_players").hide();
			var team_url = "/lookup/json/named.team_all_season.bam";
			var team_data = {
				all_star_sw: "'N'",
				sport_code: "'mlb'",
				sort_order: "'name_asc'",
				season: bbq_stats.getBbqVal("season") || globals.season
			};
			$.ajax({
  				type: "GET",
  				url: team_url,
  				dataType: "json",
				data : team_data,
  				async: true,
  				success: function(results) {
					$("#bvp_team_select").empty();
					var first_node = $("<option></option>").val("").text("Choose Team");
					$("#bvp_team_select").append(first_node);
					var i,opt_node,bvp_team_name,team_id,url;
					var res = getQueryResults(results,"team_all_season");
					var res_len = res.length;
					var bbq_team = bbq_stats.getBbqVal("bvpTeam");
					for (i=0; i<res_len; i++) {
						bvp_team_name = res[i].name_display_full;
						team_id = res[i].team_id;
						if (team_id !== globals.teamId) {
							opt_node = $("<option></option>").val(team_id).text(bvp_team_name);
							if (team_id === bbq_team) {
								opt_node.attr("selected","selected");
								if (globals.statType === "1") {
									url = "/lookup/json/named.historical_roster.bam?team_id="+team_id+"&season="+bbq_stats.getBbqVal('season')+"&position=%271%27";
								} else {
									url = "/lookup/json/named.historical_roster.bam?team_id="+team_id+"&season="+bbq_stats.getBbqVal('season');
								}
								
								playerbio.utils.data_query(url,function(data) {playerbio.build_team.bvp_player_nav(data);});
							}
							
							
							$("#bvp_team_select").append(opt_node);
						} 
					}
					//$("#bvp_team_select").selectmenu();
				}				
  			});	
		
		},
		bvp_player_nav : function(data) {
			var team_id = bbq_stats.getBbqVal("bvpTeam");
			var i,opt_node,player_name,player_id,res,team_name,first_node,res_len,bvp_player;
			bvp_player = bbq_stats.getBbqVal('bvpPlayer');
			$("#bvp_player_select").empty();
			if (team_id) {
				res = getQueryResults(data,"historical_roster");
				team_name = res[0].team_full;
				first_node = $("<option></option>").val("").text("All "+team_name+ " Players");
				res_len = res.length;
				$("#bvp_player_select").append(first_node);
				for (i=0; i<res_len; i++) {
					player_name = res[i].name_display_last_first;
					player_id = res[i].player_id;
					opt_node = $("<option></option>").val(player_id).text(player_name);
					if (player_id === bvp_player) {
						opt_node.attr("selected","selected");
					}
					$("#bvp_player_select").append(opt_node);
				}	
				$("#bvp_players").show();			
				//$("#bvp_player_select").selectmenu();
			} else {
				res = getQueryResults(data,"search_batter_vs_pitcher");
				first_node = $("<option></option>").val("").text("All Opponents Faced");
				res_len = res.length;
				$("#bvp_player_select").append(first_node);
				for (i=0; i<res_len; i++) {
					player_name = res[i].vs;
					player_id = res[i].vs_id;
					opt_node = $("<option></option>").val(player_id).text(player_name);
					if (player_id === bvp_player) {
						opt_node.attr("selected","selected");
						$("#bvp_team_select").val(res[i].vs_team_id);
						//$("#bvp_team_select").selectmenu("value",res[i].vs_team_id);
						bbq_stats.updateBbqHash({"bpvTeam":res[i].vs_team_id});
					}
					$("#bvp_player_select").append(opt_node);
				}	
				$("#bvp_players").show();			
				//$("#bvp_player_select").selectmenu();
			}
		},
		append_stats_nav : function() {	
			$("#stats_nav_season").empty();
			var newest_date,oldest_date, n_d, o_d,i,opt_node;		
			var selected_section_type = bbq_stats.getBbqVal("sectionType");
			var selected_stat_type = bbq_stats.getBbqVal("statType");
			var selected_season = bbq_stats.getBbqVal("season");
			if (!selected_season) {
				selected_season = globals.season;
			}
			if (!selected_stat_type) {
				selected_stat_type = globals.statType;
			}
			if (parseInt(selected_stat_type,10) === 1) {
				if ((selected_section_type === "gameLog") || (selected_section_type === "bvp")) {
					newest_date = globals.end_game_log_batting_year;
					oldest_date = globals.start_game_log_batting_year;
				} else if (selected_section_type === "splitsCareer") {
					newest_date = globals.end_splits_batting_year;
					oldest_date = globals.start_splits_batting_year;
				}
			} else if (parseInt(selected_stat_type,10) === 2) {
				if ((selected_section_type === "gameLog") || (selected_section_type === "bvp")) {
					newest_date = globals.end_game_log_pitching_year;
					oldest_date = globals.start_game_log_pitching_year;
				} else if (selected_section_type === "splitsCareer") {
					newest_date = globals.end_splits_pitching_year;
					oldest_date = globals.start_splits_pitching_year;
				}
			} else if (parseInt(selected_stat_type,10) === 3) {
				if ((selected_section_type === "gameLog") || (selected_section_type === "bvp")) {
					newest_date = globals.end_game_log_fielding_year;
					oldest_date = globals.start_game_log_fielding_year;
				} else if (selected_section_type === "splitsCareer") {
					newest_date = globals.end_splits_fielding_year;
					oldest_date = globals.start_splits_fielding_year;
				}
			}
			n_d = parseInt(newest_date,10);
			o_d = parseInt(oldest_date,10);
			for (i=n_d; i>=o_d; i--) {
				output_year = i.toString();
				opt_node = $("<option></option>").val(output_year).text(output_year);
				if (i === parseInt(selected_season,10)) {
					opt_node.attr("selected","selected");
				}
				$("#stats_nav_season").append(opt_node);
			}
			//$("#stats_nav_season").selectmenu();
		},
		
  		roster : function(roster_data,yr) {
			var roster_year = "";
  			var $roster_tbl = $("table#roster_table");
  			$("table#roster_table tbody").empty();
  			var num_results = roster_data.roster_all.queryResults.totalSize;
  			if (num_results > 0) {
  				var roster_arr = roster_data.roster_all.queryResults.row;
  				$("#player_team").text(roster_arr[0].team_name);
  				$roster_tbl.attr("summary",roster_arr[0].team_name + " Roster");
  				for (var i=0; i<roster_arr.length;i++) {
  					var t_id = roster_arr[i].team_id;
  					var t = "";
  					jQuery.each(clubProps, function(key, val) {
  						jQuery.each(val, function(k, v) {
  							if (k === "team_id") {
  								if (v === t_id) {
  									t = key;
  								}
  							}
  						});
  					});
  					var player_bio_href = "";
					if (yr !== "current") {
						roster_year = "roster_year="+yr+"&";
					}
					
  					if (clubProps[t]) {
  						 player_bio_href = "/team/player.jsp?"+roster_year+"player_id="+roster_arr[i].player_id+"&c_id="+clubProps[t].club;
  					} else {
  						player_bio_href = "/team/player.jsp?"+roster_year+"player_id="+roster_arr[i].player_id+"&c_id=mlb";
  					}
  					var player_bio_link = "<a href='"+player_bio_href+"'>"+roster_arr[i].name_display_first_last+"</a>";
  					var row = "<tr><td>"+player_bio_link+"</td><td>"+roster_arr[i].position_txt+"</td></tr>";
  					$("table#roster_table tbody").append(row);
  				}
  			} else {
  				$("table#roster_table tbody").html("<tr><td>No players found.</td></tr>");
  			}
  		},
  		historical_roster : function(roster_data,yr) {
  			var $roster_tbl = $("table#roster_table");
  			$("table#roster_table tbody").empty();
  			var num_results = roster_data.historical_roster.queryResults.totalSize;
  			if (num_results > 0) {
  				var roster_arr = roster_data.historical_roster.queryResults.row;
  				$("#player_team").text(roster_arr[0].team_full);
  				$roster_tbl.attr("summary",roster_arr[0].team_full + " Roster");
  				for (var i=0; i<roster_arr.length;i++) {
  					var player_bio_href = "/team/player.jsp?player_id="+roster_arr[i].player_id+"&roster_year="+yr+"&c_id="+roster_arr[i].file_code;
  					var player_bio_link = "<a href='"+player_bio_href+"'>"+roster_arr[i].name_display_first_last+"</a>";
  					var pos = roster_arr[i].position;
  					if (!pos) {
  						pos = roster_arr[i].primary_position;
  					}
  					var row = "<tr><td>"+player_bio_link+"</td><td>"+pos+"</td></tr>";
  					$("table#roster_table tbody").append(row);
  				}
  			} else {
  				$("table#roster_table tbody").html("<tr><td>No players found.</td></tr>");
  			}
  		}
  	}; //end self
  	return _self;
  })();

  playerbio.build_table = (function(){
  	var _self = {

  		build_row_from_row : function(source_table_name,target_table_name,target_table_id,init_array,passed_target_cells_array) {
  			var avail_rows = parseInt(source_table_name.RowCount,10) - 1;
  			if (avail_rows > -1) {
  				var target_row = source_table_name.rows(avail_rows);
  				var target_row_cells_arr;
  				if (passed_target_cells_array) {
  					target_row_cells_arr = passed_target_cells_array;
  				} else {
  					target_row_cells_arr = target_row.cells;
  				}
  				if (target_row) {
  					var source_cols = source_table_name.columns();
  					var target_cols = target_table_name.columns();
  					var target_totals_arr = init_array;
  					for (var p=0; p<target_cols.length; p++) {
  						for (var m=0; m< source_cols.length; m++) {
  							if (target_cols[p].dataField.toUpperCase() === source_cols[m].dataField.toUpperCase()) {
  								var target_index = target_cols[p].index;
  								var source_index = source_cols[m].index;
  								target_totals_arr[target_index] = target_row_cells_arr[source_index].value.toString();
  							}
  						}
  					}
  					target_table_name.insertRow(target_totals_arr,false);
  					target_table_name.render(target_table_id);
  				}
  			} else {
  				$("#"+target_table_id).html("No Results");
  			}

  		}
  	}; //end self
  	return _self;
  })();


  playerbio.init = function() {
	var awards_query_url =  "/lookup/json/named.player_awards.bam?player_id="+globals.player_id;
	var fixed_video_url = "/ws/search/MediaSearchService?type=json&player_id="+ globals.player_id+"&mlbtax_key=profile&start=0&sort=desc&sort_type=date&op=and&hitsPerPage=1";
	var video_search_url = "/ws/search/MediaSearchService?type=json&player_id="+globals.player_id+"&start=0&sort=desc&sort_type=date&subject=MLBCOM_TOP_PLAY|MLBCOM_FEATURE&op=and&hitsPerPage=2";
  	var video_intro_link = "/ws/search/MediaSearchService?type=json&player_id="+globals.player_id+"&mlbtax_key=profile&start=0&sort=desc&sort_type=date&op=and&hitsPerPage=1";
	var fantasy_news_url = "/fantasylookup/json/named.wsfb_fantasy_news_byplayer.bam?playerid="+globals.player_id;
	var player_info_url = playerbio.player_personal_info.player_info_url();
	var roster_query,rquery;
	var has_stat_type_url = "/lookup/json/named.mlb_individual_has_stats_year.bam?player_id="+globals.player_id;
	playerbio.utils.data_query(has_stat_type_url,function(data) {playerbio.build_player_info.has_stat_type(data);});
  	playerbio.build_team.append_roster_season();
  	playerbio.utils.data_query(player_info_url,function(data) {playerbio.player_personal_info.player_obj(data);});
	
	console.log(globals.roster_year);
  	if ((globals.roster_year) && (globals.roster_year != "null")) {
		console.log("roster_year is " + globals.roster_year);
  		roster_query = playerbio.lookup_urls.forty_man_query(globals.roster_year,clubProps[globals.roster_cid].team_id+"_"+clubProps[globals.roster_cid].league);
  		if (roster_query) {
  			playerbio.utils.data_query(roster_query,function(data) {playerbio.build_team.roster(data,globals.roster_year);});
  		}
  	} else if (globals.roster_cid != "mlb") {
  		rquery = playerbio.lookup_urls.forty_man_query("current",clubProps[globals.roster_cid].team_id+"_"+clubProps[globals.roster_cid].league);
  		if (rquery) {
  			playerbio.utils.data_query(rquery,function(data) {playerbio.build_team.roster(data,"current");});
  		}
  	}
  	playerbio.utils.data_query(awards_query_url,function(data) {playerbio.build_player_info.awards(data);});
  	if (flags.is_historical === "true") {
  		playerbio.build_player_info.remove_additional_links();
  	} else {
		playerbio.build_player_info.additional_links();
		//Request video
		//playerbio.utils.data_query(video_search_url,function(data) {playerbio.build_player_info.build_video(data);}, playerbio.build_player_info.no_video_fallback);
  		playerbio.utils.deferred_query([video_intro_link, video_search_url], function() {
			if(arguments.length) {
				var introData = arguments[0][0], searchData = arguments[1][0], combinedData = {};
					$.extend(combinedData, searchData);
				if($.isArray(combinedData.mediaContent) && $.isArray(introData.mediaContent)) {
					combinedData.mediaContent = introData.mediaContent.concat(combinedData.mediaContent);
				}
				
				playerbio.build_player_info.build_video(combinedData); 
			}
		}, playerbio.build_player_info.no_video_fallback);
		
		playerbio.utils.data_query(fantasy_news_url,function(data) {playerbio.build_player_info.fantasy_news(data);},playerbio.build_player_info.no_team_or_player_headlines_fallback);

  		if ((flags.expanded_news != "false") && (flags.expanded_news)) {
  			$("a#expand_news").live('click', function(e) {
				e.preventDefault();
				bam.popModule.init({});
  				playerbio.utils.launch_pop("/components/team/player/news_iframe.jsp?player_id="+globals.player_id);
  			});
  		} else {
  			$("a#expand_news").hide();
  		}
  	}


  	if ((flags.cms_info != "false") && (flags.cms_info)) {
  		playerbio.lookup_urls.cms_info_query();
  	} else {
  		playerbio.build_player_info.no_cms_data_fallback();
  	}
  	 $("select#team_roster_name option").each(function () { 
  	 	var team_info = $(this).val();
  		var t_i_arr = team_info.split("_");
  		var t_i = t_i_arr[0];
  	 	if (t_i === clubProps[globals.roster_cid].team_id) {
  	 		$(this).attr("selected","selected");
  		}
  	});
	

  		$(".player_search").click(function () {
  			window.location.href="/mlb/players/";
  		});

  		$("select#team_roster_season").change(function () {
  		 		$("select#team_roster_season option:selected").each(function () {
  					var roster_year, selected_season, selected_team, lookup_url;
  						selected_team   = $("select#team_roster_name option:selected").val();
  						selected_season = $(this).val();
					if (selected_season == "current") {
						roster_year = globals.season;
						lookup_url  = playerbio.lookup_urls.forty_man_query(selected_season,selected_team);
						playerbio.utils.data_query(lookup_url,function(data) {playerbio.build_team.roster(data,"current");});
					} else {
						roster_year = selected_season;
						lookup_url  = playerbio.lookup_urls.historical_forty_man_query(selected_season,selected_team);
						playerbio.utils.data_query(lookup_url,function(data) {playerbio.build_team.historical_roster(data,roster_year);});
					}
                });
  		});

  		$("select#team_roster_name").change(function () {
  		 		$("select#team_roster_name option:selected").each(function () {
  					var roster_year, selected_season, selected_team, lookup_url;
  						selected_season = $("select#team_roster_season option:selected").val();
  						selected_team   = $(this).val();
					if (selected_season == "current") {
						roster_year = globals.season;
						lookup_url  = playerbio.lookup_urls.forty_man_query(selected_season,selected_team);
						playerbio.utils.data_query(lookup_url,function(data) {playerbio.build_team.roster(data,"current");});
					} else {
						roster_year = selected_season;
						lookup_url  = playerbio.lookup_urls.historical_forty_man_query(selected_season,selected_team);
						playerbio.utils.data_query(lookup_url,function(data) {playerbio.build_team.historical_roster(data,roster_year);});
					}
                });
  		});

  		$(".career_button").click(function () {
  			var divname = this.name;
  			$("#"+divname).show('').siblings().hide('');
  			if($(".career_button").hasClass('active')) {
  				$(".career_button").removeClass('active').addClass('inactive');
  			}
  			if($(this).hasClass('inactive')) {
  				$(".career_button").addClass('inactive');
  				$(this).addClass('active').removeClass('inactive');
  				this.blur();	
  			}
  		});
  			//utils.equalize_module_div_height("module");
  };

  // $(document).ready();
})();

