// Search dropdown object
window.GadgetDropdown = function(options) {
	var self = this;
	
	self.options = $.extend({
		autocomplete: {
			minLength: 3,
			source: '/ajax/search/',
			open: function(event, ui){
				var offset = $(this).offset();
				$('.ui-search-results').css({
					top: offset.top + 35 + 'px',
					left: offset.left - 37 + 'px'
				});
			},
		},
		image_urls: ['/static/img/theme.png', '/static/img/question.png']
	}, options);
	self.input = self.options.input;
	
	self.reset = function() {
		self.input.val('');
	}
	
	self.select_handler = function(event, ui) {
		if ( ui.item.url == '/questions/add-question/' )
		{
			popup_form = new PopupForm({
				link: null,
				url: ui.item.url,
				container_class: 'lightbox-big',
				onload: function(form){
					form.title.value = self.input.val();
					var symbol_counter = $('span.chars', form);
					$(form.title).keyup(function() {
						symbol_counter.html(140 - this.value.length)
					});
				}
			});
			
			popup_form.show_handler();
			
			return false;
		}
		else
		{
			window.location = ui.item.url;
		}
	}
	
	self.focus_handler = function(event, ui) {
		if ( ui.item.url == '/questions/add-question/' )
		{
			return false;
		}
	}

	self.run = function() {
		if (self.input.length) {
			// init autocomplete
			
			self.input.autocomplete(self.options.autocomplete);
			self.input.autocomplete('option', 'select', self.select_handler);
			self.input.autocomplete('option', 'focus', self.focus_handler);
			self.input.autocomplete("widget").addClass('ui-search-results');
			self.input.data("autocomplete")._renderItem = function(ul, item) {
				var src = ''
				if (item.image) src = item.image
				else { if (item.type == "theme") src = self.options.image_urls[0]
				else if (item.type == "question") src = self.options.image_urls[1] }
				return $('<li class="' + item.type + '"></li>')
					.css('background', 'url('+ src +') 5px 5px no-repeat')
					.data("item.autocomplete", item)
					.append('<a>' + item.label_html + '</a>').appendTo(ul);
			};
			

			// если при клике на поле ввода у нас нач значение, то очищаем его
			self.input.focus(function() {
				if ( self.input.val() == self.input.attr('title') )
				{
					self.input.val('');
				}
			});

			// если при потере фокуса полем ввода у нас пустое значение,
			// то устанавливаем его в начальное
			self.input.blur(function() {
				if ( self.input.val() == '' )
				{
					self.input.val(self.input.attr('title'));
				}
			});
			
			$(self.input.get(0).form).submit(function(){
				if ( self.input.val() == self.input.attr('title') )
				{
					self.input.val('');
				}
			});
		}
	}
	
	self.run();
}

$(function() {

	new window.GadgetDropdown({
		input: $('#search_input')
	});	
	
	$('.find-form .example a').click(function(event){
			event.preventDefault();
			var form = $('.mid-header form')
			$('#search_input', form).val($(this).text())
			form.submit()
	})	
});
