// image for the waiting page
var waitImage = "Images/dino2.gif";

// z?hlt die selektierten Elemente in element (= multiple selection)
function getSelectCount(element)
{
    var anzSelElems = 0;
    for (i = 0; i < element.length; i++)
    {
        if (element.options[i].selected == true)
            anzSelElems++;
    }

    return(anzSelElems);
}

/*
 * Setzt eine bestimmte Checkbox auf true (Haken wird gesetzt)
 */
function setSelectedElem(theForm, checkboxName, val)
{
    var allElems = theForm.elements[checkboxName];
    if (allElems != null)
    {
	    for(var i=0; i<allElems.length; i++)
	    {
	        if(allElems[i].value == val.toString())
	        {
	            allElems[i].checked = true;
	        }
	    }
	}
}

/*
 * Wenn in einer Liste Elemente mit Checkboxes ausgew?hlt werden kann, liefert
 * diese Funktion ein Array zur?ck, das die values der gew?hlten Eintr?ge enth?lt
 */
function getSelectedElems(theForm, checkboxName)
{
    var selectedElems = new Array();
    var allElems = theForm.elements[checkboxName];

    // Wenn's nur eine Zeile, d. h. nur eine Checkbox gibt, liefert theForm.elemens
    // kein Array.
    if( !allElems.length )
    {
        if(allElems.checked)
        {
            selectedElems.push(allElems);
        }
    }
    else
    {
        for(var i=0; i<allElems.length; i++)
        {
            if(allElems[i].checked)
            {
                selectedElems.push(allElems[i]);
            }
        }
    }
    return selectedElems;
}

// selektiert oder deselektiert alle Optionen in element (= multiple selection)
function selectAllOptions(element, select)
{
    var anzElems = element.length;
    for (i = 0; i < anzElems; i++)
        element.options[i].selected = select;
}

// l?scht alle Optionen in einem select element
function deleteAllOptions(element)
{
    var anzElems = element.length;
    for (i = 0; i < anzElems; i++)
        element.options[i] = null;
}

// f?gt eine Optionen zu einem select element dazu
function addOption(element, text, value)
{
    newOption = new Option(text, value, false, true);
    // hinter letzten Eintrag h?ngen
    var lastIndex = element.length;
    element.options[lastIndex] = newOption;
}

function askDelete(theForm, textIfDelete)
{
    // Frage ob die ausgew?hlten Elemente wirklich gel?scht werden sollen.
    var checkbox_choices = 0;
    for (i = 0; i < theForm.elements.length; i++)
    {
        if(theForm.elements[i].type == "checkbox")
        {
            if (theForm.elements[i].checked)
              checkbox_choices = checkbox_choices + 1;
        }
    }
    if (checkbox_choices == 0)
        return true;
    else
        return confirm(textIfDelete);
}

// ?berpr?ft ob beim L?schen auch ein Element ausgew?hlt wurde
function validateDelete(theForm, textIfDelete, textNoSelect)
{
    // ?berpr?ft ob f?r das nicht optionale Auswahlfeld 'L?schen' etwas ausgew?hlt wurde.
    var answ = false;
    var checkbox_choices = 0;
    for (i = 0; i < theForm.elements.length; i++)
    {
        if(theForm.elements[i].type == "checkbox")
        {
            if (theForm.elements[i].checked
            	&& !theForm.elements[i].disabled)
              checkbox_choices = checkbox_choices + 1;
        }
    }
    if (checkbox_choices == 0)
    {
        alert(textNoSelect);
    }
    else
        answ = confirm(textIfDelete);

	if (answ == false)
	{
	    var el = document.getElementById("delId");
	    if (el != null)
	    {
			el.checked = false;
			el.value = 0;
		}
	}
	return answ;
}

function removeSelection()
{
	// vor dem Löschen müssen die zugeordneten selIds entfernt werden, weil sonst alle zugeordneten Gruppen
	// gelöscht werden würden
    var selIdElement = document.forms[0].elements["selId"];
    if (selIdElement)
    {
		for(var i=0; i < selIdElement.length; i++)
		{
			selIdElement[i].value = -1;
		}
    }
}

// Setzt beim L?schen ?ber das L?schsymbol das zu l?schende Element und bet?tigt 
// den L?sch-Button
function deleteSelected(delId)
{
	removeSelection();
    var theForm = document.forms[0];
    var el = document.getElementById("delId");
	el.checked = true;
	el.value = delId;
	var delButton = theForm.elements["delete"];
    delButton.click();
	return(false);
}

function validateChoice(theForm, textNoSelect)
{
    var checkbox_choices = 0;
    for (i = 0; i < theForm.elements.length; i++)
    {
    	var element = theForm.elements[i];
        if((element.type == "checkbox" || element.type == "radio") && element.name.indexOf("optional") == -1)
        {
            if (element.checked)
              checkbox_choices = checkbox_choices + 1;
        }
    }
    if (checkbox_choices == 0)
    {
        alert(textNoSelect);
        return false;
    }
    else
        return true;
}

function validateText(theForm, text)
{
    // ?berpr?ft ob f?r die nicht optionalen Textfelder etwas eingegeben wurde.
    var errorFound;
    errorFound = 0;
    for(var j= 0; j<theForm.elements.length; j++)
    {
        var elem = theForm.elements[j];
        if(elem.name.indexOf("error") != -1)
            theForm.elements[j].style.visibility = "hidden";
    }
    for(var i = 0; i<theForm.elements.length; i++)
    {
        var elem = theForm.elements[i];
        if((elem.type == "text" || elem.type == "password") && elem.value == "" && elem.name.indexOf("error") == -1 && elem.name.indexOf("optional") == -1)
        {
            errorFound = 1;
            theForm.elements[i+1].value = text;
            theForm.elements[i+1].style.visibility = "visible";
        }
    }
    if (errorFound == 1)
        return false;
    else
        return true;
}

function validateNumeric(theForm, fieldName, text)
{
    for(var i = 0; i<theForm.elements.length; i++)
    {
        var elem = theForm.elements[i];
        if (elem.name != fieldName)
            continue;
        if(elem.type == "text" && isNaN(elem.value) && elem.name.indexOf("error") == -1)
        {
            theForm.elements[i+1].value = text;
            theForm.elements[i+1].style.visibility = "visible";
            return false;
        }
    }
    return true;
}

function validatePassword(theForm, text1, text2)
{
    // ?berpr?ft ob die Passwortbest?tigung mit dem Passwort ?bereinstimmt.
    if (validateText(theForm, text1) == true)
    {
        var pass1 = theForm.elements["optionalpass1"].value;
        var pass2 = theForm.elements["optionalpass2"].value;
        if (pass1 != pass2)
        {
            theForm.elements["errorpass1"].value = text2;
            theForm.elements["errorpass1"].style.visibility = "visible";
            theForm.elements["errorpass2"].value = text2;
            theForm.elements["errorpass2"].style.visibility = "visible";
            return false
        }
        else
            return true;
    }
    else
    	return false;
}

function moveComboOptions(objForm, leftName, rightName, toRight){
  // Verschiebt alle selektierten Optionen von einer Combo Box in eine andere
  var index = -1;
  var lastIndex = -1;
  var tmpText = "";
  var tmpValue = "";
  var newOption;
  var anzElems = 0;

    var leftElements = objForm.elements[leftName];
    var rightElements = objForm.elements[rightName];

  if (toRight == true){
    anzElems = leftElements.length;
  } else {
    anzElems = rightElements.length;
  }

  for (i = anzElems-1; i >= 0; i--)
  {
      // ausgew?hlten Eintrag lesen
      if (toRight == true){
        if (!leftElements.options[i].selected)
          continue;
      } else {
        if (!rightElements.options[i].selected)
          continue;
      }
      index = i;
      // Evaluieren
      if (index > -1){
        // Werte lesen
        if (toRight == true) {
          tmpText = leftElements[index].text;
          tmpValue = (leftElements[index].value) ?
                       (leftElements[index].value) : tmpText;
          // Anzahl der vorhandenen Eintr?ge in der Zielliste
          lastIndex = rightElements.length;
        } else {
          tmpText = rightElements[index].text;
          tmpValue = (rightElements[index].value) ?
                       rightElements[index].value : tmpText;
          // Anzahl der vorhandenen Eintr?ge in der Zielliste
          lastIndex = leftElements.length;
        }
      } else {
        return false;
      }
      // neue Option erzeugen: defaultSelected = false, selected = true
      newOption = new Option(tmpText, tmpValue, false, true);
      // hinter letzten Eintrag h?ngen
      if (toRight == true){
        objForm.elements[rightName].options[lastIndex] = newOption;
      } else {
        leftElements.options[lastIndex] = newOption;
      }
      // alte Option l?schen
      if (toRight == true){
        leftElements.options[index] = null;
      } else {
        rightElements.options[index] = null;
      }
  }

  return true;
}

// Verschiebt alle selektierten Optionen von targetField nach sourceField
function moveSelectedOptions(targetField, sourceField)
{
  var index = -1;
  var tmpText = "";
  var tmpValue = "";

  for (i = sourceField.length-1; i >= 0; i--)
  {
      // ausgew?hlten Eintrag lesen
        if (!sourceField.options[i].selected)
          continue;

      index = i;
      tmpText = sourceField[index].text;
      tmpValue = (sourceField[index].value) ?
                   (sourceField[index].value) : tmpText;
      // Anzahl der vorhandenen Eintr?ge in der Zielliste
      lastIndex = targetField.length;
      
      // neue Option erzeugen: defaultSelected = false, selected = true
	var newOption = new Option(tmpText, tmpValue, false, true);
      // hinter letzten Eintrag anh?ngen
	targetField.options[targetField.length] = newOption;

	// Option im Sourcefeld l?schen
	sourceField.options[index] = null;
  }

  return true;
}


/*
* HtmlCalendar Updatefunktion
* par = 0 Jahr += delta
* par = 1 Monat += delta, Jahr +/-= 1
*/
function updcal(par,delta)
{
	var year = parseInt(document.navbar.year.value, 10);
	var month = parseInt(document.navbar.month[document.navbar.month.selectedIndex].value, 10);
	if (par == 0)
		year += delta;
	else
	{
		month += delta;
		if (month > 11)
		{
			month -= 12;
			year++;
		}
		else if (month < 0)
		{
			month += 12;
			year--;
		}
	}

	top.navbar.location.replace('NavBar.do?year=' + year + '&month=' + month);
}

// Wartenachricht
function getWaitTableStr(wsizex, wsizey, messageStr)
{
    var waitPageColor = 0xffffff;
  var result = '<center>\
<table align="center" height="'+wsizey+'px" style="background-color:'+ waitPageColor +'; width:'+wsizex+'px; margin-top:3px;margin-bottom:3px; border-width:3px; border-style:solid; border-color:#6699CC;font-size: 12px; font-family: Verdana;">\
  <tr align="center"><td valign="bottom">'+ messageStr +'</td></tr>\
  <tr align="center"><td valign="center"><img src="'+ waitImage +'" border="0"></td></tr>\
</table></center>'

  return result;
}

/*
    l?dt eine neue Seite in das Hauptfenster und zeigt eine Wartemeldung
*/

var isLoading = false;

function showWaitMessage(messageStr)
{
    var pwidth = 400;
    var pheight = 200;
//    messageStr = "Befehl wird ausgef?hrt";

    var maindoc = parent.main.document;
//    maindoc.open();
//	maindoc.write('<div id="waitPage">'+getWaitTableStr(pwidth,pheight,messageStr)+'</div>');
//    maindoc.close();
    var wndBody = parent.main.document.body;
   wndBody.innerHTML = '<div id="waitPage">'+getWaitTableStr(pwidth,pheight,messageStr)+'</div>';

    msg = parent.main.document.getElementById("waitPage");
    msg.style.position = 'absolute';
    msg.style.top = '20px';
    msg.style.left = '20px';
    msg.style.width= pwidth+'px';
    msg.style.height= pheight+'px';


    wndBody.style.cursor = "wait";
}

function loadPage(url, messageStr)
{
    if (isLoading)
        return;

//    isloading = true;

	if (messageStr != null)
	{
	    showWaitMessage(messageStr);
	}
    parent.main.location = url;
    return(false);
}

// Link zu einer anderen Ansicht
function openView(view)
{
	window.location=view;
}

function getXPosition(width)
{
	// Popup in der Mitte des Browsers zentrieren
	// Wenn man nur innerWidth oder document.body.clientWidth verwendet bekommt man nur
	// die Gr??e des inneren Frames
	var ns6 = (!document.all && document.getElementById);
	var ie4 = (document.all);
	var ns4 = (document.layers);
	if(ns6||ns4) {
		sbreite = parent.frames["title"].innerWidth;
		sleft = parent.frames["title"].screenX;
	}
	else if(ie4) {
		sbreite = parent.frames["title"].document.body.clientWidth;
		sleft = parent.frames["title"].screenLeft;
	}
	// Position berechnen
	var x = Math.round((sbreite-width)/2);
	// x = (screen.width-width)/2;
	if (x < 0) x = 0;
	x = x + sleft;
	return x;
}

function getYPosition(height)
{
	// Popup in der Mitte des Browsers zentrieren
	// Wenn man nur innerWidth oder document.body.clientWidth verwendet bekommt man nur
	// die Gr??e des inneren Frames
	var ns6 = (!document.all && document.getElementById);
	var ie4 = (document.all);
	var ns4 = (document.layers);
	if(ns6||ns4) {
		shoehe = parent.frames["title"].innerHeight + parent.frames["cmdbar"].innerHeight + innerHeight;
		stop = window.screenY + (outerHeight - shoehe - 10);
	}
	else if(ie4) {
		shoehe = parent.frames["title"].document.body.clientHeight + 
				parent.frames["cmdbar"].document.body.clientHeight +
				document.body.clientHeight;
		stop = parent.frames["title"].screenTop;
	}
	// Position berechnen
	var y = Math.round((shoehe-height)/2);
	// y = (screen.height-height)/2;
	if (y < 0) y = 0;
	y = y + stop;
	return y;
}

/*
 * ?ffnen eines Detailfensters mit Scrollbalken
 */
function openDetailScrollWin(objLink, width, height)
{
	var x = getXPosition(width);
	var y = getYPosition(height);
    detailWin = open(objLink.href,objLink.target,"height=" + height + ",width=" + width + ",top="+y+",left="+x+",screenx="+x+",screeny="+y+",resizable=yes,scrollbars=yes");
    detailWin.resizeTo(width, height);
    detailWin.focus();
    return false;
}

/*
 * Oeffnen eines Detailfensters.
 */
function openDetailWin(objLink, width, height)
{
	try 
	{
		var x = getXPosition(width);
		var y = getYPosition(height);
		detailWin = open(objLink.href,objLink.target,"height=" + height + ",width=" + width + ",top="+y+",left="+x+",screenx="+x+",screeny="+y+",resizable=yes");
		detailWin.resizeTo(width, height);
		detailWin.focus();
	}
    catch (e) 
    {
        alert(e);
    }
    return false;
}

function openTopicWin(objLink)
{
	return openDetailScrollWin(objLink,520,700);
}

function openDetailWindow(link, width, height)
{
	try 
	{
		var x = getXPosition(width);
		var y = getYPosition(height);
		detailWin = open(link,'newWin',"height=" + height + ",width=" + width + ",top="+y+",left="+x+",screenx="+x+",screeny="+y+",resizable=yes");
		detailWin.resizeTo(width, height);
		detailWin.focus();
    }
    catch (e) 
    {
        alert(e);
    }
    
    return false;
}

function openDetailScrollWindow(link, width, height)
{
	var x = getXPosition(width);
	var y = getYPosition(height);
    detailWin = open(link,'newWin',"height=" + height + ",width=" + width + ",top="+y+",left="+x+",screenx="+x+",screeny="+y+",resizable=yes,scrollbars=yes");
    detailWin.resizeTo(width, height);
    detailWin.focus();
    return false;
}

function openDetailTargetWindow(link, width, height, target)
{
	var x = getXPosition(width);
	var y = getYPosition(height);
    detailWin = open(link,target,"height=" + height + ",width=" + width + ",top="+y+",left="+x+",screenx="+x+",screeny="+y+",resizable=yes");
    detailWin.resizeTo(width, height);
    detailWin.focus();
    return false;
}

function openTopicWindow(link)
{
	return openDetailScrollWindow(link,520,700);
}
/*
	getTime(), getMinutes() f?r Booking.jsp
*/
function getTime(timeStr)
{
	for (var i = 0; i < timeStr.length; i++)
	{
		var delimiter = timeStr.charAt(i);
		if (delimiter < '0' || delimiter > '9')
			break;
	}
	var hh = parseInt(timeStr.substring(0,i),10);
	var mm = 0;
    if (i < timeStr.length)
		mm = parseInt(timeStr.substring(i+1),10);
	var time = hh*100 + mm;
	return(time);
}

function getMinutes(time)
{
    var min2 = (time % 100);
    var min1 = (time - min2)/100;
    var minuten = min1*60 + min2;
    return(minuten);
}


/*
 * Fehlermeldung wird relativ zur Position des Eingabeelementes ausgegeben.
 */
function showError(elemId, errorElemId, errorString)
{
	var elem = document.getElementById(elemId);
	var errorElem = document.getElementById(errorElemId);

	var left = elem.offsetWidth + 5;
	var top = 0;

	var parentElem = elem;
	while(parentElem != null)
	{
		left += parentElem.offsetLeft;
		top += parentElem.offsetTop;
		parentElem = parentElem.offsetParent;
	}

	errorElem.style["position"] = "absolute";
	errorElem.style["left"] = left;
	errorElem.style["top"] = top;
	errorElem.innerHTML = errorString;

	return;
}

/*
 * Fehlermeldung wird entfernt, wenn der Benutzer das Eingabeelement wieder aktiviert.
 */
function hideError(errorElemId)
{
	var errorElem = document.getElementById(errorElemId);

	if (errorElem.innerHTML != null
		&& errorElem.innerHTML.length > 0)
		errorElem.innerHTML = "";

	return;
}

/*
 * Wird bei der Stundenauswahl eine neue Beginnzeit gew?hlt, so wird die Dauer der Stunde
 * in das Auswahlfeld f?r den Zeitraum eingetragen.
 */
var bDauerChanged = false;
// TODO theForm durch das Element ersetzen
function setDauer(theForm,selectedTime, times)
{
	if (bDauerChanged)
		return;
//	alert(times);
	var time = getTime(selectedTime);
	var t;
	for (var i = 0; i < times.length; i++)
	{
		t = parseInt(times[i],10);
		if (t == time)
			break;
		else if (t > time)
		{
			i--
			break;
		}
	}
	var dauer = 60;
	if (i < times.length-1)
	{
		t = parseInt(times[i+1],10);
		dauer = getMinutes(t) - getMinutes(time);
	}
	theForm.elements["bookingLength"].value = dauer;
}

/*
 * Wird bei der Stundenauswahl eine neue Beginnzeit laut Zeitraster gew?hlt
 */
function isUntisTime(theForm,selectedTime, times)
{
	var found = false;
	var time = getTime(selectedTime);
	var t;
	for (var i = 0; i < times.length; i++)
	{
		t = parseInt(times[i],10);
		if (t == time){
            found = true;
            break;
		}
	}
    return found;
}

function detectBrowser()
{
	var userAgent = navigator.userAgent.toLowerCase();
	var browser,version,total,thestring;

	if (userAgent.indexOf("opera") != -1)
		browser = "Opera"
	else if (userAgent.indexOf('msie') != -1)
		browser = "IE"
	else if (userAgent.indexOf('compatible') == -1)
	{
		browser = "NN"
	}
	else browser = "?";
	return(browser);
}

function openReport(name, format)
{
	if (!name || !format)
		return false;
		
    var reportName = document.getElementById("idreportName");
    var reportFormat = document.getElementById("idreportFormat");

    reportName.value = name;
    reportFormat.value = format;
	var form = document.forms[0];
	form.submit();
	reportName.value = "";
	reportFormat.value = "";
	return false;
}

function linkReport(url, actualize)
{
	if (actualize)
		url += actualizeParameters();
	document.location.target = "_blank";
	document.location.href = url;
	return false;
}

/*
 * Wird beim Ausblenden und Expandieren von Bereichen der JSP Seite verwendet.
 */
function changeDiv(elem, img)
{
	var el = document.getElementById(elem);
	var but = document.getElementById(img);
	if (el != null)
	{
		if (el.style.display == "" || el.style.display == "block"){
			el.style.display="none";
			but.src='Images/expand.gif';
		}
		else{
			el.style.display="block";
			but.src='Images/collapse.gif';
		}
	}
}

/*
 * Wird beim Zu- und Aufklappen der ?berschrift einer JSP Seite verwendet.
 */
function changeDivHeader(elem, img1)
{
	var el = document.getElementById(elem);
	var but1 = document.getElementById(img1);
	if (el != null)
	{
		if (el.style.display == "" || el.style.display == "block"){
			el.style.display="none";
			but1.style.visibility="visible";
		}
		else{
			el.style.display="block";
			but1.style.visibility="hidden";
		}
	}
}

/*
 * Lesen eines Cookies
 * Standard function, from InternetWorld 
 */
function GetCookie (name) {   
  var arg = name + "=";   
  var alen = arg.length;   
  var clen = document.cookie.length;   
  var i = 0;   

  while (i < clen) {     
    var j = i + alen;     
    if (document.cookie.substring(i, j) == arg)       
      return getCookieVal (j);     

    i = document.cookie.indexOf(" ", i) + 1;     
    if (i == 0) break;    
  }   
  return null; 
} 

/*
 * Hilfsfunktion zum Lesen eines Cookies
 * Standard function, from InternetWorld 
 */
function getCookieVal(offset) { 
  var endstr = document.cookie.indexOf (";", offset); 
  if (endstr == -1) 
    endstr = document.cookie.length; 
  return unescape(document.cookie.substring(offset, endstr)); 
} 

/*
 * Enddatum setzen, wenn das Beginndatum ver?ndert wurde
 */
function setToDate(theForm, dat1, dat2)
{
	// wenn fromDate > toDate, set toDate to fromDate
	var fromDateInput = document.forms[theForm].elements[dat1];
	var toDateInput = document.forms[theForm].elements[dat2];
	var fromDate = getDate(fromDateInput, 1);
	var toDate = getDate(toDateInput, 1);
	if (toDate < fromDate)
	    toDateInput.value = fromDateInput.value;
}

function setOtherDate(idStartDate, idEndDate, idSetDate)
{
	// wenn fromDate > toDate, set toDate to fromDate
	var fromDateInput = document.getElementById(idStartDate);
	var toDateInput = document.getElementById(idEndDate);
	if (fromDateInput == null || toDateInput == null)
		return;
	
	var fromDate = getDate(fromDateInput, 1);
	var toDate = getDate(toDateInput, 1);
	if (toDate < fromDate)
	{
		if (idEndDate == idSetDate)
			toDateInput.value = fromDateInput.value;
		else
			fromDateInput.value = toDateInput.value;
	}
}

/*
 * Beginndatum setzen, wenn das Enddatum ver?ndert wurde
 */
function setFromDate(theForm, dat1, dat2)
{
	// wenn toDate < fromDate, set fromDate to toDate
	var fromDateInput = document.forms[theForm].elements[dat1];
	var toDateInput = document.forms[theForm].elements[dat2];
	var fromDate = getDate(fromDateInput, 1);
	var toDate = getDate(toDateInput, 1);
	if (toDate < fromDate)
	    fromDateInput.value = toDateInput.value;
}

function renumber(objForm)
{
    var orderIds = objForm.elements["orderIds"];
	for(var i=0; i<orderIds.length; i++)
	{
		orderIds[i].value = i+1;
	}
}

var oldValue="";
/*
 * Nach dem Aendern einer OrderNo werden die anderen angepasst
 */
function alignOrderIds(objForm, newValue, elemId)
{
    var orderIds = objForm.elements["orderIds"];
    var ascending = true;
    var descending = true;
    if (orderIds.length > 1)
    {
		for(var i=0; i<orderIds.length-1; i++)
		{
			var val1 = parseInt(orderIds[i].value, 10);
			var val2 = parseInt(orderIds[i+1].value, 10);
			if (val1 + 1 != val2){
				ascending = false;
				break;
			}
		}
		for(var i=0; i<orderIds.length-1; i++)
		{
			var val1 = parseInt(orderIds[i].value, 10);
			var val2 = parseInt(orderIds[i+1].value, 10);
			if (val1 - 1 != val2){
				descending = false;
				break;
			}
		}
	}
	
	if (ascending || descending)
	{
	    // oldValue wird gesetzt, wenn das Auswahlfeld den Fokus erh?lt
	    var oldVal = parseInt(oldValue, 10);
	    var newVal = parseInt(newValue, 10);
	    var orderVal = 0;
		for(var i=0; i<orderIds.length; i++)
		{
			if (orderIds[i].id == elemId)
				continue;
			orderVal = parseInt(orderIds[i].value, 10);
			if (newVal > oldVal)
			{
				if (orderVal > oldVal && orderVal <= newVal)
					orderIds[i].value = orderVal-1;
			}
			if (newVal < oldVal)
			{
				if (orderVal >= newVal && orderVal < oldVal)
					orderIds[i].value = orderVal+1;
			}
		}
	}
}

/*
 * Nach dem Aendern der Endzeit die Startzeit anpassen
 */
function setStartTime(time1, time2)
{
	var form = document.forms[0];
	// wenn fromDate > toDate, set toDate to fromDate
	var startTimeStr = form.elements[time1].value;
	var endTimeStr = form.elements[time2].value;
	var startTime = getTime(startTimeStr);
	var endTime = getTime(endTimeStr);
	if (startTime > endTime && isTime(endTimeStr))
	    form.elements[time1].value = form.elements[time2].value;
}

/*
 * Nach dem Aendern der Startzeit die Endzeit anpassen
 */
function setEndTime(time1, time2)
{
	var form = document.forms[0];
	// wenn fromDate > toDate, set toDate to fromDate
	var startTimeStr = form.elements[time1].value;
	var endTimeStr = form.elements[time2].value;
	var startTime = getTime(startTimeStr);
	var endTime = getTime(endTimeStr);
	if (startTime > endTime && isTime(startTimeStr))
	    form.elements[time2].value = form.elements[time1].value;
}

/*
 * Feldl?ngenbegrenzung f?r TextArea
 */
function limitText(limitField, limitCount, limitNum) 
{
	if (limitField.value.length > limitNum) 
	{
		limitField.value = limitField.value.substring(0, limitNum);
	}
	else 
	{
		limitCount.value = limitNum - limitField.value.length;
	}
}

/*
 * ein- und ausblenden von div-Bereichen
 */
function changeDivOrdner(elem, img)
{
	var el = document.getElementById(elem);
	var but = document.getElementById(img);
	if (el != null)
	{
		if (el.style.display == "" || el.style.display == "block"){
			el.style.display="none";
			but.src='Images/OrdnerZu.gif';
		}
		else{
			el.style.display="block";
			but.src='Images/OrdnerOffen.gif';
		}
	}
}

function setLayerButtonStyle(nr, cssclass)
{
	var laybtn1 = "layerbtn" + nr;
	var btn1 = document.getElementById(laybtn1);
	if (btn1 != null)
	{
//	    btn1.style.backgroundColor = color;
		btn1.className = cssclass;
	}
}

function activateLayer(nr, x, y, activate)
{
	var layid1 = "layer" + nr;
	var layer1 = document.getElementById(layid1);
	if (layer1 != null)
	{
		if (activate)
		{
			setLayerButtonStyle(nr, "btn layer_active");
			layer1.style.visibility = "visible";
			layer1.style.left = x+"px";
			layer1.style.top = y+"px";
		}
		else
		{
			setLayerButtonStyle(nr, "btn layer_inactive");
			layer1.style.visibility = "hidden";
		}
	}
}

function changeLayer(nr)
{
    var element = document.getElementById('layerbtn1');
    var x = element.offsetLeft;
    var y = element.offsetTop + element.offsetHeight - 2;

    for (i = 1; i < 10; i++)
    {
		activateLayer(i, x, y, i == nr);
	}
}

function selectAll(theForm, select)
{
    var allElems = theForm.elements["selId"];
    if (allElems.length == null)
    {
    	allElems.checked = select;
    }
    else
    {
	    for(var i=0; i<allElems.length; i++)
	    {
	    	if (allElems[i].id != "delId")
	    		allElems[i].checked = select;
	    }
    }
}

function selectMainMenu(nMenuId)
{
	var tables = document.getElementsByTagName("table");
	for (var i = 0; i < tables.length; i++)
    {
    	var table = tables[i];
		var str = table.id.substr(0,2);
	    if (str == "mm")
		{
		    var nr = table.id.substr(2);
		    var style;
		    if (nr == nMenuId)
		        style = "MainMenuActive";
		    else
		        style = "MainMenu";
		        
		    table.className = style;
		    var tds = table.getElementsByTagName("td");    
		    for (var n = 0; n < tds.length; n++)
		    {
		        var td = tds[n];
		        td.className = style;
		    }

		    var as = table.getElementsByTagName("a");    
		    for (var n = 0; n < as.length; n++)
		    {
		        var anker = as[n];
		        anker.className = style;
		    }
		    var nam = "mitems" + nr;
	        var mitems = document.getElementById(nam);
	        if (mitems)
	        {
		        if (nr == nMenuId)
	                mitems.className="visible MainMenuActive";
                else	                
	                mitems.className="hidden";
	        }
		}
	}
}

function getUDate(inputField, dateStyle) 
{
	var dateString = new String(inputField.value);
	var delimiter;
	for (var i=0; i < dateString.length; i++)
	{
		delimiter = dateString.charAt(i);
		if (delimiter < '0' || delimiter > '9')
			break;
	}
	var dateParts = dateString.split(delimiter);
	var idxDay = 0;
	var idxMonth = 1;
	var idxYear = 2;
	if (dateStyle == 2)
	{
		idxDay = 1;
		idxMonth = 0;
	}
	var day = parseInt(dateParts[idxDay], 10);
	var month = parseInt(dateParts[idxMonth], 10);
	var year = parseInt(dateParts[idxYear], 10);

	var udate = year* 10000 + month * 100 + day;
	return(udate);
}

function actualizeParameters(element)
{
	var parameters = "";
	var startDate = document.getElementById("idfromDate");
	if (startDate)
		parameters = parameters + "&rpt_sd=" + getUDate(startDate,1);
	var endDate = document.getElementById("idtoDate");
	if (endDate)
		parameters = parameters + "&rpt_ed=" + getUDate(endDate,1);
	var klasse = document.getElementById("idclassId");
	if (klasse)
		parameters = parameters + "&klasseId=" + klasse.value;
	var student = document.getElementById("idstudentId");
	if (student)
		parameters = parameters + "&studentId=" + student.value;
	var teacher = document.getElementById("idteacherId");
	if (teacher)
		parameters = parameters + "&teacherId=" + teacher.value;
	var subject = document.getElementById("idsubjectId");
	if (subject)
		parameters = parameters + "&subjectId=" + subject.value;
	var examType = document.getElementById("idexamTypeId");
	if (examType)
		parameters = parameters + "&examTypeId=" + examType.value;
	var schoolyear = document.getElementById("schoolyearId");
	if (schoolyear)
		parameters = parameters + "&schoolyearId=" + schoolyear.value;
	var ageGroup = document.getElementById("idageGroup");
	if (ageGroup)
		parameters = parameters + "&ageGroup=" + ageGroup.value;
	var noCrsWithoutReg = document.getElementById("idnoCrsWithoutReg");
	if (noCrsWithoutReg)
		parameters = parameters + "&noCrsWithoutReg=" + noCrsWithoutReg.value;
	
	if (element && element.href)
	{
		var href = element.href.split("&$")[0];
		element.href = href + "&$" + parameters;
	}
	return parameters;
}

function togglePopup(button, id)
{
	var popup = document.getElementById(id);
	if (popup != null)
	{
	    if (popup.style.display == "none")
	    {
	    	popup.style.display = "block";
	    	popup.style.left = button.offsetLeft;
	    	popup.style.top = button.offsetTop + button.offsetHeight;
	    }
	    else
	    {
	    	popup.style.display = "none";
	    }
	}
	return false;
}
