//ID for setTimeout
var tid = new Array();
var aQbPart = new Array();
var aQbImage = new Array();
var aQbImageTemp = new Array();
var sQbActiveImage = new Array();

var aQbStyle = new Array();
aQbStyle["navion"] = new Array();
aQbStyle["navion"]["class"] = "active";
aQbStyle["navioff"] = new Array();
aQbStyle["navioff"]["class"] = "normal";

aQbStyle["display"] = new Array();
aQbStyle["display"]["display"] = "block";
aQbStyle["undisplay"] = new Array();
aQbStyle["undisplay"]["display"] = "none";

// Hauptelement registrieren
function qbAddRefElem(fp_sElemId){
	if (!document.getElementById(fp_sElemId)) return;
	aQbPart.push(fp_sElemId);
}
// Hauptelement anzeigen
function qbDisplayNavi(fp_sElemId){
	// alle ausblenden
	for (sElemId in aQbPart){
		qbepSetStyles(aQbPart[sElemId]+"_a", aQbStyle["navioff"]);
		qbepSetStyles(aQbPart[sElemId]+"_ulsub", aQbStyle["undisplay"]);
		}
	// anzeigen
	sElemId = (fp_sElemId)
		? fp_sElemId
		: aQbPart[0];
	qbepSetStyles(sElemId+"_a", aQbStyle["navion"]);
	qbepSetStyles(sElemId+"_ulsub", aQbStyle["display"]);
}
// Unterelement registrieren
function qbAddImageElem(fp_sElemId){
	// Id des Anzeigerahmens (Referenzkategorie)
	aQbImageTemp.push(fp_sElemId);
	return aQbImageTemp.length;
}

// Unterelement registrieren
function qbFillImageElem(fp_sPartID){
	aQbImage[fp_sPartID] = aQbImageTemp;
	// Temporäres Array nullen
	aQbImageTemp = new Array();
	qbDisplayImage(false, fp_sPartID);
}

// Unterelement anzeigen
function qbDisplayImage(fp_sElemId, fp_sPartID){
	// Id des Anzeigerahmens
	var partID = (fp_sPartID) ? fp_sPartID : getPartID(fp_sElemId);
	if (!partID) return;
	for (sElemId in aQbImage[partID]){
		qbepSetStyles(aQbImage[partID][sElemId], aQbStyle["undisplay"]);
		qbepSetStyles(aQbImage[partID][sElemId]+"_a", aQbStyle["navioff"]);
		qbepSetStyles(aQbImage[partID][sElemId]+"_desc", aQbStyle["undisplay"]);
		}
	sElemId = (fp_sElemId)
		? fp_sElemId
		: aQbImage[partID][0];
	qbepSetStyles(sElemId, aQbStyle["display"]);
	qbepSetStyles(sElemId+"_a", aQbStyle["navion"]);
	if (document.getElementById(sElemId+"_desc"))
		qbepSetStyles(sElemId+"_desc", aQbStyle["display"]);
	else
		qbepSetStyles(aQbImage[partID][0]+"_desc", aQbStyle["display"]);
	sQbActiveImage[partID] = sElemId;
}

// über alle ID's im quadratischen Array aQbImage eine ID suchen, und den Arraybezeichner 1. Ebene zurückgeben
function getPartID(fp_sElemId){
	for (var partID in aQbImage)
		for (var id in aQbImage[partID])
			if (aQbImage[partID][id] == fp_sElemId) return partID;
}
// nächstes (oder voriges) Unterelement anzeigen
function qbDisplayNextImage(fp_sPartId, fp_bNext){
	// Index des Bildes suchen
	for (nElemId in aQbImage[fp_sPartId])
		if (aQbImage[fp_sPartId][nElemId] == sQbActiveImage[fp_sPartId]){
			var nDisplayElem = nElemId;
			break;
			}
	// vom aktuellen hoch oder runter zählen
	nDisplayElem = (fp_bNext)
		? parseInt(nDisplayElem)+1
		: parseInt(nDisplayElem)-1;
	// Korrektur, wenn der Bereich ID in aQbPart verlassen wird
	nDisplayElem = (nDisplayElem >= aQbImage[fp_sPartId].length)
		? 0
		: (nDisplayElem < 0)
			? aQbImage[fp_sPartId].length-1
			: nDisplayElem;
	qbDisplayImage(aQbImage[fp_sPartId][nDisplayElem], fp_sPartId);
}

//set styles on element
function qbepSetStyles(fp_sElemId, fp_aStyle){
var oElem = (typeof(fp_sElemId) == "object") ? fp_sElemId : document.getElementById(fp_sElemId);
if (!oElem) return;
for (var style in fp_aStyle){
	if (typeof(fp_aStyle[style]) != "string") continue;
	(style == "class")
		// IE: className
		? (oElem.className) ? oElem.className = fp_aStyle[style] : oElem.setAttribute('class', fp_aStyle[style])
		: eval('oElem.style.'+style+'="'+fp_aStyle[style]+'"');
	}
}
