0){
item.set("timeslots",jQuery(".item-timeslots [name=\""+timeslot_name+"\"]")[0].outerHTML);
}
/* set on quote page */
jQuery(".controls [name=\""+timeslot_name+"\"] option").not(":selected").removeAttr("selected");
jQuery(".controls [name=\""+timeslot_name+"\"] option[value='"+jQuery(".item-timeslots [name=\""+timeslot_name+"\"] option:selected").val()+"']").attr("selected","selected");
}
function setTimePicker(item, timepicker_name){
let [start_timepicker, end_timepicker] = get_cart_timepickers(timepicker_name);
let start_time = start_timepicker.value;
let end_time = end_timepicker.value;
if(!start_time){
start_timepicker.style.borderColor = "red";
} else{
start_timepicker.style.borderColor = "";
}
if(!end_time){
end_timepicker.style.borderColor = "red";
} else{
end_timepicker.style.borderColor = "";
}
let start_timepicker_html = start_timepicker.outerHTML;
let end_timepicker_html = end_timepicker.outerHTML;
if(document.querySelectorAll(".item-timeslots [name=\""+timepicker_name+"\"]").length>0){
start_timepicker_html = addOrReplaceValueInTimepicker(start_timepicker_html, start_time);
end_timepicker_html = addOrReplaceValueInTimepicker(end_timepicker_html, end_time);
item.set("timeslots", ' Start: '+start_timepicker_html+' End: '+end_timepicker_html+'
');
}
/* set on quote page */
/* For linen type items with timepickers */
let rental_id = item.get("rentalid");
let split_on_colon = rental_id.split(":");
if(split_on_colon.length > 1){
fix_time_name_for_linen_rid(timepicker_name, split_on_colon, start_time, end_time, rental_id)
}else{
let quote_page_start_timepicker = document.querySelectorAll(".controls [name=\""+timepicker_name.replace("io_timepicker_", "starttime_")+"\"]")[0];
let quote_page_end_timepicker = document.querySelectorAll(".controls [name=\""+timepicker_name.replace("io_timepicker_", "endtime_")+"\"]")[0];
if(quote_page_start_timepicker != null && quote_page_end_timepicker != null){
quote_page_start_timepicker.value = start_time;
quote_page_end_timepicker.value = end_time;
}
}
}
function fix_time_name_for_linen_rid(time_name, split_rid, start_time, end_time, rental_id){
for(let x = 0; x < split_rid.length; x++){
temp_timepicker_name = time_name.replace(rental_id, split_rid[x]);
let quote_page_start_timepicker = document.querySelectorAll(".controls [name=\""+temp_timepicker_name.replace("io_timepicker_", "starttime_")+"\"]")[0];
let quote_page_end_timepicker = document.querySelectorAll(".controls [name=\""+temp_timepicker_name.replace("io_timepicker_", "endtime_")+"\"]")[0];
if(quote_page_start_timepicker != null && quote_page_end_timepicker != null){
quote_page_start_timepicker.value = start_time;
quote_page_end_timepicker.value = end_time;
}
}
}
function addOrReplaceValueInTimepicker(timepicker_html, time_value){
if(timepicker_html.includes("value=")){
timepicker_html = [timepicker_html.slice(0, timepicker_html.indexOf("value=")), 'value="'+time_value+'"', timepicker_html.slice(timepicker_html.length-1)].join("");
}else{
/* No value defined. Add it at the end of the outer html. */
let position = timepicker_html.lastIndexOf(">");
timepicker_html = [timepicker_html.slice(0, position), ' value="'+time_value+'"', timepicker_html.slice(position)].join("");
}
return timepicker_html
}
function restrictEndTimepickers(){
setUpTimeRestrictions_cartTimepickers()
setUpTimeRestrictions_timeBasedItems()
}
function setUpTimeRestrictions_timeBasedItems(){
jQuery("input[name^=start_timeslot_]").change(function()
{
end_timepicker = jQuery("input[name='"+this.name.replace("start", "end")+"']");
end_timepicker = jQuery(end_timepicker[end_timepicker.length - 1]);
end_timepicker.timepicker("option",{"minTime": jQuery(this).val()});
if( EndTimeLessThanStartTime( jQuery(this).val(), end_timepicker.val(), "0/0/0", "0/0/0" ) ){
end_timepicker.val("");
}
});
}
function setUpTimeRestrictions_cartTimepickers(){
jQuery("input[name=timeStart]").change(function()
{
end_timepicker = jQuery("[name='"+this.name.replace("Start", "End")+"']");
if(jQuery("[name='dateStart']").val() === jQuery("input[name='dateEnd']").val()){
end_timepicker.timepicker("option",{"minTime": jQuery(this).val()});
if(EndTimeLessThanStartTime(
jQuery(this).val(),
end_timepicker.val(),
jQuery("[name='dateStart']").val(),
jQuery("[name='dateEnd']").val() ) ) {
end_timepicker.val("");
}
}
});
}
function setUpTimeRestrictions_infoHeaderTimepickers(){
jQuery("#ioHeaderTimeStart").change(function()
{
end_timepicker = jQuery("#ioHeaderTimeEnd");
if(jQuery("#ioHeaderDateStart").val() === jQuery("#ioHeaderDateEnd").val()){
end_timepicker.timepicker("option",{"minTime": jQuery(this).val()});
if(EndTimeLessThanStartTime(
jQuery(this).val(),
end_timepicker.val(),
jQuery("#ioHeaderDateStart").val(),
jQuery("#ioHeaderDateEnd").val() ) ) {
end_timepicker.val("");
}
}
});
}
/*
helper function to see if the value from a start timepicker is less than the string value of an end timepicker.
param start_time: string representation of the start time picker. 12hr or 24hr.
param end_time: string representation of the end time picker. 12hr or 24hr.
param start_date: string representation of the start date, seperated by "/". Can be wither d/m/y or m/d/y. Pass "0/0/0" if dates do not matter.
param end_date: string representation of the end date, seperated by "/". Can be wither d/m/y or m/d/y. Pass "0/0/0" if dates do not matter.
*/
function EndTimeLessThanStartTime(start_time, end_time, start_date, end_date){
if(!start_time || !end_time) return false;
start_time = convert12HourTo24Hour(start_time);
end_time = convert12HourTo24Hour(end_time);
var split_start_date = start_date.split("/");
var split_end_date = end_date.split("/");
var startDate = buildDateObj(split_start_date, start_time);
var endDate = buildDateObj(split_end_date, end_time);
if(endDate < startDate){
return true;
} else {
return false;
}
}
function get_cart_timepickers(timepicker_name){
let start_timepicker = document.getElementsByName(timepicker_name.replace("io_timepicker_", "start_timeslot_"));
let end_timepicker = document.getElementsByName(timepicker_name.replace("io_timepicker_", "end_timeslot_"));
start_timepicker = start_timepicker[start_timepicker.length-1];
end_timepicker = end_timepicker[end_timepicker.length-1];
return Array(start_timepicker, end_timepicker);
}
function restrictStartTimepickerOnSameDaySelect(start_date_str, start_timepicker, end_timepicker){
let selected_date_obj = convertDateStringtoDateObject(start_date_str);
let current_date_obj = new Date();
if(current_date_obj.getDate() == selected_date_obj.getDate() &&
current_date_obj.getMonth() == selected_date_obj.getMonth() &&
current_date_obj.getYear() == selected_date_obj.getYear()){
let next_hour_time_stamp = current_date_obj.setMinutes(60);
let next_hour_str = getFormattedtime(new Date(next_hour_time_stamp))
start_timepicker.timepicker("option",{"minTime": next_hour_str});
/* If the time in the input box is less than the time we just restricted too, then clear time inputs */
restricted_time_obj = convertDateStringtoDateObject(start_date_str, next_hour_str);
currently_selected_time_obj = convertDateStringtoDateObject(start_date_str, start_timepicker.val());
if(currently_selected_time_obj < restricted_time_obj){
start_timepicker.val(next_hour_str);
end_timepicker.val("");
end_timepicker.timepicker("option",{"minTime": next_hour_str});
}
}else{
start_timepicker.timepicker("option",{"minTime": restrictTimeStart});
}
}
/*