var search = function() {
	
	var terms_per_group = 10;
	
	var result_line = function(row, i, num) {		
		return '<span class="'+row[2]+'">'+row[1]+'</span>';
	}
	var result_value = function(row) {
		return row[1];
	}
	var init_autocomplete = function($input) {
		$input.autocomplete(autocomplete_url, {	
			minChars: 2, 
			mustMatch: false,
			cacheLength: 1,
			matchSubset: false,
			formatItem: result_line,
			formatResult: result_value,
			cellSeparator: '|||',
			scroll: true,
			scrollHeight: 270
		});
		
	};
	var add_term = function() {
		var $clon = $('form#advsearch p:first').clone().hide();
		var $this = $(this);
		$clon.addClass("clonedItem");
		
		var $a = $('<a href="#">'+lang_borrar_termino+'</a>').click(delete_term);
		var $or = $('<strong class="or">OR</strong>');		
		
		init_autocomplete($('input', $clon).before($or).after($a));
			
		var $parent = $this.parent();
			
		$parent.before($clon);
		
		$clon.slideDown(200);
		
		
		return false;
	};
	
	var delete_term = function() {
		
		var $this = $(this);
		var $parent = $this.parent();
		var $parent_parent = $parent.parent();
		
		$parent_parent.find('p.addp').show(0);
				
		$parent.slideUp(200, function() {
			$(this).remove();		
		});
		
		return false;
	};
	
	var add_group = function() {
		var $clon = $('form#advsearch div:first').clone().addClass('active');
		$('legend', $clon).append($('<a class="borrar_grupo" href="#">'+lang_borrar_grupo+'</a>').click(borrar_grupo));
		var $and = $('<p class="or">AND</p>');		
		$('form#advsearch .group:last').after($clon);
		$clon.before($and);
		$('a.add_term', $clon).click(add_term);
		
		$('input', $clon).each(function() {
			init_autocomplete($(this));
			return true;
		});
		
		$clon.slideDown(200);
		return false;
	};
	var borrar_grupo = function() {
		$(this).parent().parent().parent().prev().remove();
		$(this).parent().parent().parent().slideUp(200, function() {
			$(this).remove();
		});
		return false;
	};
	var show_not_group = function() {
		$(this).hide();
		var $and = $('<p class="or">AND</p>');
		$('form#advsearch #not_group').after($and).slideDown(200);
		return true; // para ir al anchor
	};
	var hide_not_group = function() {
		$('form#advsearch #not_group').next().remove();
		$('form#advsearch #not_group p.term input').each(function() {
			this.lastValue = null;
			$(this).val('');
		});
		
		$('form#advsearch #not_group').slideUp(200, function() {
			$('form#advsearch #show_not').show();
			return true;
		});
		$(this).blur();
		return false;
	};
	
	var search = function() {
		var $p = $('form p#advsearch_fieldcontainer').empty();
		var and_term_found = false;
		$('div.active fieldset').each(function(i) {			
			var type = $(this).parent().hasClass('not_group') ? 'not' : 'and';
			$('p.term input', this).each(function(j) {
				
				if (this.lastValue) {
					if (type == 'and')
						and_term_found = true;
					var name = type+"-"+i+"-"+j+"-"+this.lastValue;
					var value = $(this).val();
					var $input = $("<input name=\""+name+"\" value=\""+value+"\" />"); 
					$p.append($input);
				}
			});
			
		});
		if (!and_term_found) {
			alert(lang_introduzca_termino);
			return false;
		}
		document.getElementById('advsearch').submit();
		return false;
	};
	var set_input_selected_values = function() {
		$('p.term input[id]').each(function() {
			this.lastValue = this.id;
		});
		
	}
	return {
		
		init: function() {
			
			set_input_selected_values();
			$('form#advsearch a.delete_term').click(delete_term);
			$('form#advsearch div.group a.borrar_grupo').click(borrar_grupo);
			$('form#advsearch .add_term').click(add_term);
			$('form#advsearch #add_group').click(add_group);
			$('form#advsearch #show_not').click(show_not_group);
			$('form#advsearch #hide_not').click(hide_not_group);
			
			$('input#search_button').click(search);
			
			$('div.active input').each(function() {
				init_autocomplete($(this));
				this.removeAttribute('disabled');
				
				return true;
			});
			
			$("#results_order").change(function() {
				var val = $(this).val();
				if (val.length) {
					location.href = base_uri + "&sort="+val;
				} else {
					location.href = base_uri;
				}			
			});
			
			
			
			return true;
			
		}
	}
		
}();

$(document).ready(search.init);