var frm;
function setForm() {
  if (MM_findObj('frmOnlineBoeken')) { frm = MM_findObj('frmOnlineBoeken'); return; }
  if (MM_findObj('frmInfoAanvraag')) { frm = MM_findObj('frmInfoAanvraag'); return; }
}

function showLoadScreen() {
  if ($('divLoading')) {
    $('divLoading').style.display='block';
    $('tibosOnlineboeken').style.display='none';
  }
}
function hideLoadScreen() {
  if ($('divLoading')) { 
    setTimeout(function() {
      $('tibosOnlineboeken').style.display='block';
      $('divLoading').style.display='none';
    },250);
  }
}

function setLng(lng) {
  if (!frm) { setForm(); } if (!frm) { return; }
  frm.lng.value=lng;
  showLoadScreen();
  frm.submit();
}

function ucAll(el) {
  el.value = el.value.toUpperCase();
}

function ucFirst(el){
  el.value = el.value.charAt(0).toUpperCase() + el.value.substr( 1, el.value.length);
}

function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function setPage(page,action) {
  if (!frm) { setForm(); } if (!frm) { return; }
  frm.page.value=page;
  if (action=='return') { return; }
  showLoadScreen();
  frm.submit();
}

function setNextPage() {
  if (!frm) { setForm(); } if (!frm) { return; }
  frm.page.value=frm.next_page.value;
  showLoadScreen();
  frm.submit();
}

function showInfo(obj) {
  //return hs.expand(obj);
  return hs.htmlExpand(obj, { objectType: 'ajax', cacheAjax: false } );
}

function getSelectedPersonen(frm) {
  if (!frm) { setForm(); } if (!frm) { return; }
  var selP = 1*frm.setVolwassenen.value;
  if (frm.setKinderen) { selP += 1*frm.setKinderen.value; }
  if (frm.setInfants)  { selP += 1*frm.setInfants.value; }
  if (frm.setEPKAT1)   { selP += 1*frm.setEPKAT1.value; }
  if (frm.setEPKAT2)   { selP += 1*frm.setEPKAT2.value; }
  if (frm.setEPKAT3)   { selP += 1*frm.setEPKAT3.value; }
  if (frm.setHond)     { selP += 1*frm.setHond.value; }
  return selP;
}

function calcMaxPersonen(frm,maxP) {
  if (!frm) { setForm(); } if (!frm) { return; }
  var selP = getSelectedPersonen(frm);

  var maxA=0,maxC=0,maxI=0,maxE1=0,maxE2=0,maxE3=0,maxH=0;
  if (frm.setVolwassenen) { maxA  = maxP - (selP - frm.setVolwassenen.value); }
  if (frm.setKinderen)    { maxC  = maxP - (selP - frm.setKinderen.value); }
  if (frm.setInfants)     { maxI  = maxP - (selP - frm.setInfants.value); }
  if (frm.setEPKAT1)      { maxE1 = maxP - (selP - frm.setEPKAT1.value); }
  if (frm.setEPKAT2)      { maxE2 = maxP - (selP - frm.setEPKAT2.value); }
  if (frm.setEPKAT3)      { maxE3 = maxP - (selP - frm.setEPKAT3.value); }
  if (frm.setHond)        { maxH  = maxP - (selP - frm.setHond.value); }

  if (frm.setVolwassenen) {
    for (var i=0,j=1; i<frm.setVolwassenen.length; i++) {
      var option = frm.setVolwassenen.options[i];
      if (j<=maxA) { option.disabled=false; }
      else { option.disabled=true; }
      j++;
    }
  }
  if (frm.setKinderen) {
    for (var i=0; i<frm.setKinderen.length; i++) {
      var option = frm.setKinderen.options[i];
      if (i<=maxC) { option.disabled=false; }
      else { option.disabled=true; }
    }
  }
  if (frm.setInfants) {
    for (var i=0; i<frm.setInfants.length; i++) {
      var option = frm.setInfants.options[i];
      if (i<=maxI) { option.disabled=false; }
      else { option.disabled=true; }
    }
  }
  if (frm.setEPKAT1) {
    for (var i=0; i<frm.setEPKAT1.length; i++) {
      var option = frm.setEPKAT1.options[i];
      if (i<=maxE1) { option.disabled=false; }
      else { option.disabled=true; }
    }
  }
  if (frm.setEPKAT2) {
    for (var i=0; i<frm.setEPKAT2.length; i++) {
      var option = frm.setEPKAT2.options[i];
      if (i<=maxE2) { option.disabled=false; }
      else { option.disabled=true; }
    }
  }
  if (frm.setEPKAT3) {
    for (var i=0; i<frm.setEPKAT3.length; i++) {
      var option = frm.setEPKAT3.options[i];
      if (i<=maxE3) { option.disabled=false; }
      else { option.disabled=true; }
    }
  }
  if (frm.setHond) {
    for (var i=0; i<frm.setHond.length; i++) {
      var option = frm.setHond.options[i];
      if (i<=maxH) { option.disabled=false; }
      else { option.disabled=true; }
    }
  }
}


function initToolTips() {
  HM.Tooltip.load("td.calPerStart", {
    followCursor: false,
    backgroundColor: '',
    opacity: 0.95,
    effectDuration: 0.5,
    delay: 100
  });
  HM.Tooltip.load("td.artikelInfo", {
    followCursor: false,
    backgroundColor: '',
    opacity: 0.95,
    effectDuration: 0.5,
    delay: 100
  });
  HM.Tooltip.load(".TTinfo", {
    followCursor: false,
    backgroundColor: '',
    opacity: 0.95,
    effectDuration: 0.5,
    delay: 100
  });
}




/* AJAX Functies (GETTER) */
function loadGroepSelection(lng,tiboshost) {
  showLoadScreen();
  new Ajax.Request("ajax/groep_selection.lp", {
    method: "post",
    parameters: {
      lng: lng,
      host: tiboshost,
      chkHash: window.chkHash
    },
    onComplete: function(transport) {
      $('divGroepSelection').update(transport.responseText);
      loadObjecttypes(lng,tiboshost);
    }
  });
}

function loadObjecttypes(lng,tiboshost) {
  showLoadScreen();
  new Ajax.Request("ajax/objecttypes.lp", {
    method: "post",
    parameters: {
      lng: lng,
      host: tiboshost,
      chkHash: window.chkHash
    },
    onComplete: function(transport) {
      $('divObjecttypes').update(transport.responseText);
      hideLoadScreen();
    }
  });
}

function updateSelection(lng,tiboshost) {
  showLoadScreen();
  new Ajax.Request("ajax/set_voorkeuren.lp", {
    method: "post",
    parameters: {
      arrival:  document.frmOnlineBoeken.setArrivalDate   ? document.frmOnlineBoeken.setArrivalDate.value   : '',
      nights:   document.frmOnlineBoeken.setVerblijfsduur ? document.frmOnlineBoeken.setVerblijfsduur.value : '',
      adults:   document.frmOnlineBoeken.setVolwassenen   ? document.frmOnlineBoeken.setVolwassenen.value   : '',
      childern: document.frmOnlineBoeken.setKinderen      ? document.frmOnlineBoeken.setKinderen.value      : '',
      infants:  document.frmOnlineBoeken.setInfants       ? document.frmOnlineBoeken.setInfants.value       : '',
      host:     tiboshost,
      chkHash:  window.chkHash
    },
    onComplete: function(transport) {
      loadObjecttypes(lng,tiboshost);
      hideLoadScreen();
    }
  });
}

function getPrijsinfo(elID, tiboshost, gid, cid, bid) {
  if ($(elID)) {
    $(elID).update('<img src="images/loading_small.gif" alt="" width="12" height="12" border="0">');
    new Ajax.Request("ajax/calcprice.lp", {
      method: "post",
      parameters: {
        gid: gid,
        cid: cid,
        bid: bid,
        host: tiboshost,
        chkHash: window.chkHash
      },
      onComplete: function(transport) {
        $(elID).update(transport.responseText);
      }
    });
  }
}

/* AJAX Update debug DATA */
function updateDebugData(tiboshost) {
/*
  new Ajax.Request("ajax/showdebug.lp", {
    method: "post",
    parameters: {
      host: tiboshost,
      chkHash: window.chkHash
    },
    onComplete: function(transport) {
      if ($('divDebugData')) {
        $('divDebugData').update(transport.responseText);
      }
    }
  });
*/
}


/* AJAX Functies (SETTER) */
function setObjectgroep(id,lng,tiboshost) {
  showLoadScreen();
  new Ajax.Request("ajax/set_objectgroep.lp", {
    method: "post",
    parameters: {
      groep: id,
      host: tiboshost,
      chkHash: window.chkHash
    },
    onComplete: function(transport) {
      loadGroepSelection(lng,tiboshost);
    }
  });
}

var newWindow;
function selectParkCategorie(park,gid,id,lng,tiboshost,vp) {
  var w=1050,h=740,scroll='yes';
  var LeftPosition = (screen.width) ? (screen.width-w)/2 : 0;
  var TopPosition = (screen.height) ? (screen.height-h)/2 : 0;
  settings = 'height='+h+',width='+w+',top='+TopPosition+',left='+LeftPosition+',scrollbars='+scroll+',resizable'
  newWindow = window.open('http://boeken.tibos.nl/'+park+'/start.lp?lng='+lng+'&value='+gid+'|'+id+'&type=GCB&referer='+tiboshost+'&vakantie_periode='+vp, 'winTIBOS'+park, settings);
  newWindow.focus();
}

function selectCategorie(gid,id,lng,tiboshost,page) {
  showLoadScreen();
  new Ajax.Request("ajax/set_categorie.lp", {
    method: "post",
    parameters: {
      groep: gid,
      cat: id,
      host: tiboshost,
      chkHash: window.chkHash
    },
    onComplete: function(transport) {
      //loadObjecttypes(lng,tiboshost);
      if (page) {
        setPage(page);
      } else {
        setNextPage();
      }
    }
  });
}

function selectBedrijf(gid,cid,bid,lng,tiboshost,page) {
  showLoadScreen();
  new Ajax.Request("ajax/set_bedrijf.lp", {
    method: "post",
    parameters: {
      gid: gid,
      cid: cid,
      bid: bid,
      host: tiboshost,
      chkHash: window.chkHash
    },
    onComplete: function(transport) {
      //loadObjecttypes(lng,tiboshost);
      if (!frm) { setForm(); } if (!frm) { return; }
      if (frm.setObject&&frm.page.value==40) {
        frm.setObject.value='';
      }
      if (page) {
        setPage(page);
      } else {
        setNextPage();
      }
    }
  });
}

function selectObject(gid,cid,bid,oid,buchart,lng,tiboshost) {
  showLoadScreen();
  new Ajax.Request("ajax/set_object.lp", {
    method: "post",
    parameters: {
      gid: gid,
      cid: cid,
      bid: bid,
      oid: oid,
      buchart: buchart,
      host: tiboshost,
      chkHash: window.chkHash
    },
    onComplete: function(transport) {
      setNextPage();
    }
  });
}

function selectArrangement(aid,van,tot,buchart,lng,tiboshost) {
  if (!frm) { setForm(); } if (!frm) { return; }
  showLoadScreen();
  new Ajax.Request("ajax/set_arrangement.lp", {
    method: "post",
    parameters: {
      aid: aid,
      hidAankomst: van,
      hidVertrek: tot,
      buchart: buchart,
      host: tiboshost,
      chkHash: window.chkHash
    },
    onComplete: function(transport) {
      frm.submit();
    }
  });
}


var renewArtikelen = false;
function doRenewOptioneleArtikelen(thisForm) {
  if (renewArtikelen) {
    alert('already busy!');
    return;
  }
  renewArtikelen = true;
  setTimeout(function() {
    alert('renew artikelen: '+thisForm.name);
    renewArtikelen = false;
  },2000);
}


function updateOptioneleArtikelen(thisForm) {
  doRenewOptioneleArtikelen(thisForm);
  return;

  $('calcPriceLoading').style.display='block';
  var ajax_request = '';
  if (thisForm.ajax_script) { ajax_request = thisForm.ajax_script.value; }
  ajax_request += "ajax/optionele-artikelen.lp?";
  new Ajax.Request(ajax_request+thisForm.serialize(), {
    method: "get",
    parameters: {
      chkHash: window.chkHash
    },
    onComplete: function(transport) {
      $('divOptioneleArtikelen').update(transport.responseText);
      initToolTips();
//      updatePriceCalculation(thisForm);
      $('calcPriceLoading').style.display='none';
    }
  });
}

function updatePriceCalculation(thisForm) {
  $('calcPriceLoading').style.display='block';
  var ajax_request = '';
  if (thisForm.ajax_script) { ajax_request = thisForm.ajax_script.value; }
  ajax_request += "ajax/price-calculation.lp?";
  new Ajax.Request(ajax_request+thisForm.serialize(), {
    method: "get",
    parameters: {
      chkHash: window.chkHash
    },
    onComplete: function(transport) {
      $('divPrijsberekening').update(transport.responseText);
      initToolTips();
      $('calcPriceLoading').style.display='none';
    }
  });
}


function chkGastGegevens(kdnr,zip,tiboshost,thisForm) {
  if (thisForm) { frm = thisForm; }
  if (!frm) { setForm(); } if (!frm) { return; }
  if (kdnr&&zip) {
    showLoadScreen();
    var ajax_request = '';
    if (frm.ajax_script) { ajax_request = frm.ajax_script.value; }
    ajax_request += "ajax/chk-gast.json";
    new Ajax.Request(ajax_request, {
      method: "post",
      parameters: {
        kdnr: kdnr,
        zip: zip,
        host: tiboshost,
        chkHash: window.chkHash
      },
      requestHeaders: { Accept: "application/json" },
      evalJSON: "force",
      onSuccess: function(transport) {
        var json = transport.responseJSON;
        if (json.result == 'ok') {
          if (frm.kdnr && json.gegevens.kdnr) { frm.kdnr.value=json.gegevens.kdnr; }
          if (frm.aanhef && json.gegevens.aanhef) { frm.aanhef.value=json.gegevens.aanhef; }
          if (frm.voorletters && json.gegevens.voorletters) { frm.voorletters.value=json.gegevens.voorletters; }
          if (frm.tussenvoegsels && json.gegevens.tussenvoegsels) { frm.tussenvoegsels.value=json.gegevens.tussenvoegsels; }
          if (frm.achternaam && json.gegevens.achternaam) { frm.achternaam.value=json.gegevens.achternaam; }
          if (frm.straat && json.gegevens.straat) { frm.straat.value=json.gegevens.straat; }
          if (frm.huisnummer && json.gegevens.huisnummer) { frm.huisnummer.value=json.gegevens.huisnummer; }
          if (frm.postcode && json.gegevens.postcode) { frm.postcode.value=json.gegevens.postcode; }
          if (frm.woonplaats && json.gegevens.woonplaats) { frm.woonplaats.value=json.gegevens.woonplaats; }
          if (frm.land && json.gegevens.land) { frm.land.value=json.gegevens.land; }
          if (frm.telefoon && json.gegevens.telefoon) { frm.telefoon.value=json.gegevens.telefoon; }
          if (frm.mobiel && json.gegevens.mobiel) { frm.mobiel.value=json.gegevens.mobiel; }
          if (frm.geboortedatum_dag && json.gegevens.geboortedatum.dag) { frm.geboortedatum_dag.value=json.gegevens.geboortedatum.dag; }
          if (frm.geboortedatum_maand && json.gegevens.geboortedatum.maand) { frm.geboortedatum_maand.value=json.gegevens.geboortedatum.maand; }
          if (frm.geboortedatum_jaar && json.gegevens.geboortedatum.jaar) { frm.geboortedatum_jaar.value=json.gegevens.geboortedatum.jaar; }
          if (frm.geslacht && json.gegevens.geslacht) { frm.geslacht.value=json.gegevens.geslacht; }
          if (frm.email && json.gegevens.email) { frm.email.value=json.gegevens.email; }
          if (frm.zusatz1 && json.gegevens.zusatz1) { frm.zusatz1.value=json.gegevens.zusatz1; }
          if (frm.zusatz2 && json.gegevens.zusatz2) { frm.zusatz2.value=json.gegevens.zusatz2; }
          if (frm.zusatz3 && json.gegevens.zusatz3) { frm.zusatz3.value=json.gegevens.zusatz3; }
          if (frm.zusatz4 && json.gegevens.zusatz4) { frm.zusatz4.value=json.gegevens.zusatz4; }
          if (frm.zusatz5 && json.gegevens.zusatz5) { frm.zusatz5.value=json.gegevens.zusatz5; }
          if (frm.accnumber && json.gegevens.accnumber) { frm.accnumber.value=json.gegevens.accnumber; }
          if (frm.gevonden && json.gegevens.gevonden) { frm.gevonden.value=json.gegevens.gevonden; }
        } else {
          alert(json.message);
        }
        accordion.toggle('divGastGegevens');
        hideLoadScreen();
      }
    });
  }
}

function addClass(obj, cName)       { if (obj&&cName&&!hasClass(obj, cName)) { obj.className += " "+cName; } }
function removeClass(obj, cName)    { if (obj&&cName&&hasClass(obj, cName)) { if (obj.className==obj.className.replace(" ","-")) { obj.className=obj.className.replace(cName, ""); } else { obj.className=obj.className.replace(" "+cName, ""); } } }
function hasClass(obj, cName)       { if (obj&&cName) { if (obj.className == obj.className.replace(cName,"")) { return false; } return true; } }
function addRemoveClass(obj, cName) { if (obj&&cName) { if (!hasClass(obj, cName)) { addClass(obj,cName); } else { removeClass(obj,cName); } } }
function CheckEmailAddress(x)       { var filter  = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/; if (!filter.test(x)) { return false; } return true; }


