var extSelect = {
	list: "",
	exec: "",
	tmp: "",
	relations: new Array(),
	init: new Array(),
	
	wordSearch: function()
	{
		//var initID = extSelect.relations[this.id]; for Other
		var evelement = window.event ? window.event.srcElement : this;
		var initID = extSelect.relations[evelement.id]; // for IE
		var needle = $(extSelect.init[initID].searchFieldId).value;
		var re = RegExp(needle, i);
		
		if($(extSelect.init[initID].listID).style.display == "none") {
			$(extSelect.init[initID].listID).style.display = "block";
		}
		if(needle == "") {
			return extSelect.list;
		}
	
		re.compile('^'+needle, 'i');
		for(var i = 0, ii = extSelect.list.length; i < ii; i++) {
			if(re.test(extSelect.list[i].name)){
				$("st_"+extSelect.list[i].id+"_"+initID).style.display = "block";
			} else {
				$("st_"+extSelect.list[i].id+"_"+initID).style.display = "none";
			}
		}
	},
	listView: function()
	{
		//alert(window.event.srcElement);
		//var initID = extSelect.relations[this.id]; // for Other
		var evelement = window.event ? window.event.srcElement : this;
		var initID = extSelect.relations[evelement.id]; // for IE

		if($(extSelect.init[initID].listID).style.display == "none") {
			$(extSelect.init[initID].listID).style.display = "block";
			for(var i = 0, ii = extSelect.list.length; i < ii; i++) {
				$("st_"+extSelect.list[i].id+"_"+initID).style.display = "block";
			}
		}
		else {
			$(extSelect.init[initID].listID).style.display = "none";
		}
	},
	setStation: function(name, code, initIndex)
	{
		$(extSelect.init[initIndex].searchFieldId).value = name;
		$(extSelect.init[initIndex].dataID).value = code;
		$(extSelect.init[initIndex].listID).style.display = "none";
	},
	initSearch: function(extSelect)
	{
		new Ajax.Request("stations.php",{
			method:"post",
			onSuccess: function(response)
			{
				extSelect.list = response.responseText.evalJSON();
				// Создает массивы объектов со сгенереным ID и делает соотвествия между ID элементов и этими объектами
				for(i = 0; i < extSelect.init.length; i++) {
					for(val in extSelect.init[i]) {
						extSelect.relations[extSelect.init[i][val]] = i;
					}
					for(j = 0; j < extSelect.list.length; j++) {
						extSelect.tmp += "<a class='a-station' href='javascript:void(0);'><p id='st_"+extSelect.list[j].id+"_"+i+"' class='station' onclick='extSelect.setStation(\""+extSelect.list[j].name+"\", \""+extSelect.list[j].code+"\", \""+i+"\");'>"+extSelect.list[j].name+"</p></a>";
					}

					$(extSelect.init[i].listID).innerHTML = extSelect.tmp;
					extSelect.tmp = "";
					/** Add events **/
					Event.observe(extSelect.init[i].searchFieldId, "keyup", extSelect.wordSearch);
					Event.observe(extSelect.init[i].searchFieldId, "focus", extSelect.listView);
					Event.observe(extSelect.init[i].searchBtnId, "click" ,extSelect.listView);
				}
			}
		});
	},
	main: function()
	{
		this.init[0] = {
			dataID:"_from",
			searchFieldId : "search",
			searchBtnId : "search-btn",
			listID : "variants"
		};

		this.init[1] = {
			dataID:"_to",
			searchFieldId : "search_to",
			searchBtnId : "search-btn_to",
			listID : "variants_to"
		};
		
		this.initSearch(this);
	}
};