
function openWin(URL,w,h) {
 l = (screen.availWidth/2)-(w/2);
 t = (screen.availHeight/2)-(h/2);
 win = window.open(URL, 'editwin','width='+w+',height='+h+',left='+l+',top='+t+',toolbar=no,directories=no,status=no,menubar=no,scrollbars=no,resizable=no');
 win.focus();
}

function toggleKursart(kursartnumber){
  uncheckElementsByName('ferienkurs');
  uncheckElementsByName('abendkurs');
  uncheckElementsByName('abendkurspreis');
  uncheckElementsByName('abendkurstermin');
  uncheckElementsByName('migrantenkurstermine');
  uncheckElementsByName('migrantenkurspreis');
  hideAllBlocksByName('ferienkurs');
  hideAllBlocksByName('abendkurs');
  hideAllBlocksByName('abendkurspreise');
  hideAllBlocksByName('kursart');
  hideAllBlocksByName('migrantenkurs');
  hideAllBlocksByName('migrantenkurspreise');
  showBlockByNumberName(kursartnumber, 'kursart');
}


function uncheckAllElements() {
  uncheckElementsByName('kursart');
  uncheckElementsByName('ferienkurs');
  uncheckElementsByName('abendkurs');
  uncheckElementsByName('migrantenkurs');
  uncheckElementsByName('migrantenkurspreis');
}

function uncheckElementsByName(name) {
  var aElements = document.getElementsByName(name);
  //alert("try to uncheck name: " + name + "\n" +  "aElemnts length: " + aElements.length);
  for (var i = 0; i < aElements.length; i++)
  {
    document.getElementsByName(name)[i].checked = false;
    //alert("Element " + name + " unchecked");
  }
}


function toggleFerienkurs(number, uniqueid){
  uncheckElementsByName('ferienkurstermine' + uniqueid);
  hideAllBlocksByName('ferienkurstermine' + uniqueid, uniqueid);
  hideAllBlocksByName('ferienkurs');
  showBlockByNumberName(number, 'ferienkurs');
  setSelectionReady(0);
}

function toggleMigrantenkurspreise(number, uniqueid){
  //unsetKurstermin();
  uncheckElementsByName('migrantenkurspreis' + uniqueid);

//  hideAllBlocksByName('migrantenkurspreis' + uniqueid, uniqueid);  alert ('ok');
  hideAllBlocksByName('migrantenkurspreise');
  showBlockByNumberName(number, 'migrantenkurspreise');
  setSelectionReady(0);
}

function toggleBusinessgermankurspreise(number, uniqueid){
  //unsetKurstermin();
  uncheckElementsByName('businessgermankurspreis' + uniqueid);

//  hideAllBlocksByName('migrantenkurspreis' + uniqueid, uniqueid);  alert ('ok');
  hideAllBlocksByName('businessgermankurspreise');
  showBlockByNumberName(number, 'businessgermankurspreise');
  setSelectionReady(0);
}

function toggleAbendkurs(number, uniqueid){
  //alert("toggleAbendkurs. uniqueid: " + uniqueid);
  unsetKurstermin();
  uncheckElementsByName('abendkurstermin');
  uncheckElementsByName('abendkurspreis');
  hideAllBlocksByName('abendkurspreise');
  hideAllBlocksByName('abendkurs');
  showBlockByNumberName(number, 'abendkurs');
  setSelectionReady(0);
}

function toggleAbendkurstermine(number, uniqueid) {
  //alert("toggleAbendkurstermine. number: "+ number + " uniqueid: " + uniqueid)
  unsetKurstermin();
  uncheckElementsByName('abendkurspreis');
  //uncheckElementsByName('abendkurs');
  hideAllBlocksByName('abendkurspreise');
  showBlockByNumberName(number, 'abendkurspreise');
  setSelectionReady(0);
}

function toggleFerienkurstermine(number, uniqueid, numberOfUnterkunft, numberOfTermine) {
    
  uncheckElementsByName('unterkunft' + uniqueid + number);
  
  for (var i = 0; i < numberOfTermine-1; i++) {
      setOptionForKurswochen(0, 'selectkurswochen' + uniqueid + i);
  }
  //alert("Beginn. Number: " + number + "\nuniqueid: " + uniqueid);
  hideAllBlocksByName('ferienkurstermine' + uniqueid, uniqueid);
  //alert("1");
  showBlockByNumberName(number, 'ferienkurstermine' + uniqueid, uniqueid);
  //alert("2");
  setSelectionReady(0);
}

function setOptionForKurswochen(optionnumber, selectid) {
  //alert ("da bin ich schon mal");
  var selectElement = document.getElementById(selectid);
  //alert ("da bin ich auch...");
  var optionLen = selectElement.options.length;
  
  if (optionnumber >= optionLen) {
    alert("wrong option. option 0 selected");
    optionnumber = 0;
  }
  selectElement.selectedIndex = optionnumber;
}

function toggleUnterkunft(number, uniqueid, selectid) {
  
  var selectElement = document.getElementById(selectid);
  
  if (selectElement.selectedIndex != 0)
  {
    setSelectionReady(1);
  } else 
  {
    setSelectionReady(0);
  }
  //hideAllBlocksByName('unterkunft' + uniqueid, uniqueid);
  //showBlockByNumberName(number, 'unterkunft' + uniqueid, uniqueid);
  //alert("2");
}

function hideAllBlocksByName(elementname) {
  var aElements = document.getElementsByName(elementname);
  var uniqueid = "";
  
  //optional argument uniqueid, is the second parameter
  //alert("Number of arguments: " + hideAllBlocksByName.arguments.length);
  if (hideAllBlocksByName.arguments.length > 1)
  {
    //alert("number of arguments: " + hideAllBlocksByName.arguments.length + "\n--> uniqueid transfered");
    uniqueid = hideAllBlocksByName.arguments[1];
  } 
  
  var elementblock = elementname + "block" + uniqueid;
  //alert("elementblock to hide: " + elementblock + "\nNumber of elements to hide: " + aElements.length);
  for (var i = 0; i < aElements.length; i++)
  {
    //alert("try to hide " + elementblock + i);
    document.getElementById(elementblock + i).style.display ='none';
    //alert("hidden: " + elementblock + i);
  }
  
}

function showBlockByNumberName(number, elementname) {
  var element = document.getElementsByName(elementname)[number];
  var uniqueid = "";
  
  //optional argument uniqueid, is the third parameter
  if (showBlockByNumberName.arguments.length > 2)
  {
    uniqueid = showBlockByNumberName.arguments[2];
  }
  
  var elementid = elementname + "block" + uniqueid + number;
  //alert("try to show element: " + elementid + " (showBlockByNumberName: line 156)");
  
  document.getElementById(elementid).style.display ='block';
}

function addToPriceList(price, listtext) {
  //alert("start fct addToPriceList");
  addToSumm(price);
  addPriceTextToList(price, listtext, 'kurspreisliste');
}

function addPriceTextToList(price, text, list)
{
  var table = document.getElementById(list);
  
  var cntRows = table.rows.length;
  var TR = table.insertRow(cntRows);
  var TD1 = document.createElement("td");
  TD1.setAttribute('width', '200px');
  TD1.setAttribute('valign', 'bottom');
  var TD1text = document.createTextNode(text);
  TD1.appendChild(TD1text);
  var TD2 = document.createElement("td");
  TD2.setAttribute('width', '150px');
  TD2.setAttribute('valign', 'bottom');
  TD2.setAttribute('align', 'right');
  var TD2text = document.createTextNode(GetNumberFormated(price));
  TD2.appendChild(TD2text);
  TR.appendChild(TD1);
  TR.appendChild(TD2);
}

function addToSumm(price)
{
  //var summe = parseFloat(document.getElementById('preissumme').firstChild.nodeValue);
  summe = summe + parseFloat(price);
  
  UpdateSumme()
  //alert("neue summe = " + summe);
}

function clearePriceLists()
{
  clearePriceList('kurspreisliste');
  clearePriceList('unterkunftpreisliste');
  setSummToZero();
}

function clearePriceList(list)
{
  var table = document.getElementById(list);
  var cntRows = table.rows.length;
  //alert("table: " + table + "\n cntRows: " + cntRows);
  for (var i = cntRows; i > 0; i--)
  {
    table.deleteRow(i -1);
  }
  
  //alert("clearePriceList finished");
}

function removeLastItemFromPricelist(list) {
  var table = document.getElementById(list);
  var cntRows = table.rows.length;
  
  if (cntRows > 0) {
    var tableRow = table.rows[cntRows - 1];
    //alert("tableRow.cells.lenght: " + tableRow.cells.length);
    //alert("Zelle: " + tableRow.cells[1].firstChild.nodeValue);
    reduceSumm(tableRow.cells[1].firstChild.nodeValue);
    table.deleteRow(cntRows - 1);
  }
}

function getPreicelistText()
{
  var text = "";
  
  text = getPreicelistTextByList('unterkunftpreisliste');
  text = text + getPreicelistTextByList('kurspreisliste');
  text = text + "||Summe: " + GetNumberFormated(getSumm()) + "€";
  
  return text;
}

function getSumm()
{
  return summe;
}

function getPreicelistTextByList(list)
{
  var table = document.getElementById(list);
  var cntRows = table.rows.length;
  var text = "";
  
  for (var i = 0; i < cntRows; i++) {
    var tableRow = table.rows[i];
    //alert("tableRow.cells.lenght: " + tableRow.cells.length);
    text = text + tableRow.cells[0].firstChild.nodeValue + ": " + tableRow.cells[1].firstChild.nodeValue + "€||";
  } 
  return text;
}

var summe = 0;
function setSummToZero() {
  summe = 0;
  UpdateSumme();
}

function UpdateSumme() {
  document.getElementById('preissumme').firstChild.nodeValue = GetNumberFormated(summe);
}
function reduceSumm(value) {
  summe = summe - parseFloat(value);
  UpdateSumme();
}

function handleSelected(name, unterkunftblockname) {
  removeLastItemFromPricelist('unterkunftpreisliste');
  uncheckElementsByName(unterkunftblockname);
  var element = document.getElementsByName(name)[0];
  //alert("selected Index: " + element.selectedIndex);
  var value = element.options[element.selectedIndex].value;
  //alert("value: " + value);
  removeLastItemFromPricelist('kurspreisliste');
  var aValue = value.split('|');
  // -1 wenn frage gewählt ist...
  if (aValue[0] != '-1') {
    
    addToPriceList(aValue[0], aValue[1]);
    setNumberOfWeeks(aValue[2]);
  } else {
    setNumberOfWeeks(0);
  }
}

var anzWochen = 0;

function setNumberOfWeeks(number) {
  anzWochen = parseInt(number);
}

function addUnterkunftToPriceList(price, text)
{
  var calcPrice = parseFloat(price) * anzWochen;
  text = text + " €" + GetNumberFormated(price) + " x " + anzWochen;
  removeLastItemFromPricelist('unterkunftpreisliste');
  //clearePriceList('unterkunftpreisliste');
  addPriceTextToList(calcPrice, text, 'unterkunftpreisliste')
  addToSumm(calcPrice);
}

var sKurstermin = '';
function setKurstermin(text)
{
  sKurstermin = text;
}

function unsetKurstermin()
{
  sKurstermin = '';
}

function getKurstermin()
{ 
  return sKurstermin;
}

var selectionReady = 0;

function setSelectionReady(value)
{
  if (value == 0 || value == 1)
  {
    selectionReady = value;
  } else 
  {
    alert ("wrong value of selection ready. please contact webmaster.");
  }
  /*
  if (value == 1) {
    showErrorIfSelectionReady("finished");
  } else 
  {
    showErrorIfSelectionNotReady("selection not ready");
  }
  */
}

function isSelectionReady()
{
  if (selectionReady == 1)
  {
    return true;
  } else 
  {
    return false;
  }
}


function isPersDataReady()
{
  //alert("persDataReady: " + persDataReady);
  if (persDataReady == 1)
  {
    return true;
  } else 
  {
    return false;
  }
}

function getStep()
{
  var step = 1;
  
  if (isSelectionReady()) {
    step = step + 1;
  }
  
  if (isPersDataReady()) {
    step = step + 1;
  }
  
  return step
}

var persDataReady = 0;

function setPersDataReady(value) 
{
  if (value == 0 || value == 1)
  {
    persDataReady = value;
  } else 
  {
    alert ("wrong value of persData ready. please contact webmaster.");
  }
  
  /*
  if (value == 1) {
    showErrorIfSelectionReady("finished pers data");
  } else 
  {
    showErrorIfSelectionNotReady("pers data not ready");
  }
  */
}

function showErrormessage(text)
{
  document.getElementById('errormessage').lastChild.nodeValue = text;
}

function showErrorIfSelectionNotReady(text)
{
  if (!isSelectionReady())
  {
    showErrormessage(text);
  }
}

function showErrorIfSelectionReady(text)
{
  if (isSelectionReady())
  {
    showErrormessage(text);
  }
}

function setStepText(text)
{
  showMessage('step_top', text);
  showMessage('step_bottom', text)
}

function showMessage(id, text)
{
  document.getElementById(id).lastChild.nodeValue = text;
}

function checkPersDataReady() {
  //alle werte von persönlichen details
  if (document.getElementById('first_name').value == ""
  	   || document.getElementById('last_name').value == ""
       || document.getElementById('birthdate').value == ""
       || document.getElementById('street').value == ""
       || document.getElementById('zip').value == ""
       || document.getElementById('city').value == ""
       || document.getElementById('land').value == ""
       || document.getElementById('telephone').value == ""
       || document.getElementById('mail').value == ""
       || document.getElementById('mail_confirm').value == ""
       || document.getElementById('mail').value != document.getElementById('mail_confirm').value
     )
  {
    //alert("persdata not ready");
    setPersDataReady(0);
  } else {
    //alert("persdata ready");
    setPersDataReady(1);
  }
}

function resetForm() {
  document.getElementById('registration').reset();
}

function isReadyForStep2()
{
  if (isSelectionReady())
  {
    return true;
  }
  return false;
}

function isReadyForStep3()
{
  //alert("isSelectionReady(): " + isSelectionReady() + "\nisPersDataReady(): " + isPersDataReady());
  
  if (isSelectionReady() == true && isPersDataReady())
  {
    return true;
  }
  disableSubmit();
  return false;
}

function isReadyForStep4()
{
  if (isReadyForStep3() == true && isAgbChecked() == true)
  { 
    enableSubmit();
    return true;
  }
  disableSubmit();
  return false;
}

function isAgbChecked()
{
  return document.getElementById('agb').checked;
}

function disableSubmit()
{
  //diese functionalität ist nicht gewollt... stattdessen hinweis...
  //document.getElementById('submit').disabled = true;
}

function enableSubmit()
{
  document.getElementById('submit').disabled = false;
}

function setSubmitText()
{
  var elem = document.getElementById('submittext');
  
  elem.value = getPreicelistText();
  
}

function setHiddenSonderwunsch(text)
{
  var elem = document.getElementById('hiddenSonderwunsch');
  
  elem.value = text;
  //alert("hiddenSonderwunsch: "+ elem.value);
}

function checkComplete(text)
{
  if(isReadyForStep4())
  {
    return true;
  }
  
  alert(text);
  return false;
  
}

function GetNumberFormated(number)
{
  return number_format (number, 2, ',', '.')
}

function number_format (number, decimals, dec_point, thousands_sep)
{
  //this function is provided by http://www.fobit.com/index.php?article=JavaScript%3A%20number_format
  var exponent = "";
  var numberstr = number.toString ();
  var eindex = numberstr.indexOf ("e");
  var z = 0;
  var i = 0;
  if (eindex > -1)
  {
    exponent = numberstr.substring (eindex);
    number = parseFloat (numberstr.substring (0, eindex));
  }
  
  if (decimals != null)
  {
    var temp = Math.pow (10, decimals);
    number = Math.round (number * temp) / temp;
  }
  var sign = number < 0 ? "-" : "";
  var integer = (number > 0 ? 
      Math.floor (number) : Math.abs (Math.ceil (number))).toString ();
  
  var fractional = number.toString ().substring (integer.length + sign.length);
  dec_point = dec_point != null ? dec_point : ".";
  fractional = decimals != null && decimals > 0 || fractional.length > 1 ? 
               (dec_point + fractional.substring (1)) : "";
  if (decimals != null && decimals > 0)
  {
    for (i = fractional.length - 1, z = decimals; i < z; ++i)
      fractional += "0";
  }
  
  thousands_sep = (thousands_sep != dec_point || fractional.length == 0) ? 
                  thousands_sep : null;
  if (thousands_sep != null && thousands_sep != "")
  {
	for (i = integer.length - 3; i > 0; i -= 3)
      integer = integer.substring (0 , i) + thousands_sep + integer.substring (i);
  }
  
  return sign + integer + fractional + exponent;
}

