/* Copyright (c) The Internet Movie Database, 2010 */;(function($){$.fn.highlight=function(){function ease(val,step){var delta=255-val;var stepp=val+(Math.pow(((1/75)*step),4)*delta);return Math.ceil(stepp);}
return this.each(function(i){var elem=$(this);if(elem.highlightStep)
window.clearInterval(elem.highlightStep);var step=0;elem.highlightStep=window.setInterval(function(){elem.css("backgroundColor","rgb("
+ease(245,step)+","
+ease(255,step)+","
+ease(159,step)+")");if(++step>75){elem.css('backgroundColor','transparent');window.clearInterval(elem.highlightStep);}},20);});};var const_types={tt:"title",nm:"name",ch:"character",kw:"keyword"};var categories=['title_popular','name_popular','keyword_popular','title_exact','name_exact','keyword_exact','title_substring','name_substring','keyword_substring','title_approx','name_approx','keyword_approx'];var category_label={'title_popular':'Popular Titles','title_exact':'Titles (Exact Matches)','title_approx':'Titles (Approx Matches)','title_substring':'Titles (Partial Matches)','name_popular':'Popular Names','name_exact':'Names (Exact Matches)','name_approx':'Names (Approx Matches)','name_substring':'Names (Partial Matches)','keyword_popular':'Popular Keywords','keyword_exact':'Keywords (Exact Matches)','keyword_approx':'Keywords (Approx Matches)','keyword_substring':'Keywords (Partial Matches)'};$.fn.autosearch=function(settings){if(!settings){settings={tt:'on'};}
return this.each(function(i){var as=this.autosearch={};var original=$(this);var message=original.val();original.hide();original.after
("<div class='search_box'>"
+"<div class='search_header'>"
+"<a class='search_close' href='#'>close&nbsp;<img border='0' align='absmiddle' src='/images/tiny-close.gif'/>"
+"</a>"
+"Search results for <span class='search_label'></span>"
+"</div>"
+"<div class='search_results'><ul></ul></div></div>"
+"<div class='autosearch_input'>"
+"<div class='autosearch_result'>"
+"<span class='selection' ></span>"
+"<a class='remove' href='#'>[X]</a></div>"
+"<div class='searcher'>"
+"<form>"
+"<input class='entry' type='text' />"
+"<input class='search_button' type='image' src='/images/searchlink.png'/>"
+"</form></div></div>");var autosearch=original.siblings('.autosearch_input');var searcher=autosearch.find('.searcher');var results_box=original.siblings('.search_box');var choice=autosearch.find('.autosearch_result');var input_field=searcher.find('input.entry');var search_button=searcher.find('.search_button');var search_label=results_box.find('.search_label');var results_list=results_box.find('.search_results ul');input_field.val(message);function clear_message(evt){input_field.val('');input_field.unbind('focus');evt.preventDefault();return false;}
input_field.focus(clear_message);this.clear_search=function(){original.val('');choice.hide();searcher.show();input_field.val('').get(0).focus();};choice.find('.remove').click
(function(evt){choice.hide();searcher.show();results_box.show();input_field.get(0).focus();evt.preventDefault();return false;});results_box.find('.search_close').click
(function(evt){results_box.hide();input_field.get(0).focus();evt.preventDefault();return false;});function render_item(item){var id=item.id;var type=const_types[id.substr(0,2)];var label;var description;switch(type){case'title':label=item.episode_title?item.episode_title:item.title;description=item.title_description;break;case'name':label=item.name;description=item.description;break;case'keyword':label=item.description;id=item.keyword;break;}
var result='<li><a imdb_id="'+id
+'" href="/'+type+"/"+id
+'/">'+label+'</a>';if(description){result+="&nbsp;(<span class='description'>"
+description+"</span>)";}
result+="</li>";return result;};function render_category(label,list){var header="<li><span class='category'>"
+label
+"</span><ul>";var body=[];for(var i=0;i<list.length;i++){body[body.length]=render_item(list[i]);}
return header+body.join('')+"</li>";};function results_callback(json_results){for(var i=0;i<categories.length;i++){var key=categories[i];if(json_results[key]){results_list.append
(render_category(category_label[key],json_results[key]));}}
results_list.find(".description").each(function(i){$(this).html($(this).text());});results_list.find("a").each(function(i){var link=$(this);var imdb_id=link.attr("imdb_id");link.click
(function(evt){original.val(imdb_id);var text=$(this).text()
+' ('+imdb_id+')';choice.find('.selection').text(text);choice.show();choice.highlight();searcher.hide();results_box.hide();original.trigger('change',[imdb_id,text]);evt.preventDefault();return false;});});};function error_callback(XMLHttpRequest,textStatus,errorThrown){var message=results_box.find('.search_results');message.html("<div class='alert' />");message.find('.alert')
.text('Sorry, there was a problem '
+'performing your search.');}
function finish_callback(){search_label.text(input_field.val());search_button.attr('src','/images/searchlink.png');var offset=autosearch.offset();results_box.css
({left:offset.left,width:autosearch.width(),top:offset.top+searcher.height()});results_box.show();};function search(evt){if(autosearch.changetimer){window.clearTimeout(autosearch.changetimer);autosearch.changetimer=false;}
if(autosearch.lastSearchText===input_field.val()&&results_list.find('li').length){results_box.show();}
else if(autosearch.lastSearchText!==input_field.val()&&input_field.val().match(/\w\w/)){results_box.find('.alert').remove();results_list.empty();search_label.text(input_field.val());results_box.hide();autosearch.lastSearchText=input_field.val();search_button
.attr('src','/images/spinning-progress.gif');var query={json:1,nr:1,q:input_field.val()};for(key in settings){query[key]=settings[key];}
jQuery.ajax({data:query,dataType:'json',success:results_callback,complete:finish_callback,error:error_callback,url:"/xml/find",type:'GET'});}
if(evt){evt.preventDefault();evt.stopPropagation();}
return false;};input_field
.keyup(function(evt){if(autosearch.changetimer){window.clearTimeout(autosearch.changetimer);}
autosearch.changetimer=window.setTimeout(search,1500,evt);});searcher.find('form').submit(search);search_button.click(search);});};})(jQuery);