var impression_suggester = {}; impression_suggester = { init: function(){ this.input_element = $('#impression_suggest'); if(!this.input_element.length) return; var t = this; this.input_element.attr('autocomplete', 'off'); var params = this.input_element[0].onclick(); this.suggest_href = params.suggest; this.form_href = this.input_element.parent('form').attr('action') + '?' + this.input_element.attr('name') + '='; this.suggest_element = $('
').insertAfter(this.input_element.parent()); this.suggest_element.bind('focus mousedown keydown', function(){t.over = true;}); this.suggest_element.bind('blur mouseup keyup', function(){t.over = false; t.input_element.focus();}); this.suggest_element.hide(); this.data = []; this.input_element.bind('focus keyup mouseup change', function(){ var value = $(this).val(); if(value != $(this).attr('placeholder') && value != '') t.show(); }); this.input_element.blur(function(){ if(!t.over){ t.hide(); } }); }, show: function(){ var value = this.input_element.val(); if(!value || value.length < 3){ this.hide(); return; } t = this; clearTimeout(this.loading); this.loading = setTimeout(function(){ $.getJSON( t.suggest_href + escape(value), function(data){ t.data[value] = {data: data}; if(data && data.items && data.items.length > 0) { t.make(value); t.suggest_element.show(); } else { t.suggest_element.hide(); } } ).error(function(){t.data[value] = '';}); }, 500); }, hide: function(){ this.suggest_element.hide(); }, selectElement: function(value, i) { if(this.data[value] != undefined && this.data[value].data) { var d = this.data[value].data; if(d.items && d.items[i] != undefined) { var item = d.items[i]; this.input_element.val(item.title); $('#suggest_destination').val(item.id); } } this.hide(); }, make: function(value){ if(this.old_value == value) return; this.old_value = value; var d = this.data[value]; if(d.data && !d.html){ d.html = '