var clientFieldsNames = ['voorletters','tussenvoegsel','naam','voornaam','geboortedatum','geslacht','adres','postcode','woonplaats','land','telefoonnummer','mobiel','e-mailadres'];var contactFieldsNames = ['naam','telefoonnummer','e-mailadres']; var clientType; var clientFields = [ 'initials', 'preposition', 'name', 'prename', 'birthdate', 'sex', 'address', 'zipcode', 'city', 'country', 'phonenumber', 'mobile', 'email' ]; var clientFieldsChecks = [ /^([A-Za-zÀ-ÖØ-öø-ÿ-.`' ]+)$/, null, /^([A-Za-zÀ-ÖØ-öø-ÿ-.`' ]+)$/, null, 'birthdate', 'sex', /^([0-9A-Za-zÀ-ÖØ-öø-ÿ-.`' ]+)$/, /^([0-9A-Za-zÀ-ÖØ-öø-ÿ-.`' ]+)$/, /^([0-9A-Za-zÀ-ÖØ-öø-ÿ-.`' ]+)$/, /^([a-zA-Z]+)$/, /^([0-9 +-\\(\\)]+)$/, null, 'email' ]; var contactFields = [ 'c_name', 'c_tel', 'c_email' ]; var contactFieldsChecks = [ /^([A-Za-zÀ-ÖØ-öø-ÿ-.`' ]+)$/, /^([0-9 +-\\(\\)]+)$/, 'email' ]; function getElement(name, place) { var p,i,x; if (!place) place = document; if ((p = name.indexOf("?")) > 0 && parent.frames.length) { place = parent.frames[name.substring(p+1)].document; name = name.substring(0,p); } if (!(x = place[name]) && place.all) x = place.all[name]; if (!(x = place[name]) && place.getElementById) x = place.getElementById(name); for (i = 0; !x && i < place.forms.length; i++) x = place.forms[i][name]; for (i = 0; !x && place.layers && i < place.layers.length; i++) x = getObject(name,place.layers[i].document); if (x == '') x = 0; return x; } function checkNumPerons(){ var total = getElement('numpersons').value*1; var teens = getElement('numchildren').value*1; var children = getElement('numchildren3').value*1; if(teens==-1) teens = 0; if(children==-1) children = 0; if(total>(teens+children)) return true; else return false; } function resetNumChildren(){ var teens = getElement('numchildren').options[0].selected = true; var children = getElement('numchildren3').options[0].selected = true; } function checkStep(num, button){ switch (num){ case 1: var totalSelect = getElement('numpersons'); var teensSelect = getElement('numchildren'); var childrenSelect = getElement('numchildren3'); var pets = getElement('pets'); var total = totalSelect.value*1; var teens = teensSelect.value*1; var children = childrenSelect.value*1; var spantotal = getElement('spanNumPersons'); var spanteens = getElement('spanNumChildren'); var spanchildren = getElement('spanNumChildren3'); var spanpets = getElement('spanPets'); showHide('numpersons'); showHide('numchildren'); showHide('numchildren3'); showHide('pets'); if(teens==-1){ spanteens.innerHTML = "onbekend"; }else{ spanteens.innerHTML = teens; } if(children==-1){ spanchildren.innerHTML = "onbekend"; }else{ spanchildren.innerHTML = children; } spantotal.innerHTML = total; if(pets.value > 0) spanpets.innerHTML = "ja, "+pets.value; else spanpets.innerHTML = "nee"; updateProcessBar(20); updateStep(2); showHide('clientType'); showHide('tdButtonStep1'); break; case 2: var client = getElement('alreadyclient'); var noclient = getElement('alreadyclient2'); var userID = getElement('user_id'); if(userID!=null){ var email = getElement('loggedInEmail'); var password = getElement('loggedInPassword'); var data = getUser(email.value, password.value, false); var h_id = data.clients[0].client.h_id; if(h_id!='' && h_id.indexOf(houseId)!=-1){ getElement('ownersrent').value = 1; showHide('reduction'); calcRent(); } setValues(data); showHide('clientInfo'); showHide('clientType'); getElement('initials').focus(); getElement('userID').value = data.clients[0].client.id; updateProcessBar(40); updateStep(3); clientType = 3; break; } if(!noclient.checked && !client.checked){ alert("U moet aangeven of u al een klant bent bij Kuypers Verhuur voordat u verder kan gaan."); return; } showHide('clientType'); if(noclient.checked){ resetValues(clientFields); showHide('clientInfo'); updateProcessBar(40); updateStep(3); clientType = 0; getElement('initials').focus(); } if(client.checked){ showHide('knownClient'); getElement('reservationLoginEmail').focus(); getElement('formemail').disabled = 'disabled'; getElement('step3_initials').disabled = 'disabled'; getElement('step3_preposition').disabled = 'disabled'; getElement('step3_name').disabled = 'disabled'; getElement('step3_prename').disabled = 'disabled'; getElement('step3_birthdate').disabled = 'disabled'; getElement('sman').disabled = 'disabled'; getElement('sfemale').disabled = 'disabled'; clientType = 1; } noclient.disabled = 'disabled'; client.disabled = 'disabled'; break; case 3: var email = getElement('reservationLoginEmail'); var password = getElement('reservationLoginPassword'); if(!checkLogin(email.value, password.value)){ password.value = ""; alert("Het ingevulde e-mailadres of wachtwoord is fout. Probeer het opnieuw."); return; } var data = getUser(email.value, password.value, true); getElement('userID').value = data.clients[0].client.id; if(data.clients[0].client.reference!=-1) getElement('client_reference_options').style.display = "none"; var h_id = data.clients[0].client.h_id; if(h_id!='' && h_id.indexOf(houseId)!=-1){ showHide('reduction'); getElement('ownersrent').value = 1; calcRent(); } setValues(data); showHide('knownClient'); showHide('clientInfo'); getElement('initials').focus(); updateProcessBar(40); updateStep(3); break; case 4: if(!checkFields(clientFields, clientFieldsChecks, clientFieldsNames)){ break; } if(clientType==0 && checkAjaxEmail(getElement('email').value)){ alert("Het ingevulde e-mailadres komt al in onze database voor."); break; } setSpanValues(clientFields); showHideInputFields(clientFields); updateProcessBar(60); updateStep(4); showHide('tdButtonStep3'); showHide("extras") break; case 5: showHideInputExtra(); setSpanExtra(); showHide('tdButtonStep4'); showHide('final'); updateProcessBar(80); updateStep(5); break; case 6: if(confirm("Kloppen alle gegevens die u heeft ingevuld?")){ client_reference = getElement('client_reference'); if(getElement('client_reference_options').style.display!="none" && client_reference.value==""){ alert("U heeft nog niet aangegeven hoe u met Kuypers Verhuur in contact gekomen. "); return; } if(getElement('client_reference_options').style.display!="none" && client_reference[client_reference.selectedIndex].rel==1){ if(getElement('client_reference_extra').value==""){ alert("U heeft nog niet aangegeven hoe u met Kuypers Verhuur in contact gekomen. "); return; } } if(getElement('conditions').checked){ getElement('formemail').disabled = ''; getElement('step3_initials').disabled = ''; getElement('step3_preposition').disabled = ''; getElement('step3_name').disabled = ''; getElement('step3_prename').disabled = ''; getElement('step3_birthdate').disabled = ''; getElement('sman').disabled = ''; getElement('sfemale').disabled = ''; getElement('reservationform').submit(); }else{ alert("U moet in stemmen met de voorwaarden voordat u uw reservering kunt bevestigen."); return; } }else{ return; } updateProcessBar(100); break; } } function backStep(num, button){ switch (num){ case 1: showHide('numpersons'); showHide('numchildren'); showHide('numchildren3'); showHide('pets'); var spantotal = getElement('spanNumPersons'); var spanteens = getElement('spanNumChildren'); var spanchildren = getElement('spanNumChildren3'); var spanpets = getElement('spanPets'); spantotal.innerHTML = ""; spanteens.innerHTML = ""; spanchildren.innerHTML = ""; spanpets.innerHTML = ""; updateProcessBar(0); updateStep(1); showHide('tdButtonStep1'); getElement('buttonStep1').disabled = ''; showHide('clientType'); break; case 2: updateProcessBar(20); updateStep(2); showHide('clientType'); var client = getElement('alreadyclient'); var noclient = getElement('alreadyclient2'); noclient.disabled = ''; client.disabled = ''; getElement('formemail').disabled = ''; if(clientType == 1) showHide('knownClient'); getElement('client_reference_options').style.display = ""; getElement('formemail').disabled = ''; getElement('step3_initials').disabled = ''; getElement('step3_preposition').disabled = ''; getElement('step3_name').disabled = ''; getElement('step3_prename').disabled = ''; getElement('step3_birthdate').disabled = ''; getElement('sman').disabled = ''; getElement('sfemale').disabled = ''; break; case 3: updateProcessBar(20); updateStep(2); showHide('clientInfo'); if(clientType == 0){ showHide('clientType'); var client = getElement('alreadyclient'); var noclient = getElement('alreadyclient2'); noclient.disabled = ''; client.disabled = ''; } else if(clientType == 3){ showHide('clientType'); } else{ //resetValues(clientFields); resetSpanValues(clientFields); showHide('knownClient'); getElement('ownersrent').value = 0; calcRent(); hide('reduction'); } break; case 4: updateProcessBar(40); updateStep(3); showHide('tdButtonStep3'); resetSpanExtra(); showHide('extras'); resetSpanValues(clientFields); showHideInputFields(clientFields); break; case 5: updateProcessBar(60); updateStep(4); showHide('tdButtonStep4'); showHideInputExtra(); resetSpanExtra(); showHide('final'); break; } } function updateStep(num){ for(i=1; i<=5; i++){ getElement("liStep"+i).className = ""; } getElement("liStep"+num).className = "current"; } function resetSpanExtra(){ for(i=0; i< numextras; i++){ getElement("extraspan_"+i).innerHTML = ""; } } function setSpanExtra(){ for(i=0; i< numextras; i++){ getElement("extraspan_"+i).innerHTML = getElement("ae_"+i).value; } } function showHideInputExtra(){ for(i=0; i< numextras; i++){ showHide("extrainput_"+i); } } function resetValues(fields){ for(i=0; i< fields.length; i++){ if(fields[i]!="country") getElement(fields[i]).value = ""; } } function resetSpanValues(fields){ for(i=0; i< fields.length; i++){ getElement("span"+fields[i]).innerHTML = ""; } } function setSpanValues(fields){ for(i=0; i< fields.length; i++){ if(fields[i]!='sex') getElement("span"+fields[i]).innerHTML = getElement(fields[i]).value; } getElement("spancountry").innerHTML = getFullCountryName(getElement('country').value); var sman = getElement('sman'); var sfemale = getElement('sfemale'); if(sman.checked){ getElement('spansex').innerHTML = "Man"; } if(sfemale.checked){ getElement('spansex').innerHTML = "Vrouw"; } } function showHideInputFields(fields){ for(i=0; i< fields.length; i++){ if(fields[i]!='sex') showHide(fields[i]); } showHide('inputsex'); } function setValues(data){ var client = data.clients[0].client; getElement('initials').value = client.initials; getElement('preposition').value = client.preposition; getElement('name').value = client.name; getElement('prename').value = client.prename; getElement('birthdate').value = client.birthdate; getElement('address').value = client.adress; getElement('zipcode').value = client.zipcode; getElement('city').value = client.city; getElement('phonenumber').value = client.phone; getElement('mobile').value = client.mobile; getElement('email').value = client.email; selectValue(getElement('country'), client.country) selectSex(client.sex) } function selectValue(list, item){ for(i = 0; i< list.options.length; i++){ if(list.options[i].value==item){ list.options[i].selected = 'selected'; break; } } } function selectSex(sex){ var sman = getElement('sman'); var sfemale = getElement('sfemale'); if(sex=='M'){ sman.checked = 'checked'; sfemale.checked = ''; } if(sex=='F'){ sman.checked = ''; sfemale.checked = 'checked'; } } function getXmlHttp(){ var xmlhttp; try { xmlhttp = new ActiveXObject("Msxml2.XMLHTTP"); } catch (e1) { try { xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); } catch (e2) { xmlhttp = null; } } if (! xmlhttp) { if (typeof XMLHttpRequest != "undefined") { xmlhttp = new XMLHttpRequest(); } else { xmlhttp = null; } } return xmlhttp; } function checkLogin(email, password) { xmlhttp = getXmlHttp(); if(xmlhttp==null) return; var url = "/ajax/reservation.ajax.php?action=checklogin&email="+email+"&password="+hex_md5(password); xmlhttp.open("GET", url, false); xmlhttp.send(null); var txt = xmlhttp.responseText; if(txt.indexOf("true")!=-1) return true; else return false; } function getUser(email, password, md5) { xmlhttp = getXmlHttp(); if(xmlhttp==null) return; if(md5) pass = hex_md5(password); else pass = password; var url = "/ajax/reservation.ajax.php?action=getuser&email="+email+"&password="+pass; xmlhttp.open("GET", url, false); xmlhttp.send(null); var txt = xmlhttp.responseText; var data = eval('(' + txt + ')'); return data; } function checkAjaxEmail(email) { xmlhttp = getXmlHttp(); if(xmlhttp==null) return; var url = "/ajax/reservation.ajax.php?action=checkemail&email="+email; xmlhttp.open("GET", url, false); xmlhttp.send(null); var txt = xmlhttp.responseText; if(txt.indexOf("true")!=-1) return true; else return false; } function getFullCountryName(cc) { xmlhttp = getXmlHttp(); if(xmlhttp==null) return; var url = "/ajax/reservation.ajax.php?action=getcountry&lang=nl&cc="+cc; xmlhttp.open("GET", url, false); xmlhttp.send(null); var txt = xmlhttp.responseText; if(txt.indexOf("false")!=-1) return false; else return txt; } function checkFields(fields, regexps, names){ var wrong = ""; var empty = ""; for(i=0; i< fields.length; i++){ if(regexps[i]!=null && regexps[i]!='sex'){ el = getElement(fields[i]); if(el.value==""){ empty += ', '+names[i]; } } if(regexps[i]=='sex'){ if(!checkSex()){ empty += ', '+names[i]; } } } for(i=0; i< fields.length; i++){ if(regexps[i]!=null){ el = getElement(fields[i]); if(regexps[i]=='email'){ if(!checkEmail(el.value)){ wrong += ', '+names[i]; } } else if(regexps[i]=='birthdate'){ if(!checkBirthdate(el.value)){ wrong += ', '+names[i]; } } else if(regexps[i]=='sex'){ if(!checkSex()){ wrong += ', '+names[i]; } } else{ if(!checkField(el, regexps[i])){ wrong += ', '+names[i]; } } } } if(empty!="" || wrong!=""){ str = ""; if(empty != "") str += "De volgende velden zijn nog niet ingevuld: "+empty.substring(2)+"\n\n"; if(wrong != "") str += "De volgende velden zijn niet goed ingevuld: "+wrong.substring(2); alert(str); return false; } return true; } function checkSex(){ var sman = getElement('sman'); var sfemale = getElement('sfemale'); return sman.checked || sfemale.checked; } function checkBirthdate(value){ var myDate=new Date(); var dd = value.split('-'); if(dd.length==3 && dd[2].length==4){ myDate.setFullYear(dd[2],dd[1]-1,dd[0]); var today = new Date(); var age = (today.getTime() - myDate.getTime())/(1000*60*60*24*365); return (age>18); } return false; } function checkEmail(str){ var re = new RegExp(/^[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)*@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$/); if(str.match(re)==null) return false; else return true; } function checkField(el, reg){ var re = new RegExp(reg); if(el.value.match(re)==null) return false; else return true; } function showHide(id){ var el = getElement(id); if(el.style.display=='none'){ el.style.display = ''; }else{ el.style.display = 'none'; } } function hide(id){ var el = getElement(id); el.style.display='none'; } function inputHidden(id, name, value){ return ""; } function updateProcessBar(done){ var maxWidth = 600; var stepSize = maxWidth/100; var newWidth = stepSize*done; getElement('processBar').style.width = newWidth+'px'; if(done!=0) getElement('processP').innerHTML = done+' %'; else getElement('processP').innerHTML = ''; } function changeValue(id, num){ value = document.getElementById(id).value*1; newvalue = value + num*1; if(newvalue>=0){ document.getElementById(id).value = newvalue; calcRent(); } } function clientReference(el){ if(el[el.selectedIndex].rel==1) getElement('client_reference_extra_row').style.display = ''; else getElement('client_reference_extra_row').style.display = 'none'; }