// JavaScript Document function isEMailAddr(str) { var re = /^[\w-]+(\.[\w-]+)*@([\w-]+\.)+[a-zA-Z]{2,7}$/; if (!str.match(re)) { return false; } else { return true; } } function mkDate(str){ // returns false OR date object var bits = str.split("/"); if(bits.length==3){ var date = Number(bits[0]); var month = Number(bits[1]); var year = Number(bits[2]); if(date!=0 && month!=0 && year!=0){ var testDate = new Date(year, month-1, date); //alert(testDate.getUTCFullYear()+"=="+year+" && "+(testDate.getMonth()+1)+" == "+month+" && "+testDate.getDate()+" == "+date); if(testDate.getUTCFullYear() == year && (testDate.getMonth()+1) == month && (testDate.getDate()) == date){ return testDate; } } } return false; } function validate(){ var errors = 0; var errmsg = ''; for (var i = 0; i < document.forms[0].elements.length; i++){ var element = document.forms[0].elements[i]; var elementId = document.forms[0].elements[i].id; //check if required field if (elementId.substr(0,3)=="req"){ if (element.value==""){ element.className = 'textField_error'; errors++; } else { element.className = 'textField'; } } else { element.className = 'textField'; } // other validation var departureDateObj; var returnDateObj; switch(element.name){ case 'email_txt': if(!isEMailAddr(element.value)){ element.className = 'textField_error'; errors++; errmsg+='

Email address incorrectly formatted

'; } break; case 'departureDate_txt': departureDateObj = mkDate(element.value); if(departureDateObj==false){ element.className = 'textField_error'; errors++; } break; case 'returnDate_txt': returnDateObj = mkDate(element.value); if(returnDateObj==false){ element.className = 'textField_error'; errors++; } else { // any comparative validation here if(departureDateObj!=false){ var departTs = departureDateObj.getTime(); var returnTs = returnDateObj.getTime(); if(departTs>returnTs){ element.className = 'textField_error'; var el = document.getElementById('req_departureDate_txt'); el.className = 'textField_error'; errors++; errmsg+='

Return date must be after departure date!

'; } } } break; } } //we have an error if (errors>0){ document.getElementById('formError').innerHTML='

Please check the highlighted fields.

'+errmsg; return false; } else { document.getElementById('formError').innerHTML=''; } } function calcCost(days){ var cost; //1 to 5 days if ((days>=0) && (days<=5)){ cost = 33; } switch (days){ case 6: cost = 41; break; case 7: cost = 45; break; case 8: cost = 49; break; case 9: cost = 53; break; case 10: cost = 56; break; case 11: cost = 60; break; case 12: cost = 63; break; case 13: cost = 66; break; case 14: cost = 69; break; case 15: cost = 69; break; } //each day is 4 pound extra if (days>15){ var daysExtra daysExtra = days-15; cost = daysExtra*3; cost = cost + 69; } if(!isNaN(cost)){ document.getElementById('cost').innerHTML='£'+cost; } } function calcDays(date1,date2){ date1 = date1.split("/"); date2 = date2.split("/"); var sDate = new Date(date1[1]+"/"+(date1[0]-1)+"/"+date1[2]); var eDate = new Date(date2[1]+"/"+(date2[0]-1)+"/"+date2[2]); //::EDIT::CEL:: include return date var daysApart = Math.round((eDate-sDate)/86400000)+1; if (!isNaN(daysApart) && daysApart>0){ document.getElementById('daysRequired').innerHTML=Math.max(1,daysApart); calcCost(Math.max(1,daysApart)); var el = document.getElementById('price_details'); el.style.visibility='visible'; }else{ return; } } function dwCaldate_txt(date, month, year){ var testDate = mkDate(date+'/'+month+'/'+year); if(testDate!=false){ formatToDate(document.forms[0].departureDate_txt,date,month,year); calcDays(document.forms[0].departureDate_txt.value,document.forms[0].returnDate_txt.value); dwCalObjdate2_txt.setMinDate(year+''+(month<10?'0':'')+month+''+(date<10?'0':'')+date); } } function dwCaldate2_txt(date, month, year){ var testDate = mkDate(date+'/'+month+'/'+year); if(testDate!=false){ formatToDate(document.forms[0].returnDate_txt,date,month,year); calcDays(document.forms[0].departureDate_txt.value,document.forms[0].returnDate_txt.value); dwCalObjdate_txt.setMaxDate(year+''+(month<10?'0':'')+month+''+(date<10?'0':'')+date); } } function checkDate(str){ var bits = str.split("/"); if(bits.length==3){ dwCaldate_txt(Number(bits[0]),Number(bits[1]),Number(bits[2])); } } function checkDate2(str){ var bits = str.split("/"); if(bits.length==3){ dwCaldate2_txt(Number(bits[0]),Number(bits[1]),Number(bits[2])); } }