/*
-------------------------------------------------------------

Copyright 2000 EduTec
(im Folgenden EDUTEC genannt)

Dieser Code ist Lizenzpflichtig. Es ist
nicht gestattet diesen Code ohne Genehmigung von EDUTEC
zu kopieren, zu verändern, zu bearbeiten oder in Teilen
zu verwenden, oder diesen in ursprünglicher oder veränderter
Form ohne die Genehmigung und Zustimmung von EDUTEC zu
veröffentlichen, zu verkaufen, zu lizensieren, zu vertreiben,
oder auf sonstige Art zu nutzen.

Lizenz-/Vertragsgebiet: die Welt.

-------------------------------------------------------------
*/




// ---------------------------------------------------------------------
// Diese Datei darf nicht abgeändert werden, sonst kein Support!
// Bei Änderungswünschen bitte Mail schicken
// Bugs bitte in die Wissenseiten eintragen
// ---------------------------------------------------------------------

// define globals:
is = new BrowserCheck();
reloadPage(true);

if (is.platform == 'mac')
  CRLF = unescape("%0D");
else
  CRLF = unescape("%0D%0A");

  
//visible State
vst_inherit = 'inherit';

//---------------------------------------
function BrowserCheck() {
	var b = navigator.appName;
	if (b=="Netscape") this.b = "ns";
	else if (b=="Microsoft Internet Explorer") this.b = "ie";
	else this.b = b;
	this.v = parseInt(navigator.appVersion);
	this.ns = (this.b=="ns" && this.v>=4);
	this.ns4 = (this.b=="ns" && this.v==4);
	this.ns5 = (this.b=="ns" && this.v==5);
	this.ie = (this.b=="ie" && this.v>=4);
	this.ie4 = (navigator.userAgent.indexOf('MSIE 4')>0);
	this.ie5 = (navigator.userAgent.indexOf('MSIE 5')>0);
	this.ie6 = (navigator.userAgent.indexOf('MSIE 6')>0);
	if (this.ie5) this.v = 5;
	this.min = (this.ns||this.ie);
	var ua=navigator.userAgent.toLowerCase()
	if (ua.indexOf("win")>-1) this.platform="win32"
	else if (ua.indexOf("mac")>-1) this.platform="mac"
	else this.platform = "other"
}

//---------------------------------------
function reloadPage(init) {
	if (is.ns4) {
 		if (init) {
			document.pgW=innerWidth;
			document.pgH=innerHeight;
			onresize=reloadPage;
		} else {
			if (innerWidth!=document.MM_pgW || innerHeight!=document.MM_pgH) location.reload();
		}
	}
}

//---------------------------------------
function setGlobalVars() {
    if(is.ns) {
        clientWidth=innerWidth;
        clientHeight=innerHeight;
	    doc = "document";
	    sty = "";
	    htm = ".document"
	    xpos = "e.pageX";
	    ypos = "e.pageY";
    } else if(is.ie) {
        clientWidth=document.body.clientWidth;
        clientHeight=document.body.clientHeight;
	    doc = "document.all";
	    sty = ".style";
	    htm = ""
	    xpos = "event.x";
	    ypos = "event.y";
    }
}

//---------------------------------------
function getFrameObj(aFrameName, aParentFrame) {
	var thisFrame;
	if (!aParentFrame) aParentFrame = top;
	if (aParentFrame && (aParentFrame.name == aFrameName)) return aParentFrame;
	for (var i=0;i<aParentFrame.frames.length;i++) {
		thisFrame = getFrameObj(aFrameName, aParentFrame.frames[i]);
        if (thisFrame) return thisFrame;
	}
	return '';
}

//---------------------------------------
function parseLocation(URL) {
	var aLocation = new String('' + URL);  // IE6 Stresser
	var von = aLocation.lastIndexOf('/');
	var bis = aLocation.lastIndexOf('#');
	if (bis<0) bis = aLocation.lastIndexOf('?');
	if (bis<0) bis = aLocation.length;
	aLocation = aLocation.slice(von+1, bis);
	return aLocation.toLowerCase();
}

//---------------------------------------
function parsePath(URL) {
	var aPath = new String('' + URL);  // IE6 Stresser
	var aLocation = parseLocation(URL);
	var bis = aPath.indexOf(aLocation);
	aPath = aPath.slice(0,bis);
	return aPath;
}

//---------------------------------------
function getPageName(URL) {
	return getFileName(URL);
}


//---------------------------------------
function getFileName(URL) {
	var aLocation = parseLocation(URL);
	var bis = aLocation.lastIndexOf('.');
	aLocation = aLocation.slice(0,bis);
	return aLocation.toLowerCase();
}

//---------------------------------------
function getDocumentPath(aLocation) {
	return parsePath(aLocation);
} 

//---------------------------------------
function scrollToAnchor(aFrameName, aAnchor) {
	var frameObj = getFrameObj(aFrameName);
	if (frameObj) {
		if (is.ie) {
			var anchorObj = 'frameObj.document.all.' + aAnchor;
			if (eval(anchorObj)) eval(anchorObj + '.scrollIntoView("true");');
		} else {
			for (i = 0; i < frameObj.document.anchors.length; i++) {
				if (frameObj.document.anchors[i].name == aAnchor) {
					frameObj.scrollTo(1,frameObj.document.anchors[i].y);
					break;
				}
			}
		}
	}
} 

//---------------------------------------
function getTaskObject(aName) {
	var taskObject='';
	taskObject = getObject(aName);
	if (!taskObject) taskObject = getObject(aName+ "Btn");
	return taskObject;
}

//---------------------------------------
function createImage(imageFile) {
	var aImage = new Image();
	aImage.src = imageFile;
	return aImage;
}


//---------------------------------------
function getLocationParams(aWindow) {
	if (!aWindow) aWindow = top;
	var params = new String(aWindow.location.search);
	params = params.replace('?','');
	var aList = params.split('&');
	var result = new Array();
	for (var i in aList) {
		var aItem = aList[i];
		if (aItem) {
			var splitted = aItem.split('=');
			if (splitted && splitted.length>0) {
				result [splitted[0]] = splitted[1];
			}
		}
	}
	return result;
}


/**
* löscht alle auf "null" gesetzten Listenelemente aus der angegebenen Liste
* @param itemList	liste der zu löschenden "null"-Elemnte
*/
function getNullDeletedList(itemList) {
	var result = new Array();
	for (var i in itemList) if (itemList[i] != null) result[result.length] = itemList[i];
	return result;
}

//----------------------------------------------------------
function randomizeList(aList) {
	var newList = new Array();
	for (var i in aList) {
		var aList = getNullDeletedList(aList);
		var thisItem = parseInt(Math.round(Math.random()*(aList.length-1)));	
		newList[newList.length] = aList[thisItem];
		aList[thisItem] = null;
	}
	return newList;
}

//---------------------------------------
function isIn(aItem, itemList) {
	if (indexOfItem(aItem, itemList)>=0) return true;
	return false;
}

//---------------------------------------
function indexOfItem(aItem, itemList) {
	for (var i in itemList) if (aItem == itemList[i]) return i;
	return -1;
}

//---------------------------------------
function isMember(aProp, aObject) {
	for (var item in aObject) if (item == aProp) return true;
	return false;
}


//---------------------------------------
function getObject(r, d) {
  var p,n,i,x;  if (!d) d=document; n=r.substring(r.lastIndexOf(".")+1);
  if (n.indexOf("layers[")==0) n=n.substring(8,n.length-2);
  if (parent.frames.length) { if (r.indexOf(".frames[")==6) d=eval(r.substring(0,r.indexOf("]")+10));
    if ((p=r.indexOf("?"))!=-1) {n=r.substring(0,p); d=parent.frames[r.substring(p+1)].document;} }
  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=getObject(n,d.layers[i].document); return x;
}

//---------------------------------------
function konvertiereUmlaute(satz) {
	var zeile = satz.replace(/&auml;/,"ä");
	zeile = zeile.replace(/&uuml;/,"ü");
	zeile = zeile.replace(/&ouml;/,"ö");
	zeile = zeile.replace(/&Auml;/,"Ä");
	zeile = zeile.replace(/&Uuml;/,"Ü");
	zeile = zeile.replace(/&Ouml;/,"Ö");
	zeile = zeile.replace(/&szlig;/,"ß");
	return zeile;
}

//---------------------------------------
//---------------------------------------
//---------------------------------------

// layer Functions:
function createLayer(id,parentLyr,left,top,width,height,content,bgColor,visibility,zIndex) {
	var lyr;
	if (is.ns) {

		var aParent = (parentLyr)?parentLyr:window;
		if (typeof(aParent)=='string') aParent = getObject(aParent);
		if (!aParent) {
			alert('In createLayer:\nParent not Found:' + parentLyr);
			return ;
		}

		lyr = new Layer(width, aParent);
		aParent.document [id] = lyr;


		lyr.name = id;
		lyr.left = left;
		lyr.top = top;
		if (height!=null) lyr.clip.height = height;
		if (bgColor!=null) lyr.bgColor = bgColor;
		
		lyr.visibility = (visibility=='inherit')?'inherit' :((visibility=='hidden')?'hide':'show');
		if (zIndex!=null) lyr.zIndex = zIndex;
		if (content) {
			lyr.document.open();
			lyr.document.write(content);
			lyr.document.close();
		}
	}
	else if (is.ie) {
		var str = '\n<DIV id='+id+' style="position:absolute; left:'+left+'; top:'+top+'; width:'+width;
		if (height!=null) {
			str += '; height:'+height;
			//str += '; clip:rect(0,'+width+','+height+',0)';   // Was??? Soll?? Das???
		}
		if (bgColor!=null) str += '; background-color:'+bgColor;
		if (zIndex!=null) str += '; z-index:'+zIndex;
		if (visibility) str += '; visibility:'+ visibility;
		str += ';">'+((content)?content:'')+'</DIV>';
		if (parentLyr) {
			if (typeof(parentLyr)=='string') parentLyr = getObject(parentLyr);
			parentLyr.insertAdjacentHTML("BeforeEnd",str);
		}
		else {
			document.body.insertAdjacentHTML("BeforeEnd",str);
		}
		lyr = getObject(id);
		if (parentLyr) parentLyr.style.overflow='hidden';
	}
	setLayerProps(lyr);
	return lyr;
}


//---------------------------------------
function destroyLayer(id,nestref) {
	if (is.ns) {
		if (nestref) eval("document."+nestref+".document."+id+".visibility = 'hide'")
		else document.layers[id].visibility = "hide"
	}
	else if (is.ie) {
		document.all[id].innerHTML = ""
		document.all[id].outerHTML = ""
	}
}

//---------------------------------------
function setLayerText(aLayer, aText) {
	if (typeof(aLayer)=='string') aLayer = getObject(aLayer);
	if (aLayer) {
		if (is.ie) {
			aLayer.innerHTML = aText;	
		} else {
			aLayer.document.open();
			aLayer.document.write(aText);
			aLayer.document.close();
		}
	}	
}

//---------------------------------------
function addLayerText(aLayer, aText) {
	if (typeof(aLayer)=='string') aLayer = getObject(aLayer);
	if (aLayer) {
		if (is.ie) {
			aLayer.innerHTML = aLayer.innerHTML + aText;	
		} else {
			aLayer.document.write(aText);
		}
	}	
}

//---------------------------------------
function setLayerPosition(aLayer, x, y) {
	if (typeof(aLayer)=='string') aLayer = getObject(aLayer);
	if (aLayer) {
		if (is.ns) {aLayer.left = x; aLayer.top = y;}
		if (is.ie) {aLayer.style.pixelLeft = x; aLayer.style.pixelTop = y;}
		setLayerProps(aLayer);
	}
}

//---------------------------------------
function setLayerBounds(aLayer, left, top, width, height) {
	if (typeof(aLayer)=='string') aLayer = getObject(aLayer);
	setLayerPosition(aLayer, left, top);
	setLayerSize(aLayer, width, height);
}


//---------------------------------------
function setLayerSize(aLayer, width, height) {
	if (typeof(aLayer)=='string') aLayer = getObject(aLayer);
	if (aLayer) {
		if (aLayer.clip) {
			if (width && width!=0) aLayer.clip.width = width; 
			if (height && height!=0) aLayer.clip.height = height;
		}
		if (aLayer.style) {
			if (width && width!=0) aLayer.style.width = width; 
			if (height && height!=0) aLayer.style.height = height;
		}
		setLayerProps(aLayer);
	}
}

//---------------------------------------
function setLayerVisible(aLayer, aState) {
	if (typeof(aLayer)=='string') aLayer = getObject(aLayer);
    if (aLayer) {
	  	if (aLayer.style) {
			if (aState==vst_inherit) aLayer.style.visibility = 'inherit'
			else aLayer.style.visibility = (aState)?'visible':'hidden';
		} else {
			if (aState==vst_inherit) aLayer.visibility = 'inherit'
			else aLayer.visibility = (aState)?'show':'hide';
		}
		setLayerProps(aLayer);
	}
}

//---------------------------------------
function setLayerProps(aLayer) {
	if (typeof(aLayer)=='string') aLayer = getObject(aLayer);
	if (aLayer) {
		if (aLayer.style)  {  // ie
			var aVisible = (aLayer.style.visibility);
			if (aVisible=='visible') aVisible=true
			else if (aVisible=='hidden') aVisible=false
			else if (aVisible=='inherit') vst_inherit;
			aLayer.visible = aVisible;
			aLayer.zIndex  = aLayer.style.zIndex;
	  		aLayer.left	   = aLayer.style.pixelLeft;
	  		aLayer.top 	   = aLayer.style.pixelTop;
	  		aLayer.width   = aLayer.offsetWidth;
	  		aLayer.height  = aLayer.offsetHeight;
			aLayer.name	   = aLayer.id;
		} else {  // ns
			var aVisible = (aLayer.visibility);
			if (aVisible=='show') aVisible=true
			else if (aVisible=='hide') aVisible=false
			else if (aVisible=='inherit') vst_inherit;
			aLayer.visible  = aVisible;
	  		aLayer.width   = aLayer.clip.width;
	  		aLayer.height  = aLayer.clip.height;
		}
		aLayer.cPosX   = aLayer.left + parseInt(aLayer.width / 2);	
		aLayer.cPosY   = aLayer.top + parseInt(aLayer.height / 2);			
	}
}

//---------------------------------------
function setLayerZIndex(aLayer,newIndex) {
	if (typeof(aLayer)=='string') aLayer = getObject(aLayer);
	if (aLayer) {
  		if (aLayer.style) aLayer.style.zIndex = newIndex;
  		if (!aLayer.style) aLayer.zIndex = newIndex;
		setLayerProps(aLayer);
	}
}

//---------------------------------------
function pointInLayer(x,y,aLayer,tolerance) {
	if (typeof(aLayer)=='string') aLayer = getObject(aLayer);
	if (aLayer) {
		setLayerProps(aLayer);
		tolerance = (tolerance)?tolerance:100;
		var xTol = parseInt(((aLayer.width/100)*tolerance)/2);
		var yTol = parseInt(((aLayer.height/100)*tolerance)/2);
		if ((x>(aLayer.cPosX-xTol)) && (x<(aLayer.cPosX+xTol)) && (y>(aLayer.cPosY-yTol)) && (y<(aLayer.cPosY+yTol))) return true;
		return false;
	}
}

//---------------------------------------
function layerInLayer(aLayer,bLayer,tolerance) {
	if (typeof(aLayer)=='string') aLayer = getObject(aLayer);
	if (typeof(bLayer)=='string') bLayer = getObject(bLayer);
	if (aLayer && bLayer) {
		setLayerProps(aLayer);
		return pointInLayer(aLayer.cPosX,aLayer.cPosY,bLayer,tolerance);
	}
}

//------------------------------------------------------------
function getLayerList(aWindow) {
	if (!aWindow) aWindow = window;
	var layerList = new Array();
	if (aWindow.document.getElementsByTagName) {
		var layers = aWindow.document.getElementsByTagName('div');
		for (var i in layers) if ((typeof layers[i]) == 'object') layerList[layerList.length] = layers[i];
	} else if (aWindow.document.layers) {
	  	for (var i=0; i<aWindow.document.layers.length; i++) {
			layerList[layerList.length]=aWindow.document.layers[i];
		}
	}
	return layerList;
}


//------------------------------------------------------------
function getFrameDocumentsLoaded(aFrameList) {
	var frameNames=getFrameDocumentsLoaded.arguments;
	for (var i=0;i<frameNames.length;i++) {
		var thisFrame = getFrameObj(frameNames[i]);
		if (!(thisFrame && thisFrame.document && thisFrame.document.loaded)) return false;
	}
	return true;
}

//------------------------------------------------------------
function createButtonWithLayer(btnId, btnImage, imageCount) {
	var lyrName = btnId + 'Lyr';
	var content = getHltBtnTag(btnId, btnImage);
	var btnImage = createImage(btnImage);
	thisLayer = createLayer(lyrName, null, 0, 0, btnImage.width, null, content, null, 'hidden', 1);
	setLayerProps(thisLayer);
	window.hltButtons.add(btnId,imageCount);
	window.hltButtons.buttons[btnId].layer = thisLayer;
	return window.hltButtons.buttons[btnId];
}

//------------------------------------------------------------
//------------------------------------------------------------
//------------------------------------------------------------
//------------------------------------------------------------
function createTimeLineNotifys() {
	var i;
	if (typeof(MM_initTimelines)=='function') {
		if (document.MM_Time == null) MM_initTimelines();
	}		
	if (document.MM_Time) {
		for (i=0; i<document.MM_Time.length; i++) {
			var timeLine = document.MM_Time[i];
			//---------------------
			var newBehavior = new String("behavior");
			newBehavior.frame = timeLine.lastFrame;
			newBehavior.value = "timelineNotify('"+ timeLine.MM_Name + "','end');";
			timeLine[timeLine.length] = newBehavior;
			//---------------------
			newBehavior = new String("behavior");
			newBehavior.frame = 1;
			newBehavior.value = "timelineNotify('"+ timeLine.MM_Name + "','start');";
			timeLine[timeLine.length] = newBehavior;
		}
	}
}

//----------------------------------------------------------
function addBehaviour(timelineName, frame, code) {
  var timeLine = document.MM_Time[timelineName];
  var newBehavior = new String("behavior");
  newBehavior.frame = frame;
  newBehavior.value = code;
  timeLine[timeLine.length] = newBehavior;
}

//----------------------------------------------------------
function addEffects() {
/*
  if (is.ie) {
	  if (typeof(MM_initTimelines)=='function') {
		  if (document.MM_Time == null) MM_initTimelines();
		  for (i=0; i < document.MM_Time.length; i++) {
		   var timeline = document.MM_Time[i];
			for (j=0; j<timeline.length; j++) {
		      sprite = timeline[j];
		      if (sprite.charAt(0) == 's') {
		        if (sprite.obj && (sprite.obj.filters.length > 0)) {	  
				  for (k=0; k<sprite.values.length; k++) {
				    if (sprite.values[k].prop == 'visibility') {
					  for (l=0; l<sprite.keyFrames.length; l++) {
					    if (sprite.keyFrames[l] > 1) {
						  filterNum = sprite.values[k][l] == "visible"?0:1;
						  if (filterNum < sprite.obj.filters.length) {
  						  	addBehaviour(timeline.MM_Name, sprite.keyFrames[l]-1,"initTrans('"+timeline.MM_Name+"','"+sprite.obj.id+"',"+filterNum+");");    
					      	addBehaviour(timeline.MM_Name, sprite.keyFrames[l],"doTrans('"+timeline.MM_Name+"','"+sprite.obj.id+"',"+filterNum+");");    
						  }
						}
					  }
					  break;
					}
				  }
				}
			  }	
			}
		  }
	  }
  }
  */
}

//----------------------------------------------------------
function waitForFilter(timeLineName, objName, filterNr) {
  if (document.all[objName].filters[filterNr].status != 2)
    MM_timelinePlay(timeLineName)
  else
    setTimeout("waitForFilter('"+timeLineName+"','"+objName+"',"+filterNr+")",1000);
}

//----------------------------------------------------------
function initTrans(timeLineName, objName, filterNr) {
  document.all[objName].filters[filterNr].Apply();
}

//----------------------------------------------------------
function doTrans(timeLineName, objName, filterNr) {
  MM_timelineStop(timeLineName);
  document.all[objName].filters[filterNr].Play();
  waitForFilter(timeLineName,objName, filterNr);
}


//--------------------------------------------------------------------
function createAnchor(aStr) {
	result = aStr.toLowerCase();
	result = result.replace(/\&[a-z]+;/g,'');
	result = result.replace(/\ä/g,'');
	result = result.replace(/\ö/g,'');
	result = result.replace(/\ü/g,'');
	result = result.replace(/\ß/g,'');
    result = result.replace(/[^a-z0-9]/g,'');
	result = result.substring(0,40);
	return result;
}

//---------------------------------------
function routeLayerEvent(layerObj, eventName, handler) {
  if (is.ns) {
	  	if ((!layerObj.toCapture) && (layerObj.toCapture!=0)) layerObj.toCapture = 0;
		layerObj.toCapture = layerObj.toCapture | eval("Event."+eventName.substring(2).toUpperCase());
		layerObj.document.captureEvents(layerObj.toCapture);
		layerObj.document.layer = layerObj;
		layerObj.document[eventName] = new Function("e", handler+"(this.layer, createEvent(e));return false;");
	} else {
		layerObj[eventName] = new Function(handler+"(this,createEvent()); return false;");
	}
}


//---------------------------------------
function createEvent(obj) {
	var thisEvent = (window.event)?window.event:obj;
	if (is.ns) {
		thisEvent.clientX = thisEvent.pageX;
		thisEvent.clientY = thisEvent.pageY;
		thisEvent.keyCode = thisEvent.which;
	}
	return thisEvent;
}



//---------------------------------------
function debugMsg(aMsg) {
	var controlFrame = getFrameObj('controlFrame');
 	if (controlFrame && controlFrame.develop) {
		if (is.ns) {
			java.lang.System.out.println('DebugMsg: ' + aMsg);
		}
		if (is.ie) {
			if (!this.debugMessenger) this.debugMessenger = new newDebugMessenger(this);
			this.debugMessenger.add(aMsg);
		}
	}
}


//---------------------------------------
function showProps(object , inclValues, trenner) {
	var aStr = '';
	for (var i in object) {
		if (inclValues) {
			if (!trenner) trenner = '\n';
			if ((typeof object[i])=='function')	aStr += i + '=[funktion]' + trenner
			if ((typeof object[i])!='function')	aStr += i + '=' + object[i] + trenner;
		} else {
			if (!trenner) trenner = ',   ';
			aStr += i + trenner;
		}
	}
	alert(aStr);	
}

//---------------------------------------
function getCleanedPath(aPath) {
	var result = '';
	var splitted = aPath.split('/');
	if (splitted && splitted.length>1) {
		for (var i=0;i<splitted.length;i++) {
			if ((splitted[i]=='..') && (i>0)) {
				splitted[i]=null;
				splitted[i-1]=null;
				splitted = getNullDeletedList(splitted);
				i = 0;
			}
		}
		for (var i in splitted) {
			if (i>0) result += '/' + splitted[i]
			else result += splitted[i];
		}
	}
	return result;
}



//---------------------------------------
function formatPageId(pageName) {
	var result = '';
	if (pageName) {
		var splitted = pageName.split('_');
		if (splitted && (splitted.length>1)) {
			var path = splitted[1];
			for (var i=0;i<path.length;i=i+2) {
				var a = deleteBeginningChars(path.substr(i,2),'0');
				if (a) result += (i<(path.length-2))?a + '.':a;
			}
		}
	}
	return result;
}

//---------------------------------------
function deleteBeginningChars(aStr, aChar) {
	while (aStr && (aStr.length>0) && (aStr.substr(0,1)==aChar)) {
		aStr = aStr.substr(1,aStr.length);
	}
	return aStr;	
}


//---------------------------------------
function createInstanceProps(obj, constructor) {
	var constObj = eval(constructor);
	if (!constObj.instances) constObj.instances = new Array();
	obj.instanceId = constObj.instances.length;
	obj.instanceName = constructor + '.instances['+constObj.instances.length+']';
	constObj.instances[constObj.instances.length] = obj;
}


