var dfCitySearch = {
	inel: Class.empty,
	sc: Class.empty,
	soff: 0,
	lastSearch: '',
	el: Class.empty, // results container
	hideTO: Class.empty,
	setblur: function() {
		if (dfCitySearch.hideTO) $clear(dfCitySearch.hideTO);
		dfCitySearch.hideTO = dfCitySearch.hide.delay(250);
	},
	init: function(inputElement, submitElement) {
		if ($(inputElement)) {
			dfCitySearch.inel = $(inputElement);
			dfCitySearch.inel.set('autocomplete', 'off');
			dfCitySearch.inel.addEvent('keyup', dfCitySearch.change);
			dfCitySearch.inel.addEvent('blur', dfCitySearch.setblur);
			dfCitySearch.inel.addEvent('focus', dfCitySearch.show);
			dfCitySearch.inel.getParent().addEvent('submit', dfCitySearch.show);

			if ($('quickresults')) {
				dfCitySearch.el = $('quickresults');
			} else {
				dfCitySearch.el = new Element('div', {
					'id': 'quickresults',
					'styles': {
						'display': 'none'
					}
				});
				$('linkcontent').adopt(dfCitySearch.el);
			}
			dfCitySearch.el.addEvent('mouseout', dfCitySearch.setblur)
			
			if (dfCitySearch.inel.get('value')>'') dfCitySearch.process();
		}
		if ($(submitElement)) {
			$(submitElement).addEvent('blur', dfCitySearch.setblur);
		}
	},
	change: function(ev) {
		if (ev.which==13) {
			dfCitySearch.process();
		} else {
			$clear(dfCitySearch.sc);
			dfCitySearch.sc = dfCitySearch.process.delay(500);
		}
	},
	display: function(r) {
		var pos = dfCitySearch.inel.getCoordinates(dfCitySearch.inel.getOffsetParent());
		dfCitySearch.el.set('styles',{
			'display': 'block',
			'left': pos.left + 'px',
			'top': pos.bottom + 'px'
		});

		var c, ch, th, s='';
		for(var i=0; i<r.length; i++) {
			if (r[i].status=='closed') {
				c = 'ri ric';
				ch = 'ri rich';
				th = 'thumb-closed.png';
			} else {
				c = 'ri';
				ch = 'ri rih';
				th = 'thumb-none.png';
			}
			s += '<div class="'+c+'" onclick="document.location=\'/' + city.lnk + '/' + r[i].idstr + '/\'" onmouseover="this.className=\''+ch+'\'" onmouseout="this.className=\''+c+'\'">';
			s += (r[i].photo==1 && r[i].status!='closed') ? '<img src="/thumbs/'+r[i].id+'_1.jpg" alt="" width="64" height="38" />' : '<img src="/images/'+th+'" alt="" width="64" height="38" />';
			s += '<strong><a href="/' + city.lnk + '/' + r[i].idstr + '/">' + r[i].name + '</a></strong><br class="hide"/>' + r[i].address + "</div>\n";
		}
		dfCitySearch.el.set('html', s);
	},
	clear: function() {
		dfCitySearch.lastSearch = '';
		dfCitySearch.el.set('html', '');
		dfCitySearch.hide();
	},
	hide: function() {
		dfCitySearch.hideTO = false;
		dfCitySearch.el.setStyle('display', 'none');
	},
	show: function() {
		// if there are results in the box show, otherwise don't
		if (dfCitySearch.hideTO) $clear(dfCitySearch.hideTO);
		if (dfCitySearch.lastSearch > '') dfCitySearch.el.setStyle('display', 'block');
	},
	process: function() {
		var v = dfCitySearch.inel.get('value');
		if (v>'' && (v!=dfCitySearch.lastSearch)) {
			dfCitySearch.lastSearch = v;
			v = v.replace(new RegExp("&", "g"), '%26');
			var jsonRequest = new Request.JSON({
				url: '/ajax/quicksearch.php', 
				onComplete: function(results) {
					if (results) {
						dfCitySearch.display(results);
					} else {
						dfCitySearch.clear();
					}
					return false;
				} /* onComplete */
			}).post({
				'c': city.lnk,
				's': v
			});
		} else if (v=='') {
			// clear results
			dfCitySearch.clear();
		}		
	}
}

window.addEvent('domready', function() {
	dfCitySearch.init('searchfor', 'searchgo');
});