/*
Copyright by Arturas Piksrys(arturas@assis.lt) 2006
*/

function SelectOption()
{
	
	var holderKey = new Array();
	var holderValue = new Array();
	
	var selectObjs = new Array();
	var maxDepth = 0;
	
	this.add = function(depth, parent_id,  key, value)
	{
		if(holderKey[depth] == null) holderKey[depth] = new Array();
		if(holderValue[depth] == null) holderValue[depth] = new Array();
		
		if(holderKey[depth][parent_id] == null) holderKey[depth][parent_id] = new Array();
		if(holderValue[depth][parent_id] == null) holderValue[depth][parent_id] = new Array();
		
		holderKey[depth][parent_id].push(key);
		holderValue[depth][parent_id].push(value);
		return true;
	}
	
	
	this.newElement = function(depth, name)
	{
		if(selectObjs[depth] != null)
		{
			return false;
		}
		
		selectObjs[depth] = new Array();
		selectObjs[depth]['name'] = name;
		selectObjs[depth]['actions'] = new Array();
		maxDepth = depth;
		return true;
	}
	
	this.build = function(depth, value)
	{
		this.destroy(depth);
		
		if(depth > 0 && value == 0) return;
		if(!holderKey[depth][value]) return;

		var select = document.createElement('select');
		select.setAttribute('name', selectObjs[depth]['name']);
		select.setAttribute('id', selectObjs[depth]['name']);
		
		
		for(var i = 0; i < holderKey[depth][value].length; i++)
		{
			select.options[select.options.length] = new Option(holderValue[depth][value][i], holderKey[depth][value][i]); 
		}
		
		if(maxDepth != depth)
		{
			var parentDepth = depth + 1;
			select.onchange = new Function("SelectOption.build("+parentDepth+", SelectOption.getObject("+depth+").options[SelectOption.getObject("+depth+").selectedIndex].value)");
		}
		
		
		this.setObject(depth, select);
		selectObjs[depth]['target'].appendChild(this.getObject(depth));
		return select;
	}
	
	this.destroy = function(depth)
	{
		var t = depth - 1;
		for(var i = maxDepth; i > t; i--)
		{
			if(selectObjs[i]['target'].firstChild)
			{
				selectObjs[i]['target'].removeChild(document.getElementById(selectObjs[i]['name']));
			}
		} 
		return true;
	}
	
	this.setObject = function(depth, select)
	{
		selectObjs[depth]['object']  = select;
		return true;
	}
	
	this.getObject = function(depth)
	{
		return selectObjs[depth]['object'];
	}
	
	
	this.setTargetPlace = function(depth, target_object)
	{
		
		selectObjs[depth]['target'] = target_object;
		return true;
	}
	
	this.run = function(depth)
	{
		return this.build(depth,depth);
	}
	
}

