

  function openSlideShow(sFolder) {

    var sProperties = 'toolbar=no,location=no,status=no,menubar=no,scrollbars=auto,resizable=no';
    var iWidth      = 520;
    var iHeight     = 570;
    var iLeft       = (screen.availWidth - iWidth) / 2;
    var iTop        = (screen.availHeight - iHeight) / 2;
    var sProperties = 'height=' + iHeight + ',width=' + iWidth + ',top=' + iTop + ',left=' + iLeft + ',' + sProperties;
    var sUrl        = 'index.php?section=common&module=slideshow&folder=' + sFolder;
    var oWin        = window.open(sUrl, 'slideshow', sProperties);
    oWin.focus();

  }


  function getEmail(s1, s2, s3, sLabel) {

    var sEmail = s1 + '@' + s2 + '.' + s3;
    var sLabel = (arguments.length > 3) ? sLabel : sEmail;
    document.write('<a href="mailto:' + sEmail + '">' + sLabel + '</a>');

  }


  function goToStep(i) {

    document.location = 'index.php?section=reserveren&step=' + i;

  }



  function populateSelectBaby() {

    // Set form elements
    var oSelectParent = document.getElementById('select_personen');
    var oSelectChild  = document.getElementById('select_babys');

    var sAantalPersonen = oSelectParent.value;
    oSelectChild.disabled = true;
    oSelectChild.options.length = 0;
    if(sAantalPersonen == '') {
      oSelectChild.options[0] = new Option(aLanguage['TEXT_KIESEENWAARDE'], '');
    } else {
      var iAantalPersonen = parseInt(sAantalPersonen);
      oSelectChild.options[0] = new Option(aLanguage['TEXT_KIESEENWAARDE'], '');
      for(i = 0; i <= iAantalPersonen - 1; i++) {
        oSelectChild.options[i+1] = new Option(i, i);
      }
      oSelectChild.disabled = false;
    }

  }


  function populateSelect(sParentElementId, sChildElementId, sType, sParentId) {

    // Set form elements
    var oSelectParent = document.getElementById(sParentElementId);
    var oSelectChild  = document.getElementById(sChildElementId);

    // Disable child select list
    oSelectChild.disabled = true;
    oSelectChild.options.length = 0;

    // Was a parent value selected?
    if(sParentId == '') {
      return false;
    }

    // Fill child select list
    oSelectChild.options[0] = new Option(aLanguage['TEXT_LIJSTWORDTAANGEMAAKT'], '');
    var sUrl = 'index.php?section=common&module=json_hierselect&type=' + sType + '&parent=' + sParentId;
    //prompt('', sUrl);
    var request = new Json.Remote(sUrl, {
    	onComplete: function(oJson) {
        oSelectChild.options.length = 0;
        var i = 0;
        oSelectChild.options[i] = new Option(aLanguage['TEXT_KIESEENWAARDE'], '');
        oJson.each(function(o) {
          i++;
          //alert(o.sKey + ' = ' + o.sValue);
          oSelectChild.options[i] = new Option(o.sValue, o.sKey);
       	});
       	oSelectChild.disabled = false;
    	}
    }).send();

  }



  function showList(sSection, sModule, sParentId, sParentTable) {

    document.location = 'index.php?section=' + sSection + '&module=' + sModule + '&parent_id=' + sParentId + '&parent_table=' + sParentTable;

  }


  function editRecord(sSection, sModule, sId, sParentId, sParentTable) {

    var sLocation = 'index.php?section=' + sSection + '&module=' + sModule + '&sub=detail';
    if(sId != '') sLocation += '&id=' + sId;
    if(sParentId != '') sLocation += '&parent_id=' + sParentId;
    if(sParentTable != '') sLocation += '&parent_table=' + sParentTable;
    document.location = sLocation;

  }


  function deleteRecord(sId) {

    if(confirm(aLanguage['CONFIRM_DELETERECORD'])) {
      document.dg_form_data.action_main.value = 'delete_record';
      document.dg_form_data.id_main.value = sId;
      document.dg_form_data.submit();
    }

  }


  function deleteRecordSelection() {

    var bNoneSelected = true;
    with(document.dg_form_data) {
      for (var i=0; i<elements.length; i++) {
        if (elements[i].type == 'checkbox' && elements[i].name == 'row[]') {
          if(elements[i].checked) {
            bNoneSelected = false;
            break;
          }
        }
      }
    }
    if (bNoneSelected) {
      alert(aLanguage['ALERT_NOSELECTION']);
    } else {
      if(confirm(aLanguage['CONFIRM_DELETERECORDS'])) {
        document.dg_form_data.action_main.value = 'delete_record_selection';
        document.dg_form_data.submit();
      }
    }
  }



  function openSite(sUrl) {

    var sProperties = 'toolbar=yes,location=yes,status=yes,menubar=yes,scrollbars=auto,resizable=yes';
    var iWidth      = screen.availWidth- 150;
    var iHeight     = screen.availHeight - 150;
    var iLeft       = (screen.availWidth - iWidth) / 2;
    var iTop        = (screen.availHeight - iHeight) / 2;
    var sProperties = 'height=' + iHeight + ',width=' + iWidth + ',top=' + iTop + ',left=' + iLeft + ',' + sProperties;
    var oWin        = window.open(sUrl, 'slideshow', sProperties);
    oWin.focus();

  }


  function isEmpty(oText) {

    s = oText.value;
    if (s.length==0) return true;
    for (var i=0; i<s.length; i++) {
      bIsSpace          = (s.charAt(i) == ' ');
      bIsNewline        = (s.charAt(i).charCodeAt(0) == 10);
      bIsCarriageReturn = (s.charAt(i).charCodeAt(0) == 13);
      if ((!bIsSpace) && (!bIsNewline) && (!bIsCarriageReturn)) return false;
    }
    oText.value = '';
    return true;

  }

  function isEmail(oText) {

  	s = oText.value;
  	var email=/^[A-Za-z0-9]+([_\.-][A-Za-z0-9]+)*@[A-Za-z0-9]+([_\.-][A-Za-z0-9]+)*\.([A-Za-z]){2,4}$/i;
  	return(email.test(s));

  }


function getCheckedValue(radioObj) {
	if(!radioObj)
		return "";
	var radioLength = radioObj.length;
	if(radioLength == undefined)
		if(radioObj.checked)
			return radioObj.value;
		else
			return "";
	for(var i = 0; i < radioLength; i++) {
		if(radioObj[i].checked) {
			return radioObj[i].value;
		}
	}
	return "";
}


  function isInteger(oText) {

  	s = oText.value;
  	var integer=/(^-?\d\d*$)/;
  	return(integer.test(s));

  }


  function validateBedrag(oText) {

    if(!isEmpty(oText)) {
      if(isNaN(oText.value)) {
        oText.value = '';
      } else {
        n = Math.abs(parseInt(oText.value, 10));
        // '0' is wel toegestaan!
        //oText.value = (n == 0) ? '' : n;
        oText.value = n;
      }
    }
    oText.className = 'bedrag_changed';
    oInputSave = document.getElementById('opslaan');
    oInputSave.disabled = false;

  }


  function formatBedrag(oText) {
    if(!isEmpty(oText)) {
      if(isNaN(oText.value)) {
        oText.value = '';
      } else {
        var num = new Number(oText.value);
        oText.value = num.toFixed(2);
      }
    }
  }




  function yc_clickDate(o) {

    if(oCellPrevious) oCellPrevious.className = 'validdate wisseldag clickable';
    o.className = 'geselecteerd';
    var sDate = o.id.split('_')[1];
    document.forms['form_main'].datum_begin.value = sDate;
    document.forms['form_main'].datum_begin_display.value = dateMysqlToDutch(sDate);
    oCellPrevious = o;

  }


  function yc_clickDateDirect(o) {

    // Lock to prevent clicking on more than one date...
    if(!bYcLocked) {
      bYcLocked = true;
      o.className = 'geselecteerd';
      var sDate = o.id.split('_')[1];
      var sAppartementId = document.forms['form_yc'].appartement.value;
      document.location = 'index.php?section=reserveren&step=3&appartement=' + sAppartementId + '&datum_begin=' + sDate;
    }

  }


  function yc_clickPeriod(o) {

    if(!bYcLocked) {

      bYcLocked = true;

      var sDatum  = o.id.split('_')[1];
      var aDatum  = sDatum.split('-');
      var oDatum  = new Date();

      var nJaar   = parseInt(aDatum[0], 10);
      var nMaand  = parseInt(aDatum[1], 10) - 1;
      var nDag    = parseInt(aDatum[2], 10);

      oDatum.setFullYear(nJaar, nMaand, nDag);

      var nDagVanDeWeek = oDatum.getDay();

      if(sYcMode == 'set_datum_eind') {

        // ==================
        // EINDDATUM SETTEN!!
        // ==================


        var oInputDatumBegin = document.getElementById('datum_begin');
        var sDatumBegin = oInputDatumBegin.value;

        if(sDatum < sDatumBegin) {

          alert(aLanguage['ALERT_EINDDATUMFOUT_KLEINER']);

        } else {

          var bLaatsteDagVanHetJaar = (nMaand == 11) && (nDag == 31);
          if(nDagVanDeWeek != 5 && !bLaatsteDagVanHetJaar) {

            alert(aLanguage['ALERT_EINDDATUMFOUT_DAG']);

          } else {

            var oDivPerioden = document.getElementById('perioden');
            var aInput = oDivPerioden.getElementsByTagName('input');
            var bOverlapping = false;
            for (var i=0; i < aInput.length; i++) {
              var a = aInput[i].value.split('_');
              var sCheckDatumBegin = a[0];
              if(sDatumBegin < sCheckDatumBegin && sDatum >= sCheckDatumBegin) {
                var bOverlapping = true;
                break;
              }
            }
            if(bOverlapping) {

              alert(aLanguage['ALERT_EINDDATUMFOUT_OVERLAPPING']);

            } else {

              var oInputDatumEind = document.getElementById('datum_eind');
              oInputDatumEind.value = sDatum;
              yc_maakPeriode();

            }
          }
        }

      } else {

        // ==================================
        // VERWIJDEREN OF BEGINDATUM SETTEN
        // ==================================

        if(!yc_inPeriode(sDatum)) {
          var bEersteDagVanHetJaar = (nMaand == 0) && (nDag == 1);
          if(nDagVanDeWeek != 6 && !bEersteDagVanHetJaar) {

            alert(aLanguage['ALERT_BEGINDATUMFOUT_DAG']);

          } else {

            o.className = 'geselecteerd';
            var oInputDatumBegin = document.getElementById('datum_begin');
            oInputDatumBegin.value = sDatum;
            sYcMode = 'set_datum_eind';

          }
        }

      }

     bYcLocked = false;

    }

  }

  function yc_inPeriode(sDatum) {

    var oDivPerioden = document.getElementById('perioden');
    var aInput = oDivPerioden.getElementsByTagName('input');
    var bInPeriode = false;
    for (var i=0; i < aInput.length; i++) {
      var a = aInput[i].value.split('_');
      var sDatumBegin = a[0];
      var sDatumEind = a[1];
      if(sDatum >= sDatumBegin && sDatum <= sDatumEind) {

        bInPeriode = true;
        sYcMode = '';

        if(confirm(aLanguage['CONFIRM_PERIODEVERWIJDEREN'])) {
            oDivPerioden.removeChild(aInput[i]);
            var oTable = document.getElementById('yearcalendar');
            var aTd = oTable.getElementsByTagName('td');

            for(var i=0; i<aTd.length; i++) {
              sId = aTd[i].id.split('_')[1];
              if(sId >= sDatumBegin && sId <= sDatumEind) {
                aTd[i].className = 'geldig';
                var nDagVanDeWeek = getDagVanDeWeek(sId);
                if(nDagVanDeWeek == 6) aTd[i].className = 'geldig wisseldag';
                aTd[i].firstChild.data = getDagAfkorting(nDagVanDeWeek);
              }
            }

            oInputSave = document.getElementById('opslaan');
            oInputSave.disabled = false;

        }


        break;
      }
    }
    return(bInPeriode);

  }


  function getDagVanDeWeek(sDatum) {

    var aDatum  = sDatum.split('-');
    var oDatum  = new Date();

    var nJaar   = parseInt(aDatum[0], 10);
    var nMaand  = parseInt(aDatum[1], 10) - 1;
    var nDag    = parseInt(aDatum[2], 10);

    oDatum.setFullYear(nJaar, nMaand, nDag);

    return oDatum.getDay();

  }



  function getDagAfkorting(nDagVanDeWeek) {

    var a = new Array();
    a[0] = 'zo';
    a[1] = 'ma';
    a[2] = 'di';
    a[3] = 'wo';
    a[4] = 'do';
    a[5] = 'vr';
    a[6] = 'za';

    return a[nDagVanDeWeek];


  }



  function yc_maakPeriode() {

    var oInputDatumBegin  = document.getElementById('datum_begin');
    var oInputDatumEind   = document.getElementById('datum_eind');

    var sDatumBegin = oInputDatumBegin.value;
    var sDatumEind = oInputDatumEind.value;

    oInputDatumBegin.value = '';
    oInputDatumEind.value = '';

    for (var i=0; i < document.form_main.periodetype.length; i++) {
      if (document.form_main.periodetype[i].checked) {
        var s = document.form_main.periodetype[i].value;
        break;
      }
    }

    var a = s.split('_');
    var sPeriodetypeId = a[0];
    var sPeriodetypeCode = a[1];

    var oTable = document.getElementById('yearcalendar');
    var aTd = oTable.getElementsByTagName('td');

    for(var i=0; i<aTd.length; i++) {
      sId = aTd[i].id.split('_')[1];
      if(sId >= sDatumBegin && sId <= sDatumEind) {
        aTd[i].className = 'geldig ' + sPeriodetypeCode;
        aTd[i].firstChild.data = sPeriodetypeCode;
      }
    }

    // SAAMENVoegen?
    var aDatumBegin = sDatumBegin.split('-');

    var nJaar   = parseInt(aDatumBegin[0], 10);
    var nMaand  = parseInt(aDatumBegin[1], 10) - 1;
    var nDag    = parseInt(aDatumBegin[2], 10);

    var oDatumErvoor = new Date();
    oDatumErvoor.setFullYear(nJaar, nMaand, nDag - 1);
    var sDatumErvoor = getDateString(oDatumErvoor);



    var aDatumEind = sDatumEind.split('-');

    var nJaar   = parseInt(aDatumEind[0], 10);
    var nMaand  = parseInt(aDatumEind[1], 10) - 1;
    var nDag    = parseInt(aDatumEind[2], 10);

    var oDatumErna = new Date();
    oDatumErna.setFullYear(nJaar, nMaand, nDag + 1);
    var sDatumErna = getDateString(oDatumErna);




    var oDivPerioden = document.getElementById('perioden');
    var aInput = oDivPerioden.getElementsByTagName('input');

    var bSluitAan = false;
    for (var i=0; i < aInput.length; i++) {
      var a = aInput[i].value.split('_');
      var sPeriodeBegin = a[0];
      var sPeriodeEind = a[1];
      var sPeriodeId = a[2];
      if(sPeriodeEind == sDatumErvoor && sPeriodeId == sPeriodetypeId) {
        var bSluitAan = true;
        sDatumBegin = sPeriodeBegin;
        oDivPerioden.removeChild(aInput[i]);
        break;
      }
    }

    var aInput = oDivPerioden.getElementsByTagName('input');
    var bSluitAan = false;
    for (var i=0; i < aInput.length; i++) {
      var a = aInput[i].value.split('_');
      var sPeriodeBegin = a[0];
      var sPeriodeEind = a[1];
      var sPeriodeId = a[2];
      if(sPeriodeBegin == sDatumErna && sPeriodeId == sPeriodetypeId) {
        var bSluitAan = true;
        sDatumEind = sPeriodeEind;
        oDivPerioden.removeChild(aInput[i]);
        break;
      }
    }



    var oInputHidden = document.createElement('INPUT');
    oInputHidden.setAttribute('type', 'hidden');
    oInputHidden.setAttribute('name', 'periode[]');
    oInputHidden.setAttribute('value', sDatumBegin + '_' + sDatumEind + '_' + sPeriodetypeId);

    oDivPerioden.appendChild(oInputHidden);

    oInputSave = document.getElementById('opslaan');
    oInputSave.disabled = false;

    sYcMode = '';


  }





  function openPopup(sUrl, iWidth, iHeight, sName) {

    var sProperties = 'toolbar=no,location=no,status=yes,menubar=no,scrollbars=yes,resizable=yes';
    var iLeft       = (screen.availWidth - iWidth) / 2;
    var iTop        = (screen.availHeight - iHeight) / 2;
    var sProperties = 'height=' + iHeight + ',width=' + iWidth + ',top=' + iTop + ',left=' + iLeft + ',' + sProperties;
    var oWin        = window.open(sUrl, sName, sProperties);
    oWin.focus();

  }





  function dateMysqlToDutch(sMysqlDate) {

    var a = sMysqlDate.split('-');

    var sYear   = a[0];
    var sMonth  = a[1];
    var sDay    = a[2];

    if(sMonth.length < 2) sMonth = '0' + sMonth;
    if(sDay.length < 2) sDay = '0' + sDay;

    return (sDay + '-' + sMonth + '-' + sYear);


  }








  function getDateString (oDate) {

    var iYear  = oDate.getFullYear();
    var iMonth = oDate.getMonth() + 1;
    var iDay   = oDate.getDate();

    var sYear   = String(iYear);
    var sMonth  = (iMonth < 10) ? ('0' + iMonth) : String(iMonth);
    var sDay    = (iDay < 10) ? ('0' + iDay) : String(iDay);

    return (sYear + '-' + sMonth + '-' + sDay);

  }









  // ======================================================================================
  // Returns a string representation in the format 'dd-mm-yyyy' of the supplied date object
  // ======================================================================================

  function getFormattedDate (oDate) {

    var iYear  = oDate.getFullYear();
    var iMonth = oDate.getMonth() + 1;
    var iDay   = oDate.getDate();

    var sYear   = String(iYear);
    var sMonth  = (iMonth < 10) ? ('0' + iMonth) : String(iMonth);
    var sDay    = (iDay < 10) ? ('0' + iDay) : String(iDay);

    return (sDay + '-' + sMonth + '-' + sYear);

  }





  function updateStatus() {


    return true;

    with(document.form_main) {

      // Aanbetaling
      if(!isEmpty(aanbetaling_betalen) && !isEmpty(aanbetaling_betaald)) {
        var nAanbetalingBetalen   = parseFloat(aanbetaling_betalen.value);
        var nAanbetalingBetaald   = parseFloat(aanbetaling_betaald.value);
        var nAanbetalingVerschil  = nAanbetalingBetalen - nAanbetalingBetaald;
        aanbetaling_verschil.value = nAanbetalingVerschil.toFixed(2);
      } else {
        aanbetaling_verschil.value = '';
      }

      // Restbetaling
      if(!isEmpty(restbetaling_betalen) && !isEmpty(restbetaling_betaald)) {
        var nRestbetalingBetalen   = parseFloat(restbetaling_betalen.value);
        var nRestbetalingBetaald   = parseFloat(restbetaling_betaald.value);
        var nRestbetalingVerschil  = nRestbetalingBetalen - nRestbetalingBetaald;
        restbetaling_verschil.value = nRestbetalingVerschil.toFixed(2);
      } else {
        restbetaling_verschil.value = '';
      }

      // Annulering
      if(!isEmpty(annulering_betalen) && !isEmpty(annulering_betaald)) {
        var nAnnuleringBetalen   = parseFloat(annulering_betalen.value);
        var nAnnuleringBetaald   = parseFloat(annulering_betaald.value);
        var nAnnuleringVerschil  = nAnnuleringBetalen - nAnnuleringBetaald;
        annulering_verschil.value = nAnnuleringVerschil.toFixed(2);
      } else {
        annulering_verschil.value = '';
      }


      // Totaal
      var nTotaalBetaald = 0;
      if(!isEmpty(aanbetaling_betaald)) nTotaalBetaald += parseFloat(aanbetaling_betaald.value);
      if(!isEmpty(restbetaling_betaald)) nTotaalBetaald += parseFloat(restbetaling_betaald.value);
      totaal_betaald.value = nTotaalBetaald.toFixed(2);

      // Totaal verschil
      var nTotaalVerschil = parseFloat(totaal_betalen.value) - parseFloat(totaal_betaald.value);
      totaal_verschil.value = nTotaalVerschil.toFixed(2);


      // Set status
      var sStatus;
      if(!isEmpty(annulering_betalen) || !isEmpty(annulering_betaald)) {
        sStatus = 'geannuleerd';
      } else {
        var nTotaalBetalen = parseFloat(totaal_betalen.value);
        var nTotaalBetaald = parseFloat(totaal_betaald.value);
        if(nTotaalBetaald >= nTotaalBetalen) {
          sStatus = 'definitief';
        } else {
          if(!isEmpty(aanbetaling_betalen) && !isEmpty(aanbetaling_betaald)) {
            var nAanbetalingBetalen   = parseFloat(aanbetaling_betalen.value);
            var nAanbetalingBetaald   = parseFloat(aanbetaling_betaald.value);
            if(nAanbetalingBetaald >= nAanbetalingBetalen) {
              sStatus = 'reservering';
            } else {
              sStatus = 'optie';
            }
          } else {
            sStatus = 'optie';
          }
        }
      }
      status.value = sStatus;
      status_display.value = aStatus[sStatus];
    }

  }


  function berekenBedrag(sAppartementId, sDatumBegin, sDatumEind) {

    if(sAppartementId == '' || sDatumBegin == '' || sDatumEind == '') {
      alert('Kies een appartement en begin- en einddatum.');
      return false;
    }

    document.forms['form_main'].bedrag.disabled = true;

    var sUrl = 'index.php?section=common&module=json_bedrag&appartement=' + sAppartementId + '&datum_begin=' + sDatumBegin + '&datum_eind=' + sDatumEind;
    var request = new Json.Remote(sUrl, {
    	onComplete: function(oJson) {
        //alert('json loading complete ' + oJson);
        if(oJson.error != '') {
          alert(oJson.error);
        } else {
          document.forms['form_main'].bedrag.value = oJson.bedrag;
          formatBedrag(document.forms['form_main'].bedrag);
        }
        document.forms['form_main'].bedrag.disabled = false;
    	}
    }).send();

  }
  
  function datumAankomstGewijzigd(oCalendar) {
    
    document.forms['form_main'].datum_eind.value = document.forms['form_main'].datum_begin.value;
    
  }

  function datumVertrekGewijzigd(oCalendar) {
    
    //alert('The date has changed... ' + oCalendar);
    
  }
  
