//-------------------------------
// Class
//-------------------------------

function GamesView() {

	var _self = this;

	//-------------------------------
	// Constants
	//-------------------------------
	
	//-------------------------------
	// Properties
	//-------------------------------
	
	var _view = $j("<li class='gamesViewContainer'><a href='#' class='previous button'>Previous</a><ul class='info'><center><li>&nbsp;</li></center></ul><a href='#' class='next button'>Next</a></li>");
	var _today = new Date();
	
	var _gamesArray = new Array();
	
	//-------------------------------
	// Constructor
	//-------------------------------
	
	$j(function() {
		$j(".previous", _view).bind("click", onPagerClick);
		$j(".next", _view).bind("click", onPagerClick);
	
		$j("#featuredBar").append(_view);
		$j("#featuredBar").append("<li class='divider'></li>");
	});
	
	//-------------------------------
	// Public Methods
	//-------------------------------
	
	_self.deploy = function(data) {
		var timeExp = /[A-Z]M/gi;
		//alert(_today);
		
		$j(data).find("game").each(function(i, item) {
			_gamesArray.push({"game" : item, "live" : false});
		}).each(function(i, item) {
			_gamesArray.current = _gamesArray.today = i;
			
			var s = $j(item).find("date").text() + " " + $j(item).find("time").text();
			var time = new Date(s.split(timeExp)[0] + " " + s.match(timeExp));
			var dTime = new Date(time);
			dTime.setHours(dTime.getHours() + 3);
			
			if(_today > time && _today < dTime) {
				_gamesArray[i] = {"game" : item, "live" : true};
				setGameInfo(_gamesArray[i], i);
				//alert(setGameInfo(_gamesArray[i], i))
				return false;
			} else if(dTime > _today) {
				setGameInfo(_gamesArray[i], i);
				//alert(setGameInfo(_gamesArray[i], i))
				return false;
			} else if(i == $j(data).find("game").length - 1 && _today > dTime) {
				$j(".info center", _view).html("<li class='upcoming'>No game scheduled</li>");
			}
		});
	}

	//-------------------------------
	// Private Methods
	//-------------------------------
	
	function setGameInfo(info, index) {
		
		
		var date = new Date($j(info.game).find("date").text());
		
	//	alert(date);
		
		var content 	= getLocationInfo(info, $j(info.game).find("isHomeGame").text());
		content			+= (info.live) ? "<li><a href='" + $j(info.game).find("link").text() +"'>Live!</a></li>" : "";
		content			+= (date > _today && !info.live || index == _gamesArray.today) ? "<li>" +  $j(info.game).find("date").text() + " / " + $j(info.game).find("time").text() + "</li>" : "";
		content			+= (date < _today && !info.live && index < _gamesArray.today) ? "<li>" +  getGameScore(info, $j(info.game).find("isHomeGame").text()) + "</li>" : "";
		
		$j(".info center li", _view).fadeOut("fast", function() {
			$j(".info center", _view).html("&nbsp;");			
			var img = new Image();
	        $j(img).load(function () {
				$j(".info center", _view).html(content);
				$j(".info center li", _view).hide().fadeIn("fast");
	        }).attr("src", $j(info.game).find("smallImageURL").text());
		});		
	}
	
	function getLocationInfo(info, location) {
		switch(location) {
			case "True" :
				return "<li><a href='" + $j(info.game).find("link").text() +"'><img class='logo' src='" + $j(info.game).find("smallImageURL").text() + "' /></a></li><li> vs. </li><li><a href='" + $j(info.game).find("link").text() +"'><img class='logo' src='http://cdn.iamatrailblazersfan.com/logos/team_portland50.png'/></a></li>";
				break;
			case "False" :
				return "<li><a href='" + $j(info.game).find("link").text() +"'><img class='logo' src='http://cdn.iamatrailblazersfan.com/logos/team_portland50.png'/></a></li><li> at </li><li><a href='" + $j(info.game).find("link").text() +"'><img class='logo' src='" + $j(info.game).find("smallImageURL").text() + "' /></a></li>";
				break;
		}
	}
	
	function getGameScore(info, location) {
		switch(location) {
			case "True" :
				return $j(info.game).find("opponentScore").text() + " / " + $j(info.game).find("teamScore").text();
				break;
			case "False" :
				return $j(info.game).find("teamScore").text() + " / " + $j(info.game).find("opponentScore").text();
				break;
		}
	}
	
	//-------------------------------
	// Listeners
	//-------------------------------
	
	function onPagerClick(event) {
		var index;
	
		switch($j(event.target).attr("class")) {
			case "previous button" :
				index = (_gamesArray.current <= 0) ? _gamesArray.current = _gamesArray.length - 1 : _gamesArray.current -= 1;
				break;
			case "next button" :
				index = (_gamesArray.current == _gamesArray.length - 1) ? _gamesArray.current = 0 : _gamesArray.current += 1;
				break;
		}
		var info = _gamesArray[index];
		
		setGameInfo(info, index);
		return false;
	}
}
