// legördülő

	//
// FANCY DROPDOWN
// ( V1.3 - 2006.03.25) - initial release, oopless js dropdown
// ( V1.3.2 - 2006.06.29) - added onchange event handler
// ( V1.3.3 - 2006.07.03) - added dirty autoclose
// (bugfix - 07.19) - onchange fix for FF
// =====================


function fancyDropDowns ( pTargetPrefix ) 
{
	allTargets = document.getElementsByTagName("DIV");
	for (var m = 0; m < allTargets.length; m++) 
		{ 
		//SCAN THE DOCUMENT FOR TARGETS
		if (String(allTargets[m].id).search( pTargetPrefix + '_' ) != -1)
			{
			target = allTargets[m].id;
			addDropDown(target);
			allDropDowns.push(target);
			}
		}
}

var firstItem = 0; //1: skip first; 0: show all
var allDropDowns = new Array();
var ddmenutimeout = 1000;

function ddHover( self , state)  //HOVER FOR SUBITEMS - ALSO ALLOWS FORCED SWITCHING
{
	if ( state == 1) 
	{ 
		self.className += 'Hover'; 
		self.parentNode.parentNode.parentNode.over = 1;
	} else { 
		self.className = String(self.className).replace('Hover',''); 
		self.parentNode.parentNode.parentNode.over = 0;
		setTimeout('ddClose()', ddmenutimeout);
	}
}

function ddHeaderIn( self ) //HOVER FOR HEADER, WO CLASSES
{
	self.parentNode.parentNode.over = 1;
}

function ddHeaderOut( self )
{
	self.parentNode.parentNode.over = 0;
	setTimeout("ddClose()", ddmenutimeout);
}

function ddListFlip( self ) //NEEDS "SELF" INSTEAD OF "THIS", SINCE WE USE DYNAMIC STUFF HERE
{
	//CLOSE OPENED LISTS, EXCEPT FOR THE CURRENT ONE
	for (var m = 0; m < allDropDowns.length; m++) 
		{
		if ((self.parentNode.parentNode.id) != (allDropDowns[m])) {
			subDiv = document.getElementById(allDropDowns[m]).getElementsByTagName("div"); subDiv = subDiv[0];
			subDiv = subDiv.getElementsByTagName("div"); subDiv = subDiv[0];
			subDiv.style.display = "none";
			}
		}
		
	//NOW FLIP-FLOP THE CURRENT ONE
	subDiv = (self.parentNode.getElementsByTagName("div"))[0];
	if (subDiv.style.display == "none") { subDiv.style.display = "block"; }
		else { subDiv.style.display = "none"; }
}

function ddListSelect( self, pSelNum)
{
	
	//UPDATE THE REAL CONTROL
	selectBox = (self.parentNode.parentNode.parentNode.parentNode.getElementsByTagName("SELECT"))[0];
	if (selectBox.type == "select-multiple") { multiSel = 1; } else { multiSel = 0; }
	selOptions = selectBox.getElementsByTagName("OPTION");
	if (multiSel == 0) 
		{ 
		previousSelection = selectBox.selectedIndex;
		for (var i = 0; i < selOptions.length; i++) { selOptions[i].selected = false; }
		
		//GENERATE ONCHANGE EVENT IF NEEDED
		doOnChange = false;
		if ((selectBox.onchange) && (selOptions[pSelNum].value != selectBox.options[previousSelection].value)) { doOnChange = true; }
		selOptions[pSelNum].selected = true;
		if (doOnChange) { selectBox.onchange(); }

		eval(preGatherCode(selOptions[pSelNum].onclick)); //EVAL THE ORIGINAL COMMAND
		}
		else
		{
		selOptions[pSelNum].selected = !(selOptions[pSelNum].selected);
		eval(preGatherCode(selOptions[pSelNum].onclick));
		}

		
	//HIDE FAKE DROPDOWN IF NOT MULTISELECT
	if (multiSel == 0) { self.parentNode.style.display = "none"; }

	//UPDATE THE DUMMYCONTROL'S SELECTION
	selectedDummy = (self.parentNode.parentNode.getElementsByTagName("SPAN"))[0];
	selectedDummy.innerHTML='';
	selCount = 0; 
	for (var i = 0; i < selOptions.length; i++) { if (selOptions[i].selected == true) { selCount = i; } }
	for (var i = 0; i < selOptions.length; i++) 
		{ 
		if (selOptions[i].selected == true) {
			selectedDummy.innerHTML += selOptions[i].text
			if ((multiSel == 1) && (i<selCount)) { selectedDummy.innerHTML += ', '; } 
			} 
		}
	if (selectedDummy.innerHTML == '') { selectedDummy.innerHTML = selOptions[0].text; }
	
	
	//RESET STYLES (REMOVE ACT) ON ITEMS
	if (multiSel == 0) { 
		dropdItems = self.parentNode.getElementsByTagName("SPAN");
		for (var i = 0; i < dropdItems.length; i++)
			{
			dropdItems[i].className = String(dropdItems[i].className).replace ( 'Act','');
			}
		}
	
	//CLEAN HOVERSTATE AND ADD ACT FLAG (STYLE)
	ddHover(self,0);
	if (multiSel == 0) { self.className += 'Act'; }
		else
		{
		if (String(self.className).search('Act') != -1) { self.className = String(self.className).replace('Act',''); }
			else { self.className += 'Act'; }
		}
	
	//DON NOT LET IT CLOSE
	self.parentNode.parentNode.parentNode.over = 1;
}


function ddClose ( pString )
{
	//(document.getElementById(pTargetId).getElementsByTagName("div"))[0].style.display == "none";
	for (var m = 0; m < allDropDowns.length; m++) //SCAN ALL DROPDOWNS AND CLOSE THE ONES WE ARE NOT HOVERING UPON
	{
		if (document.getElementById(allDropDowns[m]).over == 0) 
		{
			subDiv = document.getElementById(allDropDowns[m]).getElementsByTagName("div"); subDiv = subDiv[0];
			subDiv = subDiv.getElementsByTagName("div"); subDiv = subDiv[0];
			subDiv.style.display = "none";
		}
	}
}


function addDropDown ( pTarget ) 
{
	coreDiv = document.getElementById ( pTarget );
	selectBox = (coreDiv.getElementsByTagName("SELECT"))[0];
	selectBox.tabIndex = -1; /*SORRY, THIS IS A ONE WAY TICKET*/
	selOptions = selectBox.getElementsByTagName("OPTION");
	baseClass = selectBox.className;

	//BUILD INNERHTML	
	previousSels = new Array();
	subId = String(pTarget).replace('_','')+'Sub'; //THE ORDER BELLOW IS IMPORTANT!
	innerCode =
	'<div id="' + subId + '" class="' + baseClass + '" style="">' +
	'<span class="' + baseClass + 'Selected" onClick="ddListFlip(this)" ' +
		'onMouseOver="javascript:this.className=\''+baseClass+'SelectedHover\';ddHeaderIn(this)" ' +
		'onMouseOut="javascript:this.className=\''+baseClass+'Selected\';ddHeaderOut(this)" >_%TOP%_</span>' +
	'<div class="' + baseClass + 'List" style="display: none;">';
	for (var i = firstItem; i < selOptions.length; i++) 
		{
		if (selOptions[i].selected) 
			{ isAct='Act'; previousSels.push(selOptions[i].text)} 
			else { isAct=''; }
		innerCode += '<span '+
			'class="' + baseClass + 'Item' + isAct + '" ' +
			'onClick="ddListSelect( this, ' + i + ')" ' +
			'onMouseOver="ddHover(this,1)" ' +
			'onMouseOut="ddHover(this,0)">' + selOptions[i].text + '</span>';
		}	
	innerCode += '</div></div><!--#ES-->';

	//FILL IN PREVIOUS/PREDEFINED DATA (IT MAY BE NEEDED)
	sPrevSel = new String('');
	for (var i = 0; i < previousSels.length; i++)
		{
		sPrevSel += previousSels[i];
		if (i<previousSels.length-1) { sPrevSel += ', '; }
		}
	if ((previousSels.length)==0) { sPrevSel = selOptions[0].text; }
	innerCode = innerCode.replace('_%TOP%_',sPrevSel);
	
	//FINALLY: INJECT DATA
	coreDiv.innerHTML = coreDiv.innerHTML + innerCode;
}

function preGatherCode ( pString ) {
	if ((String(pString) != 'undefined') && (String(pString) != 'null'))
		{
		startPos = String(pString).search('{')+1;
		endPos = String(pString).length-2;
		return(String(pString).substring(startPos, endPos));
		} else return('');
}

// MISC FUNCTIONS

function hideShowDropDown ( pTarget, pState) //EXAMPLE: HOW TO REACH SUBCONTROLS BY THEIR ID
{
	subId = String(pTarget).replace('_','')+'Sub';

	if (document.getElementById(subId) != 'null' ) 
	{
	if (pState != 1 ) { document.getElementById(subId).style.display = 'none'; }
		else { document.getElementById(subId).style.display = 'block'; }
	}
}

function destroyDropDown ( pTarget ) //RIGHT NOW IT IS BROKEN, DON'T USE IT PLEASE 
{
	targetHTML = String(document.getElementById( pTarget ).innerHTML);
	subId = String(pTarget).replace('_','')+'Sub';
	
	startPos = targetHTML.search('<div id="'+subId)-1;
	endPos = targetHTML.search('</div></div><!--#ES-->')+22;
	
	subTargetHTML = targetHTML.substring(startPos,endPos);
	document.getElementById( pTarget ).innerHTML = String(targetHTML.replace(subTargetHTML,'') + "\n");
}


// legördülő vége