'use strict';

(function($){
	
	$.extend({
		initSearch: function() {
			 var
				_search = $('#search'),
				_searchbox = $('#searchbox'),
				_timeline = $('#timeline'),
				_searchform = $('#form-search'),
			    _searchbutton = $('#button-search');
	
			 $.aTLD = {
				timeline: _timeline,
				search: _search,
				searchbox: _searchbox,
				total: 593 + _searchbox.width(),
				origWidth: _searchbox.width(),
				delta: 20,
				timer: 25,
				max: 780,
				min: 593,
				running: false
			};
			 _search
				 .autocomplete({
					 source: "/searchrest/autocomplete",
					 html: true,
					 focus: $.loadSearchResults,
					 change: $.loadSearchResults,
					 selectFirst: true,
					 select: $.loadSearchResults
				 })
				 .one('focus', function(){ 
					 $(this).val(undefined);
				 });
	
			_searchform.submit(function() {
		         var term = _search.val();
		         if (term.length > 0) {
		             $.doSearch(term);
		         }
		         return false;
		     });
			_searchbutton.click(function() {
			    $.animateTimelineCloseStart();
			    var term = _search.val();
			    if (term.length > 0) {
			        $.doSearch(term);
			    }
			    return false;
			});
			_search.click(function() {
				jQuery.animateTimelineCloseStart();
			});
		    _search.focus(function() {
		    	jQuery.animateTimelineCloseStart();
		    });
			// _search.blur(function() {
			//	 jQuery.animateTimelineOpenStart();
			// });
		},
		doSearch: function(term) {
	        $.ajax({ 
	            url: "/searchrest/fulltext",
	            type: "GET",
	            data: { q: term }, 
	            dataType: 'html',
	            success: function( data, textStatus, XHR ) {
	                $('.slider-image-container').hide();
	                $('#main').hide();
	                $('#searchresult')
	                    .html(data)
	                    .xaxosReload('handler')
	                    .show();
	            },
	            complete: function() {
	                $('#searchresult')
	                	.data('isLoading', false)
	                	.css({opacity: 1});
	            }
	        });
	
	    },
	
	    loadSearchResults: function(event, ui) {
	        var $searchresult = $('#searchresult'),
	            $main = $('#main');
	
	        if ($searchresult.data('isLoading') !== true) {
	        	$searchresult.data('isLoading', true);
		        if ($searchresult.length === 0) {
		            
		            $searchresult = $('<div id="searchresult" class="column grid_8" />')
		                .hide()
		                .insertAfter($main)
		                .xaxosReload({
		                    clickBefore: function() {
		                        $searchresult.addClass('dont-close');
		                    }
		                });
		        }
		        if ( ui.item === null ) {
		            if (!$searchresult.hasClass('dont-close')) {
		                //say('CLOSE searchresult');
		                $searchresult.html('').hide();
		                $main.show();
		                $('.slider-image-container').show();
		            }
		            return true;
		        }
		        //say('OPEN searchresult');
		        $searchresult
		            .css({opacity: 0.5})
		            .removeClass('dont-close');
	
		        //var term = this.value;
		
		        $.doSearch(ui.item.value);
		        return false;
	        }
	    }
	});

})(jQuery);
