	/*
		
		JQuery SelectBox
		
		Copyright (c) 2010 Alex Silaev (http://alex.twimp.ru/) chrome.alex@gmail.com
		Licensed under the GPL (http://www.opensource.org/licenses/gpl-license.php) license.
		
		Created at 30 Nov 2010
		
		=================================
		* Use:
		=================================
			var selectbox = new SelectBox(selector,					// put here the jquery selector
												{
													url: title		// put here titles:  url:title, url:title, url:title...
												});
		
		=================================
		* Javascript control:
		=================================
			selectbox.get(obj);			// show popup and search for a match, @obj - input object
			selectbox.searchText(val);	// search for the matching @val in @cities and put it out into @selector
		
	*/
	var SelectBox = function(selector, options) {
		
		this.selector = selector;
		this.cities = options;
		
		SelectBox.box = this;
		
		var input = $(this.selector).find('input:eq(0)')[0];
		input.onmouseup = this.down;
		
		document.onmousedown = this.close;
		
	};
	SelectBox.box = null;
	SelectBox.prototype = {
		
		selector: null,
		cities: new Array(),
		
		down: function(event) {
			
			var tgt = window.event ? window.event.srcElement : event.target;
			var a = SelectBox.box;
			
			var obj = $(a.selector).find('input:eq(0)');
			
			a.get(obj);
			
		},
		
		get: function(obj) {
			
			var val = $(obj).val();
			
			if (val.length >= 3) {
				
				$(this.selector).find('.popup').show();
				$(this.selector).find('.popup').find('ul').html('<li><a>Загрузка...</a></li>');
				
				var newhtml = this.searchText(val);
				$(this.selector).find('.popup').find('ul').html(newhtml);
				
			} else {
				
				$(this.selector).find('.popup').hide();
				
			}
			
		},
		
		close: function(event) {
			var tgt = window.event ? window.event.srcElement : event.target;
			var a = SelectBox.box;
			
			var src = $(a.selector).find('.popup')[0];
			do {
				
				if (tgt.className == src.className) {
					return;
				}
				tgt = $(tgt).parent()[0];
				
			} while (tgt);
			
			$(a.selector).find('.popup').hide();
			
		},
		
		searchText: function(val) {
			
			var expr = new RegExp('^('+val+')(.*)', 'ig');
			
			var out = '';
			var str, title, url;
			
			var i = 0;
			for (str in this.cities) {
				
				title = this.cities[str];
				url = str;
				
				if (title.match(expr)) {
					out += '<li><a href="' + url + '">' + title.replace(expr, '<span class="typed">$1</span>$2') + '</a></li>';
					i++;
					
				}
				
			}
			
			if (i == 0) out = '<li><a>Городов нет</a></li>';
			
			return out;
			
		}
		
	}
	

