function getForm() { return document.SearchResultsForm; } function trim(value){ return value.replace(/^\s+|\s+$/,''); } function populatePuDate(dropList) { var form = getForm(); //if month selected is a month gone, select next year as the year. if(dropList != null && dropList == 'puMonth') { var date = new Date(); if(form.puMonth.value < date.getMonth()+1) { form.puYear.value = Number(date.getFullYear())+1; dropList = 'puYear'; } populateDaysOfMonth(form.puDay, getForm().puMonth.value - 1, getForm().puYear.value); } if(isPuAfterDo(form)) { fixDoDate(form, dropList); } // getForm().doDay.selectedIndex=getForm().puDay.selectedIndex; // getForm().doMonth.selectedIndex=getForm().puMonth.selectedIndex; // getForm().doYear.selectedIndex=getForm().puYear.selectedIndex; } function populateDoDate(dropList) { var form = getForm(); if(dropList != null && dropList != 'doDay') { //if month selected is a month gone, select next year as the year. if(dropList == 'doMonth') { var date = new Date(); if(form.doMonth.value < date.getMonth()+1) { form.doYear.value = Number(date.getFullYear())+1; dropList = 'doYear'; } populateDaysOfMonth(form.doDay, form.doMonth.value - 1, form.doYear.value); } if(isPuAfterDo(form)) { fixPuDate(form, dropList); } } } function populateDaysOfMonth(dayNode, monthInt, yearInt) { var selectedDay = dayNode.value; var newDate = new Date(yearInt, monthInt, 1, 1, 1, 1, 0); var newOptionNode; var nextDate = new Date(yearInt, monthInt + 1, 1, 1, 1, 1, 0); nextDate.setTime(nextDate.getTime() - 86400000); var lastDay = nextDate.getDate(); var daySelected = false; //remove all children (options) of the dayNode while(dayNode.hasChildNodes()) { dayNode.removeChild(dayNode.lastChild); } //add days for selected month while(newDate.getMonth() == monthInt) { var dayString = newDate.getDate(); if(newDate.getDate() < 10) { dayString = "0"+dayString; } optionNode = document.createElement("option"); optionNode.setAttribute("value", newDate.getDate()); var inHtml = document.createTextNode(dayString); optionNode.appendChild(inHtml); if((newDate.getDate() == selectedDay || newDate.getDate() == lastDay) && ! daySelected) { optionNode.setAttribute("selected", "selected"); daySelected = true; } dayNode.appendChild(optionNode); newDate.setTime(newDate.getTime() + 86400000); } dayNode.parentNode.normalize(); } function isPuAfterDo(searchForm) { var puDate = new Date(searchForm.puYear.value, searchForm.puMonth.value-1, searchForm.puDay.value, 12, 0); var doDate = new Date(searchForm.doYear.value, searchForm.doMonth.value-1, searchForm.doDay.value, 12, 0); return puDate.valueOf() > doDate.valueOf(); } function setPuMultipleValues(y,m,d) { getForm().puDay.value=d; getForm().puMonth.value=m; getForm().puYear.value=LZ(y); } function setDoMultipleValues(y,m,d) { getForm().doDay.value=d; getForm().doMonth.value=m; getForm().doYear.value=LZ(y); } function validateSearchResultsForm(searchForm){ /* searchForm.action=searchForm.action+"?puDay="+searchForm.puDay.value+"&location="+searchForm.location.value+"&dropLocation="+searchForm.dropLocation.value+"&driversAge="+searchForm.driversAge.value+"&puMonth="+searchForm.puMonth.value+"&puYear="+searchForm.puYear.value+"&doDay="+searchForm.doDay.value+"&doMonth="+searchForm.doMonth.value+"&doYear="+searchForm.doYear.value+"&puHour="+searchForm.puHour.value+"&puMinute="+searchForm.puMinute.value+"&doHour="+searchForm.doHour.value+"&doMinute="+searchForm.doMinute.value; */ var errors = ""; errors = validateDriversAge(searchForm.driversAge, "運転手のご年齢", errors); errors = validateMandatoryDroplist(searchForm.country, "貸出する国", errors); errors = validateMandatoryDroplist(searchForm.city, "貸出する都市", errors); errors = validateMandatoryDroplist(searchForm.location, "貸出する場所", errors); var puSameAsDo = false; try { if(searchForm.puSameAsDo.checked) { puSameAsDo = true; } } catch(e){} if(! puSameAsDo) { errors = validateMandatoryDroplist(searchForm.dropCountry, "返却する国", errors); errors = validateMandatoryDroplist(searchForm.dropCity, "返却する都市", errors); errors = validateMandatoryDroplist(searchForm.dropLocation, "返却する場所", errors); } errors = validateDate(searchForm.puYear.value, searchForm.puMonth.value-1, searchForm.puDay.value, "返却日は貸出日の後になります。", errors); errors = validateDate(searchForm.doYear.value, searchForm.doMonth.value-1, searchForm.doDay.value, "", errors); errors = validateDates(searchForm, searchForm.puYear.value, searchForm.puMonth.value-1, searchForm.puDay.value, searchForm.puHour.value, searchForm.puMinute.value, "返却日は貸出日の後になります。", searchForm.doYear.value, searchForm.doMonth.value-1, searchForm.doDay.value, searchForm.doHour.value, searchForm.doMinute.value, "", errors); errors = validateCutOffDate(searchForm.puYear.value, searchForm.puMonth.value-1, searchForm.puDay.value, "返却日は貸出日の後になります。", errors); if(errors==""){ return true; } else { alert(errors); return false; } } function validateFreeTextSearchResultsForm(searchForm){ var errors = ""; if(searchForm.puSearchInput.value == ""){ errors = errors + "???ja_jp.searchPanel.text.rclocation???" + " をご入力ください。\n"; } if($("#not_return_on_off").is(":checked")){ if(searchForm.doSearchInput.value == ""){ errors = errors + "???ja_jp.searchPanel.text.rcdroplocation???" + " をご入力ください。\n"; } } errors = validateDriversAge(searchForm.driversAge, "運転手のご年齢", errors); errors = validateDate(searchForm.puYear.value, searchForm.puMonth.value-1, searchForm.puDay.value, "返却日は貸出日の後になります。", errors); errors = validateDate(searchForm.doYear.value, searchForm.doMonth.value-1, searchForm.doDay.value, "", errors); if (searchForm.twelveHrPuTime != null) { errors = validateRcDates(searchForm, searchForm.puYear.value, searchForm.puMonth.value-1, searchForm.puDay.value, searchForm.twelveHrPuTime.selectedIndex, "返却日は貸出日の後になります。", searchForm.doYear.value, searchForm.doMonth.value-1, searchForm.doDay.value, searchForm.twelveHrDoTime.selectedIndex, "", errors); } if(searchForm.puYear.value != "" && searchForm.puMonth.value != "" && searchForm.puDay.value != ""){ errors = validateCutOffDate(searchForm.puYear.value, searchForm.puMonth.value-1, searchForm.puDay.value, "返却日は貸出日の後になります。", errors); } if($('#return_on_off').is(':checked')){ $('input[name=dropCoordinates]').val($('input[name=coordinates]').val()); } if(errors==""){ return true; } else { alert(errors); return false; } } function validateMandatoryDroplist(droplist, name, errors){ if(droplist.value=="" || droplist.value==0){ errors = errors + name + " をご入力ください。\n"; } return errors; } function validateRcDates(searchForm, yearFrom, monthFrom, dayFrom, timeFrom, nameFrom, yearTo, monthTo, dayTo, timeTo, nameTo, errors){ var date = new Date(); var dateFrom = new Date(yearFrom, monthFrom, dayFrom); var dateTo = new Date(yearTo, monthTo, dayTo); var nowDate = new Date(); var doDateBeforePuDate = dateFrom.valueOf() > dateTo.valueOf(); date.setTime(date.getTime() + (86400000 * 2)); var defaultPuDate = new Date(); defaultPuDate.setTime(defaultPuDate.getTime() + (86400000 * 2)); if(doDateBeforePuDate){ errors = errors + nameFrom + " " + nameTo + "\n"; } else if(dateFrom.valueOf() == dateTo.valueOf() && (timeTo - timeFrom) < 2) { errors = errors + " There must be at least one hour between pick up and drop off\n"; } if($("body").data('offset') != ""){ timestamp = parseInt($("body").data('serverTime'))+(parseInt($("body").data('offset'))*3600000); var currenLocalTime = new Date(timestamp); var puDate = new Date(yearFrom, monthFrom, dayFrom,getHourFromTwelveHrString(searchForm.twelveHrPuTime.value),getMinFromTwelveHrString(searchForm.twelveHrPuTime.value)); if((puDate.getTime() - currenLocalTime.getTime())/3600000 <= 1){ errors = errors + " Pick up time must be at least 1 hour in the Future\n"; } } return errors; } function validateDates(searchForm, yearFrom, monthFrom, dayFrom, hourFrom, minuteFrom, nameFrom, yearTo, monthTo, dayTo, hourTo, minuteTo, nameTo, errors){ var date = new Date(); var dateFrom = new Date(yearFrom, monthFrom, dayFrom, hourFrom, minuteFrom, 0); var dateTo = new Date(yearTo, monthTo, dayTo, hourTo, minuteTo, 0); var nowDate = new Date(); var doDateBeforePuDate = dateFrom.valueOf() > dateTo.valueOf(); date.setTime(date.getTime() + (86400000 * 2)); var defaultPuDate = new Date(); defaultPuDate.setTime(defaultPuDate.getTime() + (86400000 * 2)); if(dateFrom.valueOf() < nowDate.valueOf()){ errors = errors + nameFrom + " は今日の日付の前でございます。\n"; //searchForm.puYear.options[(defaultPuDate.getFullYear() - nowDate.getFullYear())].selected = true; //searchForm.puMonth.options[defaultPuDate.getMonth()].selected = true; //searchForm.puDay.options[defaultPuDate.getDate() - 1].selected = true; //dateFrom = defaultPuDate; } if((dateFrom.getTime() - nowDate.getTime()) < 3600000) { errors = errors + " Pick up time must be at least 1 hour in the Future\n"; } if(doDateBeforePuDate){ errors = errors + nameFrom + " " + nameTo + "\n"; //var defaultDoDate = dateFrom; //var time = defaultDoDate.getTime() + 0; //time = time + (86400000 * 3); //defaultDoDate.setTime(time); //searchForm.doYear.options[(defaultDoDate.getFullYear() - date.getFullYear())].selected = true; //searchForm.doMonth.options[defaultDoDate.getMonth()].selected = true; //searchForm.doDay.options[defaultDoDate.getDate() - 1].selected = true; } else if((dateTo - dateFrom) < 3600000) { errors = errors + " There must be at least one hour between pick up and drop off\n"; } return errors; } function validateDate(year, month, day, name, errors){ if(!isValidDate(year, month, day)){ errors = errors + name + " が有効な日時ではありません。\n"; } return errors; } function validateCutOffDate(year, month, day, name, errors){ var cutOffDate = new Date(2005, 11, 28); var newDate = new Date(year, month, day); if(cutOffDate.valueOf()>newDate.valueOf()){ errors = errors + "Pickup date must be after 27th December 2005\n"; } return errors; } function isValidDate(year, month, day){ var tempDate = new Date(year, month, day); var tempYear = tempDate.getYear()<2000?tempDate.getYear()+1900:tempDate.getYear(); return (tempYear==year && tempDate.getMonth()==month && tempDate.getDate()==day); } function isNumeric(sText){ var validChars = "0123456789"; var returnValue = true; var currentChar; for (var i = 0; i < sText.length && returnValue == true; i++) { currentChar = sText.charAt(i); if (validChars.indexOf(currentChar) == -1) { returnValue = false; } } return returnValue; } function validateDriversAge(driversAge, name, errors){ var minDriversAge = 21; var maxDriversAge = 75; if(driversAge.value==""){ errors = errors + name + " をご入力ください。\n"; } /* else if(!isNumeric(driversAge.value)) { errors = errors + name + " 番号でなければいけません\n"; } else if(driversAge.value < minDriversAge) { errors = errors + name + " 必ずせめて " + minDriversAge + "\n"; } else if(driversAge.value > maxDriversAge) { errors = errors + name + " 必ず_を超えないでください " + maxDriversAge + "\n"; }*/ return errors; } function headingClick(checkbox, options, index){ var element = document.getElementById(options); if(checkbox.checked==true){ element.style.display='none'; var i=0; while(true){ var subelem = document.getElementById("optionCB" + index + ":" + i++); if(subelem==null || i>100) break; subelem.checked = false; } } else { element.style.display=''; } } function disableSearchResultsForm(isDisabled){ if(isDisabled){ getForm().country.disabled=isDisabled; getForm().city.disabled=isDisabled; getForm().location.disabled=isDisabled; getForm().dropCountry.disabled=isDisabled; getForm().dropCity.disabled=isDisabled; getForm().dropLocation.disabled=isDisabled; } getForm().puDay.disabled=isDisabled; getForm().puMonth.disabled=isDisabled; getForm().puYear.disabled=isDisabled; getForm().puHour.disabled=isDisabled; getForm().puMinute.disabled=isDisabled; getForm().doDay.disabled=isDisabled; getForm().doMonth.disabled=isDisabled; getForm().doYear.disabled=isDisabled; getForm().doHour.disabled=isDisabled; getForm().doMinute.disabled=isDisabled; } function ptSetup() { var e; e = document.getElementsByName('promoAge$6015'); for(var i=0; i < e.length; i++) { e[i].disabled = !((((0*true))||((true||false)&&(false||true)))&&(((0)||(true&&true))&&((1)&&(true&&true)))); } e = document.getElementsByName('promoCountry$5833'); for(var i=0; i < e.length; i++) { e[i].disabled = !(!((!(1))||((false||true)||(false||false)))); } e = document.getElementsByName('promoCity$8351'); for(var i=0; i < e.length; i++) { e[i].disabled = !((((0>>1)/(2*2+0)))||(((false||false)&&(true||false))&&((0)||(true&&true)))); } e = document.getElementsByName('promoLoc$5443'); for(var i=0; i < e.length; i++) { e[i].disabled = !((((1- 1)+(0+1))*((false&&true)||(0))+((2- 1)*(false||false)+(1- 1)))); } } function makeUrl(start, parameters) { var url = start; for(var i=0; i < parameters.length; i++) { if(i==0){ url += "?"; }else{ url += "&"; } url += parameters[i][0] + "=" + parameters[i][1]; } return url; } function makeDynaDroplistUrl(dropList, serverUrl) { var debug=""; if(debug!=""){ disableSearchResultsForm(true); } var dynaParams = new Array(); dynaParams[dynaParams.length] = new Array("formName", ""); dynaParams[dynaParams.length] = new Array("currentForm", ""); dynaParams[dynaParams.length] = new Array("country", getForm().country.value); if(dropList!="country"){ dynaParams[dynaParams.length] = new Array("city", getForm().city.value); if(dropList!="city"){ dynaParams[dynaParams.length] = new Array("location", getForm().location.value); if(dropList!="location"){ dynaParams[dynaParams.length] = new Array("dropCountry", getForm().dropCountry.value); if(dropList!="dropCountry"){ dynaParams[dynaParams.length] = new Array("dropCity", getForm().dropCity.value); if(dropList!="dropCity"){ dynaParams[dynaParams.length] = new Array("dropLocation", getForm().dropLocation.value); if(dropList!="puYear"){ dynaParams[dynaParams.length] = new Array("puYear", getForm().puYear.value); if(dropList!="puMonth"){ dynaParams[dynaParams.length] = new Array("puMonth", getForm().puMonth.value); if(dropList!="puDay"){ dynaParams[dynaParams.length] = new Array("puDay", getForm().puDay.value); if(dropList!="puHour"){ dynaParams[dynaParams.length] = new Array("puHour", getForm().puHour.value); } } } } } } } } } /* Add debug parameter */ if(debug!=""){ dynaParams[dynaParams.length] = new Array("debug", "true"); } dynaParams[dynaParams.length] = new Array("dropdownName", dropList); /* Get IE Version number */ var ua = navigator.userAgent; var MSIEOffset = ua.indexOf("MSIE "); var IEVerNum=6; if (MSIEOffset != -1){ IEVerNum=parseFloat(ua.substring(MSIEOffset + 5, ua.indexOf(";", MSIEOffset))); } if (IEVerNum<5.5) { /* Encode each parameter */ for(var i=0; i < dynaParams.length; i++) { dynaParams[i][1] = escape(dynaParams[i][1]); } } var serverPart = ""; if(serverUrl!=null){ serverPart = serverUrl; } var dynaURL = makeUrl(serverPart+"/DynaDroplist.do", dynaParams); if(IEVerNum >= 5.5) { /* encode whole url */ dynaURL = encodeURI(dynaURL); } /* Show url to debug */ if(debug!=""){ alert(dynaURL); } return dynaURL; } function populateDroplists(dropList, serverUrl) { if(typeof ClickTaleExec=='function') ClickTaleExec("populateDroplists(document.getElementById('" + dropList + "'))"); var dynaURL = makeDynaDroplistUrl(dropList, serverUrl); document.getElementById("dynaFrame").src = dynaURL; } function populateSecureDroplists(dropList, serverUrl) { var dynaURL = makeDynaDroplistUrl(dropList, serverUrl); var response=makeRequest(dynaURL); eval(response); } function makeRequest(url) { var req=false; var returnValue = ""; if(window.XMLHttpRequest) { try { req = new XMLHttpRequest(); } catch(e) { req = false; } } else if(window.ActiveXObject) { try { req = new ActiveXObject("Msxml2.XMLHTTP"); } catch(e) { try { req = new ActiveXObject("Microsoft.XMLHTTP"); } catch(e) { req = false; } } } if(req){ req.open("GET", url, false); req.send(null); if (req.readyState==4) { returnValue = req.responseText; } } return returnValue; } function addOption(droplist, name, value){ droplist.options[droplist.options.length] = new Option(name, value); } function fixDoDate(form, dropList) { var nowDate = new Date(); if(dropList != null) { if(dropList == 'puYear') { form.doYear.options[form.puYear.value -nowDate.getFullYear()].selected = true; dropList = 'puMonth'; } if(dropList == 'puMonth' && isPuAfterDo(form)) { form.doMonth.options[form.puMonth.value - 1].selected = true; dropList = 'puDay'; } if(dropList == 'puDay' && isPuAfterDo(form)) { var newDate = new Date(form.puYear.value, form.puMonth.value-1, form.puDay.value, form.puHour.value, form.puMinute.value); newDate.setTime(newDate.getTime() + (86400000 * 3)); if(newDate.getFullYear() > (nowDate.getFullYear() + 1)) { newDate.setTime(newDate.getTime() - (86400000 * 3)); } form.doDay.options[newDate.getDate() - 1].selected = true; form.doMonth.options[newDate.getMonth()].selected = true; form.doYear.options[newDate.getFullYear() - nowDate.getFullYear()].selected = true; } populateDaysOfMonth(form.doDay, form.doMonth.value - 1, form.doYear.value); } } function fixPuDate(form, dropList) { var nowDate = new Date(); if(dropList != null) { if(dropList == 'doYear') { form.puYear.options[form.doYear.value - nowDate.getFullYear()].selected = true; dropList = 'doMonth'; } if(dropList == 'doMonth' && isPuAfterDo(form)) { form.puMonth.options[form.doMonth.value - 1].selected = true; dropList = 'doDay'; } if(dropList == 'doDay' && isPuAfterDo(form)) { var newDate = new Date(form.doYear.value, form.doMonth.value-1, form.doDay.value, form.doHour.value, form.doMinute.value); newDate.setTime(newDate.getTime() - (86400000 * 3)); if(newDate.getFullYear() < nowDate.getFullYear()) { newDate.setTime(newDate.getTime() + (86400000 * 3)); } form.puDay.options[newDate.getDate() - 1].selected = true; form.puMonth.options[newDate.getMonth()].selected = true; form.puYear.options[newDate.getFullYear() - nowDate.getFullYear()].selected = true; } populateDaysOfMonth(form.puDay, form.puMonth.value - 1, form.puYear.value); } } function getHourFromTwelveHrString(timeString) { if(timeString.indexOf("Noon") != -1 ){ return "12"; } if(timeString.indexOf("Midnight") != -1 ){ return "0"; } var indexOfColon = timeString.indexOf(':'); var hour = parseInt(timeString.substring(0, indexOfColon)); if(timeString.indexOf("PM")!=-1){ hour += 12; if(hour >= 24){ hour = 0; } } return hour; } function getMinFromTwelveHrString(timeString) { if(timeString.indexOf("Noon") != -1 || timeString.indexOf("Midnight") != -1){ return "00"; } var indexOfColon = timeString.indexOf(':'); return timeString.substring(indexOfColon +1, indexOfColon+3); }