var isDefault=false;
var curPageNum,current,visited,lastStep,total;
var today=new Date();
var expiry=new Date(today.getTime()+365*24*60*60*1000);
var dynaLeftHidden,dynaLeftVisible,dynaLeftDelta;

function onloadActions(pageNum){

	if(!getPackedCookie("cfwprops")){
		location.href="default.htm";
		return;
	}
	
	curPageNum=pageNum;

	if(document.getElementById("divcontent").innerHTML.substring(0,1)!="<")document.getElementById("divcontent").style.padding="5px";

	if(enableDynamicCSS){
		if(getCookie("screenSize")!="large")setCookie("dyna","hide",expiry);
		if(getCookie("screenSize")=="large")menu_offset_y0=66;
		if(getCookie("screenSize")=="medium")menu_offset_y0=30;
		if(getCookie("screenSize")=="small")menu_offset_y0=0;
	}
	topMenuInit();
	
	localizeGUI();
	if(enableDynamicCSS){
		if(bWriteScreenSizeMenu)writeScreenSizeMenu();
		setScreenCSS();
	}
	
	current=getCookie("currState");
	initTree();
	puzzleVisiState(pageNum);
	if(db[pageNum].icon.indexOf("_s")!=-1){
			moderationActive=false;
			db[pageNum].icon=db[pageNum].icon.split("_")[0]
	}

	var cp=location.href.split("/");
	cp=cp[cp.length-1];
	setCookie("currentPage",cp,expiry);

	if(document.getElementById("multipageNav"))var isMultiPage=true;
	if(!isMultiPage && (db[pageNum].icon.indexOf("i")!=-1||db[pageNum].icon.indexOf("ta")!=-1||db[pageNum].icon.indexOf("ra")!=-1))setTimeout("setPageScore('browsed')",5000)
	

	if(getCookie("cookies")=="save"){document.getElementById("storageButton").src=common+"/images/chk_enabled.gif"}
	if(includeVG&&(bw.ie7||bw.ie6||bw.ie5||bw.ns6)){
		vgInit(pageNum);
		moderate(curPageNum);
	}

	if(parseInt(getCookie("bookmarks"))==0){
		setTimeout("doMenuItem('toc')",500)
	}else{
		setTimeout("doMenuItem(getCookie('dyna'))",500)
	}	

	plCollection=collectElementsbyClass("callDocubox");
	if(plCollection.length>0)plInit();

	collapsableDIVsInit(pageNum);

	if(document.getElementById("divcontent"))prepareAnimatedLists();

	OLpageDefaults(
                WRAPMAX, 355,
                CAPTION, "...", 
                OFFSETY, 10, 
                FGCLASS, "olMainDiv",
                BGCLASS, "olBackgroundDiv", 
                CGCLASS, "olCaptionDiv",
                TEXTFONTCLASS, "olMainText",
                CLOSEFONTCLASS, "olCloseText",
                CAPTIONFONTCLASS, "olCaptionText");

	if(hideMenuItemScript)killMeById("aMenuLink02_ui");
	if(hideMenuItemGlossary)killMeById("aMenuLink03_ui");
	if(hideMenuItemGlossary)killMeById("dynaTopLink02");
	//killMeById("aMenuLink14_ui");

	delBookmarkById(pageNum+"-q"); //Seite aus Wiederholungsliste löschen
}

function onunloadActions(){
	return;
}

function localizeGUI() {
	if(typeof dbText=="undefined")initText();
	for(var i=1;i<dbText.length;i++){
		if(document.getElementById(dbText[i].id)){
			switch(dbText[i].hook){
				case "caption":
					if(dbText[i].id=="windowTitle"){
						document.title=dbText[i].html;
					}else{
						document.getElementById(dbText[i].id).innerHTML=dbText[i].html;
					}
						break;
				case "title":document.getElementById(dbText[i].id).title=dbText[i].html;break;
				case "value":document.getElementById(dbText[i].id).value=dbText[i].html;break;
				default:break;
			}
		}
	}
}

function setPageScore(args){
	var scoreToSet=db[curPageNum].pscore;
	switch(args){
		case "browsed":
			puzzleVisiState(curPageNum,scoreToSet);
			break;			
		case "passed":
			puzzleVisiState(curPageNum,scoreToSet);
			break;
		case "failed":
			puzzleVisiState(curPageNum,9);
			break;
		default:
			puzzleVisiState(curPageNum,scoreToSet);
			break;			
	}
	
	try{
		if(getCookie("dyna")=="toc")setTimeout("containerFrame.writeTree()",250);
	}catch(err){
		return false;
	}	
}

function doMenuItem(item){
	switch(item){
	case "show": 
		document.getElementById("dynaContainer").style.display="block";
		document.getElementById("dynaContainerOpener").style.display="none";	
		setCookie("dyna",item,expiry);
		break;
	case "glossar":
		containerFrame.location.href="glossar.htm";
		setCookie("dyna",item,expiry);
		if(document.getElementById("dynaContainer").style.display=="none")doMenuItem("show");
		break;
	case "files":
		containerFrame.location.href="files.htm";
		setCookie("dyna",item,expiry);
		if(document.getElementById("dynaContainer").style.display=="none")doMenuItem("show");
		break;
	case "toc":
		containerFrame.location.href="tree.htm";
		setCookie("dyna",item,expiry);
		if(document.getElementById("dynaContainer").style.display=="none")doMenuItem("show");
		break;
	case "iwbt":
		containerFrame.location.href="iwbt.htm";
		setCookie("dyna",item,expiry);
		if(document.getElementById("dynaContainer").style.display=="none")doMenuItem("show");
		break;
	case "impressum":
		containerFrame.location.href="impressum.htm";
		setCookie("dyna",item,expiry);
		if(document.getElementById("dynaContainer").style.display=="none")doMenuItem("show");
		break;
	case "isession":
		containerFrame.location.href="isession.htm";
		setCookie("dyna",item,expiry);
		if(document.getElementById("dynaContainer").style.display=="none")doMenuItem("show");
		break;
	case "bookmarks":
		containerFrame.location.href="bookmarks.htm";
		setCookie("dyna",item,expiry);
		if(document.getElementById("dynaContainer").style.display=="none")doMenuItem("show");
		break;	
	case "hide":
		document.getElementById("dynaContainer").style.display="none";
		document.getElementById("dynaContainerOpener").style.display="block";
		setCookie("dyna",item,expiry);
		break;
	case "questions":
		containerFrame.location.href="notes.htm";
		setCookie("dyna",item,expiry);
		if(document.getElementById("dynaContainer").style.display=="none")doMenuItem("show");
		break;
	}
}

function changeSettings(setting,value){
	switch(setting){
		case "audio":
			if(includeVG&&(bw.ie7||bw.ie6||bw.ie5||bw.ns6)){changeAudioState()}
			break;
		case "vguide":
			if(includeVG&&(bw.ie7||bw.ie6||bw.ie5||bw.ns6)){changeState()}else{alert(eval("vgNotAvailable"+language))}
			break;
		case "storage":
			if(getCookie("cookies")=="save"){
				setCookie("cookies","delete",expiry);
				document.getElementById("storageButton").src=common+"/images/chk_disabled.gif"
			}else{
				setCookie("cookies","save",expiry);
				document.getElementById("storageButton").src=common+"/images/chk_enabled.gif"
			}
			break;
		case "reset":
			if(confirm(eval("resetMsg"+language))){
				var u=getCookie("fullURL");
				initCfwprops();
				location.href=(u.indexOf("http://")!=-1)?u:"default.htm";
				break;
			}
		case "default":
				initCfwprops();
				cfwprops=getPackedCookie("cfwprops");
				break;
		case "suspend":
				setPackedCookie("cfwprops",value,expiry);
				break;
	}
}

function writeShockwave(swfile,w,h,xml){
	if(w==0)w=shockwaveDefaultWidth;
	if(h==0)h=shockwaveDefaultHeight;
	var sw1=xml;
	var sw2="sound_on";
	var soundEnabled=getCookie("vgSettings");
	if(soundEnabled!=null){
		pos=soundEnabled.indexOf("audioEnabled")
		soundEnabled=soundEnabled.substring(soundEnabled.indexOf("=",pos)+1,soundEnabled.indexOf(";",pos));
		if(soundEnabled=="false")sw2="sound_off";
	}
	var sw="<object classid='"+swClsid+"' codebase='"+swHomeIE+"' width='"+w+"' height='"+h+"'>";
	sw+="<param name='src' value='"+swfile+"'><param name='bgcolor' value='"+swbg+"'>";
	sw+="<param name='sw1' value='"+sw1+"'>";
	sw+="<param name='sw2' value='"+sw2+"'>";
	sw+="<embed src='"+swfile+"' width='"+w+"' height='"+h+"' sw1='"+sw1+"' sw2='"+sw2+"'";
	sw+=" type='application/x-director' pluginspage='"+swHomeMoz+"'></embed></object>";
	document.getElementById("divcontent").innerHTML=sw;
}


function writeFlash(flfile,w,h,container){
	if(container==undefined)container="divcontent";
	var fo=new FlashObject(flfile,"swf",w,h,"8.0.22","#ffffff",true);
	fo.addParam("allowScriptAccess","always");
  fo.addParam("quality","high");
  fo.addParam("wmode","transparent");	
	fo.write(container);
	return;
}

function exit(){
	location.href="exit.htm"
}

/*Browsercheck*/
function browserCheck(){
	agent = navigator.userAgent.toLowerCase();
	this.major = parseInt(navigator.appVersion);
	this.minor = parseFloat(navigator.appVersion);

	this.mac=agent.indexOf("Mac")>-1;

	this.ns = ((agent.indexOf('mozilla') != -1) && (agent.indexOf('spoofer') == -1) && (agent.indexOf('compatible') == -1) && (agent.indexOf('opera') == -1) && (agent.indexOf('webtv') == -1) && (agent.indexOf('hotjava') == -1));
	this.ns2 = (this.ns && (this.major == 2));
	this.ns3 = (this.ns && (this.major == 3));
	this.ns4 = (this.ns && (this.major == 4));
	this.ns6 = (this.ns && (this.major >= 5));

	this.op = typeof window.opera != "undefined";

	this.ie = ((agent.indexOf("msie") != -1) && (agent.indexOf("opera") == -1));
	this.ie3 = (this.ie && (this.major < 4));
	this.ie4 = (this.ie && (this.major == 4) && (agent.indexOf("msie 4") != -1));
	this.ie5 = (this.ie && (this.major == 4) && (agent.indexOf("msie 5.") != -1) && (agent.indexOf("msie 5.5") == -1) && (agent.indexOf("mac") == -1));
	this.iem5 = (this.ie && (this.major == 4) && (agent.indexOf("msie 5.") != -1) && (agent.indexOf("mac") != -1));
	this.ie55 = (this.ie && (this.major == 4) && (agent.indexOf("msie 5.5") != -1));
	this.ie6 = (this.ie && (this.major == 4) && (agent.indexOf("msie 6.") != -1));
	this.ie7 = (this.ie && (this.major == 4) && (agent.indexOf("msie 7.0") != -1));

	this.nsdom = (this.ns4 || this.ns6);
	this.ie5dom = (this.ie5 || this.iem5 || this.ie55);
	this.iedom = (this.ie4 || this.ie5dom || this.ie6);
	this.w3dom = (this.ns6 || this.ie6 || this.ie7);
	this.dom = (this.iedom || this.w3dom)
	return this;
}
var bw=new browserCheck();

/* MENU */
function makeMenu(obj,nest,show,move,speed,overflow){
	nest=(!nest) ? "":'document.'+nest+'.';
	this.el=bw.dom?document.getElementById(obj):bw.ie4?document.all[obj]:bw.ns4?eval(nest+'document.'+obj):0;
	this.css=bw.dom?document.getElementById(obj).style:bw.ie4?document.all[obj].style:bw.ns4?eval(nest+'document.'+obj):0;		
	this.x=this.css.left||this.css.pixelLeft||this.el.offsetLeft||0;
	this.y=this.css.top||this.css.pixelTop||this.el.offsetTop||0;
	this.state=1; this.go=0; this.mup=b_mup; this.show=show; this.mdown=b_mdown; 
	this.height=bw.ns4?this.css.document.height:this.el.offsetHeight;
	this.moveIt=b_moveIt; this.move=move; this.speed=speed;
	this.obj = obj + "Object";
	eval(this.obj + "=this")	
}
var px = bw.ns4||window.opera?"":"px";

function b_moveIt(x,y){this.x=x; this.y=y; this.css.left=this.x+px; this.css.top=this.y+px;}
function b_mup(){//Menu in
	if(this.y>-this.height+this.show+menu_offset_y0){
		this.go=1; this.moveIt(this.x,this.y-this.move)
		setTimeout(this.obj+".mup()",this.speed)
	}else{this.go=0; this.state=1}	
}

function b_mdown(){//Menu out
	if(this.y<eval(scrolled)+menu_offset_y0){
		this.go=1; this.moveIt(this.x,this.y+this.move)
		setTimeout(this.obj+".mdown()",this.speed)
	}else{this.go=0; this.state=0}	
}

function moveTopMenu(num){
	if(!oMenu[num].go){
		if(!oMenu[num].state)oMenu[num].mup()	
		else oMenu[num].mdown()
	}
	for(i=0;i<oMenu.length;i++){
		if(i!=num && !oMenu[i].state){ oMenu[i].mup()}
	}
}

function topMenuInit(){
	oMenu=new Array();
	oMenu[0]=new makeMenu("divMenu0","",tShow,tMove,tSpeed);
	oMenu[1]=new makeMenu("divMenu1","",tShow,tMove,tSpeed); 
	oMenu[2]=new makeMenu("divMenu2","",tShow,tMove,tSpeed);
	scrolled=bw.ns4||bw.ns6?"window.pageYOffset":"document.body.scrollTop";
	for(i=0;i<oMenu.length;i++){
		oMenu[i].moveIt(oMenu[i].x,-oMenu[i].height+oMenu[i].show+menu_offset_y0);
		oMenu[i].css.visibility="visible";
	}
}

/*Language dependend text elements*/
function initText(){
	totalText=1;
	dbText = new Array();
	fillText(language);
}

function dbTextAdd( id, html, hook ) {
	dbText[totalText] = new Object;
	dbText[totalText].id = id;
	dbText[totalText].html = html;
	dbText[totalText].hook = hook;
	totalText++;
}

function getJsText(languageCode,textCode) {
	var langstring="(...)"
	if(typeof dbText=="undefined")initText(languageCode);
	for(i=1;i<totalText;i++){
		if(dbText[i].code==textCode){
			langstring=dbText[i].text;
			break;
		}
	}
  	return langstring;
}

//Navigation
var innerNavActive_back=false;
var innerNavActive_fwd=false;
function jump(url,direction){

	switch(true){
		case(innerNavActive_back&&direction==1):cycleback();break;
		case(innerNavActive_fwd&&direction==2):cycleforward();break;
		default:
			location.href=url;
			innerNavActive_back=false;
			innerNavActive_fwd=false;
	}
}

//Popups
var maxW,maxH,fromX,fromY,toX,toY,adjX,adjY,zBox,zStep=0,zLink,zNew;
function zoomBox(evt,zlink,maxw,maxh,tox,toy) {
	if (arguments.length > 2) zNew=1;
	scrollH=(window.pageYOffset!=null)?window.pageYOffset:document.body.scrollTop;
	maxW=maxw?maxw:window.innerWidth?innerWidth:document.body.clientWidth;
	maxH=maxh?maxh:window.innerHeight?innerHeight:document.body.clientHeight;
	toX=tox?tox:0;
	toY=(toy?toy:0)+scrollH;
	fromX=evt.pageX?evt.pageX:evt.clientX;
	fromY=(evt.pageY?evt.pageY:evt.clientY)+(document.all?scrollH:0);
	adjX=toX+evt.screenX-fromX;
	adjY=toY+evt.screenY-fromY;
	if (document.createElement && document.body.appendChild && !zBox) {
		zBox=document.createElement("div");
		zBox.style.position="absolute";
		document.body.appendChild(zBox);
	} else if (document.all && !zBox) {
		document.all[document.all.length-1].outerHTML+='<div id="zBoxDiv" style="position:absolute"></div>';
		zBox=document.all.zBoxDiv;
	} else if (document.layers && !zBox) {
		zBox=new Layer(maxW);
		zBox.style=zBox;
	}
	zLink=zlink;
	doZoom();
}

function doZoom() {
	zStep+=1;
	zPct=(10-zStep)/10
	if (document.layers) {
		zBox.moveTo(toX+zPct*(fromX-toX),toY+zPct*(fromY-toY));
		zBox.document.open();
		zBox.document.write("<table width='"+maxW*(1-zPct)+"' height="+maxH*(1-zPct)+" border=2 cellspacing=0><tr><td></td></tr></table>");
		zBox.document.close();
	} else {
		zBox.style.border="2px solid #999999";
		zBox.style.left=toX+zPct*(fromX-toX);
		zBox.style.top=toY+zPct*(fromY-toY);
		zBox.style.width=maxW*(1-zPct);
		zBox.style.height=maxH*(1-zPct);
	}
	zBox.style.visibility="visible";
	if (zStep < 10) setTimeout("doZoom("+fromX+","+fromY+","+toX+","+toY+")",30);
	else {
		zBox.style.visibility='hidden';
		zStep=0;
		if (zLink && !zNew) location.href=zLink.href;
		else if (zLink && zNew) {
			var w=window.open(zLink.href,'','width='+(maxW+40)+',height='+(maxH+40)+',left='+adjX+',top='+adjY+',scrollbars=yes,resizable');
			zNew=null;
		}
	}
}

function gotClick(arg) {
	evt=arg?arg:event;
	evtFrom=evt.target?evt.target:evt.srcElement;
	if (evtFrom.parentNode) evtFrom=evtFrom.parentNode.href?evtFrom.parentNode:evtFrom;
	if (evtFrom.href && !evtFrom.onclick) {
		zoomBox(evt,evtFrom);
		return false;
	} else {
		if (document.routeEvent) document.routeEvent(evt);
		if (evtFrom.href) return false;
	}
}

//Picture Popup
function popupPic(imageURL){
	if (bw.ie6||bw.ie5||bw.ie7){
		var ppicOptIE="scrollbars=no,width=150,height=100,left="+ppicPosX+",top="+ppicPosY;
		imgWin=window.open("about:blank","",ppicOptIE)
	}else{
		var ppicOptNonIE="scrollbars=no,width="+ppicDefaultW+",height="+ppicDefaultH+",left="+ppicPosX+",top="+ppicPosY;
		imgWin=window.open("about:blank","",ppicOptNonIE);
	}

	with (imgWin.document){
		writeln('<html><head><title>...</title><style>body{margin:0px;}</style>');
		writeln('<sc'+'ript>');
		writeln('function reSizeToImage(){');
		writeln('if (window.innerWidth){iWidth = window.innerWidth;iHeight = window.innerHeight;}');
		writeln('else{iWidth = document.body.clientWidth;iHeight =document.body.clientHeight;}');
		writeln('iWidth = document.images[0].width - iWidth;');       
		writeln('iHeight = document.images[0].height - iHeight;');
		writeln('window.resizeBy(iWidth, iHeight);}');
		writeln('function doTitle(){document.title="'+eval("ppicImageTitle"+language)+'";}');
		writeln('</sc'+'ript>');
		writeln('</head><body bgcolor="#ffffff" scroll="no" onload="reSizeToImage();doTitle();self.focus()" onblur="self.close()">');
		writeln('<img id="pic" src='+imageURL+' style="display:block"></body></html>');
		close();		
	}
}


//Popup-Fenster (wegen Abwärts-Kompatibilität)
var myWin=null;
function popup(filename,dimX,dimY,attrScroll,attrCenter,attrResize,param,attrTool){
	var topPos=0;
	var leftPos=0;
	if(!dimX)dimX=800;
	if(!dimY)dimY=600;
	if(!attrScroll)attrScroll=1;
		if(attrCenter=="yes"){

leftPos= (screen.width - dimX) / 2;
topPos = (screen.height - dimY) / 2;

//leftPos=(screen.availWidth) ? (screen.availWidth-dimX-10) : 0;
}
	if(attrCenter=="offset"){
		leftPos=(screen.availWidth) ? (screen.availWidth-dimX-10) : 0;
		topPos=(screen.width) ? (screen.width-dimX)/2 : 0;
	}
		var openArgs="width="+dimX+",height="+dimY+",top="+topPos+",left="+leftPos+",resizable="+attrResize+",scrollbars="+attrScroll+",toolbar="+attrTool;
	if(param){
		myWin=window.open(filename+"?"+param,"",openArgs);
	}else{
		myWin=window.open(filename,"",openArgs);
	}
}

function showImageWithSizeNoMargin(filename,dimX,dimY){
	popupPic(filename);
}

//Bookmarks
function setBookmark(bmId) {
	var currentBookmarks=getCookie("bookmarks");
	if(currentBookmarks==0){
		setCookie("bookmarks",bmId);
	}else{
		currentBookmarks=currentBookmarks.split(",");
		for(i=0;i<currentBookmarks.length;i++){
			if(currentBookmarks[i]==bmId)return;
		}
		currentBookmarks.push(bmId);
		currentBookmarks.sort(numsort);
		setCookie("bookmarks",currentBookmarks.join(","));
	}
}

function numsort(a, b){return parseInt(a)-parseInt(b);}

function processBookmarks(){
	if(!parent.db){setTimeout("processBookmarks()",1000);return}	
	var wo=parent;
	var htmlOut=""; 
	var currentBookmarks=wo.getCookie("bookmarks");
	if(currentBookmarks==0){
		htmlOut="<p>"+eval("wo.bmNotYetBookmarked"+wo.language)+"</p>";
	}else{
		htmlOut="<div style='height:85%;overflow-y:scroll'><form id='bmForm'>";
		currentBookmarks=currentBookmarks.split(",");
		for(var i=0;i<currentBookmarks.length;i++){
			var cb=currentBookmarks[i].split(":");
			if(cb[0].indexOf("-q")!=-1){
				htmlOut+="<input class='chkBox' type='checkbox' name='del"+i+"' value='"+cb[0]+"' disabled />";
				var bmDisplay="<span style='background:red;color:white;'> "+wo.db[parseInt(cb[0])].display+" </span>";
			}else{
				htmlOut+="<input class='chkBox' type='checkbox' name='del"+i+"' value='"+cb[0]+"' />";
				var bmDisplay=wo.db[parseInt(cb[0])].display;
			}
			htmlOut+="<a class='jumpLink' title='gehe zu: "+wo.db[parseInt(cb[0])].display+"' href='javascript:jumpTo(\""+wo.db[parseInt(cb[0])].URL+"\");'>"+bmDisplay+"</a><br/>";
		}
		htmlOut+="</form></div><hr/>";
		htmlOut+="<input type='button' value='"+eval("wo.bmDelSelectedBookmarks"+wo.language)+"' onClick='delSelectedBookmarks()'/>&nbsp;";
		//if(currentBookmarks.length>1)htmlOut+="<input type='button' value='"+eval("wo.bmDelAllBookmarks"+wo.language)+"' onClick='delAllBookmarks()'/>&nbsp;";	
	}
	document.write(htmlOut);
}

function delSelectedBookmarks(){
	var wo=parent;
	var htmlOut="";
	var currentBookmarks=wo.getCookie("bookmarks").split(",");
	var frm=document.getElementById("bmForm");
	var delArr=new Array();
	var j=0;
	for(var i=0;i<frm.elements.length;i++) {
		if(eval("frm.del"+i+".checked")==true){
			delArr[j]=eval("frm.del"+i+".value");
			j++;
		}
  }
	for(i=0;i<currentBookmarks.length;i++){
		for(j=0;j<delArr.length;j++)if(delArr[j]==currentBookmarks[i])currentBookmarks.splice(i,1)
	}
	wo.setCookie("bookmarks",currentBookmarks.join(","));
	location.reload();
}

function delAllBookmarks() {
	parent.setCookie("bookmarks",0);
	location.reload();
}

function delBookmarkById(bmId){
	var currentBookmarks=getCookie("bookmarks").split(",");
	var delArr=new Array();
	var j=0;
	for(var i=0;i<currentBookmarks.length;i++) {
		if(bmId==currentBookmarks[i]){
			currentBookmarks.splice(i,1)
		}
	}
	setCookie("bookmarks",currentBookmarks.join(","));
}

function jumpTo(linkUrl){
	parent.location.href=linkUrl;
}

var cfwprops=null;

function getCookie(name){
  cfwprops=getPackedCookie("cfwprops");
  if(!cfwprops){initCfwprops();cfwprops=getPackedCookie("cfwprops")}
  return getValue(cfwprops,name)
}

function getPackedCookie(name) {
    var start = document.cookie.indexOf(name+"=");
    var len = start+name.length+1;
    if ((!start) && (name != document.cookie.substring(0,name.length))) return null;
    if (start == -1) return null;
    var end = document.cookie.indexOf(";",len);
    if (end == -1) end = document.cookie.length;
    return unescape(document.cookie.substring(len,end));
}


function deleteCookie (name,path,domain) {
	if (getPackedCookie(name)) {
		document.cookie = name + "=" +
		((path) ? "; path=" + path : "") +
		((domain) ? "; domain=" + domain : "") +
		"; expires=Wed, 01-May-02 00:00:01 GMT";
		}
}

function setCookie (name,value,expires) {	
	if ((name=="fullURL"||name=="pageCount")&&(!cfwprops)){initCfwprops();cfwprops=getPackedCookie("cfwprops")} //erforderlich für default.html
	
	if(getPackedCookie("cfwprops")==null)location.href="default.htm"; //Cookie wurde während Sitzung gelöscht, re-initialisieren

	if (!cfwprops){cfwprops=getPackedCookie("cfwprops");}
	SetValue(cfwprops,name,value);
	cfwprops=getPackedCookie("cfwprops");
}

function setPackedCookie (name,value,expires,path,domain,secure) {
  document.cookie = name + "=" + escape (value) +
    ((expires) ? "; expires=" + expires.toGMTString() : "") +
    ((path) ? "; path=" + path : "") +
    ((domain) ? "; domain=" + domain : "") +
    ((secure) ? "; secure" : "");
}

function initCfwprops(){
    var defaults = "aiccStatus=on§" +
    	"aiccSID=§" +
			"aiccURL=§" +
			"fullURL=default.htm§" +
			"currentPage=§" +
			"currState=§" +
      "cookies=save§" +
			"lessonStatus=Not attempted,a§" +
			"assStatus=0§" +
			"assAttempts=0§" +
			"maxAttempts=3§" +
			"bTestmanager=false§" +
			"bUseMcAsScore=true§" +		
			"logonTime=11:11:11§" +
			"pageCount=0§" +
			"dyna=toc§" +
			"screenSize=large§" +
			"bookmarks=0§" +
			"pagesVisited=0§" +
			"score=0§" +
			"masteryscore=0§" +
			"time=0§" +
			"totaltime=0§" +
			"vgSettings=enabled=true;audioEnabled=true;§" +
			"visiState=§";
    setPackedCookie("cfwprops",defaults,expiry)
}

function getValue(string,elementName) {
    var startPos = string.indexOf(elementName + "=")
    if (startPos > -1) {
        startPos = startPos + elementName.length + 1;
        var endPos = string.indexOf("§",startPos);
        if (endPos == -1) endPos = string.length;
        var elementValue = unescape(string.substring(startPos,endPos));
	  return elementValue;
    }
}

function SetValue(string,elementName,newValue) {
	var stringToBeReplaced=getValue(string,elementName,"dummy");
	var stringReplacement=unescape(newValue);
	var newString = replaceString(string,elementName+"="+stringToBeReplaced,elementName+"="+stringReplacement)
	setPackedCookie("cfwprops",newString,expiry);
}

//Rollover
function findObj(n, d) {
var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
if(!x && document.getElementById) x=document.getElementById(n); return x;}

function showHideLayers() {
var i,p,v,obj,args=showHideLayers.arguments;
for (i=0; i<(args.length-2); i+=3) if ((obj=findObj(args[i]))!=null) { v=args[i+2];
if (obj.style) { obj=obj.style; v=(v=='show')?'visible':(v='hide')?'hidden':v; }
obj.visibility=v; }
}

function swapImage() {
var i,j=0,x,a=swapImage.arguments; document.sr=new Array; for(i=0;i<(a.length-2);i+=3)
if ((x=findObj(a[i]))!=null){document.sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}

function swapImgRestore() {
var i,x,a=document.sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}


//Preload Images
function preloadImages() {
 var d=document; if(d.images){ if(!d.p) d.p=new Array();
   var i,j=d.p.length,a=preloadImages.arguments; for(i=0; i<a.length; i++)
   if (a[i].indexOf("#")!=0){ d.p[j]=new Image; d.p[j++].src=a[i];}}
}

//Helper Functions
function replaceString(str,searchFor,replaceWith) {
  var i = str.indexOf(searchFor);
  while ( i!=-1 ) {
    var j = i+searchFor.length;
    str = str.substring(0,i)+replaceWith+str.substring(j,str.length);
    i = str.indexOf(searchFor,i+replaceWith.length);
  }
  return str;
}

function getProtocol(url){
	return url.substring(0,url.indexOf(":"));
}

function trackProgress(update){
	var getHits = getCookie("pagesVisited");
	if(getHits=="null"||getHits=="NaN")getHits=0;
	
	if(update){//Seite wird erstmalig aufgerufen
		getHits=parseInt(getHits)+1;
		setCookie("pagesVisited",""+getHits+"",expiry);
		setCookie("score",getScore(getHits),expiry);
	}
}

function getScore(countCurrent){
	if(countCurrent==0)return 0;
	var countTotal=getCookie("pageCount");
	var score=countCurrent/countTotal;
	score=parseInt(round(score)*100);
	if(score>100)score=100;
	score+="%";
	return score;
}

function round(number,decPlace){
	decPlace = (!decPlace ? 2 : decPlace);
	return Math.round(number * Math.pow(10,decPlace)) / Math.pow(10,decPlace);
}

function testResult(result){
	switch(result.split(":")[0]){
	case "cancelled":
		location.href="default.htm";
		break;		
	case "browsed":
		setPageScore("browsed");
		break;		
	case "started":
		if(includeVG&&(bw.ie7||bw.ie6||bw.ie5||bw.ns6))doVg(1);
		break;
	case "passed":
		setPageScore("passed");
		if(includeVG&&(bw.ie7||bw.ie6||bw.ie5||bw.ns6))doVg(3);
		break;
	case "failed":
		setPageScore("failed");
		if(includeVG&&(bw.ie7||bw.ie6||bw.ie5||bw.ns6))doVg(4);
		break;
	case "finished":
		if(typeof result.split(":")[1]=="undefined"){//fib essay
			setPageScore("passed");
			return;
		}
		
		var procResult=parseInt(result.split(":")[1]);
		var bNoBookmarksNeeded=false;
		bUseMcAsScore=(getCookie("bUseMcAsScore")=="true");
		bTestmanager=(getCookie("bTestmanager")=="true");
		var att=parseInt(getCookie("assAttempts"));
		att++;
		setCookie("assAttempts",att,expiry);	

		switch(true){
			case(!bUseMcAsScore && (procResult<minPercentQw)):
				setPageScore("failed");
				if(includeVG&&(bw.ie7||bw.ie6||bw.ie5||bw.ns6))doVg(4);
				break;
			case(!bUseMcAsScore && (procResult>=minPercentQw)):
				setPageScore("passed");
				if(includeVG&&(bw.ie7||bw.ie6||bw.ie5||bw.ns6))doVg(3);
				break;
		}
		
		if(bTestmanager){
			var itemsPersist=getCookie("assStatus").split("|");
			var itemsFailedNow=result.split(":")[2].split(";");
			for(var i=1;i<db.length;i++){
				for(var j=0;j<itemsFailedNow.length;j++){
					var itemFailedNow=itemsFailedNow[j].split("_");
					if(itemFailedNow[0]==db[i].pageid){
						var itemDb=db[i].qwids.split("|");
						for(var k=0;k<itemDb.length;k++){
							if(itemDb[k]==itemFailedNow[1]){
								var s=itemsPersist[i-1].split("-")[1];
								var replacement=s.replace(s.substring(k,k+1),itemFailedNow[2]);
								itemsPersist[i-1]=itemsPersist[i-1].split("-")[0]+"-"+replacement;
							}
						}
					}
				}
			}
			setCookie("assStatus",itemsPersist.join("|"),expiry);
			var mustPoints=0, isPoints=0;
			for(var i=0;i<itemsPersist.length;i++){
				mustPoints+=parseInt(itemsPersist[i]);
				if(itemsPersist[i].indexOf("p")!=-1){
					isPoints+=parseInt(itemsPersist[i]);
				}
			}
			procResult=Math.round(isPoints/mustPoints*100);
	}
	
	if(bUseMcAsScore){
		setCookie("score",procResult,expiry);
		switch(true){
			case(procResult<minPercentQw):
				setPageScore("failed");
				if(bTestmanager){
					if(att>=parseInt(getCookie("maxAttempts"))){
						setCookie("lessonStatus","failed:"+result.split(":")[1],expiry);
					}else{
						setCookie("lessonStatus","incomplete:"+result.split(":")[1],expiry);
					}
				}else{
					setCookie("lessonStatus","failed:"+result.split(":")[1],expiry);	
				}
				if(includeVG&&(bw.ie7||bw.ie6||bw.ie5||bw.ns6))doVg(4);
				break;
			case(procResult>=minPercentQw):
				setPageScore("passed");
				setCookie("lessonStatus","passed:"+result.split(":")[1],expiry);
				
				if(includeVG&&(bw.ie7||bw.ie6||bw.ie5||bw.ns6)){
						doVg(9);
					}else{
						alert(eval("qwPassed"+language))
				}
				setCookie("bookmarks",0);
				setCookie("assStatus",9);						
				bNoBookmarksNeeded=true;
				break;
		}
	}
	
	//Wiederholungsliste
	var showBookmarks=false;
	if(result.split(":")[2]&&bUseResultsAsBookmarks&&(!bNoBookmarksNeeded)){
		var bookmarksArr=new Array();
		bookmarksArr=result.split(":")[2].split(";");
		for(var i=0;i<bookmarksArr.length;i++){
			for (var j=1;j<db.length;j++){
				switch(db[j].pageid==bookmarksArr[i].split("_")[0] && bookmarksArr[i].split("_")[2]){
					case "f":
						setBookmark(j+"-q");
						showBookmarks=true;
						break;
					case "p":
						delBookmarkById(j+"-q");
						showBookmarks=true;
						break;
				}
			}
		}
		if(showBookmarks){
			setCookie("dyna","bookmarks",expiry);
			setTimeout("doMenuItem('bookmarks')",1000);
		}
	}			
	if((getCookie("aiccURL")&&getCookie("aiccSID")).length>0)setTimeout("buildAiccReceiver();",2000);
	}
}

//PRM Test Manager
function getQuestionList(){	
	var list="";
	if(getCookie("assStatus")=="0")initAssessment();
	if(getCookie("assStatus")=="9")return(0);
	var items=getCookie("assStatus").split("|");
	for(var i=1;i<db.length;i++){
		var item=items[i-1].split("-")
		if(item[0]!="0"){
			var itemIds=db[i].qwids.split("|");
			var itemValues=item[1].split("");
			var exitLoop=false;
			var selectedItem;
			if(item[1].indexOf("p")==-1){
				for(var j=0;j<itemIds.length;j++){
					switch(itemValues[j]){
					case "f":
						selectedItem=db[i].pageid+"_"+itemIds[j]+"|";
						break;//bereits nicht erfolgreich bearbeitet, zurückstellen
					case "n": 
						selectedItem=db[i].pageid+"_"+itemIds[j]+"|";
						exitLoop=true;
						break;
					}
					if(exitLoop)break;
				}
			}
			if(selectedItem!=undefined)list+=selectedItem;
		}
	}
	
	if(list.length>0){
		return(list.substring(0,list.length-1))
	}else{
		return(0)
	}
}

function initAssessment(){
	var ass="";
	for (var i=1;i<db.length;i++){
		if(db[i].qwids.length>0){
			ass+="1-"
			for (var j=0;j<db[i].qwids.split("|").length;j++){
				ass+="n"
			}
			ass+="|"
		}else{
			ass+="0|"
		}
	}
	setCookie("assStatus",ass.substring(0,ass.length-1),expiry);
}

var bUseMcAsScore,bUseResultsAsBookmarks,minPercentQw,bTestmanager;
function initTestSession(num,qtifile,tm,ev,mp,ss,lc,us,ub,ma){
	//num:testtype 1:Frageboxen, 2:Fragenkatalog
	//tm:testmanager
	//ev:showeval
	//mp:minPercent
	//ss:showsolution
	//lc:limitmcclicks
	//us:bUseMcAsScore
	//ub:useResultsAsBookmarks
	//ma:maxAttempts
	bTestmanager=tm;setCookie("bTestmanager",tm,expiry);
	bUseMcAsScore=us;setCookie("bUseMcAsScore",us,expiry);
	
	setCookie("maxAttempts",ma,expiry);
	minPercentQw=mp;
	if(parseInt(getCookie("masteryscore"))>0){
		minPercentQw=getCookie("masteryscore");
	}else{
		minPercentQw=mp
		setCookie("masteryscore",mp,expiry);
	}
	if(num==2){
		bUseResultsAsBookmarks=false; //Fragenkatalog -> keine Bookmarks möglich
		bTestmanager=false;
		initPRM(qtifile,ss,lc,1);
		return;
	}else{
		if(!bTestmanager)ma=99;
	}

	bUseResultsAsBookmarks=ub;
	
	if(vQwBookmarksBlockTest && getCookie("bookmarks").indexOf("-q")!=-1){
		var s="<div style='text-align:center;padding-top:50px;font-weight:bold;'>"+eval("qwReadBookmarksFirst"+language)+"</div>";
		document.getElementById("divcontent").innerHTML=s;
		if(includeVG&&(bw.ie7||bw.ie6||bw.ie5||bw.ns6))doVg(8);
		setCookie("dyna","bookmarks",expiry);
		doMenuItem("bookmarks");
		return;
	}
	var qids=getQuestionList();

	if(qids!=0){
		var att=parseInt(getCookie("assAttempts"));
		if(att<ma){
			att++;
			if(att==ma&&includeVG&&(bw.ie7||bw.ie6||bw.ie5||bw.ns6))doVg(5);
			var fo=new FlashObject(common+"prm/prm.swf","prm","698","444","8.0.22","#ffffff",true);
			fo.addParam("allowScriptAccess","always");
		  fo.addParam("quality","high");
		  fo.addParam("wmode","transparent");	
			fo.addVariable("language",language);
			fo.addVariable("backend",relpath+qtifile);
			fo.addVariable("css",common+"prm/style.css");
			fo.addVariable("imgpath",common+"prm");
			fo.addVariable("showeval",ev);
			fo.addVariable("standalone",1);
			fo.addVariable("session",0);
			fo.addVariable("user","temporary");
			fo.addVariable("form",0);
			fo.addVariable("pw","(none)");	
			fo.addVariable("limitmcclicks",lc);
			fo.addVariable("showsolution",ss);
			fo.addVariable("qids",qids);
			fo.write("divcontent");
		}else{
			if(includeVG&&(bw.ie7||bw.ie6||bw.ie5||bw.ns6))doVg(7);
			var s="<div style='text-align:center;padding-top:50px;font-weight:bold;color:red;'>"+eval("qwNoMoreAttempts"+language).replace("{N}",ma)+"</div>";
			document.getElementById("divcontent").innerHTML=s;
		}
	}else{
		if(includeVG&&(bw.ie7||bw.ie6||bw.ie5||bw.ns6))doVg(6);
		var s="<div style='text-align:center;padding-top:50px;font-weight:bold;'>"+eval("qwComplete"+language)+"</div>";
		document.getElementById("divcontent").innerHTML=s;
	}
}

var repeatBeforeSolution=false;
function initPRM(qtifile,ss,lc,se){
	if(!se)se=0;
	var fo=new FlashObject(common+"prm/prm.swf","prm","698","444","8.0.22","#ffffff",true);
	fo.addParam("allowScriptAccess","always");
  fo.addParam("quality","high");
  fo.addParam("wmode","transparent");	
	fo.addVariable("language",language);
	fo.addVariable("backend",relpath+qtifile);
	fo.addVariable("css",common+"prm/style.css");
	fo.addVariable("imgpath",common+"prm");
	fo.addVariable("showeval",se);
	fo.addVariable("standalone",1);
	fo.addVariable("session",0);
	fo.addVariable("user","temporary");
	fo.addVariable("form",0);
	fo.addVariable("pw","(none)");
	fo.addVariable("hidetipp",0);
	fo.addVariable("repeatbeforesolution",repeatBeforeSolution);
	lc!=undefined?fo.addVariable("limitmcclicks",lc):fo.addVariable("limitmcclicks",1);
	ss!=undefined?fo.addVariable("showsolution",ss):fo.addVariable("showsolution",1);
	fo.write("divcontent");
}


//FragenBox
//---------
var storageId;
function doNotes(){
	storageId=replaceString(parent.relpath,"../","");
	storageId=replaceString(storageId,"/","");

	try{
		var jsonNotes = eval("("+aflax.getStoredValue(storageId)+")");
	}catch(err){
		if(persistNotes()!="go")return false;
		var jsonNotes = eval("("+aflax.getStoredValue(storageId)+")");
	}
	
	var itemDb=parent.db[parent.curPageNum].quids.split("|");
	if(itemDb!=""){
		for(var j=0;j<parent.notes.length;j++){
			if(jsonNotes[j].answer!="")parent.notes[j].answer=jsonNotes[j].answer;
		}
		for(var i=0;i<itemDb.length;i++){
			for(var j=0;j<parent.notes.length;j++){
				if(parent.notes[j].id==itemDb[i]){
					var newEl=document.createElement("p");
					var elId=parent.notes[j].id;
					newEl.setAttribute("id","question"+elId);
					//newEl.setAttribute("class","question");
					newEl.setAttribute((document.all ? "className":"class"),"question");
					document.getElementsByTagName("body")[0].appendChild(newEl);
					newEl=document.createTextNode(parent.notes[j].question);
					document.getElementById("question"+elId).appendChild(newEl);
					
					newEl=document.createElement("p");
					newEl.setAttribute("id","note"+elId);
					//newEl.setAttribute("class","note");
					newEl.setAttribute((document.all ? "className":"class"),"note");
					document.getElementsByTagName("body")[0].appendChild(newEl);
					
					var fn="doNote('"+elId+"');";
					document.getElementById("note"+elId).onclick=new Function(fn);
					
					for(var k=0;k<parent.notes.length;k++){
						if(parent.notes[j].id==jsonNotes[k].id){
							if(jsonNotes[k].answer!=""){
								parent.notes[j].answer=jsonNotes[k].answer;
								newEl=document.createTextNode(jsonNotes[k].answer);
							}else{
								newEl=document.createTextNode(eval("parent.noDefaultText"+parent.language));
							}
							document.getElementById("note"+elId).appendChild(newEl);
							break;
						}	
					}
				}
			}
		}
	}else{
		var newEl=document.createElement("div");
		newEl.innerHTML=eval("parent.nonotes"+parent.language);
		document.getElementsByTagName("body")[0].appendChild(newEl);
	}
}

if(location.href.indexOf("notes.htm")!=-1){
	var editing=false;
	var curNote="";
	var okbtn=document.createElement("BUTTON");
	var okbtntext=document.createTextNode("OK");
	okbtn.appendChild(okbtntext);
	okbtn.onclick=endNoteEdit;
}

function doNote(id){
	if(editing)return;
	var note=document.getElementById("note"+id);
	var editor=document.createElement("TEXTAREA");
	editor.setAttribute("id","editor"+id);
	//editor.setAttribute("class","editor");
	editor.setAttribute((document.all ? "className":"class"),"editor");
	var editorP=note.parentNode;
	editorP.insertBefore(editor,note);
	editorP.insertBefore(okbtn,note);
	editorP.removeChild(note);
	editor.value=note.innerHTML;
	editor.focus();
	editing=true;
	curNote=id;
	return false;
}

function endNoteEdit(){
	var editor=document.getElementsByTagName("TEXTAREA")[0];
	var note=document.createElement("P");
	note.setAttribute("id","note"+curNote);
	//note.setAttribute("class","note");
	note.setAttribute((document.all ? "className":"class"),"note");

	var noteP=editor.parentNode;
	note.innerHTML=editor.value;
	noteP.insertBefore(note,editor);
	noteP.removeChild(editor);
	noteP.removeChild(document.getElementsByTagName("BUTTON")[0]);
	editing=false;

	var fn="doNote('"+curNote+"');";
	document.getElementById("note"+curNote).onclick=new Function(fn);
	
	for(var j=0;j<parent.notes.length;j++){
		if(parent.notes[j].id==curNote){
			parent.notes[j].answer=editor.value;
			break;
		}
	}
	persistNotes();
}

function persistNotes(){
	alert(JSON.stringify(parent.notes))
	var result = aflax.storeValue(storageId, JSON.stringify(parent.notes), "aflaxStatusCallback", false);
	switch(result){
		case true:result="go";break;
		case "pending":alert(eval("parent.noNeedMoreMemory"+parent.language));break;
		default:result="nogo";alert(eval("parent.noStorageFailed"+parent.language));break;
	}
	return result;
}

function aflaxStatusCallback(status){
	return;
}

function localStoreReady(){
	return;
}

//


/*ISESSION.HTM*/
function doSessionInfo(){
	var out="";
	var onlineMode=getProtocol(location.href).indexOf("http")>=0?true:false;
	var ionlineMode=onlineMode?eval("ionlineModeTrue"+language):eval("ionlineModeFalse"+language);

	var aiccPresent=false;
	if(getCookie("aiccURL"))aiccPresent=true;	
	var iaiccPresent=aiccPresent?eval("iaiccPresentTrue"+language):eval("iaiccPresentFalse"+language);
	var lmsPresent=(aiccPresent)?eval("iLmsPresentYes"+language):eval("iLmsPresentNo"+language);
	var treeVisistate=getCookie("visiState");
	var treeCurrentState=getCookie("currState");
	var pagesVisited=getPagesVisited(treeVisistate);
	var sessionTime=getSessionTime();
	var isScore=getPageScore(treeVisistate);
	var lessonStatus="incomplete"; //Not Started, Incomplete, Completed, Passed, Failed

	var pageScore=isScore/getMaxScore();
	pageScore=parseInt(round(pageScore)*100);
	setCount(parseInt(pageScore));

	var lessonStatus=getCookie("lessonStatus");
	var showLessonStatus=false;
	switch(true){
		case(lessonStatus.indexOf("failed")!=-1):lessonStatus=eval("ilessonStatusB"+language);showLessonStatus=true;break;
		case(lessonStatus.indexOf("passed")!=-1):lessonStatus=eval("ilessonStatusC"+language);showLessonStatus=true;break;
		default:lessonStatus=eval("ilessonStatusA"+language);break;
	}

	if(getCookie("logonTime")=="11:11:11"){logonTime="00:00:00"}
	var sessionTime=getSessionTime();
	var totalTime=getCookie("totaltime");

	out="<table width='100%' border='0' cellspacing='0' cellpadding='4'>";
	out+="<tr><td>"+ionlineMode+"<br />"+eval("iLmsPresent"+language)+lmsPresent+"</td></tr>";
	out+="<tr><td>"+eval("ipageCount"+language)+treeVisistate.length+"<br />"+eval("ipagesVisited"+language)+pagesVisited+"</td></tr>";
	out+="<tr><td>"+eval("iIsScore"+language)+isScore+eval("iMaxScore"+language)+getMaxScore()+"<br/>"+eval("ipageScore"+language)+pageScore+"%</td></tr>";
	out+="</table>";
	document.getElementById("divInfo1").innerHTML=out;

	out="<table width='100%' border='0' cellspacing='0' cellpadding='4'>";

	if(showLessonStatus)out+="<tr><td>"+eval("ilessonStatus"+language)+lessonStatus+"</td></tr>";
	out+="<tr><td>"+eval("ilogonTime"+language)+getCookie("logonTime")+"</td></tr>";
	out+="<tr><td><b>"+eval("isessionTime"+language)+sessionTime+"</b></td></tr>";
	if(parseInt(totalTime)>0)out+="<tr><td>"+eval("itotalTime"+language)+totalTime+"</td></tr>";
	out+="</table>";

	document.getElementById("divInfo2").innerHTML=out;
}

function getMaxScore(){
	var sum=0;
	for(var i=1;i<parent.db.length;i++)sum+=parent.db[i].pscore;
	return sum;
}

function getPageScore(tree){
	var j=0;
	totalScore=0;
	for(var i=0;i<tree.length;i++){
		j=parseInt(tree.substring(i,i+1));
		if(j>0&&j<9)totalScore+=j;
	}
	return totalScore;
}

function getPagesVisited(tree){
	var totalPages=0;
	for(var i=0;i<tree.length;i++){
		j=parseInt(tree.substring(i,i+1));
		if(j>0)totalPages++;
	}
	return totalPages;
}


function setCount(prcnt){
	if (prcnt>0){
		if(prcnt>100)prcnt=100;
		loaded=prcnt;
		if(loaded<0)loaded=0;
		perdone.style.width=blocksize*loaded;
	}
}

function progressBarInit(){
	perouter=document.getElementById("perouter");
	perdone=document.getElementById("perdone");
	perdone.style.width=0;
	perouter.style.visibility="visible";
}

function getSessionTime() { 
	var now=new Date();
	var offSeconds=now.getSeconds();
	var offMinutes=now.getMinutes();
	var offHours=now.getHours();
	var onTime=getCookie("logonTime").split(":");
	var onHours = parseInt(onTime[0]);
	var onMinutes = parseInt(onTime[1]);
	var onSeconds = parseInt(onTime[2]);

	if(onHours==11&&onMinutes==11&&onSeconds==11)return("00:00:00")

	if (offSeconds>=onSeconds) { 
     		logSeconds=offSeconds-onSeconds
	}else{
		offMinutes-=1;
		logSeconds=(offSeconds+60)-onSeconds;      
	}

	if(offMinutes>=onMinutes) { 
		logMinutes=offMinutes-onMinutes; 
	}else{
		offHours-=1;
		logMinutes=(offMinutes+60)-onMinutes;
	}
  
	logHours = offHours - onHours;
	logHours= ((logHours < 10) ? "0" : "") + logHours;
	logMinutes=((logMinutes < 10) ? ":0" : ":") + logMinutes;
	logSeconds=((logSeconds < 10) ? ":0" : ":") +logSeconds;
	//alert("on: "+onHours+":"+onMinutes+":"+onSeconds+"\n"+"off: "+offHours+":"+offMinutes+":"+offSeconds)
	return(logHours+logMinutes+logSeconds);
}


/* Files */
/*-------*/
function doFilesOnload(){
	document.title=eval("fiTitle"+language);
	aColl=document.getElementsByTagName("a");
	for(i=0;i<aColl.length;i++){
		if(aColl[i].id.substring(1,aColl[i].id.indexOf("_"))==parent.curPageNum){
			aColl[i].className="jumpLinkHilite";
			document.getElementById("fiHiliteInfo").innerHTML=eval("fiHiliteInfo"+language);
		}
	}
}

/* Help */
/*------*/
var ids=new Array();

function helpInit(){
	var tids=document.getElementsByTagName("div");
	for(i=0;i<tids.length;i++)if(tids[i].className=="helptopic")ids[ids.length]=tids[i];
	for(i=0;i<ids.length;i++)ids[i].onmouseup=setstate;
}

function setstate(){
	collapseAllHelptopics();
	for(i=0;i<ids.length;i++){
		if(ids[i]==this){
			var d=this.parentNode.getElementsByTagName("div")[1];
			if(d.style.display=="block")d.style.display="none";
			else d.style.display="block";
		}
	}
}

function expandAllHelptopics(){
	for(i=0;i<ids.length;i++)ids[i].parentNode.getElementsByTagName("div")[1].style.display="block";
}

function collapseAllHelptopics(){
	for(i=0;i<ids.length;i++)ids[i].parentNode.getElementsByTagName("div")[1].style.display="none";
}

/* Margins */
/*---------*/

function margChange(num){
	var divObj;
	for(var i=1;i<=5;++i){		
		margHeadObj=document.getElementById("divmarginhead"+i);
		margContentObj=document.getElementById("divmargincontent"+i);
		if(i==num){
			margHeadObj.className="divmarginhead_active";
			margContentObj.style.display="block";
			if(includeVG&&(bw.ie7||bw.ie6||bw.ie5||bw.ns6))vgStart(i+2) //Marg.1 = Event 3, 2=4, 3=5, 4=6, 5=7
		}else{
			margHeadObj.className="divmarginhead_passive";
			margContentObj.style.display="none";
		}
	}
}

function mcPlay(file){
	setTimeout("mcObj.SetVariable('variablesFile','"+file+"');mcObj.Play()",1000)
}

//Collapsable DIVs
var ids=new Array();

function collapsableDIVsInit(){
	var tids=document.getElementsByTagName("div");
	for(i=0;i<tids.length;i++)if(tids[i].className=="collAnchor")ids[ids.length]=tids[i];
	for(i=0;i<ids.length;i++)ids[i].onmouseup=setCollState;
}

function setCollState(){
	collapseAll();
	for(i=0;i<ids.length;i++){
		if(ids[i]==this){
			var d=this.parentNode.getElementsByTagName("div")[1];
			if(d.style.display=="block")d.style.display="none";
			else d.style.display="block";
		}
	}
}

function collapseAll(){
	for(i=0;i<ids.length;i++)ids[i].parentNode.getElementsByTagName("div")[1].style.display="none";
}

//Docubox
var plCollection=new Array();

function plInit(){
	for(var i=0;i<plCollection.length;i++){
		plCollection[i].onclick = new Function("callFilefromDocubox('"+plCollection[i].href.substring(plCollection[i].href.lastIndexOf("/")+1)+"')");
		plCollection[i].setAttribute("href", "javascript:void(0)", 0);
	}
}

function collectElementsbyClass(classname){
	var collection=new Array;
	var inc=0;
	var allTags=document.getElementsByTagName("*");
	for (i=0;i<allTags.length;i++){
		if(allTags[i].className==classname){
			collection[inc++]=allTags[i];
		}
	}
	return collection;
}

function callFilefromDocubox(id){
	var getUrl;var getTarget="_blank";var getWidth="auto";var getHeight="auto";var getCaption=CAPTION;
	for(var i=0;i<files.length;i++){
		if(files[i].id==id){
			getUrl=files[i].url;
			getTarget=files[i].target;
			getCaption=files[i].caption;
			if(files[i].popupWidth)getWidth=files[i].popupWidth;
			if(files[i].popupHeight)getHeight=files[i].popupHeight;
			break;
		}
	}

	if(getUrl){
		switch(getTarget){
			case "_blank":
			case "popup": //divPopup(getUrl,getWidth,getHeight,getCaption)
			default:
				//popup(filename,dimX,dimY,attrScroll,attrCenter,attrResize,param,attrTool){
				popup(getUrl,725,525,"no","yes","yes","","no")
				//window.open(getUrl, target="_blank");
		}
	}else{
		alert("Datei nicht gefunden oder Datei beschädigt: files["+id+"]")
	}
}

function getScreenRes(){
	var res;
	switch(screen.width+'x'+screen.height){
	case "640x480":  res="VGA";break;
	case "800x600":  res="SVGA";break;
	case "1024x768": res="XGA";break;
	case "1280x960": res="QVGA";break;
	case "1400x1050":res="SXGA+";break;
	case "1600x1200":res="UXGA";break;
	case "2048x1536":res="QXGA";break;
	case "2800x2100":res="QSXGA+";break;
	case "3200x2400":res="QUXGA";break;
	case "1280x800": res="WXGA";break;
	case "1280x1024":res="SXGA";break;
	case "1680x1050":res="WSXGA+";break;
	case "1920x1200":res="WUXGA";break;
	case "2560x2048":res="QSXGA";break;
	default:         res="SVGA";break;
	}
	return res;
}

function setScreenSize(val){
	setCookie("screenSize",val);
}

function setScreenCSS(){
	var css=document.getElementById("cfwStyle");
	
	var cssPath=common+"/css/style-"+getCookie("screenSize")+".css";

	if(bw.op)setTimeout(function(){css.href=css}, 10); //Verzögerung für Opera

	if(bw.ie7||bw.ie6||bw.ie5){ //MS IE muss ext. CSS erst in den Cache laden, sonst Crash
		var request=new ActiveXObject("Microsoft.XMLHTTP");
		request.onreadystatechange=function(){
			if(request.readyState == 4 && /(200|304)/.test(request.status.toString())){
				css.href="";
				css.href=cssPath;
			}
		}
		request.open("GET",cssPath,true);
		request.send(null);
	}
	css.href=cssPath;
}

function writeScreenSizeMenu(){
	var newEl=document.createElement("hr");
		newEl.setAttribute("className","hrMenu");
		document.getElementById("divMenu1").appendChild(newEl);

	newEl=document.createElement("div");
		newEl.setAttribute("id","divScreenSizesText");
		newEl.appendChild(document.createTextNode("Darstellung"));
		document.getElementById("divMenu1").appendChild(newEl);

	newEl=document.createElement("div");
		newEl.setAttribute("id","divScreenSizes");
		document.getElementById("divMenu1").appendChild(newEl);

	var sel="";
	switch(getCookie("screenSize")){
		case "small":
			sel+="<br/><input type='radio' name='R1' value='small' onclick='setScreenSize(this.value);setScreenCSS(this.value);moveTopMenu(1);' checked>klein</input>";
			sel+="<br/><input type='radio' name='R1' value='medium' onclick='setScreenSize(this.value);setScreenCSS(this.value);moveTopMenu(1);'>mittel</input>";
			sel+="<br/><input type='radio' name='R1' value='large' onclick='setScreenSize(this.value);setScreenCSS(this.value);moveTopMenu(1);'>groß</input>";
			break;
		case "medium":
			//sel+="<br/><input type='radio' name='R1' value='small' onclick='setScreenSize(this.value);setScreenCSS(this.value);moveTopMenu(1);'>klein</input>";
			sel+="<br/><input type='radio' name='R1' value='medium' onclick='setScreenSize(this.value);setScreenCSS(this.value);moveTopMenu(1);' checked>mittel</input>";
			sel+="<br/><input type='radio' name='R1' value='large' onclick='setScreenSize(this.value);setScreenCSS(this.value);moveTopMenu(1);'>groß</input>";
			break;
		case "large":
			//sel+="<br/><input type='radio' name='R1' value='small' onclick='setScreenSize(this.value);setScreenCSS(this.value);moveTopMenu(1);'>klein</input>";
			sel+="<br/><input type='radio' name='R1' value='medium' onclick='setScreenSize(this.value);setScreenCSS(this.value);moveTopMenu(1);'>mittel</input>";
			sel+="<br/><input type='radio' name='R1' value='large' onclick='setScreenSize(this.value);setScreenCSS(this.value);moveTopMenu(1);' checked>groß</input>";
			break;
	}
	sel+="<br/>&nbsp;";
	document.getElementById("divScreenSizes").innerHTML=sel;
	document.getElementById("divScreenSizes").style.paddingLeft="15px";
	document.getElementById("divScreenSizesText").style.paddingLeft="15px";
}

function setDynaValues(){
	dynaLeftHidden=document.getElementById("dynaContainer").offsetLeft;
	dynaLeftVisible=document.getElementById("divcontent").offsetLeft;
	dynaLeftDelta=dynaLeftVisible-dynaLeftHidden;
}

//DYNA-LISTS
function getElementsByClassName(oElm, strTagName, strClassName){
    var arrElements=(strTagName=="*"&&oElm.all)?oElm.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];      
        if(oRegExp.test(oElement.className))arrReturnElements.push(oElement);
    }
    return(arrReturnElements)

	//To get all a elements in the document with a “info” class.
	//    getElementsByClassName(document, "a", "info");
	//To get all div elements within the element named “container”, with a “col” class.
	//    getElementsByClassName(document.getElementById("container"), "div", "col"); 
	//To get all elements within in the document with a “click-me” class.
	//    getElementsByClassName(document, "*", "click-me"); 
}

function killMeById(objId){
	var node = document.getElementById(objId);
	if(node)node.parentNode.removeChild(node);
}

var stepLists,animLists;
function prepareAnimatedLists(){
	stepLists=getElementsByClassName(document.getElementById("divcontent"), "*", "stepList");
	if(stepLists.length>0){
		for(var ul=0;ul<stepLists.length;ul++)initList(ul,"step")
	}
	
	animLists=getElementsByClassName(document.getElementById("divcontent"), "*", "animList");
	if(animLists.length>0){
		for(ul=0;ul<animLists.length;ul++)initList(ul,"anim")
	}
}

function initList(listNum,listType){
	newli=document.createElement("blockquote");
	newli.id=listType+listNum;
	switch(listType){
		case "step":
			for(var li=0;li<stepLists[listNum].getElementsByTagName("li").length;li++)stepLists[listNum].getElementsByTagName("li")[li].style.visibility="hidden";
			newli.innerHTML="<a onclick='killMeById(\""+newli.id+"\");stepList("+listNum+","+"0)' href='javascript:void(0)'>[&#8230;]</a>";
			stepLists[listNum].parentNode.insertBefore(newli,stepLists[listNum])
			break;
		case "anim":
			for(var li=0;li<animLists[listNum].getElementsByTagName("li").length;li++)animLists[listNum].getElementsByTagName("li")[li].style.visibility="hidden";
			newli.innerHTML="<a onclick='killMeById(\""+newli.id+"\");animList("+listNum+","+"0,"+animLists[listNum].getAttribute("timeperitem")+")' href='javascript:void(0)'>[&#8230;]</a>";
			animLists[listNum].parentNode.insertBefore(newli,animLists[listNum])
			break;
	}
}

function stepList(listNum,itemNum){
	var list=stepLists[listNum];
	list.getElementsByTagName("li")[itemNum].style.visibility="visible";

	if((itemNum+1)<list.getElementsByTagName("li").length){
		list.getElementsByTagName("li")[itemNum].innerHTML+="<a id='li"+listNum+itemNum+"' onclick='killMeById(this.id);stepList("+listNum+","+(itemNum+1)+")' href='javascript:void(0)'>[&#8230;]</a>"
	}
}

function animList(listNum,itemNum,timePerItem){
	var list=animLists[listNum];
	list.getElementsByTagName("li")[itemNum].style.visibility="visible";
	itemNum++;
	if(itemNum>=list.getElementsByTagName("li").length)return;
	setTimeout("animList("+listNum+","+itemNum+","+timePerItem+")",timePerItem)
}


/* Alternating Table Rows 
USAGE:
Either a THEMENAME or 2 or more COLOURs seperated by dashes
theme:		tblCOLOUR
colours:	tbl_altrows-COLOUR1-COLOUR2-COLOUR3
*/

function tbl_altrows() {
	var parts = ['TABLE', 'THEAD', 'TFOOT', 'TBODY'];

	for (var t = 0, r = parts.length; t < r; t++) {
		var T = document.getElementsByTagName(parts[t]);
		for (var i = 0, l = T.length, c = 0; i < l; i++) {
			var tc = T[i].className;
			var a = tc.indexOf('altrows');
			var n = tc.indexOf('norows');
			if (n >= 0) {
				T[i].className = 'tbl_norows';
				var R = T[i].getElementsByTagName('TR');
					for (var j = 0, m = R.length; j < m; j++) {
						R[j].style.background = '';
						R[j].className = 'tbl_norows';
					}
			} else if (a >= 0 ) {
				var c = T[i].className.slice(a), s = c.indexOf(' '), x = null, z = '', cn = '';
				c = T[i].className.slice(a, s > 0? s: T[i].className.length).split('-');
				if (c.length == 2) { // theme
					cn = c[1];
				} else if (c.length > 2) {
					cn = c.slice(1);
					x = c.length - 1;
					z = -1;
				}
				
				R = T[i].getElementsByTagName('TR');
				for (var j = 0, m = R.length; j < m; j++) {
					n = R[j].className.indexOf('norows');
					if (n >= 0)
						continue;
					z = (x != null && z+1 < x? z+1: x != null? 0: j % 2);
					if (x == null) R[j].className = 'altrows-'+cn+''+z;
						else R[j].style.backgroundColor = '#'+ cn[z];
				}
			}
		}
	}
}

function tbl_isString(o) { return (typeof(o) == "string"); }
function tbl_isNumeric(o) { return (typeof(parseFloat(o).toString() == 'NaN'? 'xxx': parseFloat(o)) == "number" && parseFloat(o) != ''); }
function tbl_addEvent(e, meth, func, cap) {
	if (tbl_isString(e))	e = document.getElementById(e);

	if (e.addEventListener){
		e.addEventListener(meth, func, cap);
    	return true;
	}	else if (e.attachEvent)
		return e.attachEvent("on"+ meth, func);
	return false;
}

function tbl_newNode(t, i, s, x, c) {
	var node = document.createElement(t);
	if (x != null && x != '') {
		var n = document.createTextNode(x);
		node.appendChild(n);
	}
	if (i != null && i != '')
		node.id = i;
	if (s != null && s != '')
		node.className = s;
	if (c != null && c != '')
		node.appendChild(c);
	return node;
}

tbl_addEvent(window, 'load', tbl_altrows);



/*Animated Opacity*/
/*----------------*/
function opacity(id, opacStart, opacEnd, millisec) {
	//speed for each frame
	var speed = Math.round(millisec / 100);
	var timer = 0;

	//determine the direction for the blending, if start and end are the same nothing happens
	if(opacStart > opacEnd) {
		for(i = opacStart; i >= opacEnd; i--) {
			setTimeout("changeOpac(" + i + ",'" + id + "')",(timer * speed));
			timer++;
		}
	} else if(opacStart < opacEnd) {
		for(i = opacStart; i <= opacEnd; i++)
			{
			setTimeout("changeOpac(" + i + ",'" + id + "')",(timer * speed));
			timer++;
		}
	}
}

//change the opacity for different browsers
function changeOpac(opacity, id) {
	var object = document.getElementById(id).style; 
	object.opacity = (opacity / 100);
	object.MozOpacity = (opacity / 100);
	object.KhtmlOpacity = (opacity / 100);
	object.filter = "alpha(opacity=" + opacity + ")";
}

function shiftOpacity(id, millisec) {
	//if an element is invisible, make it visible, else make it ivisible
	if(document.getElementById(id).style.opacity == 0) {
		opacity(id, 0, 100, millisec);
	} else {
		opacity(id, 100, 0, millisec);
	}
}

function blendimage(divid, imageid, imagefile, millisec) {
	var speed = Math.round(millisec / 100);
	var timer = 0;
	
	//set the current image as background
	document.getElementById(divid).style.backgroundImage = "url(" + document.getElementById(imageid).src + ")";
	
	//make image transparent
	changeOpac(0, imageid);
	
	//make new image
	document.getElementById(imageid).src = imagefile;

	//fade in image
	for(i = 0; i <= 100; i++) {
		setTimeout("changeOpac(" + i + ",'" + imageid + "')",(timer * speed));
		timer++;
	}
}

function currentOpac(id, opacEnd, millisec) {
	//standard opacity is 100
	var currentOpac = 100;
	
	//if the element has an opacity set, get it
	if(document.getElementById(id).style.opacity < 100) {
		currentOpac = document.getElementById(id).style.opacity * 100;
	}

	//call for the function that changes the opacity
	opacity(id, currentOpac, opacEnd, millisec)
}


//*
function getTextHeight(text,width,points,font){
	var dummy=document.createElement("div");
	dummy.style.visibility="hidden";
	dummy.style.width=width;
	dummy.id="dummy";
	document.body.appendChild(dummy);
	var test=document.getElementById("dummy");
	test.style.fontFamily=font;
	test.style.fontSize=points;
	test.innerHTML=text;
	var res=test.clientHeight;
	killMeById("dummy");
	return res;
}

//*/




//DEFAULT.JS
var resumeUrl="";

function initScreen(){
	var resMsg="Ihre Bildschirmauflösung beträgt: " + screen.width + "x" + screen.height + " (" + getScreenRes() + ")<br/>";
	resMsg+="<br/>Wählen Sie die Fenstergröße für das Lernprogramm:<br/><br/>";
	resMsg+="<select size='2' id='ddScreenSize' onchange='setScreenSize(this.options[this.selectedIndex].value)'>";
	switch(true){
		case(screen.width<800):
		case(screen.width>799&&screen.width<1024):
			screenSize="medium";
			//resMsg+="<option value='small'>klein</option>";
			resMsg+="<option value='medium' selected>kompakt (empfohlen)</option>";
			resMsg+="<option value='large'>normal</option>";
			break;
		case(screen.width>1023):
			screenSize="large";
			//resMsg+="<option value='small'>klein</option>";
			resMsg+="<option value='medium'>kompakt</option>";
			resMsg+="<option value='large' selected>normal (empfohlen)</option>";
			setCookie("dyna","toc",expiry);
			break;
	}
	resMsg+="</select>",
	setScreenSize(screenSize);
	return resMsg;
}

function initDefault() {
	var u=location.href;
	if(u.indexOf("&AICC_URL")!=-1)deleteCookie("cfwprops");
	setCookie("fullURL",u,expiry);

	isDefault=true;
	initTree();
	document.getElementById("divdefaultnavigation").innerHTML="<form><span id='aiccResume'></span><input type='button' class='startBtn' onclick='javascript:startIt()' value='"+eval("startCaption"+language)+"'></input></form>";
	var pageCount=db.length-1;
	setCookie("pageCount",pageCount)
	setLogonTime();

	if(enableDynamicCSS){
		newdiv=document.createElement("div");
		newdiv.id="divScreenOptions";
		newdiv.innerHTML=initScreen();
		newdiv.className="divScreenOptions";
		if(bAutomaticScreenSize)newdiv.style.display="none";
		document.body.appendChild(newdiv);
	}
	
//
//u="http://www.xxx.htm?AICC_SID=355&AICC_URL=http%3A%2F%2Fdemo-dls.learningsystem.de%2Faicc_listener.phtml"
//

	if(u.indexOf("&AICC_URL")==-1){writeNoAICCString();return;}
	var onlineMode=getProtocol(u).indexOf("http")>=0?true:false;

	var up=u.split("?");
	up=up[1].split("&");
	var aurl,aid;
	for(var i=0;i<up.length;i++){
		if(up[i].indexOf(("AICC_SID"))!=-1){
			aid=up[i];
			aid=aid.split("=");
			aid=aid[1];
			setCookie("aiccSID",aid,expiry);
		}
		if(up[i].indexOf(("AICC_URL"))!=-1){
			aurl=up[i];
			aurl=aurl.split("=");
			aurl=aurl[1];
			aurl=unescape(aurl);
			setCookie("aiccURL",aurl,expiry);
		}
	}

	if(onlineMode&&u.indexOf("AICC_URL")>0){
		buildAiccReceiver("GetParam");
	}else{
		writeNoAICCString();
	}
}

function getSessionData(){
	var sessionData=new Array();
	var treeVisistate=getCookie("visiState");
	var treeCurrentState=getCookie("currState");
	var bookmarks=getCookie("bookmarks")!=undefined?getCookie("bookmarks"):"";
	var pageId=getCookie("currentPage");
	var pagesVisited=0;
	var sessionTime=getSessionTime();
	bUseMcAsScore=(getCookie("bUseMcAsScore")=="true");
	
	for (var i=0;i<treeVisistate.length;i++){
		if(parseInt(treeVisistate.substring(i,i+1))>0)pagesVisited++
	}
	var lessonStatus="incomplete"; //Not Started, Incomplete, Completed, Passed, Failed
	var score=parseInt(round(pagesVisited/treeVisistate.length)*100);
	if(score>=100&&!bUseMcAsScore){score=100;lessonStatus="completed"}
	if(bUseMcAsScore){
		var score=getCookie("score");	
	}else{ 
		var score=parseInt(round(pagesVisited/treeVisistate.length)*100);
		if(score>=100){score=100;lessonStatus="completed"}
	}

	if(getCookie("lessonStatus").indexOf("passed")!=-1)lessonStatus="passed";
	if(getCookie("lessonStatus").indexOf("failed")!=-1)lessonStatus="failed";

	var iqcdata=treeCurrentState+";"+treeVisistate+";"+bookmarks+";"+getCookie("assStatus")+";"+getCookie("assAttempts")+";"+pageId+";";

	sessionData.push("score="+score);
	sessionData.push("lessonstatus="+lessonStatus);
	sessionData.push("sessiontime="+sessionTime);
	sessionData.push("iqcdata="+iqcdata);
	
	return sessionData;
}

function buildAiccReceiver(command){
	if(!command)return;
	
  var aiccURL=getCookie("aiccURL");
	var aiccSID=getCookie("aiccSID");
	var fo=new FlashObject(common+"js/aicc.swf","aicc","1","1","8.0.22","#ffffff",true);
	fo.addParam("allowScriptAccess","always");
	fo.addVariable("u",aiccURL);
	fo.addVariable("c",command);
	fo.addVariable("s",aiccSID);
	if(command=="PutParam"){
		var args=new Array();
		args=getSessionData();
		for(var i=0;i<args.length;i++){
			var arg=args[i].split("=");
			switch(arg[0]){
				case "score":        fo.addVariable("a",arg[1]);break;
				case "lessonstatus": fo.addVariable("g",arg[1]);break;
				case "sessiontime":  fo.addVariable("e",arg[1]);break;
				case "iqcdata":      fo.addVariable("f",arg[1]);break;
			}
		}
	}

	if(command=="PutParam"||command=="GetParam"){
		var storageId="cvia06q01-1";
		fo.addVariable("b",storageId);		
	}
	
	var newdiv=document.createElement("div");
	newdiv.id="aiccSWF";
	document.body.appendChild(newdiv);	
	fo.write("aiccSWF");
	
	if(isDefault){
		var out=eval("aiccCommunicationMsg"+language);
		if(document.getElementById("aiccContainer")){
			document.getElementById("aiccContainer").innerHTML=out;
		}else{
			newdiv=document.createElement("div");
			newdiv.id="aiccContainer";
			newdiv.innerHTML=out;
			newdiv.className=(bAutomaticScreenSize||command=="PutParam")?"formResumeB":"formResumeA";
			newdiv.onclick = function(e){if(document.getElementById("aiccData"))document.getElementById("aiccData").style.display="block";};
			document.body.appendChild(newdiv);
		}
	}
}

function writeNoAICCString(){ //offline or online (no aicc)
	var off=""
	if(getCookie("currentPage").length>0){
		var off='<form name="formImmer">';
		off+=eval("msg1"+language);
		off+='<br/>';
		off+='&nbsp;&nbsp;&nbsp;&nbsp;<input type="radio" class="chkBtn" name="lastPage" value="yes" checked> '+eval("yes"+language);
		off+='<br/>';
		off+='&nbsp;&nbsp;&nbsp;&nbsp;<input type="radio" class="chkBtn" name="lastPage" value="no"> '+eval("no"+language);
		off+='<br/><br/><br/>';
		off+=eval("msg2"+language);
		off+='<br/>';
		off+='&nbsp;&nbsp;&nbsp;&nbsp;<input type="radio" class="chkBtn" name="visitedReset" value="no" checked> '+eval("yes"+language);
		off+='<br/>';
		off+='&nbsp;&nbsp;&nbsp;&nbsp;<input type="radio" class="chkBtn" name="visitedReset" value="yes"> '+eval("no"+language);
		off+='</form>';
		
		newdiv=document.createElement("div")
		newdiv.id="formResume";
		newdiv.innerHTML=off;
		newdiv.className=bAutomaticScreenSize?"formResumeB":"formResumeA";
		document.body.appendChild(newdiv);
	}
}

function setLogonTime(){
	var now=new Date();
	var minutes = ((now.getMinutes() < 10) ? "0" : "") + now.getMinutes();
	var seconds = ((now.getSeconds() < 10) ? "0" : "") + now.getSeconds();
	setCookie("logonTime",now.getHours()+":"+minutes+":"+seconds,expiry)
}

function startIt() {
	if(typeof document.formImmer!="undefined"){
		if(document.formImmer.lastPage[0].checked){
			startUrl=getCookie("currentPage");
		}
		if(document.forms["formImmer"].visitedReset[1].checked)changeSettings("default");
	}
	if(document.getElementById("chkResume")){
		if(document.getElementById("chkResume").checked)startUrl=resumeUrl;
	}
	this.location.href=startUrl;
}

function passAiccData(core){
	if(isDefault){
		var out=eval("aiccCommunicationMsg"+language);
		out+=bShowAiccData?"<div id='aiccData' style='width:500px;'>":"<div id='aiccData' style='display:none'>";
		out+="<table border='0'>";
	}
	core=core.split(", ");
	var cb,td,old;
	for(var i=0;i<core.length;i++){
		cb=core[i].toLowerCase();
		cb=cb.split(":");
		if(cb.length>1){
			cb[0]=replaceString(cb[0],"#","");
			cb[0]=replaceString(cb[0],"_","");
			cb[1]=replaceString(cb[1],"\"","");
		}
		
		switch(cb[0]){
			case "error":
				break;
			case "exitauok":
				deleteCookie("cfwprops");	
				document.getElementById("divdefaultnavigation").innerHTML="<input type='button' class='startBtn' onclick='top.close()' value='"+eval("exitCaption"+language)+"' />";
				return;
				break;
			case "studentid":
				if(!isDefault)break;
				out+="<tr><td>- Anmeldename</td><td>"+cb[1]+"</td></tr>";
				break;
			case "studentpassword":
				out+="<tr><td>- Passwort</td><td>"+cb[1]+"</td></tr>";
				setCookie("pw",cb[1],expiry)
				break;				
			case "studentname":
				if(!isDefault)break;
				out+="<tr><td>- Name</td><td>"+cb[1]+"</td></tr>";
				break;								
			case "credit":
				if(!isDefault)break;
				//out+="<tr><td>- Credit</td><td>"+cb[1]+"</td></tr>";
				break;		
			case "attemptnumber":
				if(!isDefault)break;
				out+="<tr><td>- Versuche</td><td>"+cb[1]+"</td></tr>";
				break;	
			case "time":
				if(!isDefault)break;
				//setCookie("logonTime",cb[1]);
				if((cb[2]!=undefined)&&(cb[3]!=undefined)){
					out+="<tr><td>- Zeit bisher</td><td>"+cb[1]+":"+cb[2]+":"+cb[3]+"</td></tr>";
				}else{
					out+="<tr><td>- Zeit bisher</td><td>"+cb[1]+"</td></tr>";
				}
				break;
			case "lessonstatus":
				if(!isDefault)break;
				out+="<tr><td>- Lektionsstatus</td><td>"+cb[1]+"</td></tr>";
				setCookie("lessonStatus",cb[1],expiry);
				break;
			case "score":
				if(!isDefault)break;
				out+="<tr><td>- Score</td><td>"+cb[1]+"</td></tr>";
				setCookie("score",cb[1],expiry);
				break;				
			case "masteryscore":
				if(!isDefault)break;
				if(parseInt(cb[1])>0)setCookie("masteryscore",parseInt(cb[1]),expiry);
				out+="<tr><td>- Mindestpunktzahl</td><td>"+cb[1]+"</td></tr>";
				break;	
			case "lessonlocation":
				if(!isDefault)break;
				
				td=cb[1].split(";");
				setCookie("currState",td[0],expiry);
				setCookie("visiState",td[1],expiry);
				
				if(td[2]){
					setCookie("bookmarks",td[2],expiry);
					out+="<tr><td>- Lesezeichen</td><td>"+td[2]+"</td></tr>";
				}else{
					out+="<tr><td>- Lesezeichen</td><td>-</td></tr>";
				}

				if(td[3]){		
					out+="<tr><td>- Teststatus</td><td>"+td[3]+"</td></tr>";
					setCookie("assStatus",td[3],expiry);
				}else{
					out+="<tr><td>- Teststatus</td><td>-</td></tr>";
				}
				
				if(td[4]){
					out+="<tr><td>- Testversuche</td><td>"+td[4]+"</td></tr>";
					setCookie("assAttempts",td[4],expiry);
				}else{
					out+="<tr><td>- Testversuche</td><td>-</td></tr>";
				}

				if(td[5]){ 
					if(td[5].indexOf(".htm")!=-1){
						resumeUrl=td[5];
						document.getElementById("aiccResume").innerHTML="<input id='chkResume' class='chkBtn' type='checkbox' checked />&nbsp;"+eval("resumeCaption"+language)+"&nbsp;&nbsp;&nbsp;";
					}
					break;
				}

				break;
			case "putparamok":
				//killMeById("aiccCommunicator");
				if(location.href.indexOf("exit.htm")!=-1){
					buildAiccReceiver("ExitAU");
				}else{
					document.getElementById("aiccContainer").innerHTML="";
				}				
				return; 
			default:			
				break;
		}
	}
	if(isDefault){
		out+="</table></div>";
		if(document.getElementById("aiccContainer"))document.getElementById("aiccContainer").innerHTML=out;
	}
}

/* EXIT */
function initExit(){
	if(getCookie("aiccURL")){
		buildAiccReceiver("PutParam");
	}else{
		top.close();
	}
}

/**
 * SWFObject v1.5: Flash Player detection and embed - http://blog.deconcept.com/swfobject/
 */
if(typeof deconcept == "undefined") var deconcept = new Object();
if(typeof deconcept.util == "undefined") deconcept.util = new Object();
if(typeof deconcept.SWFObjectUtil == "undefined") deconcept.SWFObjectUtil = new Object();
deconcept.SWFObject = function(swf, id, w, h, ver, c, quality, xiRedirectUrl, redirectUrl, detectKey) {
	if (!document.getElementById) { return; }
	this.DETECT_KEY = detectKey ? detectKey : 'detectflash';
	this.skipDetect = deconcept.util.getRequestParameter(this.DETECT_KEY);
	this.params = new Object();
	this.variables = new Object();
	this.attributes = new Array();
	if(swf) { this.setAttribute('swf', swf); }
	if(id) { this.setAttribute('id', id); }
	if(w) { this.setAttribute('width', w); }
	if(h) { this.setAttribute('height', h); }
	if(ver) { this.setAttribute('version', new deconcept.PlayerVersion(ver.toString().split("."))); }
	this.installedVer = deconcept.SWFObjectUtil.getPlayerVersion();
	if (!window.opera && document.all && this.installedVer.major > 7) {
		// only add the onunload cleanup if the Flash Player version supports External Interface and we are in IE
		deconcept.SWFObject.doPrepUnload = true;
	}
	if(c) { this.addParam('bgcolor', c); }
	var q = quality ? quality : 'high';
	this.addParam('quality', q);
	this.setAttribute('useExpressInstall', false);
	this.setAttribute('doExpressInstall', false);
	var xir = (xiRedirectUrl) ? xiRedirectUrl : window.location;
	this.setAttribute('xiRedirectUrl', xir);
	this.setAttribute('redirectUrl', '');
	if(redirectUrl) { this.setAttribute('redirectUrl', redirectUrl); }
}
deconcept.SWFObject.prototype = {
	useExpressInstall: function(path) {
		this.xiSWFPath = !path ? "expressinstall.swf" : path;
		this.setAttribute('useExpressInstall', true);
	},
	setAttribute: function(name, value){
		this.attributes[name] = value;
	},
	getAttribute: function(name){
		return this.attributes[name];
	},
	addParam: function(name, value){
		this.params[name] = value;
	},
	getParams: function(){
		return this.params;
	},
	addVariable: function(name, value){
		this.variables[name] = value;
	},
	getVariable: function(name){
		return this.variables[name];
	},
	getVariables: function(){
		return this.variables;
	},
	getVariablePairs: function(){
		var variablePairs = new Array();
		var key;
		var variables = this.getVariables();
		for(key in variables){
			variablePairs[variablePairs.length] = key +"="+ variables[key];
		}
		return variablePairs;
	},
	getSWFHTML: function() {
		var swfNode = "";
		if (navigator.plugins && navigator.mimeTypes && navigator.mimeTypes.length) { // netscape plugin architecture
			if (this.getAttribute("doExpressInstall")) {
				this.addVariable("MMplayerType", "PlugIn");
				this.setAttribute('swf', this.xiSWFPath);
			}
			swfNode = '<embed type="application/x-shockwave-flash" src="'+ this.getAttribute('swf') +'" width="'+ this.getAttribute('width') +'" height="'+ this.getAttribute('height') +'" style="'+ this.getAttribute('style') +'"';
			swfNode += ' id="'+ this.getAttribute('id') +'" name="'+ this.getAttribute('id') +'" ';
			var params = this.getParams();
			 for(var key in params){ swfNode += [key] +'="'+ params[key] +'" '; }
			var pairs = this.getVariablePairs().join("&");
			 if (pairs.length > 0){ swfNode += 'flashvars="'+ pairs +'"'; }
			swfNode += '/>';
		} else { // PC IE
			if (this.getAttribute("doExpressInstall")) {
				this.addVariable("MMplayerType", "ActiveX");
				this.setAttribute('swf', this.xiSWFPath);
			}
			swfNode = '<object id="'+ this.getAttribute('id') +'" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="'+ this.getAttribute('width') +'" height="'+ this.getAttribute('height') +'" style="'+ this.getAttribute('style') +'">';
			swfNode += '<param name="movie" value="'+ this.getAttribute('swf') +'" />';
			var params = this.getParams();
			for(var key in params) {
			 swfNode += '<param name="'+ key +'" value="'+ params[key] +'" />';
			}
			var pairs = this.getVariablePairs().join("&");
			if(pairs.length > 0) {swfNode += '<param name="flashvars" value="'+ pairs +'" />';}
			swfNode += "</object>";
		}
		return swfNode;
	},
	write: function(elementId){
		if(this.getAttribute('useExpressInstall')) {
			// check to see if we need to do an express install
			var expressInstallReqVer = new deconcept.PlayerVersion([6,0,65]);
			if (this.installedVer.versionIsValid(expressInstallReqVer) && !this.installedVer.versionIsValid(this.getAttribute('version'))) {
				this.setAttribute('doExpressInstall', true);
				this.addVariable("MMredirectURL", escape(this.getAttribute('xiRedirectUrl')));
				document.title = document.title.slice(0, 47) + " - Flash Player Installation";
				this.addVariable("MMdoctitle", document.title);
			}
		}
		if(this.skipDetect || this.getAttribute('doExpressInstall') || this.installedVer.versionIsValid(this.getAttribute('version'))){
			var n = (typeof elementId == 'string') ? document.getElementById(elementId) : elementId;
			n.innerHTML = this.getSWFHTML();
			return true;
		}else{
			if(this.getAttribute('redirectUrl') != "") {
				document.location.replace(this.getAttribute('redirectUrl'));
			}
		}
		return false;
	}
}

/* ---- detection functions ---- */
deconcept.SWFObjectUtil.getPlayerVersion = function(){
	var PlayerVersion = new deconcept.PlayerVersion([0,0,0]);
	if(navigator.plugins && navigator.mimeTypes.length){
		var x = navigator.plugins["Shockwave Flash"];
		if(x && x.description) {
			PlayerVersion = new deconcept.PlayerVersion(x.description.replace(/([a-zA-Z]|\s)+/, "").replace(/(\s+r|\s+b[0-9]+)/, ".").split("."));
		}
	}else if (navigator.userAgent && navigator.userAgent.indexOf("Windows CE") >= 0){ // if Windows CE
		var axo = 1;
		var counter = 3;
		while(axo) {
			try {
				counter++;
				axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash."+ counter);
//				document.write("player v: "+ counter);
				PlayerVersion = new deconcept.PlayerVersion([counter,0,0]);
			} catch (e) {
				axo = null;
			}
		}
	} else { // Win IE (non mobile)
		// do minor version lookup in IE, but avoid fp6 crashing issues
		// see http://blog.deconcept.com/2006/01/11/getvariable-setvariable-crash-internet-explorer-flash-6/
		try{
			var axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7");
		}catch(e){
			try {
				var axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.6");
				PlayerVersion = new deconcept.PlayerVersion([6,0,21]);
				axo.AllowScriptAccess = "always"; // error if player version < 6.0.47 (thanks to Michael Williams @ Adobe for this code)
			} catch(e) {
				if (PlayerVersion.major == 6) {
					return PlayerVersion;
				}
			}
			try {
				axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash");
			} catch(e) {}
		}
		if (axo != null) {
			PlayerVersion = new deconcept.PlayerVersion(axo.GetVariable("$version").split(" ")[1].split(","));
		}
	}
	return PlayerVersion;
}
deconcept.PlayerVersion = function(arrVersion){
	this.major = arrVersion[0] != null ? parseInt(arrVersion[0]) : 0;
	this.minor = arrVersion[1] != null ? parseInt(arrVersion[1]) : 0;
	this.rev = arrVersion[2] != null ? parseInt(arrVersion[2]) : 0;
}
deconcept.PlayerVersion.prototype.versionIsValid = function(fv){
	if(this.major < fv.major) return false;
	if(this.major > fv.major) return true;
	if(this.minor < fv.minor) return false;
	if(this.minor > fv.minor) return true;
	if(this.rev < fv.rev) return false;
	return true;
}
/* ---- get value of query string param ---- */
deconcept.util = {
	getRequestParameter: function(param) {
		var q = document.location.search || document.location.hash;
		if (param == null) { return q; }
		if(q) {
			var pairs = q.substring(1).split("&");
			for (var i=0; i < pairs.length; i++) {
				if (pairs[i].substring(0, pairs[i].indexOf("=")) == param) {
					return pairs[i].substring((pairs[i].indexOf("=")+1));
				}
			}
		}
		return "";
	}
}
/* fix for video streaming bug */
deconcept.SWFObjectUtil.cleanupSWFs = function() {
	var objects = document.getElementsByTagName("OBJECT");
	for (var i = objects.length - 1; i >= 0; i--) {
		objects[i].style.display = 'none';
		for (var x in objects[i]) {
			if (typeof objects[i][x] == 'function') {
				objects[i][x] = function(){};
			}
		}
	}
}
// fixes bug in some fp9 versions see http://blog.deconcept.com/2006/07/28/swfobject-143-released/
if (deconcept.SWFObject.doPrepUnload) {
	if (!deconcept.unloadSet) {
		deconcept.SWFObjectUtil.prepUnload = function() {
			__flash_unloadHandler = function(){};
			__flash_savedUnloadHandler = function(){};
			window.attachEvent("onunload", deconcept.SWFObjectUtil.cleanupSWFs);
		}
		window.attachEvent("onbeforeunload", deconcept.SWFObjectUtil.prepUnload);
		deconcept.unloadSet = true;
	}
}
/* add document.getElementById if needed (mobile IE < 5) */
if (!document.getElementById && document.all) { document.getElementById = function(id) { return document.all[id]; }}

/* add some aliases for ease of use/backwards compatibility */
var getQueryParamValue = deconcept.util.getRequestParameter;
var FlashObject = deconcept.SWFObject; // for legacy support
var SWFObject = deconcept.SWFObject;

/**
 * End SWFObject
 */
 
 
/**
 * REGEXP from FlashObject
 */
 function reReplace(str, reg, rep) {
	var s = unescape(str);
	var re = new RegExp(eval(unescape(reg)));
	return s.replace(re, unescape(rep));
}
	
function reMatch(str, reg) {
	var s = unescape(str);
	var arr = s.match(eval(unescape(reg)));
	return encodeArray(arr);
}

function encodeArray(arr) {
	for (var i=0; i<arr.length;i++) {
		arr[i] = encodeURIComponent(arr[i]);
	}
	return arr;
}
//
