var activateSpeechName = 'activateSpeech';
var deactivateSpeechName = 'deactivateSpeech';
var speechAreaName = "speechArea";

var isSpeechDeactivated = true;


function getElement(elementName) {
    if (document.getElementById(elementName)) {
    	return document.getElementById(elementName);
    }
}

function hideElement(elementID) {
    if (getElement(elementID)) {
    	getElement(elementID).style.visibility = 'hidden';
    }
}
function showElement(elementID) {
    if (getElement(elementID)) {
    	getElement(elementID).style.visibility = 'visible';
    }
}

function hideElementWithoutID(elementItself) {
  	elementItself.style.visibility = 'hidden';
}
function showElementWithoutID(elementItself) {
   	elementItself.style.visibility = 'visible';
}

function showAktionsboxLayer(currentElement) {
    var aktionsboxSmallContentElement = currentElement.parentNode;
	var layerElement = (aktionsboxSmallContentElement.nextSibling.nodeType==3)?aktionsboxSmallContentElement.nextSibling.nextSibling:aktionsboxSmallContentElement.nextSibling;
	layerElement.style.top = aktionsboxSmallContentElement.offsetTop;
	showElementWithoutID(layerElement);
}

function hideAktionsboxLayer (currentElement) {
	hideElementWithoutID(currentElement.parentNode.parentNode);
}

var noneFlashContent = "";

function saveNoneFlashContent(elementId)
{
    elementId   = (typeof elementId == "undefined") ? "flashcontent" : elementId;

	var divFlash = document.getElementById(elementId);
	if(divFlash) noneFlashContent = divFlash.innerHTML;
}

function setNoneFlashContent(elementId)
{
    elementId   = (typeof elementId == "undefined") ? "flashcontent" : elementId;

	var divFlash = document.getElementById(elementId);
	if(divFlash) divFlash.innerHTML = noneFlashContent;
}

function stopSpeechFileTemporary (itemID) {
   var ts = (new Date()).getTime();
   getElement(speechAreaName).innerHTML = "";
   return false;
}

function stopSpeechFile (itemID) {
   var type = 'innerHTML';
   var flashs = new Array("keyvisualmovie","keyvisualmovieaktionsbox");
   for(i=0;i<flashs.length;i++)
   { 
   		var elem = document.getElementById(flashs[i]);  
	   	if (elem) {
	   		try {
			   if (elem.GetVariable('jumpToEnd')==null ||
				   elem.GetVariable('jumpToEnd')=='undefined' ||
				   elem.GetVariable('jumpToEnd')!='true')
				   {
				   type = 'doNothing';
			       elem.SetVariable('soundStatus', 'true');
			       
			   }
			} catch (err) {
			   type = 'doNothing';
		       elem.SetVariable('soundStatus', 'true');
			}
		}
	}

   var ts = (new Date()).getTime();
   doAsyncAjaxCall('../../menu/' + itemID + '_pdeactivateSpeech_yno/index-' + ts + '.html', getElement(speechAreaName), type);
   hideElement(deactivateSpeechName);
   showElement(activateSpeechName);
   isSpeechDeactivated = true;
   setNoneFlashContent();

   return false;
}

function startSpeechFile (itemID) {
   var type = 'innerHTML';
   var flashs = new Array("keyvisualmovie","keyvisualmovieaktionsbox");
   for(i=0;i<flashs.length;i++)
   { 
   		var elem = document.getElementById(flashs[i]);
	   if (elem) {    
	   		try {
			   if (elem.GetVariable('jumpToEnd')==null ||
				   elem.GetVariable('jumpToEnd')=='undefined' ||
				   elem.GetVariable('jumpToEnd')!='true')
				   {
				   type = 'doNothing';			   
			       elem.SetVariable('soundStatus', 'false');		       		       
			   }
			} catch (err) {
			   type = 'doNothing';
		       elem.SetVariable('soundStatus', 'false');
			}
		}
	}

   var ts = (new Date()).getTime();
   doAsyncAjaxCall('../../menu/' + itemID + '_pactivateSpeech_yno/index-' + ts + '.html', getElement(speechAreaName), type);
   hideElement(activateSpeechName);
   showElement(deactivateSpeechName);
   isSpeechDeactivated = false;

   return false;
}

function replayFlashVideo() {
	// Sprechertext ausschalten, falls er laeuft; dies ist dann der Fall, wenn das Flashvideo mit "jumpToEnd=true" gestartet wurde
	getElement(speechAreaName).innerHTML = "";
	// Parameter "jumpToEnd" im Flash zuruecksetzen, damit beim Starten/Stoppen des Sounds das Flash angesteuert wird und nicht der Sprechertext
	if (document.keyvisualmovie) {
   		try {
			document.keyvisualmovie.SetVariable('jumpToEnd', 'false');
		} catch (err) {
		}
	}
}


// MouseOver für Aktionsbox
function showWMTT(id) {
	Spry.Effect.AppearFade(id, {duration: 500, from: 0, to: 80, toggle: false});
//    Spry.Effect.Slide(id, {duration: 1000, from: '588px', to: '294px', toggle: true});
	showElement(id);
}
function hideWMTT(id) {
	Spry.Effect.AppearFade(id, {duration: 500, from: 80, to: 0, toggle: false});
	hideElement(id);
}



/********************************
 * Funktionen für AJAX Zugriffe *
 ********************************/
function createXMLHttp() {
   if (typeof XMLHttpRequest != 'undefined') {
      return new XMLHttpRequest();
   } else if (window.ActiveXObject) {
      var avers = ["Microsoft.XmlHttp", "MSXML2.XmlHttp","MSXML2.XmlHttp.3.0", "MSXML2.XmlHttp.4.0","MSXML2.XmlHttp.5.0"];
      for (var i = avers.length -1; i >= 0; i--) {
         try {
            httpObj = new ActiveXObject(avers[i]);
            return httpObj;
         } catch(e) {
         }
      }
   }
   return false;
}

function doAsyncAjaxCall (url, obj, type) {
   var separator = "?";
   var ind = url.indexOf ("?");
   if (ind >= 0) {
      separator = "&";
   }
   url += separator + "ContentType=text/html";
   callAjax (url, true, obj, type);
}

function doSyncAjaxCall (url) {
   return callAjax (url + "?ContentType=text/plain", false);
}

function callAjax (url, doAsynchronous, obj, type) {
//alert ("doing " + ((doAsynchronous)?"a":"") + "synchronous AJAX call '" + url + "', type='" + type + "'");
   if (!type) {
      type = "innerHTML";
   }
   try {
      var xmlHttp = createXMLHttp();
      if (xmlHttp) {
         xmlHttp.open('GET', url, doAsynchronous);
         xmlHttp.setRequestHeader("enctype", "application/x-www-form-urlencoded");
         if (doAsynchronous) {
            xmlHttp.setRequestHeader("Content-Type", "text/html");
            xmlHttp.setRequestHeader("Pragma", "no-cache");
            xmlHttp.setRequestHeader("Cache-Control", "no-cache, must-revalidate");
            xmlHttp.onreadystatechange = function () {
               if (xmlHttp.readyState == 4) {
//alert ("retrieved answer for async AJAX call '" + url + "': " + xmlHttp.responseText);
                  if (type == 'innerHTML') {
                     obj.innerHTML = xmlHttp.responseText.replace(/ +/g, ' ').replace(/^\s+/g, '').replace(/\s+$/g, '');  // = "trim()", replaced it since the Praxisvermittlung had a problem to call "trim()"
                  } else if (type == 'getInnerHTML') {
                     return xmlHttp.responseText;
                  }else if (type == 'doNothing') {
                     // do nothing, just hope that this call did what it should have done
                  }else if (type == 'getInfoText') {
                     laodInfoText(obj, xmlHttp.responseText);
                  }else if (type == 'getGlossarContent') {
                     getGlossarContent(obj, xmlHttp.responseText);
                  }else if (type == 'ideenbox') {
                	  setIdeenboxContent(obj, xmlHttp.responseText);
                  }
               }
            };
         } else {
            xmlHttp.setRequestHeader("Content-Type", "text/plain");
         }
         xmlHttp.send(null);
      }
      if (!doAsynchronous) {
         var retStr = trim(xmlHttp.responseText);
//alert ("xml=" + xmlHttp.responseXML.xml)
//alert ("retrieved answer for sync AJAX call '" + url + "': '" + retStr + "'");
         return retStr;
      }
   } catch(except) {
      alert ("Error: " + except.toString());
      return false;
   }
}





/* SEARCH functions */
var bIsSearching  = false;
function setIsSearching(bState) {
	bIsSearching = bState;
}

function submitSearchForm (formname) {
	if (!formname) {
		formname = "search";
	}
	searchForm = document.forms[formname];
	if (checkSearchForm(formname)) {
		searchTermValue = searchForm.SEARCHTERM.value;
		while (searchTermValue.search(/_/)!=-1) {
		      searchTermValue = searchTermValue.replace(/_/,String(" "));
		}
		searchForm.SEARCHTERM.value=searchTermValue;
		searchForm.submit();
	}
	return false;
}

function checkSearchForm(formname) {
	if (!formname) {
		formname = "search";
	}
	searchForm = document.forms[formname];
	var conf = true;
	if (searchForm.SEARCHTERM.value.length < 3) {
		alert("Bitte geben Sie beim Suchbegriff mindestens 3 Zeichen ein!");
		searchForm.SEARCHTERM.focus();
		return false;
	}
	if (bIsSearching) {
		conf = !confirm("Sie suchen bereits. Moechten Sie das Suchergebnis nicht abwarten? (OK fuer Abwarten)");
	}
	setIsSearching(true);
	return conf;
}

function submitHiddenSearchForm (searchaction, searchterm) {
	hiddenSearchForm = document.forms["hiddenSearchform"];
	hiddenSearchForm.action = searchaction;
	hiddenSearchForm.elements["hiddenSearchterm"].value=searchterm;
	hiddenSearchForm.submit();
}


/*****************************
 * functions for print page **
 ****************************/
function OpenPrintWindow (Address) {
    MyWindow = window.open(Address, "SecondWindow", "width=550,height=900, scrollbars=yes, resizable=yes, menubar=yes ");
    MyWindow.focus();
}

function OpenSmallPrintWindow (Address) {
    MyWindow = window.open(Address, "SecondWindow", "width=390,height=550, scrollbars=no, resizable=yes, menubar=yes, left=200px, top=100px ");
    MyWindow.focus();
}

    function getContent(layerToPrint){

    	if(!layerToPrint || layerToPrint == "") layerToPrint = "printablearea";
        var source = top.opener.document;
        var destination = document;
        destination.getElementById("PrintPageInnerContent").innerHTML = source.getElementById(layerToPrint).innerHTML;

        var formsInSource = source.forms;
        var formsInDestination = destination.forms;
        for (var i=0; i<formsInSource.length; i++) {

            var currentFormInSource = formsInSource[i];
            var currentFormInDestination = formsInDestination[currentFormInSource.name];
            if (currentFormInDestination != null) {

                var elementsInSource = currentFormInSource.elements;
                for (var j=0; j<elementsInSource.length; j++) {

                    var currentElementInSource = elementsInSource[j];
                    var elementValue = getFormValue(currentFormInSource, currentElementInSource.name);
                    setFormValue(currentFormInDestination, currentElementInSource.name, elementValue);

                }
            }
        }
    }

    function getFormValue(form, fieldname) {

        var returnValue = new Array();
        if (form.elements[fieldname]) {
            for (var j = 0; j < form.length; j++) {
                var currentElement = form.elements[j];
                //alert(currentElement.type);
                if (currentElement.name == fieldname) {
                    if ((currentElement.type == "text") ||
                        (currentElement.type == "textarea") ||
                        (currentElement.type == "hidden") ||
                        (currentElement.type == "password") ) {

                        returnValue[returnValue.length] = currentElement.value;
                    } else if ((currentElement.type == "radio") ||
                         (currentElement.type == "checkbox") ){
                        if (currentElement.checked) {
                            returnValue[returnValue.length] = currentElement.value;
                        }
                    } else if ((currentElement.type == "select-multiple") ||
                                (currentElement.type == "select-one") ||
                                (currentElement.type == "select") ){
                        for (var i = 0; i < currentElement.options.length; i++) {
                            if (currentElement.options[i].selected) {
                                returnValue[returnValue.length] = currentElement.options[i].value;
                            }
                        }
                    }
                }
            }
        }
        return returnValue;
    }

    function setFormValue(form, fieldname, fieldvalue) {

       if (form.elements[fieldname]) {
          for (var j = 0; j < form.length; j++) {
             var currentElement = form.elements[j];
             //alert(currentElement.type);
             if (currentElement.name == fieldname){
                if ((currentElement.type == "text") || (currentElement.type == "textarea") || (currentElement.type == "hidden") || (currentElement.type == "password")) {
                    currentElement.value = fieldvalue[0];
                }else if ((currentElement.type == "radio") || (currentElement.type == "checkbox")){
                    if (currentElement.value == fieldvalue[0]) {
                        currentElement.checked = true;
                    }
                } else if ((currentElement.type == "select-multiple") ||(currentElement.type == "select-one") ||(currentElement.type == "select")){

                    for (var i = 0; i < currentElement.options.length; i++) {
                        if (arrayContainsValue(fieldvalue, currentElement.options[i].value)) {
                            currentElement.options[i].selected = true;
                        }
                    }
                }
             }
          }
       }
    }

    function arrayContainsValue (arr, val) {
        for (var i=0; i<arr.length; i++) {
            if(arr[i] == val) {
                return true;
            }
        }
        return false;
    }




/******************************************************
 * functions for pics with magnifier glass in content *
 *****************************************************/

var zindex = 10;
var isCurrentlyFadingIn = false;
var isCurrentlyFadingOut = false;

function showBigImage(ind) {
//	if (!isCurrentlyFadingIn) {
//		isCurrentlyFadingIn = true;

		getElement('image' + ind + 'big').parentNode.style.zIndex = ++zindex;
		showElement('image' + ind + 'big');
		hideElement('image' + ind + 'small');

//		window.setTimeout("isCurrentlyFadingIn=false;", 400);
//		Spry.Effect.AppearFade('image' + ind + 'big', {duration: 400, from: 0, to: 100, toggle: false});
//		Spry.Effect.AppearFade('image' + ind + 'small', {duration: 400, from: 100, to: 0, toggle: false});
//	}
}

function hideBigImage(ind) {
//	if (!isCurrentlyFadingOut) {
//		isCurrentlyFadingOut = true;

		showElement('image' + ind + 'small');
		hideElement('image' + ind + 'big');

//		window.setTimeout("isCurrentlyFadingOut=false;", 400);
//		Spry.Effect.AppearFade('image' + ind + 'big', {duration: 400, from: 100, to: 0, toggle: false});
//		Spry.Effect.AppearFade('image' + ind + 'small', {duration: 400, from: 0, to: 100, toggle: false});
//	}
}

function showImageBigInContent(id) {
	if (!isCurrentlyFading) {
		isCurrentlyFading = true;

		showElement('image' + ind + 'small');
		hideElement('image' + ind + 'big');

		window.setTimeout("isCurrentlyFading=false;", 400);
		Spry.Effect.AppearFade(id, {duration: 400, from: 0, to: 100, toggle: false});
	//    Spry.Effect.Slide(id, {duration: 1000, from: '588px', to: '294px', toggle: true});
		showElement(id);
	}
}
function hideImageBigInContent(id) {
	if (!isCurrentlyFading) {
		isCurrentlyFading = true;
		window.setTimeout("isCurrentlyFading=false;", 400);
		Spry.Effect.AppearFade(id, {duration: 400, from: 100, to: 0, toggle: false});
		hideElement(id);
	}
}

/*  AXA Redirect POPUP */
function callAXARedirectPopup(url, height, width, toolbar, herkunftID, aktionsCode) {
	if (herkunftID==null)	herkunftID = '-1';
	if (aktionsCode==null)	aktionsCode = '';

	var Args = eval("'"+"width="+width+", height="+height+", toolbar="+toolbar+", location=0,directories=0,status=1,menubar=0,scrollbars=1,resizable=1"+"'");
	m_window = window.open('http://www.axa.de/servlet/PB/menu/-1_eAXAWEB-POPUP-REDIRECT/index.html?ID='+url+'&PARTNER=DAEV', 'm_window', Args);
	m_window.focus;
	if (m_window.opener == null) {
		m_window.opener = self;
		m_window.focus;
		}
}

function callDaefWithoutSpeech(itemID) {
	stopSpeechFile(itemID);
	var url = "";
	// spaeter soll der aktuelle Soundstatus (an/aus) an die DAEF weitergegeben werden
	// url= "http://www.aerzte-finanz.de/servlet/PB/menu/-1_pdeactivatespeech/index.html"
    window.open(url, "daef");
    return true;
}

function writeSwf(swfname, id, height, width, version) {
	var ind = swfname.indexOf(".swf");
	if (ind >= 0) {
		swfname = swfname.substring(0, ind) + swfname.substring(ind+4);
	}
	var installedVer = deconcept.SWFObjectUtil.getPlayerVersion();
	var swfnameWithoutParams = swfname.indexOf("?")>=0?swfname.substring(0, swfname.indexOf("?")):swfname;
	if (installedVer.versionIsValid(version)) {
		AC_FL_RunContent(
			'codebase', 'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,0,0',
			'width', width,
			'height', height,
			'src', swfname,
			'quality', 'high',
			'pluginspage', 'http://www.macromedia.com/go/getflashplayer',
			'align', 'middle',
			'play', 'true',
			'loop', 'true',
			'scale', 'showall',
			'wmode', 'opaque',
			'devicefont', 'false',
			'id', 'keyvisualmovie',
			'bgcolor', '#f2da04',
			'name', swfnameWithoutParams,
			'menu', 'true',
			'allowFullScreen', 'false',
			'allowScriptAccess','sameDomain',
			'movie', swfname,
			'salign', '',
			'destinationid', id
			); //end AC code
	}
}

function getFlashMovieObject(movieName)
{
  if (window.document[movieName])
  {
      return window.document[movieName];
  }
  if (navigator.appName.indexOf("Microsoft Internet")==-1)
  {
    if (document.embeds && document.embeds[movieName])
      return document.embeds[movieName];
  }
  else // if (navigator.appName.indexOf("Microsoft Internet")!=-1)
  {
    return document.getElementById(movieName);
  }
}

// ------------------------------
// -- Test String Chars/Length --
// ------------------------------
function testString(string, check, lang)
{
  if (lang)
    if ((string.length)<lang)
      return false;

  for (i=0; i<string.length; i++)
  {
    if (check.indexOf(string.charAt(i))==-1)
    return false;
  }
  return true;
}

/**
* Methode um automatisch mit setzen eines Radio oder Checkbox
* ein Radio oder eine Checkbox zu setzen.
* Methode ueberprueft, ob das das Element true ist.
*/
function setRadio (checkedElement, elementToBeSet) {
	if (checkedElement) {
		elementToBeSet.checked = true;
	} else {
		elementToBeSet.checked = false;
	}
}
/**
* Prueft, ob fuer den Bedarfsfilter eine Fachrichtung ausgewaehlt ist
* und schickt das Formular ab.
*
*/
function submitBedarfsfilter(res)
{
	if(res)
	{
		document.forms.bedarfsfilter.bedarf_aus.value = 'true';
		document.forms.bedarfsfilter.submit();
	}
	else
	{
		if(document.forms.bedarfsfilter.fachbereich.selectedIndex == 0) alert("Bitte wählen Sie auch eine Fachrichtung aus.");
		else
		{
			if(document.forms.bedarfsfilter.phase.selectedIndex != 0)
			{
				document.forms.bedarfsfilter.bedarf_an.value = 'true';
				document.forms.bedarfsfilter.submit();
			}
		}
	}
}

/**
* Prueft, ob fuer den Bedarfsfilter eine Fachrichtung ausgewaehlt ist
* und schickt das Formular ab.
*
*/
function checkBedarfsfilter(idx)
{
	if(idx != 0)
	{
		populatePhase(document.forms.bedarfsfilter.fachbereich.options[idx].value);
		if(document.forms.bedarfsfilter.phase.selectedIndex != 0)
		{
			document.forms.bedarfsfilter.bedarf_an.value = 'true';
			document.forms.bedarfsfilter.submit();
		}
	}
}

/**
* Setzt die korrekten Texte fuer die Bedarfsfilter Selectbox Phase
*
*/
function populatePhase(fachbereich)
{
	fachbereich--;

	texte = new Object(2);
	texte[0] = new Array(5);
	texte[1] = new Array(5);

	texte[0][0] = "Student";
	texte[0][1] = "Assistenzarzt";
	texte[0][2] = "Angestellter Arzt";
	texte[0][3] = "Praxisgr\u00fcnder";
	texte[0][4] = "Niedergelassener Arzt";

	texte[1][0] = "Zahnmedizinstudent";
	texte[1][1] = "Assistenzzahnarzt";
	texte[1][2] = "Angestellter Zahnarzt";
	texte[1][3] = "Zahnarztpraxisgr\u00fcndung";
	texte[1][4] = "Niedergelassener Zahnarzt";

	var phase = document.forms.bedarfsfilter.phase;

	for(i=0;i<texte[fachbereich].length;i++)
	{
		phase.options[i+1].text = texte[fachbereich][i];
	}
}


function writeTracking(trackme) {
	var hash = "";
	while(hash.length < 20) {
		var rnd = Math.round(Math.random()*9);
		hash += ""+rnd;
	}
	trackme = trackme.replace(/\[IDENTIFIER\]/g, hash);
	document.getElementById("track").innerHTML=trackme;
}
function changeBackground(elem,index)
{
	var color = new Array(2);
	color[0] = "#cce3f1";
	color[1] = "#e8eced";
	color[2] = "#0072ba";
	color[3] = "#505050";
	color[4] = "underline";
	color[5] = "none";
	elem.style.backgroundColor = color[index];
	//elem.childNodes[0].style.color = color[index+2];
	//elem.childNodes[0].style.textDecoration = color[index+4];
}
function changeDropdownSize(elem,size)
{
	if(elem.size == 1) elem.size=size;
	else elem.size = 1;
}
function showAktionsboxLayer2(currentElement,name) {
	var layerElement = document.getElementById(name);
    showElementWithoutID(layerElement);
}
function hideAktionsboxLayer2(currentElement,name) {
	var cElem = document.getElementById(name);
    hideElementWithoutID(cElem);
}
function printLayer(name)
{
	var cLayer = document.getElementById(name);
	if(cLayer)
	{
		var cFenster = window.open('about:blank','Box','width=375,height=500,toolbar=no,statusbar=0,menubar=yes');
		cFenster.document.write("<html><head><title>Weiterbildungsplaner Ärzteversicherung</title></head><body >"+
								"<link rel='stylesheet' type='text/css' href='/daev2007/css/daev2007.css'>"+
								"<style type='text/css'>#SeiteDrucken{display:none;}</style>"+
									cLayer.innerHTML+
									"<a href='javascript:window.print();'>print</a>"+
									"</body></html>");

	}
}
/**
 * neue Funktion zur Einbindung von swf ueber SWFObject
 * @return true, wenn Flashcontent geschrieben worden ist (flash aktiviert), sonst false
 */
function addFlash(pfad, id, width, height, div, params)
{
	var fo = new SWFObject(pfad, id, width, height, "8", "#FFFFFF");
	fo.addParam("scale", "noscale");
	fo.addParam("allowScriptAccess", "always");	
	fo.addParam("WMODE", "opaque");	
	fo.addParam("wmode", "opaque");	
	fo.addVariable("wmode", "opaque");	
	fo.addVariable("videoPath", "videos/");

	if(params != null)
	{
		for(var key in params)
		{
			fo.addParam(key,params[key]);
		}
	}
	var ok = fo.write(div);
	if(ok) stopSpeechFileTemporary(0); 
	return ok;
}


function checkFlashCookie(key)
{
    var c = document.cookie;
    var datum = new Date();
    var millis = datum.getTime();
    var millisTag = 1000*60*60*24;
    datum.setTime(millis+millisTag);
    var domainPath = ';path=/';
    if(!key) key = "flash";

    if(c)
    {
    	var regex1 = new RegExp("^.*"+key+"=([0-9]+).*$");
    	regex1.exec(c);
    	var ts = RegExp.$1;
    	if(!ts) ts = "";
        //var ts = c.replace(/^.*flash=([0-9]+).*$/, "$1"); // rausgenommen, damit Regex dynamisch gesetzt werden kann
        //alert("cookie:"+c+"\nts: "+ts);

        /* wenn laenger als 24 Stunden her oder key nicht vorhanden */
        if(!ts.match(/^[0-9]+$/) || parseInt(ts)-millis > millisTag )
        {
            // cookie neu setzen
            //alert("aelter als 24 studnen, ts: "+ts+"\nmillis: "+millis+"\nDiff: "+(parseInt(ts)-millis)+"\nmillisTag: "+millisTag);
            document.cookie = key+"="+millis+";expires="+datum.toGMTString()+domainPath;
            return true;
        }
        else
        {
            //alert("nich aelter");
            return false;
        }
    }
    else
    {
        document.cookie = key+"="+millis+";expires="+datum.toGMTString()+domainPath;
        return true;
    }
}

function hasRequestParam(param) {

    // querystring aus URL
    var querystring = decodeURI(window.location.search);

    // irgendein querystring gesetzt?
    if (querystring == '') {
        return false;
    }

    // fuehrendes Fragezeichen abschneiden
    querystring     = querystring.slice(1);

    // parameter extrahieren
    var parameters  = querystring.split('&');

    // pruefe, ob uebergebener Parameter in Parameterliste
    for (var i = 0; i < parameters.length; ++i) {
        if (parameters[i] == param ||
                parameters[i].substring(0, parameters[i].indexOf('=')) == param) {
            return true;
        }
    }

    return false;
}

function selectAntwort(index)
{
	var antwort = document.getElementsByName("antwort");
	if(antwort) antwort[index].checked = true;
}
/*
Diese Funktion erwartet vier Parameter:
- a: gibt an, welche Aktion die Funktion ausführen soll.
- o: das Objekt, auf das die Aktion angewandt wird.
- c1: der Name der ersten Klasse
- c2: der Name der zweiten Klasse

Mögliche Aktionen sind:
- swap: tauscht Klasse c1 gegen Klasse c2 aus.
- add: fügt Klasse c1 dem Objekt o hinzu.
- remove: löscht Klasse c1.
- check: prüft, ob Klasse c1 schon dem Objekt o hinzugefügt wurde und gibt true oder false zurück.
*/

function jscss(a,o,c1,c2) {
	switch (a){
		case 'swap':
			o.className=!jscss('check',o,c1)?o.className.replace(c2,c1):o.className.replace(c1,c2);
		break;
		case 'add':
			if(!jscss('check',o,c1)){o.className+=o.className?' '+c1:c1;}
		break;
		case 'remove':
			var rep=o.className.match(' '+c1)?' '+c1:c1;
			o.className=o.className.replace(rep,'');
		break;
		case 'check':
			return new RegExp('\\b'+c1+'\\b').test(o.className)
		break;
	}
}

function addClass (elem, name) {
	jscss('add', elem, name);
}

function removeClass (elem, name) {
	jscss('remove', elem, name);
}
function getElement(elementName) {
    if (document.getElementById(elementName)) {
    	return document.getElementById(elementName);
    }
}

function hideElement(elementID) {
    if (getElement(elementID)) {
    	getElement(elementID).style.visibility = 'hidden';
    }
}
function showElement(elementID) {
    if (getElement(elementID)) {
    	getElement(elementID).style.visibility = 'visible';
    }
}

function hideElementWithoutID(elementItself) {
  	elementItself.style.visibility = 'hidden';
}
function showElementWithoutID(elementItself) {
   	elementItself.style.visibility = 'visible';
}
/**
* Glossar
*/

var SEARCHMODE_SEARCH_FOR_STARTSWITH = 1;
var SEARCHMODE_SEARCH_FOR_CONTAINS = 2;
var SEARCHMODE_SEARCH_FOR_STARTSWITH_OR_CONTAINS = 3;

var GLOSSAR_LAYER_ID = "glossarlayer";
var GLOSSAR_DESCRIPTION_ID = "glossardescription";

var isGlossarShown = false;

var currentGlossarEntry; 

function getGlossarDescription(itemID) {
	
	var glossarDescription = document.getElementById(GLOSSAR_DESCRIPTION_ID);
	
	if(glossarDescription &&
	   glossarDescription.style.display == 'none'){		
		
		glossarDescription.style.display = 'block';
	}
	
   doAsyncAjaxCall('../../menu/' + itemID + '_eDAEV2007-GLOSSAR-CONTENT_yno/index.html', getElement(GLOSSAR_DESCRIPTION_ID));
   hiliteGlossarEntries(itemID);
}

function hiliteGlossarEntry (itemID, prefix) {
	var elem = getElement(prefix + itemID);
	if (elem) addClass (elem, "glossar-link-hi");

	elem = getElement(prefix + currentGlossarEntry);
	if (elem) removeClass (elem, "glossar-link-hi");
}

function hiliteGlossarEntries (itemID) {
	hiliteGlossarEntry (itemID, "link_div1_");
	hiliteGlossarEntry (itemID, "link_div2_");
	hiliteGlossarEntry (itemID, "top_");

	currentGlossarEntry = itemID;
}

function glossarOpenEditCenter(itemID, languageID) {
    var openEc2k = true;
    if(typeof(qeRunning)!="undefined" && qeRunning == true) {
      openEc2k = confirmEntityString("Die Seite befindet sich momentan im Quick Edit Modus. Es wird empfohlen, den Quick Edit Modus zun&#228;chst zu beenden, bevor Sie das Edit Center 2000 starten. Wollen Sie trotzdem das Edit Center starten?");
    }
    if(openEc2k) {
      return pbappOWin(top,'../../menu/-1_xlogin_eactivex-edit_pframe/index.html?ID='+itemID+'&LANGUAGE-ID='+languageID,'PBWEBEDIT',795,575, false,'toolbar=no,directories=no,status=no,scrollbars=yes,menubar=no,resizable=yes');
    }

}

function startGlossarSearch() {
	// this function is current not needed
  	//var searchstr = document.forms['glossar'].searchstr.value;
	var searchstr = "";

//  	parseGlossarBlock ("glossar-divTop", searchstr, SEARCHMODE_SEARCH_FOR_STARTSWITH_OR_CONTAINS);
  	//var divTopEntries = getElement("glossar-divTop");
  	//var div1 = getElement("glossar-div1");
  	var div2 = getElement("glossar-div2");
  	if (searchstr.length > 0) {
    	//divTopEntries.style.display = 'none';
    	//div1.style.display = 'block';
    	div2.style.display = 'block';
  	} else {
    	//divTopEntries.style.display = 'block';
    	//div1.style.display = 'none';
    	div2.style.display = 'block';
  	}

  	//parseGlossarBlock (div1, searchstr, SEARCHMODE_SEARCH_FOR_STARTSWITH);
  	parseGlossarBlock (div2, searchstr, SEARCHMODE_SEARCH_FOR_CONTAINS);
}

function parseGlossarBlock (divElement, searchstr, searchMode) {
  	searchstr = searchstr.toLowerCase();
  	var nodes = divElement.childNodes;
  	var counter = 0;
  	for (var i=0; i<nodes.length; i++) {
    	if (nodes[i].nodeType == 1) {
      		if (
        		(searchMode == SEARCHMODE_SEARCH_FOR_STARTSWITH && nodes[i].childNodes[0].childNodes[0].childNodes[0].nodeValue.toLowerCase().indexOf(searchstr) == 0) ||
        		(searchMode == SEARCHMODE_SEARCH_FOR_CONTAINS && nodes[i].childNodes[0].childNodes[0].childNodes[0].nodeValue.toLowerCase().indexOf(searchstr) > 0) ||
        		(searchMode == SEARCHMODE_SEARCH_FOR_STARTSWITH_OR_CONTAINS && nodes[i].childNodes[0].childNodes[0].childNodes[0].nodeValue.toLowerCase().indexOf(searchstr) >= 0) ||
        		(searchstr.length == 0)
      			) {
        		nodes[i].style.display = 'block';
        		counter++;
      		} else {
        		nodes[i].style.display = 'none';
      		}
    	}
  	}
  	if (counter == 0) {
  		divElement.style.display = 'none';
  	}
}


function setGlossarFocus() {
	document.getElementById("searchstr").focus();
}

function showGlossarLayer(){

	var glossar_url = "../../menu/-1_eDAEV2007-GLOSSAR_yno/index.html";	

	var glossarlayer = document.getElementById(GLOSSAR_LAYER_ID);
	
	if(glossarlayer && isGlossarShown == false){
	
		glossarlayer.style.display = 'block';
		isGlossarShown = true;
	
		// Es wird auf EMPTY geprueft, um den Content nur einmal laden zu müssen.
		if(glossarlayer.innerHTML.indexOf("<!-- EMPTY -->") != -1){
			doAsyncAjaxCall (glossar_url, glossarlayer, "getGlossarContent");
		}
	}
}

function hideGlossarLayer(){

	var glossarlayer = document.getElementById(GLOSSAR_LAYER_ID);
	
	if(glossarlayer){			
		glossarlayer.style.display = 'none';
		isGlossarShown = false;
	}
}



function getGlossarContent(layer, content){
	
	var PREFIX_START ="<!-- GLOSSARCONTENT START -->";
	var PREFIX_END ="<!-- GLOSSARCONTENT END -->";
	
	layer.innerHTML = filterContent(content, PREFIX_START, PREFIX_END); 
	
	startGlossarSearch();

}

var infoText = new Array();
var INFOTEXT_LAYER_ID = "infotextlayer";
var INFOTEXT_IMAGE = "<img class='infotext-i' src='/daev2007/images/infotext-i.gif' border ='0' onmouseover='openInfoText(this.parentNode);' onmouseout='closeInfoText();'>";

// this methode start the AJAX call to get content for an infotext layer
function openInfoText(elem){
	
	if(elem){
		
		setInfoTextLayerPos(elem);
	
		var URL = "../../menu/-1_eDAEV2007-INFOTEXT_yno/index.html";
		
		var TAG_PREFIX = "tag_";
		var tag = elem.className;
		
		var classtagposstart = tag.indexOf(TAG_PREFIX);
		var classtagposend   = -1;
		
		if(classtagposstart > -1){
			classtagposstart = classtagposstart + TAG_PREFIX.length;
			classtagposend = tag.substr(classtagposstart).indexOf(" ");
		}
		
		if(classtagposstart == -1 && classtagposend == -1){
			tag = elem.innerHTML;
			
			var imgpos = tag.lastIndexOf("<");
			
			if (imgpos != -1)
				tag = tag.substr(0, imgpos);
			
		} else if (classtagposend == -1 || classtagposend < classtagposstart){
			tag = tag.substr(classtagposstart);
		} else {
			tag = tag.substr(classtagposstart, (classtagposend - classtagposstart));
		}
		
		tag = tag.toLowerCase();
		
		var content = "";
		
		if(infoText[tag] != null){
			laodInfoText(tag, infoText[tag]);
		} else {
			tag = escape(tag);
			doAsyncAjaxCall (URL + "?tag=" + tag, tag, "getInfoText");
		}
	}
}

// fill in content into the infotext layer. 
// methode is call, if AJAX call get content
function laodInfoText(tag, content){
	
	if(infoText[tag] == null && content.length > 0) infoText[tag] = content;
	
	var PREFIX_START 	="<!-- INFOTEXT START -->";
	var PREFIX_END 		="<!-- INFOTEXT END -->";
	
	content = filterContent(content, PREFIX_START, PREFIX_END); 
	
	var infotextlayer = document.getElementById(INFOTEXT_LAYER_ID);
	
	if(infotextlayer)
		infotextlayer.innerHTML = content;
	
	showInfoTextLayer();

}

function showInfoTextLayer(){

	var infotextlayer = document.getElementById(INFOTEXT_LAYER_ID);
	
	if(infotextlayer)
		infotextlayer.style.display = 'block';
}

function closeInfoText(){

	var infotextlayer = document.getElementById(INFOTEXT_LAYER_ID);
	
	if(infotextlayer)
		infotextlayer.style.display = 'none';
}

function setInfoTextLayerPos(elem){
	
	var infotextlayer = document.getElementById(INFOTEXT_LAYER_ID);
	var restlayer     = document.getElementById("rest");
			
	if(infotextlayer){
		
		var fixhight = 12;
		
		if(checkBrowserName("MSIE")){
			fixhight = 0;
		}
						
		var elemTop = getElementTop(elem, "HP");
		var elemLeft = getElementLeft(elem, "HP");
		
		if(restlayer){
			
			var restTop = getElementTop(restlayer, "HP");
			
			if((elemTop - restTop) > 70)
				elemTop = elemTop - 70;
			
				if(checkBrowserName("MSIE")){
					elemTop = elemTop + 15;
				}
			else
				elemTop = elemTop + fixhight;
			
			var restLeft = getElementLeft(restlayer, "HP");
			
			if((elemLeft - restLeft) > 100)
				elemLeft = elemLeft - 100;
		} else {
			
			elemTop = elemTop + fixhight;
		}

		infotextlayer.style.top = elemTop;
		infotextlayer.style.left = elemLeft;
	}
}

// Get a part of a string between two prefix
function filterContent(content, startprefix, endprefix){
	
	var pos_start = content.indexOf(startprefix);
	var pos_end = content.indexOf(endprefix);
	
	if(pos_start == -1) pos_start = 0;
	else pos_start = pos_start + startprefix.length;
		
	if(pos_end == -1) pos_end = content.length;
	
	var contentlength = pos_end - pos_start
	
	return content.substr(pos_start, contentlength);
}

//Get the hole left span for an element
function getElementLeft(elem, stopelem) {

	if(elem){
		var xPos = elem.offsetLeft;
		var tempEl = elem.offsetParent;
  		while (tempEl != null) {
  		
  			if(stopelem != null && (tempEl.className == stopelem || tempEl.id == stopelem)) break;
  		
  			xPos += tempEl.offsetLeft;
	  		tempEl = tempEl.offsetParent;
  		}
		return xPos;
	} else {
		return 0;
	}
}

// Get the hole top span for an element
function getElementTop(elem, stopelem) {

	if(elem){
		var yPos = elem.offsetTop;
		var tempEl = elem.offsetParent;
		while (tempEl != null) {
		
			if(stopelem != null && (tempEl.className == stopelem || tempEl.id == stopelem)) break;
		
  			yPos += tempEl.offsetTop;
	  		tempEl = tempEl.offsetParent;
  		}
		return yPos;
	} else {
		return 0;
	}
}

function initInfoText(){
	
	$(".infotext").append(INFOTEXT_IMAGE);
}

// checking methode for browser agents - use: "MSIE", "opera", "safari", "firefox"
function checkBrowserName(name){  
	var agent = navigator.userAgent.toLowerCase();  
	if (agent.indexOf(name.toLowerCase())>-1) {  
		return true;  
	}  
	return false;  
} 

var INPUT_DESCRIPTION_COLOR = "rgb(155,165,170)"; //Format "rgb(211,211,211)" wichtig fuer uebergreifende Browserfunktionalitaet, keine Leerzeichen, IE, FF, Safari
var INPUT_DESCRIPTION_COLOR_OPERA = "#9bA5AA"; //Farbcode Opera
var INPUT_TEXT_COLOR = "#525252";

function setInputDescription(elem, value){

	if(elem != null && elem.value == ""){
		elem.style.color = INPUT_DESCRIPTION_COLOR;
		elem.value = value;
	}
}
function clearInputDescription(elem){
	
	if(elem){
		
		var elementcolorcode = elem.style.color.replace(/ /g, ""); //delete spaces

		if(INPUT_DESCRIPTION_COLOR == elementcolorcode || INPUT_DESCRIPTION_COLOR_OPERA.toUpperCase() == elementcolorcode.toUpperCase()){
			elem.value = "";
			elem.style.color = INPUT_TEXT_COLOR;
		} 
	}
}

function initIdeenbox(){
    doAsyncAjaxCall('../../menu/-1_eDAEV2007-FRM-SPC-IDEENBOX/index.html', document.getElementById('ideenboxformcontainer') , 'ideenbox');
}

function postIdeenbox(){
	
	clearInputDescription(document.forms.ideenbox.vorname);
	clearInputDescription(document.forms.ideenbox.name);
	clearInputDescription(document.forms.ideenbox.email);
	clearInputDescription(document.forms.ideenbox.anmerkung);
	
    doAsyncAjaxCall('../../menu/-1_eDAEV2007-FRM-SPC-IDEENBOX/index.html?validatepage=1&vorname='+document.forms.ideenbox.vorname.value+'&name='+document.forms.ideenbox.name.value+'&email='+document.forms.ideenbox.email.value+'&anmerkung='+document.forms.ideenbox.anmerkung.value+'&betrifft='+document.forms.ideenbox.betrifft.value, document.getElementById('ideenboxformcontainer') , 'ideenbox');
}
function setIdeenboxContent(obj, content){
	obj.innerHTML = content;
	
	if(content.indexOf("<!-- BGN::IdeenboxConfirm -->") > 0){
		var closer = document.getElementById('ideenboxcloser');
		if(closer){
			closer.style.visibility = 'hidden';
		}
	} else {
		setInputDescription(document.forms.ideenbox.vorname, "Vorname");
		setInputDescription(document.forms.ideenbox.name, "Name");
		setInputDescription(document.forms.ideenbox.email, "Ihre E-Mail-Adresse");
		setInputDescription(document.forms.ideenbox.anmerkung, "Ihre Anmerkungen");
	}
}