
// Oeffnet eine Abfrage mit dem Text _message und ruft nach Bestaetigung
// des OK-Buttons die URL _target auf. Bei Auswahl von "Abbrechen"
// geschieht nichts.
//
// String 			_message	Beliebiger Freitext
// URL als String	_target		Vollstaendige URL in Form von http://....
function confirmAndForward(_message, _target) {
	_check = confirm(_message);
	if (_check == true) {
		window.location.href = _target;
	}
	return _check;
}

// Ruft per eine URL _target auf. Kann z.B. von input=button
// verwendet werden.
//
// URL als String	_target		Vollstaendige URL in Form von http://....
function jsLink(_target) {
	window.location.href = _target;
}

// Erzeugt einen Klick auf die Komponente mit der uebergebenen ID idOfElement.
// Falls es kein Element mit der uebergebenen Id gibt, passiert nichts.
//
// idOfElement ID eines Buttons, einer Checkbox, oder (??? TODO: Mal testen womit's geht)
function clickButton(idOfButton) {
	if(document.getElementById(idOfButton) != null) {
		document.getElementById(idOfButton).click();
	}
}

// Erzeugt einen Klick auf die Komponente, welche die erste Kindkomponente
// eines a-Tags mit dem Namen nameOfAnchor ist.
// Dies ist eine alternative Funktion zu clickButton(idOfButton), wenn JSF
// die ID des Buttons selbst umwurschtelt und deshalb Ã¼ber JS-Aufruf kein
// Zugriff mehr Ã¼ber die ID auf diesen besteht.
//
// nameOfAnchor Attributwert von name eines a-Tags, innerhalb dessen sich das
// anzuklickende Kindelement befindet.
function clickButtonInAnchor(nameOfAnchor) {
	anchors = document.getElementsByName(nameOfAnchor);

	if(anchors != null) {
		anchor = anchors[0];

		if(anchor != null && anchor.childNodes != null) {
			buttonInAnchor = anchor.childNodes[0];

			if(buttonInAnchor != null) {
				buttonInAnchor.click();
			}
		}
	}
}

// Aktiviert alle per Id ausgewaehlten Elemente.
//
// Array	_elements		Array der id Bezeichnungen alle umzuschaltenden Elemente
//							z.B. ['street','city','postbox']
function enableElements(_elements) {
	changeInputElementsState(true, _elements);
}

// Deaktiviert alle per Id ausgewaehlten Elemente.
//
// Array	_elements		Array der id Bezeichnungen alle umzuschaltenden Elemente
//							z.B. ['street','city','postbox']
function disableElements(_elements) {
	changeInputElementsState(false, _elements);
}

// Aendert das disabled Attribut von mehreren Eingabeelementen _elements
// des per Nummer (_form) ausgewaehlten Formulars auf den uebergebenen Wert _enable.
//
// boolean	_enable			true or false (Um z.B. eine Checkbox abzufragen kann im Event
//							direkt this.checked abgefragt werden. Um ein Ja/Nein DropDown abzufragen
//							kann das Konstrukt this.options[0].selected innerhalb des select-Tag
//							verwendet werden)
// int		_form			Nummer des Formulars in der Seite (bei 0 beginnend)
// Array	_elements		Array der id Bezeichnungen alle umzuschaltenden Elemente
//							z.B. ['street','city','postbox']
function changeInputElementsState(_enable, _elements) {
	for (x = 0; x < _elements.length; x++) {
		eval("document.getElementById(\"" + _elements[x] + "\").disabled = " + !_enable);
	}
}

// Dient zum Aktiviern und gleichzeitigem Deaktivieren von Seitenelemten, z.B. durch Radio-Buttons.
// Der Funktion wird ein zweideminsionales Array uebergeben, welches in der ersten Dimension
// die Gruppen enthaelt, welche wiederum durch Arrays von HTLM-Ids repraesentiert werden
// (siehe changeInputElementsState-Parameter _elements).
// Der Parameter _unitId steuert welche Gruppe aktiviert werden soll. So werden z.B. bei 0
// die Inhalte des erste Array innerhalb von _units durchlaufen und disabled auf false gesetzt.
// Alle weiteren Gruppen (Arrays) werden ebenfalls durchlaufen und alle Elemente deaktiviert.
//
// Array[Array]	_units		Zweideminsionales Array.
// int			_unitId		Auswahl des Elements im uebergebenen Arrays _units welches
//							aktiviert werden soll.
function enableUnit(_units, _unitId) {
	for (y = 0; y < _units.length; y++) {
		if (_unitId == y) {
			changeInputElementsState(true, _units[y]);
		} else {
			changeInputElementsState(false, _units[y]);
		}
	}
}

// Oeffnet ein neues Popup Fenster. Groessenaenderungen sind erlaubt!
// Das Popup wird immer zentriert.
// Nicht angezeigt werden:
// 		toolbar, statusbar, menubar.
// Angezeigt werden
// 		scrollbars, Locationbar
//
// _url 	Die URL welche im Popup aufgerufen wird
// _width	Die Breite des Popups
// _height 	Die Hoehe des Popups
// _title   Der Titel des Popups. Wird benoetigt um das Popup
//          ansprechen zu koennen.
function openPopup(_url, _width, _height, _title) {
	var _top = (screen.height - _height) / 2;
	var _left = (screen.width - _width) / 2;
	eval("popUp = window.open(\"" + _url + "\", \"" + _title + "\", \"toolbar=0, scrollbars=1, location=1, statusbar=0, menubar=0, resizable=1,width=" + _width + ",height=" + _height + ",left=" + _left + ",top=" + _top + "\")");
//	eval('popUp = window.open("/VMSWeb' + _url + '", "'+_title+'", "toolbar=0, scrollbars=1, location=1, statusbar=0, menubar=0, resizable=1,width=' + _width + ',height=' + _height + ',left=' + _left + ',top=' + _top + '")');
}

// Ermoeglicht das veraendern des disabled Status von HTML Elementen. Die zu
// verÃ¤ndernden Elemente mÃ¼ssen mit vollem Namen als elementsName angegeben
// werden und der neue status wird mit enable angegeben.
//
// _elementsName	Name der Elements welches auf enabled oder disabled gestellt
//					werden soll
// _enable			True wenn das Element aktiv sein soll, sonst false
function toggleElementsByName(_elementsName, _enable) {
	var elements = document.getElementsByName(_elementsName);
	for (x = 0; x < elements.length; x++) {
		eval("elements[x].disabled = " + !_enable);
	}
}


//
// START TOOL-TIP FUNCTION
//
var aktiv;											// Timer Var
var delayTime = 1000;								// Zeit, wann Tool-Tip eingebelendet werden soll
var toolShow ;								        // Anzeigen des Tool-Tips Pruefvar
var horizontal_offset = "9px";      			 	//horizontaler Abstand der Toolbox vom Link
var vertical_offset = "0";           				//vertikaler Abstand der Toolbox vom Link
var ie = document.all;
var ns6 = document.getElementById && !document.all;


function getposOffset(what, offsettype) {
	var totaloffset = (offsettype == "left") ? what.offsetLeft : what.offsetTop;
	var parentEl = what.offsetParent;
	while (parentEl != null) {
		totaloffset = (offsettype == "left") ? totaloffset + parentEl.offsetLeft : totaloffset + parentEl.offsetTop;
		parentEl = parentEl.offsetParent;
	}
	return totaloffset;
}
//
// IE check
function iecompattest() {
	return (document.compatMode && document.compatMode != "BackCompat") ? document.documentElement : document.body;
}

function clearbrowseredge(obj, whichedge) {
	var edgeoffset = (whichedge == "rightedge") ? parseInt(horizontal_offset) * -1 : parseInt(vertical_offset) * -1;
	if (whichedge == "rightedge") {
		var windowedge = ie && !window.opera ? iecompattest().scrollLeft + iecompattest().clientWidth - 30 : window.pageXOffset + window.innerWidth - 40;
		dropmenuobj.contentmeasure = dropmenuobj.offsetWidth;
		if (windowedge - dropmenuobj.x < dropmenuobj.contentmeasure) {
			edgeoffset = dropmenuobj.contentmeasure + obj.offsetWidth + parseInt(horizontal_offset);
		}
	} else {
		var windowedge = ie && !window.opera ? iecompattest().scrollTop + iecompattest().clientHeight - 15 : window.pageYOffset + window.innerHeight - 18;
		dropmenuobj.contentmeasure = dropmenuobj.offsetHeight;
		if (windowedge - dropmenuobj.y < dropmenuobj.contentmeasure) {
			edgeoffset = dropmenuobj.contentmeasure - obj.offsetHeight;
		}
	}
	return edgeoffset;
}
//
// Timer fuer verzoegerte Einblendung des Tool-Tips
function showhintTimer(menucontents, obj, e, tipwidth, art, textheadline){

	menucontentsNEW = menucontents;
	objNEW          = obj;
	eventHNEW	    = e;
	tipwidthNEW     = tipwidth;
	artNEW          = art;
	textheadlineNEW = textheadline;

	toolShow = true;	// Setze Pruefvar auf true - Tool Tip Box soll angezeigt werden
	//
	// Starte Timer mit Aufruf der showhint()
	aktiv = window.setTimeout('showhint(menucontentsNEW, objNEW, eventHNEW, tipwidthNEW, artNEW, textheadlineNEW)',delayTime);

}
//
// Anzeigen des Tool-Tips
function showhint(menucontents, obj, e, tipwidth, art, textheadline, zustandCHECK){

		//
		// Pruefung des Eventhandlers
		if (zustandCHECK==false){

			//
			// Statuswechsel, ob Box angezeigt werden soll
			 toolShow = false;
		}
		 else{ toolShow = true;}

		//
		// Blende Tooltipp ein
		if(toolShow == true){
			if ((ie||ns6) && document.getElementById(art)){
				dropmenuobj=document.getElementById(art)
				dropmenuobj.innerHTML="<div class='tooltippsheadline'>"+textheadline+"</div>"+menucontents
				dropmenuobj.style.left=0;
				//dropmenuobj.style.top=-500;
				dropmenuobj.style.top=0;

				if (tipwidth!=""){

					dropmenuobj.widthobj=dropmenuobj.style;
					// PrÃ¼fe ob "px" im Parameter 'tipwidth' enthalten ist
					var pxSearch = tipwidth.indexOf("px", 0);
					if(pxSearch != "-1") {
						dropmenuobj.widthobj.width=tipwidth;
					}
					else {
						dropmenuobj.widthobj.width=tipwidth+"px";
					}

				}
				dropmenuobj.x=getposOffset(obj, "left");
				dropmenuobj.y=getposOffset(obj, "top");
				dropmenuobj.style.left=dropmenuobj.x-clearbrowseredge(obj, "rightedge")+obj.offsetWidth+"px";
				dropmenuobj.style.top=dropmenuobj.y-clearbrowseredge(obj, "bottomedge")+"px";
				dropmenuobj.style.visibility="visible";

			}
		}
}
//
// Verstecke Tool-Tip
function hidetip(wichBox) {

	window.clearTimeout(aktiv); // Stoppe Timer

	var tooltip = document.getElementById(wichBox);

	if(tooltip) {
		// Falls Tooltip angezeigt wird
		// -> Blende Tooltip aus
		tooltip.style.visibility="hidden" // Verstecke aktuellen Tooltip
		tooltip.style.left="-500px"
	}

	toolShow = false; // Setze Prï¿½fvar wieder auf false
}

//
// Generierung der verschiedenen Tool-Tip Boxen
function createsctooltipps() {
	//
	// Warnbox
    var divblock = document.createElement("div");
    divblock.setAttribute("id", "tooltippsWARN");
    document.body.appendChild(divblock);
	//
	// Infobox
	var divblock = document.createElement("div");
    divblock.setAttribute("id", "tooltippsINFO");
    document.body.appendChild(divblock);
	//
	// Successbox
	var divblock = document.createElement("div");
    divblock.setAttribute("id", "tooltippsSUCCESS");
    document.body.appendChild(divblock);
	//
	// Errorbox
	var divblock = document.createElement("div");
    divblock.setAttribute("id", "tooltippsERROR");
    document.body.appendChild(divblock);
}


if (window.addEventListener) {
	window.addEventListener("load", createsctooltipps, false);
} else {
	if (window.attachEvent) {
		window.attachEvent("onload", createsctooltipps);
	} else {
		if (document.getElementById) {
			window.onload = createsctooltipps;
		}
	}
}

function InterFaceToolTipNoPadding (stateInside) {
	// ID der Tooltipsboxen
	var interfaceToolTippBox = new Array("tooltippsWARN", "tooltippsINFO", "tooltippsSUCCESS", "tooltippsERROR");
	for(var i=0; i<interfaceToolTippBox.length;i++) {
		// Org. Padding Anweisung stehen in 'VMS_utilities.css'
		var element = document.getElementById(interfaceToolTippBox[i]);

		if(stateInside & (element != null) ) {
			element.style.padding="25px 0px 0px 0px";
			//padding ="25px 0px 15px 0px;";
		}
		else if (element != null){
			element.style.padding="25px 3px 15px 10px";
		}
	}
}
//
// ENDE TOOL-TIP FUNCTION
//
//
// Toggle Funktion AB 13-08-07
//
// Anzeigen und verbergen von divs
function zeigen (cssid) {
  document.getElementById("THIDE_"+cssid).style.display="inline";
  document.getElementById("TITEL_"+cssid).style.display="none";
  document.getElementById("TXT_"+cssid).style.display="inline";
  document.body.parentNode.style.backgroundColor = 'transparent';
  return 1;
}

function verbergen (cssid) {
  document.getElementById("TITEL_"+cssid).style.display="inline";
  document.getElementById("THIDE_"+cssid).style.display="none";
  document.getElementById("TXT_"+cssid).style.display="none";
  document.body.parentNode.style.backgroundColor = 'transparent';
  return 1;
}
//
// UploadFile Funktion AB 13-08-07
//
// UploadFile CSS fuer input type=file
	var uploadNamePosition;
	var uploadName;
	function UploadFile(wert,defaulttext) {

		 // Ermittele letzte Position eines Backslashes
		 //uploadNamePosition = wert.lastIndexOf('\\')+1;
		 fileCheck = wert.lastIndexOf('/');
		 if(fileCheck==-1){
		 //
		 // Win
		 uploadNamePosition = wert.lastIndexOf('\\')+1;
		 }
		 else{
		 	 //
			 // Linux
		 	 uploadNamePosition = wert.lastIndexOf('/')+1;
		 	 }
		 //
		 // Extrahiere Dateinamen vom uebrigen Pfad
		 uploadName = wert.slice(uploadNamePosition,wert.length);


		 //
		 // Pruefe, ob wert gefuellt ist, bei Abbruch setze 'defaulttext' aus commons.properties
		 if (wert==""){
		 	uploadName=defaulttext;
		 }

		 //
		 // Ausgabe des Upload Dateinamens
		 document.getElementById("uploadausgabe").innerHTML = uploadName;
	}



	//Funktionen zum Oeffnen einer Vergabeakte im Popup Fenster
	var windowconfig; //Variable fuer Fensterwerte

	function openWindow(adresse,wname,displayLocation, currentAvailHeight){
		// Def. Hoehe und Breite
		var width   = 1024;
		var height  = screen.availHeight;
		var windowToOpen = null; // Erstmal

		// Aufbau der Werte, des zu oeffnenden Fensters / Fenster wird auf die Mitte des Bildschirms ausgerichtet
		h_Position = (screen.width) ? (screen.width-width)/2 : 0; // Ausrichtung Mitte horizontal
		v_Position = (screen.height) ? (screen.height-height)/2 : 0;// Ausrichtung Mitte vertikal
		
		windowconfig ='height='+height+',width='+width+',top='+v_Position+',left='+h_Position+',scrollbars=yes,resizable=yes,location='+displayLocation;
		
			// Check Client-Browser auf Popup-Blocker
			// Versuch, das Popup Fenster zu Ã¶ffnen
			try {
					windowToOpen = window.open(adresse,wname,windowconfig);
						if ( !windowToOpen || typeof(windowToOpen) != 'object' || windowToOpen.closed ) {
							throw "notopen";
						}
						else {
								throw "open";
						}
				
				} // End 'try'

			catch(e) {
					// Client hat popupblocker aktiviert
					if ( e == "notopen" ) {
							//Blende Error-BOX mit Hinweis auf PopupBlocker ein
						var popupblockerNotification = 
								document.getElementById("popupBlockerDetected");
						if (popupblockerNotification != null) {
							popupblockerNotification.style.display = "block";
						}
					}
					else {
						windowToOpen.focus();
						if (window.navigator.userAgent.indexOf("MSIE ") > -1) {
							windowToOpen.resizeTo(width,screen.availHeight);
							windowToOpen.moveTo(h_Position, 0);
						}
					}
				}// End 'catch'
	}

	//Funktion um ein Fenster zu schliessen
	function windowClose(){
		self.close();
	}

	//Funktion zum Lockout und schliessen Aller bisher geoeffneten Fenster
	function lockOutAndCloseOpenWindows(tenderFileIdsAsString){
		var tenderFileIds = tenderFileIdsAsString.split(",");
		for (var i = 0; i < tenderFileIds.length; i++) {

			h_Position = -50; //
			v_Position = -50;//
			windowconfig ='height=1,width=1,top='+v_Position+',left='+h_Position+',scrollbars=auto,resizable=no';
			if(tenderFileIds[i] != ''){
				//var windowToOpen = window.open('',tenderFileIds[i],windowconfig);
				//if(windowToOpen!=null){
				//	windowToOpen.close();
				//}

				closeOpenTenderFile(tenderFileIds[i]);
			}
	   }
	}

	//Funktion zum Schliessen eines einzelnenen Popupups
	//Dieses wird durch den windowNamen referenziert.
	function closeOpenTenderFile(windowName){
		var windowToOpen = window.open('',windowName,windowconfig);
				if(windowToOpen!=null){
					windowToOpen.close();
				}
	}


//
// START Funktion fuer Upload Time 21.01.2008
var sekunden = 0;
var minuten  = 0;
var sekundenAugsbabe;
var minutenAugsbabe;

function fileUploadTime(sekunden) {
	//
	// Sekunden
	if (sekunden < 10){
		sekundenAugsbabe ="0"+sekunden;}

		else{sekundenAugsbabe =sekunden;}

	 if (sekunden > 59){
		sekunden = 0;
		sekundenAugsbabe ="00";
		minuten++;}
	//
	// Minuten
	 if (minuten < 10){
		minutenAugsbabe ="0"+minuten;}

		else {minutenAugsbabe=minuten;}
		//
		// TimeOut fuer 1 Sekunden, zaehle Sekunden hoch
		fileUploadTimeCheck = setTimeout('fileUploadTime(' + (sekunden + 1) + ')', 1000);

	//
	// Zusammengesetzte Zeitausgabe
	zeitAusgabe = ''+minutenAugsbabe+':'+sekundenAugsbabe;
	//
	// Ausgabe an div
	document.getElementById('fileUploadTimeOutput').innerHTML = zeitAusgabe;
}

function fileUploadStart (){
	//
	// Starte Function  fileUploadTime, beginnt bei 0 Sekunden
	fileUploadTime(0);
}
function fileUploadStop(uploadcomplete, uploadstatus){
		//
		// Stoppe Zeit
	 	clearTimeout(fileUploadTimeCheck);
		//
		// Upload Status Icon ausblenden
		document.getElementById('fileUploadIcon').style.display="none";
		//
		// Create Status DIV
		var filedivblock = document.createElement("div");
   		filedivblock.setAttribute("id", uploadstatus);
    	//
    	// Ausgabe der Stats DIV im "fileUploadStatus" DIV
    	var filedivblockausgabe = document.getElementById("fileUploadStatus");
    	filedivblockausgabe.appendChild(filedivblock);
		//
		// Erfolgreiche Ausgabe
		document.getElementById('fileUploadTitle').innerHTML = uploadcomplete;
}
//
// ENDE Funktion fuer Upload Time 21.01.2008

//
// BEGINN Definition fuer Super Size Drop Down
function selectOverview (optionID, optionIDNumber) {
	//
	// optionWert   : Lies die ID des selektierten <option> aus
	//
	var index = optionID.selectedIndex;

	var optionWert = "";

	//optionIDNumber: Fortlaufende ID, falls  mehrere "dropDown Liste SuperSize" vorkommen
	if (document.getElementById('dropDownContent_'+optionIDNumber)) {
		optionWert = document.getElementById('dropDownContent_'+optionIDNumber).options[index].innerHTML;
	} else {
		optionWert = optionID.options[index].innerHTML;
	}
	//
	// Ausgabe des Textes an div, mit entsprechender ID
	document.getElementById('dropDownOutput_'+optionIDNumber).innerHTML = optionWert;
	}
// ENDE Definition fuer Super Size Drop Down
//

	// Zeigt ein neues Fenster mit der Wertungsmatrix an
	function openValuationMatrixWindow(adresse, wname, selectionid){

		var width = 800;
		var height  = 640;

		// Aufbau der Werte, des zu oeffnenden Fensters / Fenster wird auf die Mitte des Bildschirms ausgerichtet
		h_Position = (screen.width) ? (screen.width-width)/2 : 0; // Ausrichtung Mitte horizontal
		v_Position = (screen.height) ? (screen.height-height)/2 : 0;// Ausrichtung Mitte vertikal
		windowconfig='height='+height+',width='+width+',top='+v_Position+',left='+h_Position+',scrollbars=yes,resizable=yes,location=yes';
		var selectElement=document.getElementById(selectionid);
		var lotid=selectElement.options[selectElement.selectedIndex].value;
		var windowToOpen = window.open(adresse+'&lot='+lotid, wname, windowconfig);
		windowToOpen.focus();
	}

		//
		// Einstellen der Hoehe fuer den <iframe> des jeweiligen Wizards
		// Funktionsaufruf in wizard_layout.xhtml;
		var framefenster = parent.document.getElementsByTagName("iFrame");
		var TempFrameName;
		var TempBoxContentPosition;
		var TempBoxContentName;
		function heightOfIframe () {
		var docHeight     = document.body.scrollHeight;
		    for (var i = 0; i < framefenster.length; ++i) {
		      TempFrameName          = framefenster[i].name;
		      TempBoxContentPosition = TempFrameName.indexOf(":");
		      TempBoxContentName     = TempFrameName.substr(0,TempBoxContentPosition+1);

		      if(TempFrameName!='') {
		    	parent.document.getElementById(TempFrameName).style.height = docHeight+"px";
		    	parent.document.getElementById(TempBoxContentName+"openBoxcontent").style.height = docHeight+"px";
		     }

		      TempFrameName          = '';
		      TempBoxContentPosition = '';
		      TempBoxContentName     = '';
     		 }
		}

		//
		// Ankeraufruf der Parentseite nach speichern aus dem Wizard
		// Parentseite springt wieder 0,0
		function jumpToTopOfParent () {
			top.window.scrollTo(0,0);
		}

		/*------------------------------------------

		Auf der FristenSeite kann es recht schnell vorkommen, dass einige
		Fristangaben jsf-ungueltig sind, obwohl diese nicht gebraucht werden.
		Deshalb werden vor einer Berechnung die nicht-ausgewaehlten
		Fristeingaben geloescht.

		Je nachdem, ob nur das (a) Datum oder (b) Datum und Uhrzeit einzugeben
		sind,  (a) muss das Feld "inputDate" oder
		(b) muessen die drei Felder "inputDateTimecal", "inputDateTimetimeselectOneHour"
		und "inputDateTimetimeselectOneMinute" auf eine Leerauswahl gesetzt werden.


		Über den Parameter "clearAll" wird gesteuert, ob alle Felder
		gelöscht werden sollen oder nicht. Für "false" werden nur solche
		Felder geloescht, die nicht per RadioButton "radioDateGroupSelect"
		ausgewaehlt wurden, oder nicht neu berechnet werden sollen --
		hierfuer ist das versteckte Eingabefeld "disableDeletion" zustaendig,
		welches eine Loeschung verhindert.



		------------------------------------------*/
		function clearTimeLimits(buttonRows, clearAll) {
			// ID der Tabelle, als Pruefix fuer die Angaben
			var tableId = "timeLimitsForm:timeLimitsTable";

			// Einzel-ID der Auswahl-RadioButtons
			var selectionInputId = "radioDateGroupSelect";
			// ID des Verstekcten Feldes zum Verhindern des Lï¿½schens
			var disableDeletionId= "disableClearReset";

			// Iteration ueber alle vorhandenen Fristen
			for (var i=0; i< buttonRows; ++i ) {
				var rowIdPraefix = tableId + ":" + i+  ":";
				var buttonId = rowIdPraefix  + selectionInputId;
				var hiddeninputDisableDeletionId = rowIdPraefix + disableDeletionId;
				var radioButton = parent.document.getElementById(buttonId);

				/*
					Manche Fristen koennen nicht ausgewaehlte werden und haben daher
					keine Auswahlmoeglichkeit, bei anderen ist das Flag gesetzt.
					Diese durrfen nicht zurueckgesetzt werden.
				*/

				if ( clearAll ||
						( (radioButton == null || ! radioButton.checked)
						&& parent.document.getElementById(hiddeninputDisableDeletionId) == null )){

					// Ermittle IDs der zurueckzusetzenden Felder
					var inputDateId = rowIdPraefix + "inputDate";
// Ã„NDERUNG DER IDs wegen Workaround zum Ischuh VMS-2397:
					var inputlDateTimeCalId = rowIdPraefix + "inputDateTimecal";
					var selectHourId =rowIdPraefix + "inputDateTimetimeselectOneHour";
					var selectMinuteId = rowIdPraefix + "inputDateTimetimeselectOneMinute";
//var inputlDateTimeCalId = rowIdPraefix + "datePart";
//var selectHourId =rowIdPraefix + "timePartselectOneHour";
//var selectMinuteId = rowIdPraefix + "timePartselectOneMinute";

					// Ermittle die zurueckzusetzenden Felder selbst
					var inputDate = parent.document.getElementById(inputDateId);
					var inputDateTimeCal = parent.document.getElementById(inputlDateTimeCalId);
					var selectHour = parent.document.getElementById(selectHourId);
					var selectMinute = parent.document.getElementById(selectMinuteId);

					// Setze die vorhandenen Felder zurueck
					if (inputDate != null) {
						inputDate.value = "";
					}

					if (inputDateTimeCal != null) {
						inputDateTimeCal.value = "";
					}

					if (selectHour != null) {
						selectHour.value = -1; // 0 sollte Leerauswahl ("--") sein
					}

					if (selectMinute != null) {
						selectMinute.value = -1; // 0 sollte Leerauswahl ("--") sein
					}
				}
			}
		}
//####### START #################################################################################################################################################################################
// 'Disable Funktionen' AB 31-03-09
//
// Setze Felder auf 'disable' ausgelÃ¶st durch die 'cx:inputYesNo'-Komponente
//
// selectValue     = value aus der 'cx:inputYesNo'-Komponente
// classNameActual = bezeichnet die CSS-Klasse des jeweiligen Tags, der auf disbabled true/false gestellt wird
var disabledClassName = "disabledField"; // CSS-Klasse, die im DOM die 'disabled=true' Elemente kennzeichnet
// Nicht alle TAGS sollen im Dokument durchsucht werden
// Nicht alle Durchsuchen, da JS-Engine der IEs zu langsam ist
var allTags = new Array("input", "select", "textarea");


//
// Liefert den Wert derjenigen Komponente, welche mit der Klasse='componentClassName'
// gekennzeichnet ist, und deren ID den Wert 'componentPartialid' enthält.
// Ist kein entsorec
function findObjectForClassAndId(componentPartialid, componentClassName) {

	var returnObj = undefined;;
	var found = false;
	var allTags = new Array("input", "select", "textarea");
	for(j=0; j<allTags.length;j++) {
		// Starte Array allTagsDefault
		var allObj = document.getElementsByTagName(allTags[j]);
		for(i=0; i<allObj.length;i++) {
			// Suche nach entsprechender Class, wenn gefunden
			if( (allObj[i].className.indexOf(componentClassName)!=-1)
					&& (allObj[i].id.indexOf(componentPartialid) != -1) ) {
				returnObj = allObj[i];
				found = true;
				break;
			}
		}
		if ( found ) break;
	}
	return returnObj;
}

function SetDisableOrNot (selectValue, classNameActual, inverse) {
  	// Starte Array der betroffenen TAGS
	for(j=0; j<allTags.length;j++) {
		// Starte Array 'allTags'
		var allObj  = document.getElementsByTagName(allTags[j]);
		// Durchsuche die ausgewÃ¤hlten TAGS auf der Seite
		for(i=0; i<allObj.length;i++) {
			// Suche nach entsprechender Class, wenn gefunden
		 	if(allObj[i].className.indexOf(classNameActual)!=-1) {
		 		// Wenn auf 'disable' gestellt werden soll
			 	if (selectValue == '1'){
			 		// Setze alle Felder der gefundenen Class auf 'disable=true'
					allObj[i].disabled = ! inverse;
	    		}
	    		// Wenn 'disabled' aufgehoben werden soll
	    		else {
	    			// Wenn auf 'disabledClassName' vorhanden ist, bleibt Element auf disbaled
	    			if(allObj[i].className.indexOf(disabledClassName)!=-1) {
	    				allObj[i].disabled = ! inverse;
	    			}
	    			else {
	    				// Setze alle Felder der gefundenen Class auf 'disable=false'
	    				allObj[i].disabled = inverse;
	    			}
	    		} // ENDE ELSE 'selectValue'
	   	    } // ENDE IF	'allObj[i]'
		}  // ENDE FOR (i=0)
	} // ENDE FOR (j=0)
}
// Nach rendern der Seite, prÃ¼fe Radiobuttons auf 'unchecked' und setze zugehÃ¶rige 'input type="text" / input="radio" /'textarea'
// auf "disabled = true", bzw. bei 'checked' auf 'disabled = false'
function InitSetDisableOrNot (radioButtonsClassArray, inputTypIdArray) {
  	var inputTypIdArrayTempFalse = new Array();
  	var inputTypIdArrayTempTrue  = new Array();
  	// Starte Array der betroffenen TAGS
	for(j=0; j<allTags.length;j++) {
		// Starte Array 'allTags'
		var allObj  = document.getElementsByTagName(allTags[j]);
		// Durchsuche die ausgewÃ¤hlten TAGS auf der Seite
		for(i=0; i<allObj.length;i++) {
			// Durchlaufe 'radioButtonsClassArray'
			for(k=0; k<radioButtonsClassArray.length;k++) {
				// PrÃ¼fe, ob 'CLASS' der Radiobutton in Elementen vorkommt
				if(allObj[i].className.indexOf(radioButtonsClassArray[k])!=-1) {
					//
					//PrÃ¼fe, ob Radio-Button-Wert 'checked=false' ist
					if(allObj[i].checked == false){
						// Wenn Inhalt des Arrays nicht leer sein sollte,
						// falls doch, wurde dem entsprechenden Radiobutton kein/e Textfeld/er zugewiesen
						if(inputTypIdArray[k] != ''){
							// Splitte Werte aus 'inputTypIdArray'-Array auf und bilde'inputTypIdArrayTempFalse'-Array
							inputTypIdArrayTempFalse = inputTypIdArray[k].split(",");
							// Ermittele die LÃ¤nge des inputTypIdArrayTempFalse'-Array`s und lese es aus
							for(n=0; n<inputTypIdArrayTempFalse.length;n++) {
								// PrÃ¼fe auf Existenz
								if(document.getElementById(inputTypIdArrayTempFalse[n])){
									// Setze entsprechende Ids auf 'disabeld=true"
									document.getElementById(inputTypIdArrayTempFalse[n]).disabled = true;
									// Ermittele die zugehÃ¶rige Gesamt-'Class' der ID
									var tempClassNameFalse = document.getElementById(inputTypIdArrayTempFalse[n]).className;
									// Wenn 'disabledClassName' nicht vorhanden, dann setze es ein
									if(document.getElementById(inputTypIdArrayTempFalse[n]).className.indexOf(disabledClassName)==-1) {
										// Erweitere aktuelle Gesamt-'Class' mit 'disabledClassName'
										document.getElementById(inputTypIdArrayTempFalse[n]).className = tempClassNameFalse+" "+disabledClassName;
									}
								}	// ENDE if(document.getElementById(inputTypIdArrayTempFalse[n])){
							}// ENDE FOR (n=0)
						 } // ENDE IF 'inputTypIdArray[k] !='
					}// ENDE IF	'allObj[i].checked == false'
					//
					// PrÃ¼fe, ob Radio-Button-Wert 'checked=true' ist
					if(allObj[i].checked == true){
						// Wenn Inhalt des Arrays nicht leer sein sollte,
						// falls doch, wurde dem entsprechenden Radiobutton kein/e Textfeld/er zugewiesen
						if(inputTypIdArray[k] != ''){
							// Splitte Werte aus 'inputTypIdArray'-Array auf und bilde'inputTypIdArrayTempTrue'-Array
						    inputTypIdArrayTempTrue = inputTypIdArray[k].split(",");
							for(m=0; m<inputTypIdArrayTempTrue.length;m++) {
							// PrÃ¼fe auf Existenz
								if(document.getElementById(inputTypIdArrayTempTrue[m])){
									// Setze entsprechende Ids auf 'disabeld=false"
									document.getElementById(inputTypIdArrayTempTrue[m]).disabled = false;
									// Ermittele die zugehÃ¶rige Gesamt-'Class' der ID
									var tempClassNameTrue = document.getElementById(inputTypIdArrayTempTrue[m]).className;
									// LÃ¶sche 'disabledClassName' aus zugehÃ¶rige Gesamt-'Class'
									document.getElementById(inputTypIdArrayTempTrue[m]).className = tempClassNameTrue.replace(disabledClassName, "");
								}// ENDE if(document.getElementById(inputTypIdArrayTempTrue[m])){
							}// ENDE FOR (m=0)
					 	} // ENDE IF 'inputTypIdArray[k] !='
					}	// ENDE IF	'allObj[i].checked == true'
				}// ENDE IF	'allObj[i].className.indexOf'
			} // ENDE FOR (k=0)
		} // ENDE FOR (i=0)
  	} // ENDE FOR (j=0)
}
// Da die angegebene styleClass in 't:selectOneRadio' alle Radiobuttons der gleichen Radiobuttongruppe
// mit dem gleichen Style belegt, werden in dieser Funktion die einheitlichen ClassNames
// durch die entsprechenden ClassNames aus den 'radioButtonClassNameArray' ausgetauscht
function RenameClasses (actualClassName, radioButtonClassNameArray, inputsClassNameArray, specialParameter) {
	var counter = 0;
	var allTagsDefault = new Array("input");
	for(j=0; j<allTagsDefault.length;j++) {
		// Starte Array allTagsDefault
		var allObjDefault  = document.getElementsByTagName(allTagsDefault[j]);
		 for(i=0; i<allObjDefault.length;i++) {
		 	if(allObjDefault[i].className.indexOf(actualClassName)!=-1) {
		 		// Tausche die ClassName aus und ersetze sie aus dem jeweilig aktuellen 'radioButtonClassNameArray'
		 		allObjDefault[i].className = allObjDefault[i].className.replace(actualClassName, radioButtonClassNameArray[counter]);
		 		counter++;
		 	}
		}
		// Wenn kein 'specialParameter' vorliegt, dann fÃ¼hre Funktion aus
		if(!specialParameter) {
			InitSetDisableOrNot (radioButtonClassNameArray, inputsClassNameArray);
		}
	}
}
//
// Bevor der 'submit' gesendet wird, werden alle 'input type="text"' und 'textareas',
// die 'disabled= true' und deren 'value != NULL' sind, setze den 'value' auf NULL
function DefaultValueForDisabledFields (specialCase) {
	var allTagsDefault = new Array("input","textarea");
	
	for(j=0; j<allTagsDefault;j++) {
		// Starte Array allTagsDefault
		var allObjDefault  = document.getElementsByTagName(allTagsDefault[j]);
		for(i=0; i<allObjDefault.length;i++) {
		 	// Wenn Element auf 'disabled' steht, der 'value' NICHT null UND der 'type="text"' ist,
		  	// dann leere den 'value' des Textfeldes
		 	if(allObjDefault[i].disabled == true && allObjDefault[i].value !='' && allObjDefault[i].type == "text") {
		 		// Muessen wieder freigegeben werden, da Felder im 'disabled'-Modus keine Werte uebermitteln
		 		allObjDefault[i].disabled = false;
		 		allObjDefault[i].value = '';
		 	}
		 	// Wenn Element auf 'disabled' steht, der 'value' NICHT null UND eine 'textarea' ist,
		  	// dann leere den 'value' der Textarea
		 	if(allObjDefault[i].disabled == true && allObjDefault[i].value !='' && allObjDefault[i].type == "textarea"  ) {
		 		// Muessen wieder freigegeben werden, da Felder im 'disabled'-Modus keine Werte uebermitteln
		 		allObjDefault[i].disabled = false;
		 		allObjDefault[i].value = '';
		 	}
		 	// SONDERFALL PROBLEM MIT <f:selectItems>!!!!!
			// Es muss bei DefaultValueForDisabledFields('spezialfall') ein
			// Parameter Ã¼bergeben werden (STRING, BEZEICHNUNG EGAL) weil,
			// bei disabled="true" die Methode BidsAndSubmissions.setEuVariantenAlternativangebote()
			// mit dem Wert null aufgerufen wurde, Probleme bei
		 	if(allObjDefault[i].disabled == true  && allObjDefault[i].type == "radio"  ) {
		 		if(specialCase) {
		 			allObjDefault[i].disabled = false;
		 		}
		 	}
		}
	}
}
//####### ENDE ##################################################################################################################################################################################


// FÃ¼hrt einen regelmÃ¤ÃŸigen Seiten-Relaod einer Seite innerhalb eines I-Frames durch.
// Parameter:
// nameOfIframe Wert aus dem Attribut 'name' des IFrames
// seconds Anzahl der Sekunden als LÃ¤nge des Intervalls, nach dem die Seite gereloaded werden soll
function RefreshPageOnIframe (nameOfIframe, seconds) {
	setInterval("parent."+nameOfIframe+".location.reload()",seconds*1000);
}

/**********************************************************************************
 * START FUNKTIONEN AKTENDECKEL AB 04.11.2010
 */

/**
 * - wichDiv         = bezeichnet ID der Inhaltstabelle
 * - wichTagName     = Auf welchen TagName soll geprüft werden
 * - wichClassName   = Auf welche Class soll geprüft werden (Class = Kennzeichnug eines Datepickers)
 * - wichCheckPoint  = Wird benötigt, um Entfernung vom Datepicker zum 'EndPunkt' zu errechnen
 * - wichClassToday  = Class von Datepicker heute
 * - wichMask        = "Maske" fuer Contenttabelle
 */
var widthOfPicker;
function SetDatePicker(wichDiv, wichTagName, wichClassName, wichCheckPoint, wichClassToday, wichMask) {
	// Neuer Z-Index
	var newZindex = 9000;
	// Ab welcher ID soll geprüft werden
	var allObjInID = document.getElementById(wichDiv).getElementsByTagName(wichTagName);
	// Durchlauf des Laenge der Objekte
	for(i=0; i<allObjInID.length;i++) {
			// Wenn Element und Class-Name gefunden,
			if(allObjInID[i].className.indexOf(wichClassName)!=-1) {
				// Ermittle Hoehe des Parentelements
				var parentNodeYpos = allObjInID[i].parentNode.offsetTop;
				// Setze Datepicker auf die Y-Pos des Parentelements
				allObjInID[i].style.top = parentNodeYpos+"px";
				// Ermittle Y-Pos des CheckPoint/Endpunkt
				var checkPointYpos = document.getElementById(wichCheckPoint).offsetTop;
				// Rechne Distanz aus (Distanz = neue Hoehe des Datepickers)
				var newHeight = checkPointYpos-parentNodeYpos;
				// Setze neue Hoehe fuer DatePicker
				allObjInID[i].style.height = (newHeight-1)+"px";
				// Erhoehe z-index fuer die Datepicker
				allObjInID[i].style.zIndex = newZindex++;
				// Mach Datepicker sichtbar
				allObjInID[i].style.display = 'block';
				// Ermittle Breite eines Pickers
			}
	}
}
// Festgelegte Breite der Maske
var widthOfMask = 500;
var heightRange = 20;

function SetDateMask (maskID, maskContentID, labelTableID) {
	// Ermittele Gesamtlaenge des Inhalts
	var currentWidthOfMaskContent = document.getElementById(maskContentID).offsetWidth;
	// Ermittele Gesamthoehe des Inhalts
	var currentHeightOfMaskContent= document.getElementById(maskContentID).offsetHeight;
	// Setze Breite des Inhalts
	document.getElementById(maskContentID).style.width    = currentWidthOfMaskContent+"px";
	// Setze Breite der Maske
	document.getElementById(maskID).style.width=widthOfMask+"px";
	// Setze Hoehe der Maske, entsprechend der Hoehe des Contents
	document.getElementById(maskID).style.height=(currentHeightOfMaskContent+heightRange)+"px";
	// Ermittele Breite der LabelTabelle
	var currentWidthLabelTable = document.getElementById(labelTableID).offsetWidth;
	// Setze Breite der LabelTabelle
	document.getElementById(labelTableID).style.width = currentWidthLabelTable+"px";
	// Hole Breite der SubNav
	var currentWidthOfSubNav = document.getElementById('subNavFile').offsetWidth;
	// Setze Maske nach links
	document.getElementById(maskID).style.left = (currentWidthLabelTable+currentWidthOfSubNav)+21+"px";	
	/* Setze Shadow, hole X-Y von maskID
	var maskIDYpos   = document.getElementById(maskID).offsetTop;
	var maskIDXpos   = document.getElementById(maskID).offsetLeft;
	var maskIDheight = document.getElementById(maskID).offsetHeight;
	// Setze Shadow Neu
	document.getElementById('shadowMask').style.top    = maskIDYpos+"px";
	document.getElementById('shadowMask').style.left   = maskIDXpos+"px";
	document.getElementById('shadowMask').style.height = maskIDheight+"px";*/

}

// Fuer Sprung auf Datepicker
function JumpToPicker (nameOfPicker, nameOfMask) {
	// Scrollbreite der Maske
	var  widthOfContent  = document.getElementById(nameOfMask).scrollWidth;
	// Aktuelle Position des Pickers
	var  Y_PosOfPicker   = document.getElementById(nameOfPicker).offsetLeft;
	// Ermittle Range
	var rangeOf = Y_PosOfPicker-widthOfMask;
	
	// Immer das gleiche, oder? Bin mir nicht sicher. Schaun wir mal...
	// Scrolle bis Linke Kante des Pickers plus 80 % der sichtbaren Maskenbreite:
	// (Dann steht der gefragte Picker im ersten Drittel des sichtbaren Bereichs)
	document.getElementById(nameOfMask).scrollLeft = rangeOf + .8 * widthOfMask;
}

// Fuer Tabellenhighlights bei 'onclick' bei mehreren Tabellen
function SetTableRowHighlight(tabelIds, trRowIndex){
	//  Kennzeichnung der Class bei OnClick
	var classOnClick = 'tableRowHighlightOnClick';
	//	Splitte die Parameter
	var tabelIdsTemp = tabelIds.split(',');
	// Durchlaufe allen Tabellen Id`s
	for (var a=0; a <tabelIdsTemp.length; a++) {
		var rowCount = document.getElementById(tabelIdsTemp[a]).getElementsByTagName("TR");
		// Durchlaufe alle TR`s der Tabelle
		for(i=0; i<rowCount.length;i++) {
			// Loesche On-Click-Class
			if(rowCount[i].className.indexOf(classOnClick)!=-1) {
				rowCount[i].className = rowCount[i].className.replace(classOnClick,"");
			}
			// Setze On-Click-Class, wenn RowIndex gleich
			if(trRowIndex == rowCount[i].rowIndex) {
				rowCountTemp           = rowCount[i].className;
				rowCountClassNameTotal = rowCountTemp+" "+classOnClick;
				rowCount[i].className  = rowCountClassNameTotal;
			}
		}
	}
}


//ToolTip New
var VMSToolTip = function( element, userConf) {
	  var  toolTipBox;
    //Parameter 
    var configData = {
  		  	// ID fuer Toolbox
	            id : userConf.id || undefined,  
	        	// Abstand x-pos Toolbox
	        	 x : userConf.x || 10,
	        	// Abstand y-pos Toolbox
	        	 y : userConf.y || 15,
	        	 // Breite
	        	 tooltipwidth : userConf.tooltipwidth || 200
    };
    // INIT EVENT-HANDLER
    var toolTipOver = function(event) {
      toolTipBox.style.display = "block";
    },
    toolTipOut = function(event) {
      toolTipBox.style.display = "none";
    },
    toolTipMove = function(event) {
	        event = event ? event : window.event;
	        if ( event.pageX == null && event.clientX != null ) {
	          var doc = document.documentElement, body = document.body;
	          event.pageX = event.clientX + (doc && doc.scrollLeft || body && body.scrollLeft || 0) - (doc && doc.clientLeft || body && body.clientLeft || 0);
	          event.pageY = event.clientY + (doc && doc.scrollTop  || body && body.scrollTop  || 0) - (doc && doc.clientTop  || body && body.clientTop  || 0);
	        }
	         // CHECKE Y-POSITION	
	        var sumEventYAndHightTool         = (event.pageY+document.getElementById(configData.id).offsetHeight+configData.y);
	        var sumScrollHeightAndInnerHeight = (window.pageYOffset+window.innerHeight) || (document.documentElement.scrollTop+document.documentElement.clientHeight);
	        var toolTipBoxTmpYPos;
	        var toolTipDirection;
	        
	        // Y-POS TOOLTIP LIEGT ÜBER DEM LINK
	        if(sumEventYAndHightTool  >= sumScrollHeightAndInnerHeight) {
	        		toolTipBoxTmpYPos = (event.pageY+configData.y)-(document.getElementById(configData.id).offsetHeight+configData.y);
	        		toolTipDirection = "above";
	        }
	         // Y-POS TOOLTIP LIEGT UNTER DEM LINK
	        else {
	        		toolTipBoxTmpYPos = (event.pageY+configData.y);
	        		toolTipDirection = "under";
	       	 }
	        // CHECKE X-POSITION	  
	        var tmpAvailWidthScreen =  document.body.clientWidth; // Verfuegbare Breite
	        var tmpTotalWidth       =  (event.pageX+document.getElementById(configData.id).offsetWidth+configData.x); // Breite aus X-Mousepos + Breite des Tooltip
	        var parentElem          =  document.getElementById(configData.id).childNodes; // Kinderelemente des Tooltippheaders
	        var toolTipBoxTmpXPos;
	        
	        // X-POS TOOLTIP LIEGT RECHTS NEBEN DEM LINK
	        if(tmpTotalWidth <= tmpAvailWidthScreen) { 
	        	 toolTipBoxTmpXPos = (event.pageX+configData.x);
	        	 toolTipDirection == "above" ? cornerClassCheck('cfl', parentElem) : cornerClassCheck('ctl', parentElem);
		    }
		     // X-POS TOOLTIP LIEGT LINKS NEBEN DEM LINK
	        else {
	          	toolTipBoxTmpXPos  = (event.pageX-document.getElementById(configData.id).offsetWidth-(configData.x/2));
	          	toolTipDirection == "above" ? cornerClassCheck('cfr', parentElem) : cornerClassCheck('ctr', parentElem);
	        }
	        // SETZE TOOLTIPBOX
	      
	       if (document.getElementById(configData.id).offsetWidth > configData.tooltipwidth){
	    		toolTipBox.style.width = configData.tooltipwidth+"px"; }
	    	   
	       
	        toolTipBox.style.top   = toolTipBoxTmpYPos+"px";
	        toolTipBox.style.left  = toolTipBoxTmpXPos+"px";
    }
    
    	// Welche Ecke des Tooltips wird angezeigt
    	function cornerClassCheck (showClassOfCorner, parentElem) {
    		var cornerClassArray      = new Array("ctl", "ctr", "cfl", "cfr");
    		var cornerSlpitClassArray = new Array();
    		
    		for(i=0; i<parentElem.length;i++) {	
    			for(j=0; j<cornerClassArray.length;j++) {
    				if(parentElem[i].className != null) {
    					cornerSlpitClassArray = parentElem[i].className.split(" ");
    					for(k=0; k<cornerSlpitClassArray.length;k++) {
    						 if(cornerSlpitClassArray[k] == cornerClassArray[j] && cornerSlpitClassArray[k] ==	showClassOfCorner) {
    						 	parentElem[i].style.display = "block";
    						 }
    						 else if (cornerSlpitClassArray[k] == cornerClassArray[j]) {
    						 	parentElem[i].style.display = "none";
    						 }
    					}
    				}
    			}
	        }
    	}
 		
    // Hole Id des anzuzeigenden Tooltips
    if (toolTipBox === undefined && configData.id) {
      toolTipBox = document.getElementById(configData.id);
      if (toolTipBox) {
      	tooltip = toolTipBox.parentNode.removeChild(toolTipBox)
      }
    }
    
		toolTipBox = document.body.appendChild(toolTipBox);
		toolTipBox.style.position = "absolute";
		element.onmouseover = toolTipOver;
		element.onmouseout  = toolTipOut;
		element.onmousemove = toolTipMove;
		toolTipOver();
	 };
	    
  window.VMSToolTip = window.VMSTT = VMSToolTip;

/**
 * COUNTDOWN FUER ANGEBOTSFRIST
 */

var currentServerTime, endOfTime, remainingremainingDays, remainingHours, remainingMinutes, remainingSeconds, periodOfTime;

function countDownTimer (currentIdOfBox) {
	//
	// Verbleibende Zeit
	periodOfTime--;
	//
	// Zeitberechnung
	remainingDays    = Math.floor(periodOfTime / 60 / 60 / 24);
	remainingHours   = Math.floor(periodOfTime / 60 / 60 - (24 * remainingDays));
	remainingMinutes = Math.floor(periodOfTime / 60 - (24 * 60 * remainingDays) - (60 * remainingHours));
	remainingSeconds = periodOfTime - (24 * 60 * 60 * remainingDays) - (60 * 60 * remainingHours) - (60 * remainingMinutes);
	//
	// Wenn Endzeit erreicht wurde
	if(periodOfTime < 1) {
		document.getElementById(currentIdOfBox+'_days').innerHTML     = "00";
		document.getElementById(currentIdOfBox+'_hours').innerHTML    = "00";
		document.getElementById(currentIdOfBox+'_minutes').innerHTML  = "00";
		document.getElementById(currentIdOfBox+'_seconds').innerHTML  = "00";
		// Was soll nach Ablauf gemacht werden
		countDownFinished();}
	//	
	// Zaehle weiter runter	
	else {
		document.getElementById(currentIdOfBox+'_days').innerHTML    = (remainingDays < 10)    ? remainingDays    = "0"+remainingDays : remainingDays = remainingDays;
		document.getElementById(currentIdOfBox+'_hours').innerHTML   = (remainingHours < 10)   ? remainingHours   = "0"+remainingHours : remainingHours = remainingHours;
		document.getElementById(currentIdOfBox+'_minutes').innerHTML = (remainingMinutes < 10) ? remainingMinutes = "0"+remainingMinutes : remainingMinutes = remainingMinutes;
		document.getElementById(currentIdOfBox+'_seconds').innerHTML = (remainingSeconds < 10) ? remainingSeconds = "0"+remainingSeconds : remainingSeconds = remainingSeconds;
		// Nach 1Sek Aufruf der Funktion
		window.setTimeout("countDownTimer('"+currentIdOfBox+"');", 1000);			
	}

}
/**********************************************************************************
 * ENDE FUNKTIONEN AKTENDECKEL
 */

/**********************************************************************************
 * START FUNKTIONEN ANZEIGEN VON DIALOGEN AB 14-03-2011
 * Neue Funktion für Wartedialoge, Dialoge für Dateiupload, Wizards etc.
 * 
 * Aufrufbeispiel: 
 *  SetDialog(true,{contentID:'demoModusOfFileWaitingDialog', contentDIR_Y:'center',contentIFRAME=false })        // Aufruf aus Parentseite
 *  parent.SetDialog(true,{contentID:'demoModusOfFileWaitingDialog', contentDIR_Y:'center',contentIFRAME=false }) // Aufruf aus IFRAME
 * 
 * statusOfLockBg           = true/false (Hintergrund sperren (anzeigen oder nicht)
 * userConf:
 * userConf.contentID       = ID des DIV welcher dann angezeigt werden soll (Pflichtig beim anzeigen oder verstecken)
 * userConf.contentDIR_Y    = Y-Pos des Dialoges (top,center) (optinal | default : 'center'), wenn nicht angegeben, dann default : 'center'
 * userConf.contentIFRAME   = (optinal | default : false), wenn ein Dialog im IFRAME aufgerufen wird
 */
parentCTArray   = new Array(); // Speichert Contentbox auf Parentseite
iframeCTArray   = new Array(); // Speichert Contentbox wenn IFRAME aufgerufen wird
parentBGArray   = new Array(); // Speichert BGHidden auf Parentseite
iframeBGArray   = new Array(); // Speichert BGHidden wenn IFRAME aufgerufen wird
ctArray         = new Array(); // Speichert Eigenschaften der Contentbox auf Parentseite
createDivArray  = new Array(); // Speichert Eigenschaften der Contentbox wenn IFRAME aufgerufen wird
var bgHiddenID          = 'pseudoID_'; // ID des BGHidden;
var bgHiddenCount       = 0;  // bgHiddenID default 0;
var bgHiddenZINDEX      = 30000;  // Z-Index, fuer VMS auf 30000 
var bgHiddenZINDEX_ORG  = 30000;  // bgHiddenZINDEX_ORG default, wenn Dialoge geschlossen wurden

function SetDialog (statusOfLockBg, userConf){
	// Init Parameter aus Funktionsaufruf
	var configData = {
	        	// ID der Contentinhaltsbox
	        	ct_id        : userConf.contentID || undefined,
	        	// Wenn im IFRAME
	        	ct_iframe    : userConf.contentIFRAME || false,
	        	// Vertikale Ausrichtung des Contentdiv
	        	ct_dircetion_y : userConf.contentDIR_Y || 'center'};
	// Erstelle lockBG
	if(statusOfLockBg == true) {
			var bgHidden = SetBGHidden (configData.ct_iframe, configData.ct_id);				
			// Prüfung, ob eine Hinweisbox angegeben werden soll und ob sie überhaupt schon existiert
			if(parentCTArray.length == 0 && configData.ct_iframe == false) {
				// Zeige Contentinhaltsbox und erhöhe den zIndex um 1 vom lockBG
				 parent.document.getElementById(configData.ct_id).style.display  = "block";
				 parent.document.getElementById(configData.ct_id).style.zIndex   = bgHiddenZINDEX++;
				 // Befülle Array
				 ctArray["height"]    = document.getElementById(configData.ct_id).offsetHeight;
				 ctArray["width"]     = document.getElementById(configData.ct_id).offsetWidth;
				 ctArray["id"]        = document.getElementById(configData.ct_id).id;
				 ctArray["zindex"]    = document.getElementById(configData.ct_id).style.zIndex;
				 ctArray["direction"] = configData.ct_dircetion_y;
				 // Setze Position
				 var ctPosition = SetCTBox(ctArray["id"], configData.ct_dircetion_y, ctArray["width"],  ctArray["height"]  , configData.ct_iframe);				
			}
			// Contentinhaltsbox vom IFRAME, wenn gefordert
			if(parentCTArray.length > 0 && configData.ct_iframe == true)  {
					// Kinderelement von erster CT-Box
					var ctNode          = parent.document.getElementById(ctArray["id"]).childNodes;
					// Durchlauf der Kinderelemente
					for (var k=0; k < ctNode.length; k++) {
						if(ctNode[k].hasChildNodes()) {
							var ctNodeHasChildNotes = ctNode[k].childNodes;
							for (var m=0; m  <ctNodeHasChildNotes.length; m++) {
								// Wenn tag ein Iframe ist
								if (ctNodeHasChildNotes[m].tagName == 'iframe' || ctNodeHasChildNotes[m].tagName == 'IFRAME') {
									createDivArray["zindex"]    = bgHiddenZINDEX++;
									// Hole Inhalt aus Contentinhaltsbox im IFRAME
									if(!window.frames[ctNodeHasChildNotes[m].name]) {
										alert("Hallo Programmierer, gib deinem IFRAME "+window.frames[ctNode[k].id]+" mal das Attribut NAME");	
									}
									else {
										createDivArray["innerHTML"] = window.frames[ctNodeHasChildNotes[m].name].document.getElementById(configData.ct_id).innerHTML;
										createDivArray["classname"] = window.frames[ctNodeHasChildNotes[m].name].document.getElementById(configData.ct_id).className;
										createDivArray["id"]        = window.frames[ctNodeHasChildNotes[m].name].document.getElementById(configData.ct_id).id+"_PARENT";
										createDivArray["direction"] = configData.ct_dircetion_y;
									}
								}
							}
						}
					}
					// Erstelle die Contentinhaltsbox vom IFRAME auf dem PARENT
					var createDiv          = parent.document.createElement('div');
					createDiv.id           = createDivArray["id"];
					createDiv.className    = createDivArray["classname"];
					createDiv.innerHTML    = createDivArray["innerHTML"];
					createDiv.style.zIndex = createDivArray["zindex"];
					// Erstelle div
					parent.document.body.appendChild(createDiv);
					// Erhöhe Array
					iframeCTArray.push(createDiv.id);
					// Darstellung und Ausrichtung
					parent.document.getElementById(createDiv.id).style.display ="block";
					var widthDiff  = parseInt(parent.document.getElementById(iframeBGArray[0]).style.width)  - parent.document.getElementById(createDiv.id).offsetWidth;
					var heightDiff = parseInt(parent.document.getElementById(iframeBGArray[0]).style.height) - parent.document.getElementById(createDiv.id).offsetHeight;
					// X-Pos Ausrichtung
					parent.document.getElementById(createDiv.id).style.left = parseInt(parent.document.getElementById(iframeBGArray[0]).style.left) +(parseInt(widthDiff)/2)+"px";
					// Y-Pos Ausrichtung
					switch(configData.ct_dircetion_y) {
							case "top":
							parent.document.getElementById(createDiv.id).style.top = parent.document.getElementById(iframeBGArray[0]).style.top;
							break;
							// Center
							default:
							parent.document.getElementById(createDiv.id).style.top = parseInt(parent.document.getElementById(iframeBGArray[0]).style.top) +(parseInt(heightDiff)/2)+"px";
					  }
			}
	}
	// Ausblenden der Dialoge
	else {
		// Lösche DIVs im Parent, wenn configData.ct_iframe = false
		if(configData.ct_iframe == false) {
				if(parentBGArray.length > 0) {
					parent.document.body.removeChild(document.getElementById(parentBGArray[0]));
					parentBGArray  = new Array(); // Setze Array zurück
					// Lösche Erstellten Hidden-Button
					parent.document.body.removeChild(document.getElementById("hiddenFocusButt"));
					// Zindex auf default setzen
					bgHiddenZINDEX = bgHiddenZINDEX_ORG;
				}
				// Setze den ContentInhalt, falls vorhanden wieder auf unsichtbar
				if(parentCTArray.length > 0) {
					parent.document.getElementById(parentCTArray[0]).style.display  ="none";
					parentCTArray  = new Array(); // Setze Array zurück
				}
			}
		// Lösche DIVs im IFRAME, wenn configData.ct_iframe = true
		else {
				if(iframeCTArray.length > 0) {
					parent.document.body.removeChild(document.getElementById(createDivArray["id"]));
					iframeCTArray  = new Array(); // Setze Array zurück	
				}
				if(iframeBGArray.length > 0) {
					parent.document.body.removeChild(document.getElementById(iframeBGArray[0]));
					iframeBGArray  = new Array(); // Setze Array zurück	
				}
		}
	}	
}
//
// Sperre Hintergund, erstelle bgHidden
function SetBGHidden (ctIframe, ctID) {
		 var lockBG        	 = parent.document.createElement('div'); 
		 lockBG.id         	 = bgHiddenID+""+bgHiddenCount++;  
		 lockBG.style.zIndex = bgHiddenZINDEX++; 
		 lockBG.className    = 'bgHiddenNew';
	 	 lockBG.style.filter = 'alpha(opacity=50)';
	 	 if(ctIframe == false) {
			 lockBG.style.height = (parent.document.body.clientHeight < parent.document.documentElement.clientHeight) ? parent.document.documentElement.clientHeight+"px" : parent.document.body.clientHeight+"px";
			// Erstelle unsichtbare Button der den focus bekommt
			 var hiddenButt               = parent.document.createElement('a'); 
			    hiddenButt.id             = "hiddenFocusButt"; 
			    hiddenButt.href           = "#";
			    hiddenButt.style.position = "absolute"; 
			    hiddenButt.style.top      = "-10000px"; 
			    hiddenButt.style.left      = "0"; 
			    document.body.appendChild(hiddenButt);
			    document.getElementById(hiddenButt.id).focus();
	 	 }
	 	 // 
	 	 else {
	 	 	lockBG.style.height = parent.document.getElementById(parentCTArray[0]).offsetHeight+"px";
	 	 	lockBG.style.width  = parent.document.getElementById(parentCTArray[0]).offsetWidth+"px";
	 	 	lockBG.style.top    = parent.document.getElementById(parentCTArray[0]).style.top;
	 	 	lockBG.style.left   = parent.document.getElementById(parentCTArray[0]).style.left;
	 	 }
	 	 // Hänge DIV an parent body
		 parent.document.body.appendChild(lockBG);
		 var percentage=(typeof(percentage)=="undefined")? 50 : 100-percentage;
		 var filterValue="Alpha(opacity="+percentage+")";
		 var opacityValue=""+percentage/100;
		 var lockBGElements=(lockBG.length) ? lockBG.length : 1;
		 for(i=0;i<lockBGElements;i++) {	
		     // (Arbeits-)Stylesheet-lockBGekt definieren
		     lockBGStyle=(lockBG.length) ? lockBG[i].style : lockBG.style;
		     // "filter(Alpha)"-Style setzen (fuer IE)
		     lockBGStyle.filter=filterValue;
		     // "-moz-opacity"-Style setzen (fuer Mozilla)
		     lockBGStyle.MozOpacity=0.9;
		     // "-khtml-opacity"-Style setzen (fuer Konqueror/Safari)
		     lockBGStyle.KhtmlOpacity=0.9;
		     // "opacity"-Style setzen (fuer CSS-3-Browser)
		     lockBGStyle.opacity=opacityValue;  
		}
		// Im IFREAME oder nicht dient zur Speicherung der bgHiddens
		 (ctIframe == false) ? parentBGArray.push(lockBG.id) : iframeBGArray.push(lockBG.id);
		 return;
}
//
// Positionierung der Contentinhaltsbox (wird hier nur für Contentbox auf parent benötigt, Zwecks 'Testsystem' und 'Präsentationsmodus 
function SetCTBox (ctID, ctDircetionY, ctBoxWidth, ctBoxHeight) {
		  var newX,newY;
		  var checkTestSystem = document.getElementById('testSystemBox');
		  var checkDemoModus  = document.getElementById('demoModusOfFile');
		  var winHeight       = parent.window.innerHeight || parent.document.documentElement.clientHeight;
		  var winWidth        = parent.window.innerWidth || parent.document.documentElement.clientWidth;
		  switch(ctDircetionY) {
				case "top":
					// Wenn weder Testsytem noch Demomodus vorhanden sind
					if (checkTestSystem == null && checkDemoModus == null) {
					newY = 0;}
					// Wenn Testsytem und Demomodus vorhanden ist
					else if (checkTestSystem != null && checkDemoModus != null) {
						newY = (checkTestSystem.offsetHeight + checkDemoModus.offsetHeight);
					}
					// Wenn nur Demomodus vorhanden ist
					else if (checkTestSystem == null && checkDemoModus != null) {
						newY = checkDemoModus.offsetHeight;
					}
					// Wenn nur Testsystem vorhanden ist
					else if (checkTestSystem == null && checkDemoModus == null) {
						newY = checkTestSystem.offsetHeight;
					}
				  break;
				case "bottom":
				  newY  = parseInt((winHeight-ctBoxHeight)); 
				  break;
				default:
				  // Var Mittig
				  newY = parseInt((winHeight-ctBoxHeight)/2); 	 
		 }
		  newX = parseInt((winWidth-ctBoxWidth)/2); 
		  // Setze ContentInhalt
		  parent.document.getElementById(ctID).style.top =newY+"px";
		  parent.document.getElementById(ctID).style.left=newX+"px"; 
		  // Im IFREAME oder nicht
		  if(parentCTArray.length == 0)  {
		  		parentCTArray.push(ctID);
		  }
		  return;
	}
	
// Wenn Browserfenster verkleinert oder vergrößert wird, setze alle Dialoge neu
window.onresize = function () {
		// Resize 1. BG Hintergrund
		if(parentBGArray.length > 0) {
			parent.document.getElementById(parentBGArray[0]).style.height = (parent.document.body.clientHeight < parent.document.documentElement.clientHeight) ? parent.document.documentElement.clientHeight+"px" : parent.document.body.clientHeight+"px";
		}
		// Resize 1. ContentBox
		if(parentCTArray.length > 0) {
			var  parentCTNewPos = SetCTBox (ctArray["id"],  ctArray["direction"], ctArray["width"], ctArray["height"], 'false');
		}
		// Resize 2. BG Hintergrund (IFRAME)
		if(iframeBGArray.length > 0) {
			parent.document.getElementById(iframeBGArray[0]).style.top  = parent.document.getElementById(ctArray["id"]).style.top;
			parent.document.getElementById(iframeBGArray[0]).style.left = parent.document.getElementById(ctArray["id"]).style.left;
		}
		// Resize 2. ContentBox (IFRAME)
		if(iframeCTArray.length > 0) {
			if(createDivArray["direction"] == "top") {
				parent.document.getElementById(iframeCTArray[0]).style.top = parent.document.getElementById(iframeBGArray[0]).style.top;
			}
			else {
				var heightDiff = parseInt(parent.document.getElementById(iframeBGArray[0]).style.height) - parent.document.getElementById(iframeCTArray[0]).offsetHeight;
				parent.document.getElementById(iframeCTArray[0]).style.top  = parseInt(parent.document.getElementById(iframeBGArray[0]).style.top) +(parseInt(heightDiff)/2)+"px";
			}
			var widthDiff  = parseInt(parent.document.getElementById(iframeBGArray[0]).style.width)  - parent.document.getElementById(iframeCTArray[0]).offsetWidth;
			parent.document.getElementById(iframeCTArray[0]).style.left = parseInt(parent.document.getElementById(iframeBGArray[0]).style.left) +(parseInt(widthDiff)/2)+"px";
		}
	}		
/**********************************************************************************
 * ENDE FUNKTIONEN ANZEIGEN VON DIALOGEN AB 14-03-2011
 */
 
 
/***********************************************************************************
 * Funktionen für die GAEB-Ansicht
 *  */
function isIE7() {
	return "IE 7" == getBrowser();
}

function isIE8() {
	return "IE 8" == getBrowser();
}

function getBrowser() {
	check=[
	['window.postMessage',
	 'window.XMLHttpRequest&&(document.postMessage||window.external)',
	 'document.compatMode',
	 '(document.detachEvent||document.contentType)'],
	['window.execScript','window.pkcs11','window.opera',
									  'window.navigator&&window.navigator.vendor'],
	[['IE 8','FF 3','Op 9.5','KDE?'],
	 ['IE 7','FF 2','Op 9','KDE?'],
	 ['IE 6','FF 1.5','Op 8','KDE/Safari 3'],
	 ['IE 5x','NN 7','Op 7','KDE/Konqu. 3']]];
	var j; var b; for(n=0;n<check[1].length;n++){if(!eval(check[1][n])==0)b=n;}
	for(n=check[0].length;n>-1;n--){if(!eval(check[0][n])==0)j=n;}

	return (j>-1&&b>-1)?check[2][j][b]:'Älterer Browser o. unbekannt.'
}

/**
 * Scrollt die Seite 100 Millisekunden nach Aufruf um den Abstand delta in
 * Pixeln nach unten. Wird für delta ein negativer Wert angegeben, dann wird
 * die Seite nach oben gescrollt. Falls für delta nichts angegeben wird, dann
 * geschieht nichts.
 * 
 * @param {Object} delta Abstand in Pixeln, um die die Seite (nach 100 ms) nach
 * unten zu scrollen ist.
 */
function scrolldown(delta) {
	
	if(delta) {
		window.setTimeout('window.scrollBy(0, ' + delta + ')', 100);
	}
}


/**
 * Holt x und y Position eines Objekts 
 */
function DivPosition(el) {
    // yay readability
    for (var lx=0, ly=0;
         el != null;
         lx += el.offsetLeft, ly += el.offsetTop, el = el.offsetParent);
    return {x: lx,y: ly};
}


/**
 * Animation fuer Loading Sequenz 
 */
var countBG=1;
function LoadingAnimSequence (loadingDivId) {
	// Auf 4 wieder zuruecksetzen
	if(countBG == 4){countBG = 1;} 
	// Wechsel background-image
	document.getElementById(loadingDivId).className  = "loadingAnimPic"+countBG; 
	// erhoehe um 1
	countBG=countBG+1;
	// Starte Timer und Recall
	var t=setTimeout("LoadingAnimSequence('"+loadingDivId+"')",150);
}

