TArtworkCategorySelector=Class.create();
TArtworkCategorySelector.prototype=
{
	containerID:'category-selector-container',
	pleaseChoose:-1,
	hierarchy:{},
	level:1,
	levelFirstSelectorID:'',
	forUpload:false,
	currentSelectedID:0,
	initialize:function(SelectorID,CategoryHierarchy,forUpload)
	{
		this.levelFirstSelectorID=SelectorID;
		this.hierarchy=CategoryHierarchy;
		this.forUpload=forUpload;
		Event.observe(SelectorID,'change',this.onChange.bind(this));
	},
	onChange:function(e)
	{
		var selectedID=this.getSelectedID(e);
		this.currentSelectedID=selectedID;
		if(selectedID!=this.pleaseChoose)
		{
			var selectHasItem=false;
			var select=document.createElement('select');
			var jumpLink=document.createElement('a');
			
			// if choice other category from active level
			if(this.getLevelOfSelector(e)<this.level)
			{
				var selectorLevels=$(this.containerID).getElementsByClassName('category-level-item');
				var toRemove=new Array();
				for(var i=0;i<selectorLevels.length;i++)
					if(parseInt(selectorLevels[i].id.replace('category-level-',''))>this.getLevelOfSelector(e))
						toRemove.push(selectorLevels[i].id);
						
				var jumpLinks=$(this.containerID).getElementsByClassName('category-jumplink');
				for(var i=0;i<jumpLinks.length;i++)
					if(parseInt(jumpLinks[i].id.replace('category-jumplink-level-',''))>this.getLevelOfSelector(e))
						toRemove.push(jumpLinks[i].id);
				for(var i=0;i<toRemove.length;i++)
					$(toRemove[i]).parentNode.removeChild($(toRemove[i]));
			}
			
			this.level=this.getLevelOfSelector(e)+1;
			select.id='category-level-'+this.level;
			select.className='category-level-item';
			if(this.forUpload)
			{
				jumpLink.href='javascript:void(0)';
				jumpLink.innerHTML='Kiválaszt &uarr;';
				jumpLink.categoryID=selectedID;
				Event.observe(jumpLink,'click',this.onClickCategorySelectWhenUpload.bind(this));
			}
			else
			{
				jumpLink.href='/'+this.hierarchy[selectedID].UrlFormattedName+'_CID'+selectedID;
				jumpLink.innerHTML='Ugrás ide &uarr;';
			}
			jumpLink.id='category-jumplink-level-'+this.level;
			jumpLink.className='category-jumplink';
			
			this.addOption(select,-1,'Alkategóriák &#187;');
			for(i in this.hierarchy)
			{
				if(this.hierarchy[i].ParentID==selectedID)
				{
					selectHasItem=true;
					this.addOption(select,i,this.hierarchy[i].Name);
				}
			}
			if(selectHasItem)
				this.addSelect(select);
			Event.findElement(e,'SELECT').parentNode.appendChild(jumpLink);
		}
		else
		{
			if(this.forUpload)
			{
				$($F('_hidden_c_id_pholder')).value=-1;
				var span=document.createElement('span');
				span.className='color-red';
				span.innerHTML='Nem választottál kategóriát!';
				$('selected-category-name').innerHTML='';
				$('selected-category-name').appendChild(span);
			}
			
			this.level=this.getLevelOfSelector(e);
			var selectorLevels=$(this.containerID).getElementsByClassName('category-level-item');
			var toRemove=new Array();
			for(var i=0;i<selectorLevels.length;i++)
				if(parseInt(selectorLevels[i].id.replace('category-level-',''))>this.level)
					toRemove.push(selectorLevels[i].id);
			
			var jumpLinks=$(this.containerID).getElementsByClassName('category-jumplink');
			for(var i=0;i<jumpLinks.length;i++)
				if(parseInt(jumpLinks[i].id.replace('category-jumplink-level-',''))>this.level)
					toRemove.push(jumpLinks[i]);
			
			for(var i=0;i<toRemove.length;i++)
				$(toRemove[i]).parentNode.removeChild($(toRemove[i]));
		}
	},
	onClickCategorySelectWhenUpload:function(e)
	{
		$($F('_hidden_c_id_pholder')).value=Event.findElement(e,'A').categoryID;
		for(i in this.hierarchy)
			if(i==Event.findElement(e,'A').categoryID)
				$('selected-category-name').innerHTML='<strong>'+this.hierarchy[i].Name+'</'+'strong> ('+this.hierarchy[i].Description+')';
	},
	getSelectedID:function(e)
	{
		var selectID=Event.findElement(e,'SELECT').id;
		return parseInt($(selectID).options[$(selectID).selectedIndex].value);
	},
	getLevelOfSelector:function(e){
		if(Event.findElement(e,'SELECT').id==this.levelFirstSelectorID)
			return 1;
		return parseInt(Event.findElement(e,'SELECT').id.replace('category-level-',''));
	},
	addOption:function(select,value,text)
	{
		var option=document.createElement('option');
		option.value=value;
		option.innerHTML=text;
		select.appendChild(option);
	},
	addSelect:function(select)
	{
		Event.observe(select,'change',this.onChange.bind(this));
		var div=document.createElement('div');
		div.className='category-selectoritem-container';
		div.appendChild(select);
		$(this.containerID).appendChild(div);
	},
}
