var com = {};
if (!com.rcc) com.rcc = {};
if (!com.rcc.cfr) com.rcc.cfr = {};
if (!com.rcc.cfr.ac) com.rcc.cfr.ac = {};

com.rcc.cfr.ac.init = function(e) {

  // SCHOOL

  $('input.school_autocomplete').each(function(i) {
    $(this).autocomplete("http://cfreference.net/cfr/_ac.s",
        {
          extraParams: {m: 'school'},

          formatItem: function(row, idx, count, query) {
            var school = eval("(" + row[0] + ")");
            var ret = '<div>' + school.name + '</div>';

            if (school.name != school.displayName) {
              ret += '<div>' + school.displayName + '</div>';
            }

            if (school.mascot) {
              ret += '<div><i>' + school.mascot + '</i></div>';
            }

            return ret;
          },

          formatResult: function(row, idx, count) {
            var school = eval("(" + row[0] + ")");
            return school.displayName + " [id: " + school.id + "]";
          }
      }
    );
  });


  // COACH

  $('input.coach_autocomplete').each(function(i) {
    $(this).autocomplete("http://cfreference.net/cfr/_ac.s",
        {
          extraParams: {m: 'coach'},

          formatItem: function(row, idx, count, query) {
            var coach = eval('(' + row[0] + ')');
            var person = coach.person;
            var ret = '<div>' + person.name + '</div>';

            if (person.nickName) {
              ret += '<div><i>' + person.nickName + '</i></div>';
            }

            return ret;
          },

          formatResult: function(row, idx, count) {
            var coach = eval('(' + row[0] + ')');
            var person = coach.person;
            return person.name + " [id: " + coach.id + "]";
          }
      }
    );
  });


  // CONFERENCE

  $('input.conference_autocomplete').each(function(i) {
    $(this).autocomplete("http://cfreference.net/cfr/_ac.s",
        {
          extraParams: {m: 'conference'},

          formatItem: function(row, idx, count, query) {
            var conference = eval('(' + row[0] + ')');
            var ret = '<div>' + conference.name + '</div>';

            if (conference.shortName) {
              ret += '<div><i>' + conference.shortName + '</i></div>';
            }

            return ret;
          },

          formatResult: function(row, idx, count) {
            var conference = eval('(' + row[0] + ')');
            return conference.name + " [id: " + conference.id + "]";
          }
      }
    );
  });


  // BOWL

  $('input.bowl_autocomplete').each(function(i) {
    $(this).autocomplete("http://cfreference.net/cfr/_ac.s",
        {
          extraParams: {m: 'bowl'},

          formatItem: function(row, idx, count, query) {
            var bowl = eval('(' + row[0] + ')');
            var ret = '<div>' + bowl.name + '</div>';

            return ret;
          },

          formatResult: function(row, idx, count) {
            var bowl = eval('(' + row[0] + ')');
            return bowl.name + " [id: " + bowl.id + "]";
          }
      }
    );
  });


  // SCHEDULE

  $('input.schedule_autocomplete').each(function(i) {
    $(this).autocomplete("http://cfreference.net/cfr/_ac.s",
        {
          extraParams: {m: 'schedule'},

          formatItem: function(row, idx, count, query) {
            var s = eval('(' + row[0] + ')');
            var ret = '<div>' + s.season + ' - ' + s.ASchool.displayName + ' vs. ' + s.BSchool.displayName + ' ' + s.AScore + ' - ' + s.BScore + '</div>';

            return ret;
          },

          formatResult: function(row, idx, count) {
            var s = eval('(' + row[0] + ')');
            var ret = s.season + ' - ' + s.ASchool.displayName + ' vs. ' + s.BSchool.displayName + ' ' + s.AScore + ' - ' + s.BScore + ' [id: ' + s.id + ']';

            return ret;
          }
      }
    );
  });


  // ROSTER

  $('input.roster_autocomplete').each(function(i) {
    $(this).autocomplete("http://cfreference.net/cfr/_ac.s",
        {
          extraParams: {m: 'roster'},

          formatItem: function(row, idx, count, query) {
            var r = eval('(' + row[0] + ')');
            var ret = '<div>' + r.season + ' - ' + r.player.person.name + ' - ' + r.school.displayName + '</div>';

            return ret;
          },

          formatResult: function(row, idx, count) {
            var r = eval('(' + row[0] + ')');
            var ret = r.season + ' - ' + r.player.person.name + ' - ' + r.school.displayName + ' [id: ' + r.id + ']';

            return ret;
          }
      }
    );
  });


  // PLAYER

  $('input.player_autocomplete').each(function(i) {
    var extraParams = {m: 'player'};
    //if (this.hasAttribute("schoolId")) {
        //extraParams['schoolId'] = this.getAttribute("schoolId");
    //}

    $(this).autocomplete("http://cfreference.net/cfr/_ac.s",
        {
          extraParams: extraParams,

          formatItem: function(row, idx, count, query) {
            var player = eval('(' + row[0] + ')');
            var ret = '<div>' + player.person.name + '</div>';
            for (var i = 0; i < player.rosters.length; i++) {
              var r = player.rosters[i];
              ret += '<div>' + r.school.displayName + ' ' + r.firstSeason + ' - ' + r.lastSeason + '</div>';
            }

            return ret;
          },

          formatResult: function(row, idx, count) {
            var player = eval('(' + row[0] + ')');
            var ret = player.person.name + ' [id: ' + player.id + ']';

            return ret;
          }
      }
    );
  });


  // NFL Team

  $('input.nfl_team_autocomplete').each(function(i) {
    $(this).autocomplete("http://cfreference.net/cfr/_ac.s",
        {
          extraParams: {m: 'nflTeam'},

          formatItem: function(row, idx, count, query) {
            var team = eval('(' + row[0] + ')');
            var ret = '<div>' + team.city + ' ' + team.name + '</div>';

            return ret;
          },

          formatResult: function(row, idx, count) {
            var team = eval('(' + row[0] + ')');
            var ret = team.city + ' ' + team.name + ' [id: ' + team.id + ']';

            return ret;
          }
      }
    );
  });
}

com.rcc.cfr.ac.initPlayer = function(e) {
  e.filter('input.player_autocomplete').each(function(i) {
    var extraParams = {m: 'player'};
    //if (this.hasAttribute("schoolId")) {
        //extraParams['schoolId'] = this.getAttribute("schoolId");
    //}

    $(this).autocomplete("http://cfreference.net/cfr/_ac.s",
        {
          extraParams: extraParams,

          formatItem: function(row, idx, count, query) {
            var player = eval('(' + row[0] + ')');
            var ret = '<div>' + player.person.name + '</div>';
            for (var i = 0; i < player.rosters.length; i++) {
              var r = player.rosters[i];
              ret += '<div>' + r.school.displayName + ' ' + r.firstSeason + ' - ' + r.lastSeason + '</div>';
            }

            return ret;
          },

          formatResult: function(row, idx, count) {
            var player = eval('(' + row[0] + ')');
            var ret = player.person.name + ' [id: ' + player.id + ']';

            return ret;
          }
      }
    );
  });
}

$(document).ready(function() { com.rcc.cfr.ac.init(); });
