$(document).ready(function(){

  $('#q').typeWatch({
    callback: function(){
      $('#create_form img').removeClass('hidden');
      title_search();
    },
    captureLength: 2
  });

  $('#title_search_button').click(function(){
    title_search();
    return false;
  });

  $('#title_search_button').after('<img src="static/images/ajax-loader.gif" class="hidden">');

});

var search_cache = {};
var search_id    = 0;
var search_url   = $('base').attr('href') + 'netflix/create_title_search';
var create_type  = document.location.pathname.match('make-a-quiz/([^/]+)')[1];

function title_search(term, page) {

  if (!term) {
    term = $('#q').val()
  }

  if (!page) {
    page = 1;
  }

  if (search_cache[term] && search_cache[term][page]) {

    title_response(search_cache[term][page]);

  } else {

    search_id++;

    $.ajax({
      url : search_url,
      type : 'GET',
      data : {
        q : $('#q').val(),
        search_id : search_id,
        page : page,
        create_type : create_type
       },
      dataType : 'json',
      success : function(data) {
        if (data.search_id >= search_id) {
          title_response(data);
        }
      }
    });

  }

}

function title_response(data) {

  $('#create_form img').addClass('hidden');

  if (!search_cache[data.term]) {
    search_cache[data.term] = {};
  }
  search_cache[data.term][data.page] = data;

  $('.search_results').html(data.content);

  $('div.paginator ul').append('<li><img src="static/images/ajax-loader.gif" class="hidden"></li>');

  apply_title_click();

}

function apply_title_click() {

  $('li.netflix_title').click(function(){
    document.location = $(this).find('a').attr('href');
  });

  $('.paginator a').click(function(){
    $(this).parents('div.paginator').find('img').removeClass('hidden');
    var qs = qs_deserialize($(this).attr('href'));
    title_search(qs.q, qs.page);
    return false;
  });

}
