$(document).ready(function(){
	/*=========== SEARCH ===========*/
	var DelayedTask = function(fn, scope, args){
	    var id = null, d, t;
	
	    var call = function(){
	        var now = new Date().getTime();
	        if(now - t >= d){
	            clearInterval(id);
	            id = null;
	            fn.apply(scope, args || []);
	        }
	    };
		
	    this.delay = function(delay, newFn, newScope, newArgs){
	        if(id && delay != d){
	            this.cancel();
	        }
	        d = delay;
	        t = new Date().getTime();
	        fn = newFn || fn;
	        scope = newScope || scope;
	        args = newArgs || args;
	        if(!id){
	            id = setInterval(call, d);
	        }
	    };

	    this.cancel = function(){
	        if(id){
	            clearInterval(id);
	            id = null;
	        }
	    };
	};
	
	var search_task = function(){
		var english = /^\/en\//.test(location.pathname);
		var prefix = english ? "/en" : '';
		$.get(prefix + "/searchbox/", { query: $('#searchinput:text').val() },
		  function(data){
		  	$('#searchbox').empty();
			$('#searchbox').show();
			if (data.root.length === 0){
				$('#searchbox').append(english ? 'Your search did not match any documents' : 'По даному запросу ничего не найдено');
			}else{
				for(var i=0; i<data.root.length; i++){
					var model = data.root[i].model;
					$('#searchbox').append('<li class="model">'+model.name+'<//li>');
					for(var y=0; y<model.items.length; y++){
						var item = model.items[y];
						$('#searchbox').append('<li class="item" onclick="window.location=\''+item.link+'\'">'+item.name+'<\/li>');
					}
				}
				$('#searchbox LI').wrapAll("<ul><\/ul>");
				if (english){
					$('#searchbox').append('<a href="/en/search/?query='+$('#searchinput:text').val()+'">other results →<\/a>');
				}else{
					$('#searchbox').append('<a href="/search/?query='+$('#searchinput:text').val()+'">остальные результаты →<\/a>');
				}
			}
			
		  }, "json");
	}
	
	var task = new DelayedTask(search_task);
	$("#searchinput").bind("keyup", function(e) {
		task.delay(500);
	});
	
	$('#searchlink').bind("click", function(e){
		var prefix = /^\/en\//.test(location.pathname) ? '/en' : '';
		window.location=prefix+'/search/?query='+$('#searchinput:text').val();
	});
	
	$("HTML").bind("click", function(e) {
		$('#searchbox').hide();
		$('#searchbox').empty();
	});	
	
});
