var CourtSideBox = Class.create({

	initialize : function(base, identifier_pattern, identifier_slash_replacement) {
		if (!base) { return; }
	
		this.identifier_pattern = identifier_pattern != null ? identifier_pattern : "csb-";
		this.identifier_slash_replacement = identifier_slash_replacement != null ? identifier_slash_replacement : "-";
		this.base = base;
		
		this.setOptions();
		this.setDomElements();
		this.setProperties();
		this.setStartPosition();

		
		if (this.today_game) {
		
			this.today_game_code = this.today_game.getAttribute("id")
										.replace(new RegExp(this.identifier_pattern), "")
										.replace(new RegExp(this.identifier_slash_replacement), "/");
										
			this.loadTodayData();
		}
	},
	
	setOptions : function() {
	
	},
	
	setDomElements : function() {
		
		this.games = this.base.select(".game");
		this.today_game = this.base.down(".today");
		this.first_upcoming_game = this.base.down(".first_upcoming");
	
	},
	
	setProperties : function() {

		this.timer = null;
		this.first_upcoming_game_position = 0;
		
		for(var i=0; i < this.games.length; i++) {
			
			if (this.games[i] == this.first_upcoming_game) {
				
				this.first_upcoming_game_position = i;
				
				break;
			}
		}		
	},
	
	setStartPosition : function() {
	
		//var navigate_to = this.first_upcoming_game_position - 2 < 0 ? 0 : this.first_upcoming_game_position - 2;
		//this.base.scrollerModule.navigate(navigate_to);
		
		return;
			
	},
	
	loadTodayData : function() {
		
		new Ajax.Request('/games/game_component/dynamic/simple_scoreboard.xml', {
			method : "GET",
			onComplete: (function(response) {
				this.updateTodayMatchupWithData(response.responseXML);
			}).bind(this)
		});
	},
	
	updateTodayMatchupWithData : function(simpleScoreboardData) {
	
		if (!simpleScoreboardData) { this.timer = setTimeout(this.loadTodayData.bind(this), 30000); return; }
	
		var games = simpleScoreboardData.getElementsByTagName("game");
		
		for (var i = 0; i < games.length; i++) {
	
			var game = games[i];
			
			var game_status = parseInt(game.getAttribute("gstat"), 10);
			var gamecode = game.getAttribute("gcd");
			
			if (gamecode == this.today_game_code) {

				if (game_status == 1) {
			
					this.timer = setTimeout(this.loadTodayData.bind(this), 30000);
					
				} else if (game_status > 1) {
				
					var clock = game.getAttribute("clk");
					
					if (clock) {
						clock = "<br/>" + clock;
					}
					
					var vtm = game.getElementsByTagName("vtm")[0];
					var vtm_teamcode = vtm.getAttribute("tcd");
					var vtm_info = vtm.getAttribute("tm");
					var vtm_info_array = vtm_info.split("|");
					var vtm_abbreviation = vtm_info_array[3];

					var vtm_scores = vtm.getAttribute("scr");
					var vtm_scores_array = vtm_scores.split("|");
					var vtm_total_score = vtm_scores_array[8];

					var htm = game.getElementsByTagName("htm")[0];
					var htm_teamcode = htm.getAttribute("tcd");
					var htm_info = htm.getAttribute("tm");
					var htm_info_array = htm_info.split("|");
					var htm_abbreviation = htm_info_array[3];

					var htm_scores = htm.getAttribute("scr");
					var htm_scores_array = htm_scores.split("|");
					var htm_total_score = htm_scores_array[8];

					this.today_game.down(".matchup, .live_game").replace([
						'<div class="live_game">',
							'<div class="team_infos">',
								'<div class="', vtm.getAttribute("tcd"), ' visiting_team info">',
									'<div class="score">', vtm_total_score, '</div>',
									'<div class="abbreviation">',
										'<a href="/', vtm.getAttribute("tcd"), '/">', vtm_abbreviation, '</a>',
									'</div>',
								'</div>',
								'<div class="', htm.getAttribute("tcd"), ' home_team info">',
									'<div class="score">', htm_total_score, '</div>',								
									'<div class="abbreviation">',
										'<a href="/', htm.getAttribute("tcd"), '/">', htm_abbreviation, '</a>',
									'</div>',
								'</div>',
							'</div>',
							'<div class="gamestatus_text">', game.getAttribute("gstattxt"), clock, '</div>',
							'<div class="links"></div>',
						'</div>'
					].join(""));
					
					this.today_game.down(".game_info .links").update([
							'<a href="/games/', gamecode, '/gameinfo.html#nbaGIboxscore" class="box">BOX</a>',
							'<a href="http://www.nba.com/allaccess/watchListen.html" target="_blank" class="listen">LISTEN</a>'
					].join(""));
					
					if (!this.today_game.down(".game_info .tv_companion")) {
						var teamcode = NBAUtil.Utilities.getTeamCodeFromURL();
						var brand = "NBA";
						if (teamcode == vtm_teamcode) { brand = vtm_abbreviation; }
						if (teamcode == htm_teamcode) { brand = htm_abbreviation; }
						
						this.today_game.down(".game_info .national_tv_logo").insert({after : ['<a href="/tvc/index.html?gamecode=', gamecode, '&brand=', brand, '" class="tv_companion">TV COMPANION</a>'].join("")});
					}

					this.updateTodayDateTime("LIVE");
				
					if (game_status > 2) {
					
						var vid = game.getAttribute("vid");

						var links = [
							'<a href="/games/', gamecode,'/gameinfo.html" class="recap">RECAP</a>',
							'<a href="/games/', gamecode, '/gameinfo.html#nbaGIboxscore" class="box">BOX</a>'
						];
						
						if (vid && vid != "") {
							links.push('<a href="' + vid + '" class="highlights">HIGHLIGHTS</a>');
						}
					
						this.today_game.down(".live_game .links").update(links.join(""));
					
						this.today_game.update(this.today_game.down(".live_game").innerHTML);
						this.today_game.insert({bottom: "<div class='date_time'>TONIGHT</div>"});
						
						this.today_game.removeClassName("today");
						this.today_game.removeClassName("first_upcoming");
						this.today_game.addClassName("previous");
					
						if (this.timer) { 
							this.timer = null;
						}
						
					} else {
						this.timer = setTimeout(this.loadTodayData.bind(this), 30000);
					}
					
				} else if (game_status > 2) {
				
					
				
				}
				
				//new Effect.Highlight(this.today_game.down(".gamestatus_text"), { startcolor: '#FDFF4F', endcolor: '#FEFEFE' });
				
				break;
			}
		}

		simpleScoreboardData = null;
	},
	
	updateTodayDateTime : function(time) {
		
		var date_time = this.today_game.down(".date_time");
		date_time.update(time);
		
	}


});

NBAUtil.Events.addDomLoadedHandler(function() { new CourtSideBox($('court_side_box')); });