'Creates a new Game instance given a game identifier.
The game identifier is used by NFL.com\'s GameCenter live update web
pages. It is used to construct a URL to download JSON data for the
game.
If the game has been completed, the JSON data will be cached to disk
so that subsequent accesses will not re-download the data but instead
read it from disk.
When the JSON data is written to disk, it is compressed using gzip.'

def __init__(self, eid=None, fpath=None):

    self.schedule = nflgame.sched.games.get(self.eid, None)
    self.home = self.data['home']['abbr']
    self.away = self.data['away']['abbr']
    self.stats_home = _json_team_stats(self.data['home']['stats']['team'])
    self.stats_away = _json_team_stats(self.data['away']['stats']['team'])
    self.gamekey = nflgame.sched.games[self.eid]['gamekey']
    self.time = GameClock(self.data['qtr'], self.data['clock'])
    self.down = _tryint(self.data['down'])
    self.togo = _tryint(self.data['togo'])
    self.score_home = int(self.data['home']['score']['T'])
    self.score_away = int(self.data['away']['score']['T'])
    for q in (1, 2, 3, 4, 5):
        for team in ('home', 'away'):
            score = self.data[team]['score'][str(q)]
            self.__dict__[('score_%s_q%d' % (team, q))] = int(score)
    if (not self.game_over()):
        self.winner = None
    elif (self.score_home > self.score_away):
        self.winner = self.home
        self.loser = self.away
    elif (self.score_away > self.score_home):
        self.winner = self.away
        self.loser = self.home
    else:
        self.winner = ('%s/%s' % (self.home, self.away))
        self.loser = ('%s/%s' % (self.home, self.away))
    self.scores = []
    for k in sorted(map(int, self.data['scrsummary'])):
        play = self.data['scrsummary'][str(k)]
        s = ('%s    -    Q%d    -    %s    -    %s' % (play['team'], play['qtr'], play['type'], play['desc']))
        self.scores.append(s)
    if (self.game_over() and (not os.access((_jsonf % eid), os.R_OK))):
        self.save()
