function sondaKategorie(obj)
{
	this.obj = obj;
	this.kategoriaIdH;
	this.select = new Object(); //objekt z pobranymi kategoriami
	this.poziomSelect = 0; //wyswietlany poziom kategorii
	this.selectWyswietlone = new Array(); //kolejka nazw wyswietlonych kategorii
	
	this.init = function()
	{
		this.kategoriaIdH = document.getElementById('kategoriaIdH');
		
		//parsujemy kategorie
		for(var i = 0; i < this.obj.childNodes.length; i++)
		{
			if (this.obj.childNodes.item(i).className == '__sondaSelect') {
				var selectA = this.obj.childNodes.item(i);
				this.init__selectHtml(selectA);
				this.ustawKategoriaIdH(selectA.value);
				this.selectWyswietlone.push('select'+selectA.getAttribute('sonda:selectvalue'));
			}
		}
	}
	
	/**parsujemy HTML selecta
	 * @param elem - HTML selecta
	 * @param value - poziom 
	**/
	this.init__selectHtml = function(elem)
	{
		var value = elem.getAttribute('sonda:selectvalue');
		this.select['select'+value] = new selectClass(elem,this,value);
		this.poziomSelect++;
	}

	this.init__selectJSON = function(_json,_select)
	{
		var divT = document.createElement('div');
		elem = utworzElemChildDOM(divT,_json);
		this.select['select'+_select.obj.value] = new selectClass(elem.childNodes.item(0),this,_select.obj.value);
		return this.select['select'+_select.obj.value]; 
	}
	
	this.ustawKategoriaIdH = function(_value)
	{
		//console.log(_value);
		this.kategoriaIdH.value = _value;
	}
	
	this.wstawSelect = function(_selectNew,_selectFrom)
	{
		var selectNr;
		var selectName;
		while(this.selectWyswietlone.length)
		{
			selectName = this.selectWyswietlone.pop();
			if(_selectFrom.name == selectName)
			{
				this.selectWyswietlone.push(selectName);
				break;
			}
	  		this.select[selectName].obj.selectedIndex = 0;
			this.select[selectName].obj.parentNode.removeChild(this.select[selectName].obj);
			this.poziomSelect--;
		}
		if(_selectNew['name'] == 'select0')
			return;
		this.poziomSelect++;
		_selectNew.poziom = this.poziomSelect;
		_selectFrom.obj.parentNode.appendChild(_selectNew.obj);
		this.selectWyswietlone.push(_selectNew.name);	
	}
	
	this.init();
	
	this.czyJestSelect = function(_name)
	{
		return typeof this.select[_name] != 'undefined'; 
	}
	
	this.dajSelect = function(_name)
	{
		return this.select[_name];
	}
}

function selectClass(_obj, _sonda, _name)
{
	this.obj = _obj;
	this.sonda = _sonda;
	this.name = 'select'+_name;
	this.opcje = new Array();

	this.init = function()
	{
		this.poziom = _sonda.poziomSelect;
		this.parsuj();
		this.setOnClick();
		//console.log(this.obj.value);
		//this.sonda.ustawKategoriaIdH(this.obj.value);
	}	
	
	this.parsuj = function()
	{
		for (var i = 0; i < this.obj.childNodes.length; i++)
		{
			if (this.obj.childNodes.item(i).className == '__opcja') {
				var opcja = new opcjaClass(this.obj.childNodes.item(i), this);
				this.opcje.push(opcja);
			}
		}
	}
	
	this.czyJestSelect = function(_name)
	{
		return this.sonda.czyJestSelect(_name);
	}
	
	
	this.setOnClick = function()
	{
		var thiz = this;
		this.obj.onchange = function(){
			var wybranaOpcja = null;
			for (var i = 0; i < thiz.opcje.length; i++) 
				if (thiz.opcje[i].obj.value == thiz.obj.value) 
					wybranaOpcja = thiz.opcje[i];
			if (wybranaOpcja.ostatnia) 
			{
				while(thiz.sonda.selectWyswietlone.length)
				{
					selectName = thiz.sonda.selectWyswietlone.pop();
					if(thiz.name == selectName)
					{
						thiz.sonda.selectWyswietlone.push(selectName);
						thiz.sonda.ustawKategoriaIdH(thiz.sonda.select[selectName].obj.value);
						break;
					}
					thiz.sonda.select[selectName].obj.selectedIndex = 0;
					thiz.sonda.select[selectName].obj.parentNode.removeChild(thiz.sonda.select[selectName].obj);
					thiz.sonda.poziomSelect--;
				}
				return;
			}
			var selectName = 'select'+thiz.obj.value;
			thiz.sonda.ustawKategoriaIdH(thiz.obj.value);
			if(thiz.czyJestSelect(selectName))
				thiz.sonda.wstawSelect(thiz.sonda.dajSelect(selectName),thiz);
			else
			{
				advAJAX.post({
			        url: AJAX_URL+'/ajax.php',
			        parameters :
			        {
			                "akcja" : 'JSONStruct',
			                "akcja1" : 'getKategoriaPoziom',
			                "var1" : thiz.obj.value
			        },
					callback: thiz,
			        onSuccess : 'UtworzSelect',
			        onError : function(obj) { 
					}
				});
			}
		}
	}
	
	this.onUtworzSelect = function(_advObj)
	{
		eval('var json = {'+_advObj[0].responseText+'}');
		var newSelect = this.sonda.init__selectJSON(json,this);
		this.sonda.wstawSelect(newSelect,this);
	}
	
	this.init();
}

function opcjaClass(_obj,_select)
{
	this.obj = _obj;
	this.select = _select;
	this.ostatnia;
	
	this.init = function()
	{
		if(this.obj.getAttribute('sonda:selectopcjalast'))
			this.ostatnia = true;
		else
			this.ostatnia = false;
		//this.setOnClick();
	}
	
	/*
	this.czyJestSelect = function(_name)
	{
		return this.select.sonda.czyJestSelect(_name);
	}
	*/
	/*
	this.dajSelect = function(_name)
	{
		return this.select.sonda.dajSelect(_name);
	}
	*/
	
	/*
	this.setOnClick = function()
	{
		
		var thiz = this;
		//console.log(this);
		this.obj.onclick = function() {
			alert(thiz);
			if (thiz.ostatnia) 
			{
				while(thiz.select.sonda.selectWyswietlone.length)
				{
					selectName = thiz.select.sonda.selectWyswietlone.pop();
					if(thiz.select.name == selectName)
					{
						thiz.select.sonda.selectWyswietlone.push(selectName);
						break;
					}
					thiz.select.sonda.select[selectName].opcje[0].obj['selected'] = true;
					thiz.select.sonda.select[selectName].obj.parentNode.removeChild(thiz.select.sonda.select[selectName].obj);
					thiz.poziomSelect--;
				}
				return;
			}
			var selectName = 'select'+this.value;
			if(thiz.czyJestSelect(selectName))
				thiz.select.sonda.wstawSelect(thiz.dajSelect(selectName),thiz.select);
			else
			{
				advAJAX.post({
			        url: AJAX_URL+'/ajax.php',
			        parameters :
			        {
			                "akcja" : 'JSONStruct',
			                "akcja1" : 'getKategoriaPoziom',
			                "var1" : this.value
			        },
					callback: thiz,
			        onSuccess : 'UtworzSelect',
			        onError : function(obj) { 
					}
				});
			}
		}
		
	}
	*/
	
	/*
	this.onUtworzSelect = function(_advObj)
	{
		eval('var json = {'+_advObj[0].responseText+'}');
		var newSelect = this.select.sonda.init__selectJSON(json,this.select);
		this.select.sonda.wstawSelect(newSelect,this.select);
	}
	*/
	this.init();
}

sondaKategorie.prototype = new mainClass;
selectClass.prototype = new mainClass;
opcjaClass.prototype = new mainClass;