
function sort_options_elem(elem) {
	var arr = [];		
	for(var i = 0; i < elem.childNodes.length; i++) {		
		if(elem.childNodes[i].nodeType == 1 && elem.childNodes[i].tagName.toLowerCase() == 'option' && elem.childNodes[i].value.length > 0) {
			arr.push({name: elem.childNodes[i].innerHTML, value: elem.childNodes[i].value});
		}
	}	
	arr = sort_options_values(arr);
	elem.innerHTML = '';
	for(var i in arr) {		
		var opt = new Option(arr[i].name, arr[i].value);										
		elem.options.add(opt);				
	}
}

function sort_options_values(data) {
    var tmp; 
    for (var i = data.length - 1; i > 0; i--) {
        for (var j = 0; j < i; j++) {
            if (data[j].name > data[j+1].name) {
                tmp = data[j];
                data[j] = data[j+1];
                data[j+1] = tmp;
            }
        }
    }
    return data;
}


var Search_city = {
	city: {},
	elem: {},
	responce: [],
	switch_city: function() {},
	init: function() {
		
		Search_city.change(Search_city.elem.karta[0].value);
		
		this.elem.karta[0].onchange = function() {
			Search_city.change(this.options[this.options.selectedIndex].value);
		}
		Search_city.elem.city_rarr.click(function() {
			var opt = search_obj.drag_option(Search_city.elem.city_all, Search_city.elem.city_sel, true);
			if(opt) {
				Search_city.handle_city(opt);
			}
		});
		Search_city.elem.city_larr.click(function() {
			search_obj.remove_option(Search_city.elem.city_sel);
		});
		Search_city.elem.city_clear.click(function() {
			search_obj.remove_all_option(Search_city.elem.city_sel);
		});		
	},
	change: function(index) {
		if(index == 50 || index == 77) {
			Search_city.switch_city(index);			
		}
		else if(!Search_city.city[index]) {
			var way = location.href.match(/^.+egsnk\.(ru|loc)/);				
			if(!way[0] || way[0] == '') {
				return;
			}
			way = way[0];				
			$.ajax({
				url: way+'/ajax/city.php',
				type: 'POST',
				data: 'city='+index,	
				success: function(a, b, c) {						
					Search_city.city[index] = eval('('+a+')');
					Search_city.change(index);											
				}
			});
		}
		else {
			if(Search_city.responce.length) {
				for(var i in Search_city.responce) {
					if(Search_city.city[index][Search_city.responce[i]]) {
						Search_city.city[index][Search_city.responce[i]].active = true;
					}
				}
			}
			Search_city.replace_city(index);		
			Search_city.switch_city(index);			
		}
	},
	replace_city: function(index) {
		Search_city.elem.city_all.empty();
		Search_city.elem.city_sel.empty();
		for(var i in Search_city.city[index]) {
			var add_all = $('<option value="'+Search_city.city[index][i].value+'">'+Search_city.city[index][i].name+'</option>');		
			Search_city.elem.city_all.append(add_all);		
			add_all.dblclick(function() {				
				var opt = search_obj.add_option(this, Search_city.elem.city_sel, true, true);
				if(opt) {
					Search_city.handle_city(opt);
				}
			});
			if(Search_city.city[index][i].active) {
				var add = $('<option value="'+Search_city.city[index][i].value+'">'+Search_city.city[index][i].name+'</option>');
				Search_city.elem.city_sel.append(add);
				add.dblclick(function() {
					if(Search_city.city[index][this.value] && Search_city.city[index][this.value].active) {
						Search_city.city[index][this.value].active = false;
					}
					search_obj.del_option(this, Search_city.elem.city_sel);
				});
			}
			
		}
	},
	handle_city: function(opt) {
		var index = opt.value.substr(0, opt.value.indexOf(','));		
		if(Search_city.city[index][opt.value]) {
			Search_city.city[index][opt.value].active = true;
		}
		$(opt).dblclick(function() {
			if(Search_city.city[index][this.value] && Search_city.city[index][this.value].active) {
				Search_city.city[index][this.value].active = false;
			}
			search_obj.del_option(this, Search_city.elem.city_sel);
		});
	}


}

