function data_store() {
	this.cities = [];

	var obj = document.getElementById( 'cities_list' ).getElementsByTagName( 'a' );
	for (var i = 0; i < obj.length; i++) {
		this.cities.push( [obj[i].innerHTML, obj[i].href] );
	}
}

data_store.prototype.search = function( q ) {
	var matches = [];

	for (var i = 0; i < this.cities.length; i++) {

		if (this.cities[i][0].toLowerCase().indexOf( q.toLowerCase() ) == 0) {
			matches.push( this.cities[i] );

			if (matches.length > 10) {
				break;
			}
		}
	}

	return matches;
}


function clear_cities( lst ) {
	while (lst.hasChildNodes()) {
		lst.removeChild( lst.lastChild );
	}
}


function pop_cities( lst, matches ) {
	for (var i = 0; i < matches.length; i++) {
		var a = document.createElement( 'a' );
		a.innerHTML = matches[i][0];
		a.href = matches[i][1];

		var li = document.createElement( 'li' );
		li.appendChild( a );
		lst.appendChild( li );
	}
}

function setup_qf_text() {
	var tb = document.getElementById( 'search_city' );
	tb.setAttribute( 'autocomplete', 'off' );	

	var qf = document.getElementById( 'quick_find' );
	qf.onsubmit = function( evt ) { return false; };

	ds = new data_store(); //global

	clear_cities( document.getElementById( 'search_list' ) );
	
	tb.onkeyup = function( evt ) {
		var obj = (window.event ? window.event.srcElement : evt.target);
		var key = (window.event ? window.event.keyCode : evt.which);
		
		var char = String.fromCharCode( key );
		var filter = /\d|\w|\b|\x08|\x2e|\x1b|\x20/;
		
		if (filter.test( char ) === false) {
			return false;
		}
		
		var lst = document.getElementById( 'search_list' );

		if (obj.value.length >= 3) {
			var matches = ds.search( obj.value );

			if (matches.length != 0) {
				lst.style.visibility = 'hidden';
				
				clear_cities( lst );
				pop_cities( lst, matches );
				
				lst.style.visibility = 'visible';
				return true;
			}
		}
		
		lst.style.visibility = 'hidden';
		clear_cities( lst );
	};
	
	tb.onblur = function( evt ) {
		var fnc = function() {
			var lst = document.getElementById( 'search_list' );
			lst.style.visibility = 'hidden';
			//clear_cities( lst );
		};
		setTimeout( fnc, 250 );
	};
	
	tb.onfocus = function( evt ) {
		var lst = document.getElementById( 'search_list' );
		if (lst && lst.children) {
			if (lst.children.length  != 0) {
				lst.style.visibility = 'visible';
			}
		}
	};
	
	tb.focus();
}