/*
	Javascript für oehtb-fahrtendienst.at
	Copyright (C) 2009 - Code by Simon Laburda, Homepage-Design by Bernadette Moser
*/

var scalersvg;
var knobsvg;
var knobdx = -100, knobdy;
var knobpos = 0;
var curcontrast = 0;
var fontdivisor = 30.0;
var navieles;
var activecolele;
var hoverele = null;
var hovereletrans = " translate(-1.5 -1.5) scale(1.15 1.15)";
var fontsizes = { minsize:fontdivisor, paragraph:16.5, header1:24, smalltext:12, navitext:12.5, header2:18, naviw:175, navih:24, subnavih:22, contentx:270, redlinex:260, altdesign:78 };
var browserua = navigator.userAgent.toLowerCase();
var navidata = Array();

// browser switches
var isie = browserua.indexOf('msie') != -1;
var isie6 = isie && browserua.indexOf('msie 6') != -1;
var isie8 = isie && browserua.indexOf('msie 8') != -1;
var iswebkit = browserua.indexOf('applewebkit') != -1;
var redlinex=260;
var considersvg = (!isie) && (!iswebkit);	// ie is just bad and webkit doesn't scale our menu

var regnavibtn = "navibtn";
var regnavibtnon = "navibtnon";

/*
	Farbschema-Einstellungen hier
	Bei Änderungen am Schema "Normal" bitte ggf. auch layout.css und base.css anpassen
	Neue Farbschemata hinter "Normal" einfügen.
*/

var colorschemes = [
	{ name:"Normal",				/* Name für das Schema */
		bgcolor:"#ffffff",			/* Hintergrundfarbe */
		textcolor:"#000000",		/* Textfarbe */
		naviblock:"#bfbfbf",		/* Farbe der Navi-Knopf Klötzchens */
		navisel:"#b30000",			/* Farbe des Klötzchens wenn ausgewählt */
		navihover:"#b3a0a0",		/* Farbe des Klötzchens wenn drübergefahren wird */
		navitextrect:"#e6e6e6",		/* Farbe des Texthintergrunds in der Navi */
		barcolor:"#e5e5e5",			/* Farbe der Leisten */
		bartextcolor:"#000000",		/* Farbe des Texts in den Leisten */
		botbarborder:"#e5e5e5",			/* Farbe des obereren Strichs über dem unteren Navi-Teil */
		plainbarcolor:"#ffffff",		/* Hindergnudarbe der klaren (weißen) Elemente in der Leiste */
		plainbartext:"#000000",			/* Textarbe der klaren (weißen) Elemente in der Leiste */
		arrowcolor:"#ffffff",		/* farbe des navi-pfeils */
		fillercolor:"#ffffff",		/* farbe des rahmens um den navi-eintrag */
		topbordercolor:"#ffffff",	/* farbe des rahmens in der oberen leiste */
		logo:"fdlogo",				/* Dateiname des Logos (ohne Endung) */
		oelogo:"oelogo",		/* Dateiname des öhtb-Logos (ohne Endung) */
		fswlogo:"fsw",		/* Dateiname des fsw-Logos (ohne Endung) */
		subnaviclass:"",		/* Zusätzliche CSS-Klasse für Submenü-Buttons */
		scalerstroke:"#000000",		/* Vordergrundfarbe des Skalier-Dingsbums */
		scalerfill:"#ffffff",		/* Hintergrundfarbe des Skalier-Dingsbums */
		lupe:"lupe",					/* Lupengrafik (ohne Endung) */
		buttonsize:16.5				/* Schirftgröße des Auswahlbuttons in px */
		
	},{ name: "Weiß auf Schwarz",
		bgcolor:"#000000",
		textcolor:"#ffffff",
		naviblock:"#000000",
		navisel:"border",
		navitextrect:"#000000",
		barcolor:"#000000",
		plainbarcolor:"#000000",
		botbarborder:"#ffffff",
		logo:"fdlogoblack",
		oelogo:"oeweissschwarz",
		fswlogo:"fswweissschwarz",
		scaler:"Leisteblack",
		subnaviclass:" subnavibtninv",
		naviclass:"whitenavi",
		lupe:"lupeweissschwarz"

	},{ name: "Blau auf weiß",
		bgcolor:"#ffffff",
		textcolor:"#3534d1",
		plainbarcolor:"white",
		plainbartext:"#3534d1",
		barcolor:"#3534d1",
		bartextcolor:"#ffffff",
		arrowcolor:"#ffffff",
		topbordercolor:"#ffffff",
		naviblock:"#3534d1",
		logo:"fdblauweiss",
		oelogo:"oeweissblau",
		fswlogo:"fswblauweiss",
		subnaviclass:" subnaviblauweiss",
		naviclass:"blaunavi",
		scalerstroke:"#3534d1",
		scalerfill:"#ffffff",
		lupe:"lupeweissblau"

	},{ name: "Weiß auf blau",
		bgcolor:"#3534d1",
		textcolor:"#ffffff",
		navisel:"border",
/*		arrowcolor:"#3534d1",
		naviblock:"#ffffff",*/
		botbarborder:"#ffffff",
		logo:"fdweissblau",
		oelogo:"oeweissblau",
		fswlogo:"fswweissblau",
		subnaviclass:" subnaviweissblau",
		//scaler:"Leisteblack",
		naviclass:"whitenavi",
		scalerstroke:"#3534d1",
		scalerfill:"#ffffff",
		lupe:"lupeweissblau"

	},{ name: "Gelb auf Schwarz",
		bgcolor:"#000000",
		textcolor:"#f9d133",
		navisel:"border",
		botbarborder:"#f9d133",
		topbordercolor:"#f9d133",
		logo:"fdgelbschwarz",
		oelogo:"oegelbschwarz",
		fswlogo:"fswgelbschwarz",
		scaler:"Leisteblack",
		subnaviclass:" subnavigelbschwarz",
		naviclass:"gelbnavi",
		scalerstroke:"#000000",
		scalerfill:"#f9d133",
		lupe:"lupegelbschwarz"
		
	},{ name: "Schwarz auf Gelb",
		bgcolor:"#f9d133",
		textcolor:"#000000",
		navisel:"border",
		logo:"fdschwarzgelb",
		oelogo:"oeschwarzgelb",
		fswlogo:"fswschwarzgelb",
		botbarborder:"#000000",
		subnaviclass:" subnavischwarzgelb",
		naviclass:"blacknavi",
		scalerstroke:"#000000",
		scalerfill:"#f9d133",
		lupe:"lupeschwarzgelb"
		
	}
];


// fix up missing data
for(i=1;i<colorschemes.length;i++) {
	if(!colorschemes[i].bgcolor) colorschemes[i].bgcolor = colorschemes[0].bgcolor;
	if(!colorschemes[i].textcolor) colorschemes[i].textcolor = colorschemes[0].textcolor;
	if(!colorschemes[i].navisel) colorschemes[i].navisel = colorschemes[0].navisel;
	if(!colorschemes[i].logo) colorschemes[i].logo = colorschemes[0].logo;
	if(!colorschemes[i].oelogo) colorschemes[i].oelogo = colorschemes[0].oelogo;
	if(!colorschemes[i].fswlogo) colorschemes[i].fswlogo = colorschemes[0].fswlogo;
	if(!colorschemes[i].subnaviclass) colorschemes[i].subnaviclass = colorschemes[0].subnaviclass;
	if(!colorschemes[i].scalerstroke) colorschemes[i].scalerstroke = colorschemes[0].scalerstroke;
	if(!colorschemes[i].scalerfill) colorschemes[i].scalerfill = colorschemes[0].scalerfill;
	if(!colorschemes[i].lupe) colorschemes[i].lupe = colorschemes[0].lupe;
	if(!colorschemes[i].buttonsize) colorschemes[i].buttonsize = colorschemes[0].buttonsize;
	
	if(!colorschemes[i].fillercolor) colorschemes[i].fillercolor = colorschemes[i].textcolor;
	if(!colorschemes[i].arrowcolor) colorschemes[i].arrowcolor = colorschemes[i].textcolor;
	if(!colorschemes[i].bartextcolor) colorschemes[i].bartextcolor = colorschemes[i].textcolor;
	if(!colorschemes[i].topbordercolor) colorschemes[i].topbordercolor = colorschemes[i].textcolor;
	
	if(!colorschemes[i].botbarborder) colorschemes[i].botbarborder = colorschemes[i].bgcolor;
	if(!colorschemes[i].naviblock) colorschemes[i].naviblock = colorschemes[i].bgcolor;
	if(!colorschemes[i].navihover) colorschemes[i].navihover = colorschemes[i].bgcolor;
	if(!colorschemes[i].barcolor) colorschemes[i].barcolor = colorschemes[i].bgcolor;
	if(!colorschemes[i].plainbarcolor) colorschemes[i].plainbarcolor = colorschemes[i].bgcolor;
	if(!colorschemes[i].navitextrect) colorschemes[i].navitextrect = colorschemes[i].bgcolor;
	if(!colorschemes[i].plainbartext) colorschemes[i].plainbartext = colorschemes[i].bartextcolor;
}

var colors = colorschemes[0];

function hasoption(optname) {
	return (","+pageoptions+",").indexOf(","+optname+",") > -1;
}

function getY(oElement) {
	var iReturnValue = 0;
	while( oElement != null ) {
		iReturnValue += oElement.offsetTop;
		oElement = oElement.offsetParent;
	}
	return iReturnValue;
}
function getX(oElement) {
	var iReturnValue = 0;
	while( oElement != null ) {
		iReturnValue += oElement.offsetLeft;
		oElement = oElement.offsetParent;
	}
	return iReturnValue;
}

function setallsize(tag,clsnam,siz) {
	var allele = getElementsByClassName(document, tag, clsnam);
	for(i=0;i<allele.length;i++) {
		allele[i].style.fontSize = siz;
	}
}
function recolorloadedpage() {
	var knobxx = fontsizes.minsize + knobpos;
	var regular = (knobxx / fontdivisor * fontsizes.paragraph) + "px";

	allele = getElementsByClassName(document, 'a', '');
	for(i=0;i<allele.length;i++) {
		if(allele[i].className == '')
			allele[i].style.color = colors.textcolor;
	}
	setallsize('*','smallsize', (knobxx / fontdivisor * fontsizes.smalltext) + "px");
	setallsize('p','', regular);
	setallsize('td','', regular);
	setallsize('td','team', regular);
	setallsize('label','', regular);
	setallsize('strong','', regular);
	setallsize('em','', regular);
	setallsize('h1','',(knobxx / fontdivisor * fontsizes.header1) + "px");
	setallsize('h2','',(knobxx / fontdivisor * fontsizes.header2) + "px");

	$(".loginbtn,td.team,#content td").css('borderColor', colors.textcolor);
}

function setknobpos(knobx) {
	var allele;
	if(knobx < 0) knobx = 0;
	if(knobx > 54) knobx = 54;
	knobpos=knobx;

	try {
		document.cookie = "scale=" + knobx;
	} catch(exception) { }
	
	if(knobsvg) {
		knobsvg.transform.baseVal.getItem(0).setTranslate(knobx,2.5);
		// knobsvg.setAttribute("x", knobx);
	}	
	knobx += fontsizes.minsize;
	var regular = (knobx / fontdivisor * fontsizes.paragraph) + "px";
	document.getElementById("contentblock").style.fontSize = regular;

	if((knobpos != 0) || (colors != colorschemes[0])) {
		regnavibtn = "navibtn navibig" + (colors.naviclass ? (" " + colors.naviclass) : "");
		regnavibtnon = "navibtn navibigon" + (colors.naviclass ? (" " + colors.naviclass) : "");
	} else {
		regnavibtn = "navibtn";
		regnavibtnon = "navibtnon";
	}

	$("ul.submenu").css( { paddingTop: knobpos + "px" } );
	
	for(i=0;i<navidata.length;i++) {
		if(navidata[i].svg) {
			navidata[i].li.firstChild.width = (knobx / fontdivisor * fontsizes.naviw);
			navidata[i].li.firstChild.height = (knobx / fontdivisor * fontsizes.navih);
			navidata[i].li.style.height = ((knobx / fontdivisor * fontsizes.navih) + 2) + "px";
		} else if(navidata[i].a) {
			navidata[i].a.style.fontSize = (knobx / fontdivisor * fontsizes.navitext) + "px";
			navidata[i].li.style.height = (knobx / fontdivisor * fontsizes.navih + 2) + "px";
			navidata[i].a.style.height = (knobx / fontdivisor * fontsizes.navih) + "px";
			navidata[i].a.style.lineHeight = (knobx / fontdivisor * fontsizes.navih) + "px";
			navidata[i].li.style.width = (knobx / fontdivisor * fontsizes.naviw) + "px";
			navidata[i].li.firstChild.className = ((activecolele == navidata[i]) ? regnavibtnon : regnavibtn);
		}
	}
/*	allele = getElementsByClassName(document, 'object', 'naviobj');
	for(i=0;i<allele.length;i++) {
	}*/
	allele = getElementsByClassName(document, 'a', 'subnavibtn');
	for(i=0;i<allele.length;i++) {
		allele[i].style.fontSize = (knobx / fontdivisor * fontsizes.smalltext) + "px";
		allele[i].parentNode.style.height = (knobx / fontdivisor * fontsizes.subnavih) + "px";
	}
	document.getElementById("content").style.left = ((fontsizes.contentx - fontsizes.naviw) + (knobx / fontdivisor * fontsizes.naviw)) + "px";
	document.getElementById("redline").style.left = (redlinex = ((fontsizes.redlinex - fontsizes.naviw) + (knobx / fontdivisor * fontsizes.naviw))) + "px";
	
	document.getElementById("navi").style.position = (knobx > fontsizes.altdesign) ? "static" : "absolute";
	document.getElementById("redline").style.display = (knobx > fontsizes.altdesign) ? "none" : "block";
	document.getElementById("content").setAttribute("class", (knobx > fontsizes.altdesign) ? "staticcontent" : "dynamiccontent");
	recolorloadedpage();
	if(window.onresize) {
		window.onresize();
	}
}

function getsvg(nam) {
    try {
		var thingy = nam.substring ? document.getElementById(nam) : nam;
		if (thingy.contentDocument) {  // works in Mozilla
			return thingy.contentDocument;
		} else {
	    	return thingy.getSVGDocument();
	    }
	} catch(exception) {
	    return null;
	}
}

function findme(e) {
	if (!e) var e = window.event;
	var targ = e.relatedTarget || e.target;
	while(targ) {
		for(j=0;j<navidata.length;j++)
			if(navidata[j].svg == targ) {
				return j;
			}
		targ = targ.parentNode;
	}
	return -1;
}


var curelerot = "";;
function dobutton(id, cur, delta) {
	var ele = navidata[id];
	if(ele.svg) {
		curelerot = "rotate("+cur+" 11.2 12.5)";
		ele.svg.getElementById("arrow").setAttribute("transform",curelerot + (ele == hoverele ? hovereletrans : ""));
	}
	cur += delta*15;
	if(isie) {
		// for some reason all versions of msie mess up the height. ie - no animation - you loose ... again....
		if(delta < 0) cur = 0; else cur = 90;
	}
	
	if(cur >= 0 && cur <= 90) {
		ele.submenu.style.display = cur == 0 ? "none" : "block";

		var allele = getElementsByClassName(document, 'li', 'subnavibtn');
		var fullelesiz = ((fontsizes.minsize + knobpos) / fontdivisor * fontsizes.subnavih);
		//var elesiz = (cur / 90.0) * fullelesiz /* (cur / 90.0 * 21.1) */ + "px";
		for(i=0;i<allele.length;i++) {
			if(allele[i].parentNode.parentNode.id == ("submenu" + id)) {
				var half = cur > ((i-1) * 90 / allele.length);
				var full = cur > (i * 90 / allele.length);
				allele[i].style.height = full ? fullelesiz+"px" : (half ? (fullelesiz/2)+"px" : "0px"); // 
				//allele[i].style.visibility = half ? "visible" : "hidden";
				 allele[i].style.display = half ? "block" : "none";
			}
		}
		if(!isie)
			setTimeout("dobutton("+id+","+cur+","+delta+");",30);
	}
	return false;
}

function makesmaller() {
	//setTimeout("setknobpos("+(knobpos-1)+");",10);
	//setTimeout("setknobpos("+(knobpos-2)+");",50);
	//setTimeout("setknobpos("+(knobpos-5)+");",30);
	setknobpos(knobpos-5);
	return false;
}

function makelarger() {
	//setTimeout("setknobpos("+(knobpos+1)+");",10);
	//setTimeout("setknobpos("+(knobpos+2)+");",50);
	//setTimeout("setknobpos("+(knobpos+5)+");",30);
	setknobpos(knobpos+5);
	return false;
}

function colorele(ele) {
	if(!ele) return;
	if(colors.navisel == "border") {
		ele.svg.getElementById("blockrect").style.setProperty("fill", activecolele == ele ? colors.fillercolor : colors.naviblock, "");
		ele.svg.getElementById("innerrect").style.setProperty("fill", colors.naviblock, "");
	} else {
		ele.svg.getElementById("blockrect").style.setProperty("fill",activecolele == ele ? colors.navisel : colors.naviblock, "");
		ele.svg.getElementById("innerrect").style.setProperty("fill",activecolele == ele ? colors.navisel : colors.naviblock, "");
	}
}

function updateinlinecontrast() {
	var colors = colorschemes[curcontrast];
	$(".nocheinfswlogo").attr("src","/cms/img/nocheinfswlogo/"+colors.fswlogo+".png");	
}

function selcontrast(idx) {

	var i, allele;
	try {
		document.cookie = "contrast=" + idx;
	} catch(exception) { }
	curcontrast = idx;
	colors = colorschemes[idx];

	document.body.style.backgroundColor = colors.bgcolor;
	document.body.style.color = colors.textcolor;
	if(knobsvg) {
		document.getElementById("fdlogo").innerHTML = '<object data="img/' + colors.logo + '.svg" type="image/svg+xml" width="300" height="41"><img src="img/' + colors.logo + '.png" alt="ÖHTB Fahrtendienst" /></object>';
		document.getElementById("rectb1").innerHTML = '<object data="img/' + colors.oelogo + '.svg" type="image/svg+xml" id="oelogo" width="42" height="35"><a href="http://www.oehtb.at/"><img src="img/' + colors.oelogo + '.png" alt="ÖHTB" /></a></object>';
		document.getElementById("rect1").innerHTML = '<object data="img/' + colors.fswlogo + '.svg" type="image/svg+xml" id="fswlogo" width="66" height="32"><a href="http://www.fsw.at/"><img src="img/' + colors.fswlogo + '.png" alt="Fonds soziales Wien" /></a></object>';
		
		// document.getElementById("rect212").innerHTML = '<object data="img/' + colors.lupe + '.svg" type="image/svg+xml" width="24" height="24" id="lupe"><input type="image" id="lupeimg" alt="Suchen" src="img/' + colors.lupe + '.png.gif" /></object>';
		
		document.getElementById("rect212").innerHTML = '<input type="image" id="lupeimg" alt="Suchen" src="img/' + colors.lupe + '.png' + (isie6 ? '.gif' : '') + '" />';
	} else {
		document.getElementById("fdlogo").innerHTML = '<img src="img/' + colors.logo + '.png" alt="ÖHTB Fahrtendienst" />';
		document.getElementById("rectb1").innerHTML = '<a href="http://www.oehtb.at/"><img src="img/' + colors.oelogo + '.png" alt="ÖHTB" /></a>';
		document.getElementById("rect1").innerHTML = '<a href="http://www.fsw.at/"><img src="img/' + colors.fswlogo + '.png" alt="Fonds soziales Wien" /></a>';
	}
	
	document.getElementById("blackline").style.color = colors.textcolor;
	document.getElementById("blackline").style.backgroundColor = colors.textcolor;

	for(i=0;i<navidata.length;i++) {
		var ele = navidata[i];
		if(ele.svg) {
			colorele(ele);
			ele.svg.getElementById("textrect").style.setProperty("fill",colors.navitextrect, "");
			ele.svg.getElementById("title").style.setProperty("fill",colors.textcolor, "");
			ele.svg.getElementById("arr").style.setProperty("fill",colors.arrowcolor, "");
			ele.svg.getElementById("filler").style.setProperty("fill",colors.fillercolor, "");
		} else if(ele.a) {
			ele.a.style.color = colors.textcolor;
			ele.a.style.border = "1px solid " + colors.fillercolor;
			ele.li.style.marginBottom = "2px";
		}
	}
	
	document.getElementById("bottombar").style.borderColor = colors.botbarborder;
	if(isie) {	// ie doesn't understnd color:inherit on links
		allele = getElementsByClassName(document, 'a', 'pageaction');
		for(i=0;i<allele.length;i++) {
			allele[i].style.color = colors.textcolor;
		}
	}

	recolorloadedpage();

	allele = getElementsByClassName(document, '*', 'barele');
	for(i=0;i<allele.length;i++) {
		allele[i].style.backgroundColor = colors.barcolor;
		allele[i].style.color = colors.bartextcolor;
		allele[i].style.borderColor = colors.topbordercolor;
	}
	allele = getElementsByClassName(document, '*', 'plainbarele');
	for(i=0;i<allele.length;i++) {
		allele[i].style.backgroundColor = colors.plainbarcolor;
		allele[i].style.color = colors.plainbartext;
		allele[i].style.borderColor = colors.topbordercolor;
	}
	allele = getElementsByClassName(document, 'a', 'subnavibtn');
	for(i=0;i<allele.length;i++) {
		allele[i].className = "subnavibtn" + colors.subnaviclass;
		allele[i].setAttribute("class", "subnavibtn" + colors.subnaviclass);
		allele[i].style.color = colors.textcolor;
	}
	
	allele = document.getElementById("pageactions");
	if(allele) {
		allele.style.borderColor = colors.textcolor;
	}
	allele = document.getElementById("imgslider");
	if(allele) {
		allele.style.borderColor = colors.textcolor;
	}
	updateinlinecontrast();
	
	if(knobsvg) {	// only replace bar on browsers where we can find it in the dom again ;)
		/*document.getElementById("rect4").innerHTML = 'Schriftgröße: <object data="img/' + colors.scaler + '.svg" name="scaler" id="scaler" type="image/svg+xml" width="132" height="30"></object>';*/
		//setTimeout("initscaler();",200);
		knobsvg.style.setProperty("stroke",colors.scalerstroke, "");
		knobsvg.style.setProperty("fill",colors.scalerfill, "");
		scalersvg.getElementById("minuscircle").style.setProperty("fill",colors.scalerfill, "");
		scalersvg.getElementById("pluscircle").style.setProperty("fill",colors.scalerfill, "");
		scalersvg.getElementById("minus").style.setProperty("fill",colors.scalerstroke, "");
		scalersvg.getElementById("plus").style.setProperty("fill",colors.scalerstroke, "");
		scalersvg.getElementById("bgrect").style.setProperty("fill",colors.barcolor, "");
		
		var aline = scalersvg.getElementById("lines").firstChild;
		while(aline) {
			aline.style.setProperty("stroke",colors.bartextcolor, "");
			//alert(aline.style.fill);
			aline = aline.nextSibling;
		}
		setTimeout("fixsvgs();",200);
	}
	setknobpos(knobpos);	// we only would need to fix up backgrounds only if in non-svg mode, but anyway...
}

var scaler;
var wehavesvg=false;

function initscaler() {
	scaler = document.getElementById("scaler");
	scalersvg = getsvg("scaler");
	if(scalersvg) {
		try {
			wehavesvg = true;
			knobsvg = scalersvg.getElementById("knob");
			if(knobsvg) {
				knobsvg.style.cursor = "move";
				knobsvg.onmousedown = function(evt) {
					knobdx = evt.pageX + scaler.offsetLeft + scaler.offsetParent.offsetLeft - knobpos;
					return false;
				};
				scalersvg.xmove = function(x) {
					if(knobdx > -100) {
						setknobpos(x - knobdx);
					}
				};
				scalersvg.onmousemove = function(evt) {
					scalersvg.xmove(evt.pageX + scaler.offsetLeft + scaler.offsetParent.offsetLeft);
					return false;
				};
				document.onmousemove = function(evt) {
					if(scalersvg) scalersvg.xmove(evt.pageX);
					return false;
				};
				knobsvg.onmouseup = (scalersvg.onmouseup = (document.onmouseup = function() {
					knobdx = -100;
					return false;
				}));
			}
			$("#minus", scalersvg).click(makesmaller).css("cursor", "pointer");
			$("#plus", scalersvg).click(makelarger).css("cursor", "pointer");
//			scalersvg.getElementById("plus").onclick = makelarger;
		
			// (re-)initialize the font scaler
			setknobpos(knobpos);
		} catch(exception) {
			// maybe still loading - wait a bit
			setTimeout("initscaler()",200);	
		}
	} else if(wehavesvg) {
		// incase we are sure about svg support but the element isn't there
		// maybe the dom is not ready yet - so wait and try again
		setTimeout("initscaler()",200);	
	}
}

function fixsvgs() {
	if(knobsvg) {
		var fsl = getsvg("fswlogo");
		if(fsl) {
			fsl.onclick = function() {
				window.open("http://www.fsw.at/","","");
			};
			/*getsvg("lupe").onclick = function() {
				if(searchbutton())
					document.getElementById('suchform').submit();
			};*/
			getsvg("oelogo").onclick = function() {
				window.open("http://www.oehtb.at/","","");
			};
			$("*",fsl).css('cursor', 'pointer');
			$("*",getsvg("oelogo")).css('cursor', 'pointer');
		} else {
			setTimeout("fixsvgs()",100);
		}
	}
}

function overnavi(id) {
	var ele = navidata[id];
	if(ele.svg) {
		ele.svg.getElementById("arrow").setAttribute("transform",(ele.submenuopen ? curelerot : "") + hovereletrans);
	}
	hoverele = ele;
}

function outnavi(id) {
	var ele = navidata[id];
	if(ele.svg) {
		// arora needs the scale(1 1)
		ele.svg.getElementById("arrow").setAttribute("transform","scale(1 1) " + (ele.submenuopen ? curelerot : ""));
	}
	hoverele = null;
}

function clicknavi(id, reallyopen) {
	ele = navidata[id];
	try {
		if(ele.submenu) {
			if(ele.submenuopen) {
				ele.submenuopen = false;
				dobutton(id,90,-1);
			} else {
				ele.submenuopen = true;
				dobutton(id,reallyopen ? 0 : 90-15,1);
			}
		}
		if(ele.svg) {
			var oldactivecolele = activecolele;
			activecolele = ele;
			colorele(activecolele);
			colorele(oldactivecolele);
		
			// without the settimeout ff bases the url on the svg. why???
			//if(reallyopen)
			//	setTimeout("location.href = \"" + ele.href + "\";",10);
		} else if(ele.a) {
			if(activecolele) {
				activecolele.a.className = regnavibtn;
			}
			activecolele = ele;
			activecolele.a.className = regnavibtnon;
		}
	} catch(exception) { }

	if(reallyopen) {
		if(ele.li.className.indexOf("skipajax") == -1) {
			try {
				loadpage(ele.href);
				return false;
			} catch(exception) { }
		}
		setTimeout("location.href = \"" + ele.href + "\";",10);
	}
	return false;
}


function initsvgmenu() {
	var navieles = getElementsByClassName(document, 'object', 'naviobj');
	var svgok=0;
	var svgerr=0;
	if(navieles.length == 0)
		navieles = getElementsByClassName(document, 'object', 'navibtn');
	for(i=0;i<navieles.length;i++) {
		var navisvg = getsvg(navieles[i]);
		if(navisvg)
			svgok++;
		else
			svgerr++;			
	}
	if(svgok && (svgerr == 0)) {
		//alert("ready for " + svgok + " elements");
		for(i=0;i<navieles.length;i++) {
			var navisvg = getsvg(navieles[i]);
			navidata[i].svg = navisvg;
			navidata[i].a = null;
			
			navisvg.getElementById("title").firstChild.data = navidata[i].title;
			navisvg.onclick = function(e) {
				clicknavi(findme(e),true);
			};
			navisvg.onmouseover = function(e) {
				overnavi(findme(e));
			};
			navisvg.onmouseout = function(e) {
				outnavi(findme(e));
			};
			navisvg.getElementById("Ebene_1").cursor = "pointer";
			$("*",navisvg).css('cursor', 'pointer');
			//navisvg.style.cursor = "pointer";
			//navisvg.cursor = "pointer";
		}
		if(curpageparent > 0)
			clicknavi(curpageparent,false);
		else
			clicknavi(curpageid,false);
		selcontrast(curcontrast);
	} else {
		/*var mee = document.getElementsByTagName("object");
		var a="";
		for(var i=0;i<mee.length;i++) {
			var b = (" "+mee[i].className+" ").indexOf(" naviobj ") != -1
			a += mee[i].className + "(" + b + "),";
		}
		alert(mee.length + " - " + a + ";");*/
		//alert("waiting for init, ok=" +svgok + " err=" + svgerr + " list="+(navieles.length));
		setTimeout("initsvgmenu()",250);
	}
}

function getDocHeight() {
// by: http://james.padolsey.com/javascript/get-document-height-cross-browser/http://snipt.net/azote#
    var D = document;
    return Math.max(
        Math.max(D.body.scrollHeight, D.documentElement.scrollHeight),
        Math.max(D.body.offsetHeight, D.documentElement.offsetHeight),
        Math.max(D.body.clientHeight, D.documentElement.clientHeight)
    );
}

function getDocWidth() {
    var D = document;
    return Math.max(
        Math.max(D.body.scrollWidth, D.documentElement.scrollWidth),
        Math.max(D.body.offsetWidth, D.documentElement.offsetWidth),
        Math.max(D.body.clientWidth, D.documentElement.clientWidth)
    );
}

var pagecache = new Array();
var pageid;
var isloading = false;

function loadpage(page) {
	if(isloading) return;
	isloading = true;
	pageid = page;
	
	var xml;
	if(xml = pagecache[page]) {
		importpage(page, xml);
		isloading = false;
	} else {
		theurl = /*"index.php?page="+*/ page+"&mode=xml";
		//alert("begin ajax: " + theurl);
		$.ajax({
			url: theurl,
			type: 'GET',
			dataType: 'xml',
			timeout: 5000,
			error: function(xhr, ajaxOptions, thrownError){
				// alert('Error '+thrownError+' loading XML document: ' + theurl);
				isloading = false;
				location.href = pageid;
			},
			success: function(xml){
				// alert("ajax ok");
				isloading = false;
				pagecache[page] = xml;
				importpage(page, xml);
			}
		});
	}
}

function clicklink(linktag) {
	try {
		loadpage(linktag.href);
		return false;
	} catch(exception) {
		return true;
	}	
}

function searchbutton() {
	try {
		loadpage("?page=search&topic=" + document.getElementById("topic").value);
		return false;
	} catch(exception) {
		return true;
	}	
}

function importpage(id, xml) {
	title = $("title",xml).text();
	document.title = title + " - ÖHTB Fahrtendienst";
	pageoptions = $("options",xml).text();
	$("#contenth1").html(title);
	$("#contenth2").html($("title2",xml).text());
	$("#contentblock").html($("content",xml).text());
	var i = id.indexOf("&pageaction=recommend");
	var j = id.indexOf("&pageaction=feedback");
	var b = (i > -1) ? id.substring(0,i) : (j > -1 ? id.substring(0,j) : id);
	document.getElementById("recommendlink").href = b + (i > -1 ? "" : "&pageaction=recommend");
	document.getElementById("feedbacklink").href = b + (j > -1 ? "" : "&pageaction=feedback");
	updateEyeCandy();
	relocatebottom();
	recolorloadedpage();
	updateinlinecontrast();
	document.getElementById("content").focus();
}

function relocatebottom() {
	if(isie6)
		setTimeout('document.getElementById("bottombar").style.top = (getDocHeight() - 40) + "px"; document.getElementById("bottombar").style.display = "block";',1);
}

var eimgslider;
window.onload = function() {
	// first initialize svg-based stuff - if we can find the knob in the DOM, we have svg
	initscaler();
	
	fixsvgs();

	if(isie6) {
		document.getElementById("topbar").style.position = "absolute";
		document.getElementById("bottombar").style.position = "absolute";
		document.getElementById("lupeimg").src += ".gif";	// ie6 and transparent pngs ... a mess
		
		window.onresize = function() {	// ie6 doesn't allow left&right positioning, so we need left&calculated width
			document.getElementById("redline").style.right = null;
			document.getElementById("redline").style.left = redlinex + "px";
			document.getElementById("redline").style.width = (document.body.clientWidth - redlinex - 35 + 18) + "px";
			
			document.getElementById("blackline").style.right = null;
			document.getElementById("blackline").style.left = "162px";
			document.getElementById("blackline").style.width = (document.body.clientWidth - 162 - 35 + 18) + "px";
			document.getElementById("bottombar").style.top = "0px";
			document.getElementById("bottombar").style.display = "none";
			relocatebottom();
			if(eimgslider) {
				eimgslider.style.width = (document.body.clientWidth - redlinex - 35) + "px";
			}
		}
		window.onresize();
		
	}
	
	if(isie && !isie8) {	// for some reason ie (but not ie8) needs an extra (negative) margin ??
		var navieles = getElementsByClassName(document, 'ul', 'submenu');
		for(i=0;i<navieles.length;i++) {	
			navieles[i].style.marginTop = "-20px";
			navieles[i].style.marginBottom = "10px";
		}
	} else if(iswebkit) {	// for webkit some positive...
		var navieles = getElementsByClassName(document, 'ul', 'submenu');
		for(i=0;i<navieles.length;i++) {	
			navieles[i].style.marginTop = "10px";
			navieles[i].style.marginBottom = "-7px";
		}
	}
			
	var navieles = getElementsByClassName(document, 'li', 'navibtn');
	for(i=0;i<navieles.length;i++) {
		var naviele = navieles[i];
		navidata[i] = new Object();
		navidata[i].title = naviele.firstChild.innerHTML;
		navidata[i].href = naviele.firstChild.href;
		navidata[i].li = naviele;
		navidata[i].a = naviele.firstChild;
		navidata[i].svg = null;
		navidata[i].id = i;
		var submenu = (navidata[i].submenu = document.getElementById("submenu" + i));

		if(submenu) {
			submenu.style.display = "none";
		}
		
		if(knobsvg && considersvg) {
			navidata[i].li.innerHTML = '<object class="naviobj" data="img/naviele.svg" type="image/svg+xml" width="175" height="24">' + navidata[i].li.innerHTML + '</object>';
		}
	}
	if(knobsvg) {
		setTimeout("initsvgmenu()",500);
	} else {
		clicknavi(curpageid,false);
	}		
		
	// generate the contrast-buttons
	a = "<span style=\"padding-right: 4px\">Kontraste: </span>";
	for(i=0;i<colorschemes.length;i++) {
		sch = colorschemes[i];
		a += "<a class=\"donttouchme\" title=\"" + sch.name + "\" style=\"font-family: verdana,sans-serif; font-size: " + sch.buttonsize + "px; font-style:italic; font-weight: bold; text-decoration: none; padding: 1px 5px 1px 5px; background-color:" + sch.bgcolor + "; color:" + sch.textcolor + "\" href=\"#\" onclick=\"return selcontrast("+i+");\">A</a> "; // •
	}
	document.getElementById("rect5").innerHTML = a;
	updateEyeCandy();
	
	//alert("cur is " + curcontrast);
	selcontrast(curcontrast);
	setknobpos(knobpos);
	
	// der tabindex für screenreader muss hier gesetzt werden weil ansonsten die validierung fehlschlägt.
	// ugly hack, aber sonst ist die barrierefreiheit nicht mit gültigem html erreichbar. und der tabindex ergibt eh nur für ajax sinn.
	$("#content").attr("tabindex", "-1");
};

var imgfotorunning=true;
var imgfotoleft=1;
var sliderfotos=4;
var sliderfoto=0;
var sliderimgtags=10;
var sliderimgwidth=139;
var imgfoto0;
var imgmoveintervalid;
var galleryinited = false;
var sliderimgopen;
var thumbfoto;

var imgfotoshift=sliderimgwidth+1;
function initslideropacity() {
	for(i=0;i<sliderimgtags;i++)
		$("#imgfoto"+i).css('opacity', 0.55);
	eimgslider.style.display = "block";
}
function overimgfoto(id) {
	$("#imgfoto"+id).fadeTo(50, 1.0);
	imgfotorunning = false;
}
function outimgfoto(id) {
	$("#imgfoto"+id).fadeTo(50, 0.55);
	imgfotorunning = true;
}
function eimgbackto() {
	return {left:(getX(thumbfoto)-15) + "px", top:getY(thumbfoto)+"px", width:(sliderimgwidth+31)+"px", height:"93px", marginLeft:0, marginTop: 0, opacity: 1};
}

function clickimgfoto(id) {
	if(sliderimgopen) return;
	if(imgmoveintervalid) {
		clearInterval(imgmoveintervalid);
		imgmoveintervalid = false;
	}
	sliderfoto = id;
	imgslidergo(0);
	$("#imgsliderfullb").attr('src','');
	$("#imgsliderfull").css({display:"block", position:"absolute"}).css(eimgbackto());
	$("#topbar,#bottombar").css( 'visibility', 'hidden' );
	$("#alloverlay").css({ opacity: 0, display: 'block' });
	
	$("#imgsliderfull").animate({left:(getDocWidth()/2-275)+"px",top:(getDocHeight()/2-169)+"px",width:"550",height:"338"}, 500, function() {
		$("#alloverlay").animate({ opacity: 0.6 }, 100);
		$("#imgsliderfullb").attr('src',thumbfoto.srcfull);
		$("#slideimgdld,#slideimgprev,#slideimgnext").show();
	});
	
	sliderimgopen=true;
/*	$("#imgsliderfullactions").html(
		'<em style="float: left">&nbsp; &nbsp; Beschreibung zum Bild</em><a style="float: right" href="#" onclick="return closesliderimg();">Schließen</a>'
	);*/
}

function imgslidergo(delta) {
	sliderfoto += delta;
	if(sliderfoto < 0)
		sliderfoto = sliderimgtags - 1;
	else if(sliderfoto >= sliderimgtags)
		sliderfoto = 0;
	thumbfoto = document.getElementById("imgfoto"+sliderfoto);
	$("#imgsliderfulla").attr('src',thumbfoto.src);
	if(delta)
		$("#imgsliderfullb").attr('src',thumbfoto.srcfull);
}

function closesliderimg() {
	if(!sliderimgopen) return;
/*	$("#imgsliderfull").css(eimgbackto());
		$("#imgsliderfull").css({display:"none"});
		if(!imgmoveintervalid) {
			imgmoveintervalid = setInterval("imgmove()",80);
		}
		sliderimgopen = false;*/
	$("#slideimgdld,#slideimgprev,#slideimgnext").hide();
	
	$("#imgsliderfullb").attr('src','');
	$("#imgsliderfull").animate(eimgbackto(), 500, "", function() {
		$("#imgsliderfull").css({display:"none"});
		if(!imgmoveintervalid) {
			imgmoveintervalid = setInterval("imgmove()",80);
		}
		sliderimgopen = false;
		$("#topbar,#bottombar").css( { visibility : 'visible' } );
	});
	$("#alloverlay").animate({ opacity: 0 }, 100, function() {
		$("#alloverlay").css('display','none');		
	});
	return false;
}

function imgmove() {
	if(imgfotorunning/*&& knobpos == 0*/) {
		if(imgfotoshift > sliderimgwidth) {
			imgfotoshift -= sliderimgwidth;
			if(++imgfotoleft > sliderfotos)
				imgfotoleft = 1;
			var j=imgfotoleft;
			var i;
			for(i=0;i<sliderimgtags;i++) {
				document.getElementById("imgfoto" + i).src = "fotos/thumb/"+j+".jpg";
				document.getElementById("imgfoto" + i).srcfull = "fotos/"+j+".jpg";
				document.getElementById("imgfoto" + i).srcori = "fotos/original/"+j+".jpg";
				if(j++ >= sliderfotos)
					j = 1;
			}
		}
		if(!imgfoto0)
			imgfoto0 = document.getElementById("imgfoto0");
		imgfoto0.style.marginLeft = "-" + imgfotoshift + "px";
		imgfotoshift += 1;
	}
}

function imgdownload() {
	location.href = thumbfoto.srcori;
}

function updateEyeCandy() {
	closesliderimg();
	eimgslider = null;
	imgfoto0 = null;
	if(imgmoveintervalid) {
		clearInterval(imgmoveintervalid);
		imgmoveintervalid = false;
	}
	try {
		eimgslider = document.getElementById("imgslider");
	} catch(exception) { }
	if(eimgslider) {
		if(hasoption("fotogallery") && (isie6 == false)) {	// only if we have a gallery and browser is not ie6
			if(!galleryinited) {
				a = "<div style=\"background:white\">";
				for(i=0;i<sliderimgtags;i++) {
					a += "<img src=\"about:blank\" alt=\"\" style=\"opacity: 0.55;\" onmouseover=\"return overimgfoto("+i+");\" onmouseout=\"return outimgfoto("+i+");\" onclick=\"return clickimgfoto("+i+");\" id=\"imgfoto"+i+"\" />";
				}
				eimgslider.innerHTML = a + "</div>";
				setTimeout("initslideropacity()",120);
				galleryinited = true;
			}
			imgmoveintervalid = setInterval("imgmove()",80);
			eimgslider.style.display = "block";
		} else {	// gallery on ie6 -> don't bother to try to display it.
			eimgslider.style.display = "none";
		}
	}
}

// Javascript function that will return an array of elements based on DOM element, tag, and class name.
// For instance, getElementsByClassName(document, 'tr', 'INFO') will get all "tr" tags under the document node with the "INFO" class and return an array of them.

function getElementsByClassName(oElm, strTagName, strClassName){
	    var arrElements = (strTagName == "*" && document.all)? document.all : oElm.getElementsByTagName(strTagName);
	    var arrReturnElements = new Array();
	    //strClassName = strClassName.replace(/\-/g, "\\-");
	    //var oRegExp = new RegExp("(^|\\s)" + strClassName + "(\\s|$)");
	    var oElement;
	    for(var i=0; i<arrElements.length; i++){
	        oElement = arrElements[i];
		//clsnams = oElement.getAttribute("class");
	        //if(oRegExp.test(clsnams) || oRegExp.test(oElement.className)) {
	        if((" "+oElement.className+" ").indexOf(" "+strClassName+" ") != -1) {
	            arrReturnElements.push(oElement);
	        }
	    }
	    // alert(strTagName + "#" + strClassName + ": " + arrElements.length + " vs " + arrReturnElements.length);
	    return (arrReturnElements)
	}

function delcheck() {
	return confirm("Soll die gewählte Seite wirklich gelöscht werden?");
}

function keksverarbeiter() {
	var a = document.cookie;
	while(a) {
		var idx = a.indexOf("=");
		var idx2 = a.indexOf(";");
		var cookiename = a.substring(0,idx);
		var cookiewert = idx2 == -1 ? a.substring(idx+1,a.length) : a.substring(idx+1,idx2);
		a = idx2 == -1 ? false : a.substring(idx2+2,a.length);

		if(cookiename == "scale")
			knobpos = cookiewert * 1;
		else if(cookiename == "contrast")
			curcontrast = cookiewert * 1;
//		alert(document.cookie + " - " + a + " - '" + cookiename + "'='" + cookiewert + "' --- '" + knobpos + "','" + curcontrast + "'");
	}
}
keksverarbeiter();








