// 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 = [];
    dojo.query("[name=" + checkboxName + "]", theForm).forEach(function(checkbox) {
    	if (checkbox.checked)
    	{
    		selectedElems.push(checkbox);
    	}
    });
    // 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;
}

/* returns the form in the div content */
function getContentForm()
{
	var form;
	var found = dojo.query("form", dojo.byId('content')).some(function(node, index, arr)
	{
		form = node;
		return true;
	});
	
	return form;
}

function submitReload()
{
	var topForm = getContentForm();
	if (topForm != null)
	{
		var el = topForm.elements["reload"];
		if (el != null)
		{
			el.value = "1";
		}
		topForm.submit();
	}
}

function removeSelection()
{
	// vor dem L�schen m�ssen die zugeordneten selIds entfernt werden, weil sonst alle zugeordneten Gruppen
	// gel�scht werden w�rden
	var form = getContentForm();
    var selIdElement = form.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 = getContentForm();
    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="'+ gpConfig.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 = window.document;
//    maindoc.open();
//	maindoc.write('<div id="waitPage">'+getWaitTableStr(pwidth,pheight,messageStr)+'</div>');
//    maindoc.close();
    var wndBody = maindoc.body;
   wndBody.innerHTML = '<div id="waitPage">'+getWaitTableStr(pwidth,pheight,messageStr)+'</div>';

    msg = maindoc.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);
	}
	window.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
	var ns6 = (!document.all && document.getElementById);
	var ie4 = (document.all);
	var ns4 = (document.layers);
	if(ns6||ns4) {
		sbreite = innerWidth;
		sleft = screenX;
	}
	else if(ie4) {
		sbreite = document.body.clientWidth;
		sleft = 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
	var ns6 = (!document.all && document.getElementById);
	var ie4 = (document.all);
	var ns4 = (document.layers);
	if(ns6||ns4) {
		shoehe = innerHeight;
		stop = window.screenY + (outerHeight - shoehe - 10);
	}
	else if(ie4) {
		shoehe = document.body.clientHeight;
		stop = 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);
}

/*
 * 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 openReport(name, format)
{
	if (!name || !format)
		return false;
		
	var form = getContentForm();
	
    var reportName = document.getElementById("idreportName");
    var reportFormat = document.getElementById("idreportFormat");

    reportName.value = name;
    reportFormat.value = format;
	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)); 
} 

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 = getContentForm();
	// 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 = getContentForm();
	// 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;
}

/*
 * 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 toUDate(date)
{
	var yyyy = date.getFullYear();
	var mm = date.getMonth() + 1;
	var dd = date.getDate();
	return yyyy * 10000 + mm * 100 + dd;
}

function actualizeParameters(element)
{
	var parameters = "";
	
	function addParam(name, fieldId)
	{
		if (!fieldId)
		{
			fieldId = "id" + name;
		}
		var field = dojo.byId(fieldId);
		if (field) 
		{
			parameters = parameters + "&" + name + "=" + field.value;
		}
	}
	
	var startDate = dijit.byId("idfromDate");
	if (startDate)
		parameters = parameters + "&rpt_sd=" + toUDate(startDate.get("value"));
	var endDate = dijit.byId("idtoDate");
	if (endDate)
		parameters = parameters + "&rpt_ed=" + toUDate(endDate.get("value"));
		
	addParam("klasseId", "idclassId");
	addParam("studentId");
	addParam("teacherId");
	addParam("subjectId");
	addParam("examTypeId");
	addParam("schoolyearId", "schoolyearId");
	addParam("ageGroup");
	addParam("noCrsWithoutReg");
	addParam("blockCount");
	addParam("teachingMethodId", "teachingMethodId");
	
	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;
}

/*
 * alle oder alle ausgewaehlten Elemente einer Liste als Parameter uebergeben
 */
function getSelIds(showAll, paramName)
{
	var form = getContentForm();
	var selElements = form.elements["selId"];
	if (paramName == null)
		paramName = "selId";

	var params = "";
    if( !selElements.length )
    {
        params += paramName + "=" + selElements.value;
    }
    else
    {
    	var first = true;
	    for (i = 0; i < selElements.length; i++)
	    {
	    	var element = selElements[i];
			if (showAll || element.checked)
			{
		   	  	if (!first)
		   		   	params += "&";
		   	  	else
		   		   	first = false;

		        params += paramName + "=" + element.value;
			}
		}
	}
	return params;
}

/*
 * Aufruf der Raumaenderungs-Seite
 */
function changeRoom(ttid, getSelection)
{
	// TTID wird entweder direkt von der Zeile genommen, oder falls Zeilen markiert wurden, aus
	// der Zeilenmarkierung
	var params = "";
	if(getSelection == 1)
	{
		params = getSelIds(false);
	}
	if (params.length == 0)
	{
		params = "selId=" + ttid;
	}
    loadPage("lessonchangeroom.do?" + params, 'Executing...');
	return(false);
}

function changeRooms(/*provide ttids*/)
{
	var params = "";
	for (i = 0; i < changeRooms.arguments.length; i++)
	{
		if (i > 0)
			params += "&";

		params += "selId=" + changeRooms.arguments[i];
	}
    loadPage("lessonchangeroom.do?" + params, 'Executing...');
	return(false);
}

