function UniChooser() {
	
	var fields = [];
	
	this.setFields = function(order_fields) {
		fields = order_fields;
	};
	
	this.initial = function() {
		var han = this.changeHandler.bindAsEventListener(this);
		$A(fields).each(function(item){
			Event.observe($(item),'change',han);
		});
		
	};
	
	this.changeHandler = function(event) {
		element = Event.element(event);
		
		var id = element.id;
		var value = element.value;
		
		if (value == 0) {
			this.deactLessThen(fields.indexOf(id)+1);
		}
		
		/*if (value!=0) {
			this.act(fields.indexOf(id)+1);
		} else if (value == 0) {
			this.deactLessThen(fields.indexOf(id)+1);
		}
		*/
		
		var fubind = this.act.bindAsEventListener(this);
		
		//�������� �������
		next = fields[fields.indexOf(id)+1];
		
		url = '/jax.response.html';
		
		
		params = "cur="+id+"&next="+next+"&value="+value+"";
		
		
		//���������� �������
		if (fields.indexOf(id) > 0) {
			m = fields.indexOf(id);
			for (i=0;i<m;i++) {
				params+="&values["+i+"]="+$(fields[i]).value;				
			}
		}
		
		new Ajax.Request(url,{
			method: "post",
			parameters: params,
			onSuccess: function(transport){
				//$(next).innerHTML = transport.responseText;
				rt = transport.responseText;
				
				if (!rt.isJSON() && rt!='') {
					//alert(rt);
					return;
				}
				
				resp = rt.evalJSON();
				
				fubind(fields.indexOf(id)+1);
				
				if (resp.method == 'fill_select') {
					
					
					$A($(next).options).each(function(el){
						$(el).remove();
					});
					
					if(resp.data == '') {
						return;
					}
					
					
					$H(resp.data).each(function(pair){
						
						$(next).options[$(next).options.length] = new Option(pair.value, pair.key);
					
					});
				}
			}
		});
	};
	
	
	this.deactLessThen = function(num) {
		for (i=num;i<fields.length;i++) {
			this.deact(i);
		}
		
	};
	
	this.deact = function(num) {
		$(fields[num]).disable();
		$(fields[num]+'_field').hide();
	};
	
	this.act = function(num) {
		if (fields.length < num) {
			return;
		}
		$(fields[num]).enable();
		$(fields[num]+'_field').show();
	};
	
	
	
	
}