var cssschemes; //wird spaeter mit dem element belegt, welches die css schemes enthaelt (span)

function info_show(refresh)
{
	js_titlebox.innerHTML = js_titlearray[this.id];
}

function info_reset()
{
	js_titlebox.innerHTML = "<span class='backgroundcolorfont'>&#x223D;@</span>"; //AUCH IN inc_image.php anpassen! workaround: da das utf8 zeichen groesser ist wuerde die box sonst die groesse veraendern, wenn der cursor die bilder verlaesst (flimmern)
}
function add_behaviour(){
	if (jstitlebox_enabled == true)
	{
		//BlockImages = LI Elemente
		var BlockImages = document.getElementById('thumbs_ul').getElementsByTagName("li");
		if (BlockImages.length > 0)
		{
			//Alle LI Elemente durchgehen
			for (i=0; i<BlockImages.length; i++) {
				if (BlockImages[i].className.substr(0,8) =='imgblock') //die klasse muss mit 'imgblock' (8 zeichen) beginnen
				{
					BlockImages[i].onmouseover = info_show;
					BlockImages[i].onmouseout = info_reset;
					//            ----------------- das ist die id des LI, also z.B. fID1
					js_titlearray[BlockImages[i].id] = BlockImages[i].childNodes[0].title;
				}
			}
		}
	}

	//SETTINGS cssschemes SPAN finden
	cssschemes = document.getElementById('cssschemes');
	
	//fuer info_show und info_reset die titlebox definieren
	js_titlebox = document.getElementById('js_titlebox');
	
	//alle childnodes von cssschemes (span) durchgehen
	var css_button_behaviour, css_button_scheme;
	for(s = 0; s < css_schemes.length; s++){
		css_button_behaviour = cssschemes.childNodes[s];
		css_button_scheme = (css_schemes[s]["title"] == css_current ? 'none' : css_schemes[s]["title"]);
		assign_function_to_cssbutton(css_button_behaviour, css_button_scheme, s);
	}
}

function assign_function_to_cssbutton(element, schemename, nbrInArray){
	element.firstChild.href = "#";
	element.firstChild.onclick = function() {
		switch_css(schemename, nbrInArray);
		http_css = ajax_init();
		sendScheme(schemename != 'none' ? schemename : css_current, element);
	};
}

function set_css(css_title){
	var i;
	var cacheobj;
	var altsheets= [""];
	
	for(i=0; cacheobj=document.getElementsByTagName("link")[i]; i++) {
		if(cacheobj.getAttribute("rel").toLowerCase()=="alternate stylesheet" && cacheobj.getAttribute("title")) { //wenn dies ein alternatives sheet mit einem titel ist
			cacheobj.disabled = true
			altsheets.push(cacheobj) //Referenz zu alternativem Stylesheet im Array speichern
			if(cacheobj.getAttribute("title") == css_title) //stylesheet aktivieren, wenn der titel dem parameter entspricht
			cacheobj.disabled = false //stylesheet aktivieren
		}
	}
}

//bei klick auf css button wird diese funktion ausgefuert, die zunaechst, wenn noch nicht geladen, die (alternative) css datei laedt, anschliessend sie aktiv setzt
function switch_css(css_title, nbrInArray){
	//wenn noch nicht geladen, zunaechst css laden
	if (!css_schemes[nbrInArray]["loaded"]){
		css_schemes[nbrInArray]["loaded"] = true;
		//loadjscssfile(css_schemes[nbrInArray]["file"], "css_alt", css_title, "screen"); //laedt css datei und setzt sie (onload!) aktiv
		var yui_get = YAHOO.util.Get.css(css_schemes[nbrInArray]["file"],{onSuccess: function (o){o.nodes[0].rel = "alternate stylesheet"; o.nodes[0].title = css_title; o.nodes[0].media = "screen"; set_css(css_title);}});
	}
	//sonst direkt aktiv setzen
	else if (document.getElementById){
		set_css(css_title);
	}
}


//COMMON (for later use)
//beispiel: var div_body = node_creator(div_head, 'div', false, {'class': 'bd', 'style': 'text-align:left'});
//achtung: vierter parameter erwartet ein objekt
var node_creator = function(attachToNode,elementName,elementContent,elementAttributes){
	//Node Element erstellen
	if (elementName) var newNode = document.createElement(elementName);
	//wenn kein elementName uebergeben, von textnode ausgehen und diesen erstellen
	else {
		if (elementContent){
			var textNode = document.createTextNode(elementContent);
			if (attachToNode) attachToNode.appendChild(textNode);
			return textNode;
		}
		else return false;
	}
	//content erstellen, wenn als parameter uebergeben
	if (elementContent){
		//Text Node erstellen und an das neue Element anhaengen
		var nodeContent = document.createTextNode(elementContent);
		newNode.appendChild(nodeContent);
	}
	//attribute setzen, wenn objekt als parameter uebergeben
	if (typeof(elementAttributes) == 'object'){
		var attname, attval;
		for (var attribut in elementAttributes){
			attname = attribut;
			attval = elementAttributes[attribut];
			//workaround fuer f***ing IE
			if (attname == 'class') newNode.className = attval;
			else newNode.setAttribute(attname,attval);
		}
	}
	//am schluss an node anhaengen
	if (attachToNode){
		attachToNode.appendChild(newNode);
	}
	//node zurueckgeben
	return newNode;
}

//COMMON: used in meta und adv_ui
//liesst eine CSV id liste aus der UL LI Liste aus
var parseList_ac = function(ul, ul2) {
    var items = ul.getElementsByTagName("li");
    if (ul2) var items2 = ul2.getElementsByTagName("li");
    var out = new Array();
    //items und items 2 durchlaufen (concat scheiterte. objekttyp?)
    for (var i=0;i<items.length;i++) out.push(items[i].id);
    if (ul2) for (var i=0;i<items2.length;i++) out.push(items2[i].id);
    return out.join(',');
};