var ScoreTable = Class.create();
ScoreTable.prototype = {
  initialize: function(div, data, options) {
    this.div = div;
    this.data = data;
    this.options = {
    }
    Object.extend(this.options, options || {});
    var myAjax = new Ajax.Request(data, {method: 'get', onComplete: this.load.bind(this)});
  },

  load: function(transport, object) {
    var div = $(this.div);
    if (transport.status == 200) {
      this.write(div, transport.responseText);
    } else {
      div.innerHTML = 'Unable to load scores...';
    }
  },

  write: function(div, data) {
    var html = [];
    this.openTable(html);
    this.headings(html);
    this.details(html, data);
    this.closeTable(html);
    div.innerHTML = html.join('');
  },

  openTable: function(html) {
    html.push('<table cellpadding="0" cellspacing="0" border="1" style="width: 100%;">');
  },

  closeTable: function(html) {
    html.push('</table>');
  },

  headings: function(html) {
    html.push('<thead>');
    html.push('<tr>');
    html.push('<th>Name</th>');
    html.push('<th>Score</th>');
    html.push('</tr>');
    html.push('</thead>');
  },

  details: function(html, data) {
    var list = data.split(/\n/);
    var names = [];
    var wins = [];
    list.each(function(s) {
      var i = s.indexOf('"name"');
      if (0 <= i) {
        var name = s.substring(i + 6);
        name = name.replace(/^\s+|\s+$/g,"");
        name = name.substring(1, name.length - 1);
        name = name.escapeHTML();
        names.push(name);
      }
      i = s.indexOf('"wins"');
      if (0 <= i) {
        var win = s.substring(i + 6);
        win = win.replace(/^\s+|\s+$/g,"");
        win = win.substring(1, win.length - 1);
        win = win.escapeHTML();
        wins.push(win);
      }
    });
    var scores = names.zip(wins);
    scores.each(function(score) {
      html.push('<tr>');
      html.push('<td style="padding: 1px 4px;">' + score[0] + '</td>');
      html.push('<td style="padding: 1px 4px; text-align: right;">' + score[1] + '</td>');
      html.push('</tr>');
    });
    
  }
}
