var earliest_arrival_date = 1611291600; var latest_arrival_date = 1611896400; var earliest_departure_date = 1611896400; var latest_departure_date = 1612587600; var latest_ext_departure_date = 1612587600; var conf_start_date_eve = 1611810000; var conf_start_date = 1611896400; var conf_end_date = 1611982800; var pre_conf_start_date_eve = 1611723600; var pre_conf_start_date = 1611810000; var pre_conf_end_date = 1611810000; var captchaVerified = false; var date_str_map = {1611291600: 'Friday, January 22, 2021',1611378000: 'Saturday, January 23, 2021',1611464400: 'Sunday, January 24, 2021',1611550800: 'Monday, January 25, 2021',1611637200: 'Tuesday, January 26, 2021',1611723600: 'Wednesday, January 27, 2021',1611810000: 'Thursday, January 28, 2021',1611896400: 'Friday, January 29, 2021',1611982800: 'Saturday, January 30, 2021',1612069200: 'Sunday, January 31, 2021',1612155600: 'Monday, February 1, 2021',1612242000: 'Tuesday, February 2, 2021',1612328400: 'Wednesday, February 3, 2021',1612414800: 'Thursday, February 4, 2021',1612501200: 'Friday, February 5, 2021',1612587600: 'Saturday, February 6, 2021'}; function getDataFromTT (){ var elChecking = document.getElementById ("timetrack_check"); var elRegDetail = document.getElementById ("registration_other"); var checkEmail = document.getElementById ("email").value.trim (); captchaVerified = false; document.getElementById ("email").value = checkEmail; // If we did need to trim it, put the trimmed text back in the box. elChecking.innerHTML = "Checking TimeTrack for " + checkEmail + "..."; elChecking.style.display = 'block'; elRegDetail.style.display = 'none'; document.getElementById ("timetrack_not_found").style.display = 'none'; document.getElementById ("timetrack_found").style.display = 'none'; var url = "email_check.php?t=200&check_email=" + checkEmail; makeRequest (url, processEmailCheck); } function processEmailCheck (xhr){ if ( xhr.readyState == 4 ){ if ( xhr.status == 200 ){ var checkRetData = JSON.parse (xhr.responseText); var elNotFound = document.getElementById ("timetrack_not_found"); var elFound = document.getElementById ("timetrack_found"); document.getElementById ("timetrack_check").style.display = 'none'; document.getElementById ("registration_other").style.display = 'block'; showMainSections (); if ( checkRetData ['error'] == '' ){ elFound.style.display = 'block'; elNotFound.style.display = 'none'; fillTTData (checkRetData); }else{ elFound.style.display = 'none'; elNotFound.style.display = 'block'; clearTTData (); } }else{ alert ("There was a problem with the request " + xhr.status); } } } function clearTTData (){ document.getElementById ('first_name').value = ''; document.getElementById ('last_name').value = ''; document.getElementById ('cell_phone').value = ''; document.getElementById ('role_val_1').checked = false; document.getElementById ('role_val_6').checked = false; document.getElementById ('role_val_7').checked = false; document.getElementById ('role_val_8').checked = false; document.getElementById ('role_val_13').checked = false; document.getElementById ('state').value = ''; document.getElementById ('district').value = ''; document.getElementById ('school').value = ''; document.getElementById ('cohort').value = ''; checkPreConferenceRoleRestrictions (); } function fillTTData (d){ document.getElementById ('first_name').value = d ['first_name']; document.getElementById ('last_name').value = d ['last_name']; document.getElementById ('cell_phone').value = d ['cell_num']; document.getElementById ('role_val_1').checked = d ['admin']; document.getElementById ('role_val_6').checked = d ['sam']; document.getElementById ('role_val_7').checked = d ['tcc']; document.getElementById ('role_val_8').checked = d ['sis']; document.getElementById ('role_val_13').checked = d ['tt_admin']; document.getElementById ('state').value = d ['state']; document.getElementById ('district').value = d ['district']; document.getElementById ('school').value = d ['school']; document.getElementById ('cohort').value = d ['cohort']; checkPreConferenceRoleRestrictions (); } function showMainSections (){ var els = getElementsByClassName ('main_section'); var elSubmit = document.getElementById ('form_submit'); for ( var i1 = 0; i1 < els.length; i1++ ){ els [i1].style.display = 'block'; } elSubmit.disabled = false; } function getDateStr ($d){ return date_str_map [$d]; } function adjustCheckInDate ($d){ var labE = document.getElementById ('check_in_lab'); var edE = document.getElementById ('check_in'); edE.value = $d; labE.innerHTML = getDateStr ($d); } function adjustCheckOutDate ($d){ var labE = document.getElementById ('check_out_lab'); var edE = document.getElementById ('check_out'); edE.value = $d; labE.innerHTML = getDateStr ($d); } function checkRoleOther (){ var cbOther = document.getElementById ("role_val_14"); if ( cbOther.checked ){ replaceClass (document.getElementById ("role_other"), "optional", "required"); replaceClass (document.getElementById ("role_other_span"), "optional", "required"); }else{ replaceClass (document.getElementById ("role_other"), "required", "optional"); replaceClass (document.getElementById ("role_other_span"), "required", "optional"); replaceClass (document.getElementById ("role_other"), "required_missed", "optional"); replaceClass (document.getElementById ("role_other_span"), "required_missed", "optional"); } } function checkLabelEnables (){ var labels = document.getElementsByTagName ('label'); for ( var i1 = 0; i1 < labels.length; i1++ ){ if ( labels [i1].getAttribute ('for') != null ){ if ( document.getElementById (labels [i1].getAttribute ('for')).disabled ){ labels [i1].className = 'disabled'; }else{ labels [i1].className = ''; } } } } function reenableControls (){ var els = document.getElementsByTagName ('*'); for ( var i1 = 0; i1 < els.length; i1++ ){ if ( els [i1].getAttribute ('disabled') != null ){ els [i1].disabled = false; } } } function checkExtraLodgingDays (){ var elRoomNotNeeded = document.getElementById ("room_needed"); var elNights = ['addtl_night_1612069200','addtl_night_1612155600','addtl_night_1612242000','addtl_night_1612328400','addtl_night_1612414800','addtl_night_1612501200']; var foundUnchecked = false; for ( var i1 = 0; i1 < elNights.length; i1++ ){ var el = document.getElementById (elNights [i1]); if ( el.checked ){ // Ensure this checkbox is enabled el.disabled = false; }else{ // This is the first unchecked box, so ensure this checkbox is enabled, and uncheck and disable any boxes that come after it. el.disabled = false; adjustCheckOutDate (el.value); foundUnchecked = true; for ( var i2 = i1 + 1; i2 < elNights.length; i2++ ){ var el2 = document.getElementById (elNights [i2]); el2.checked = false; el2.disabled = true; } // We have adjusted all elements that come after this one, so bail out of the main loop. break; } } if ( ! foundUnchecked ){ adjustCheckOutDate (latest_ext_departure_date); } if ( elRoomNotNeeded.checked ){ // If we don't need a room, force adjust the check out date to the last day of the conference. adjustCheckOutDate (1611982800); } checkLabelEnables (); } function getElementsStartsWithId (id){ var children = document.body.getElementsByTagName ('*'); var elements = [], child; for ( var i = 0, length = children.length; i < length; i++ ){ child = children[i]; if ( child.id.substr (0, id.length) == id ){ elements.push (child); } } return elements; } function getElementsByClassName (matchClass){ var elems = document.getElementsByTagName ('*'), elements = [], i; for ( i in elems ){ if ( (' ' + elems [i].className + ' ').indexOf (' ' + matchClass + ' ') > -1 ){ elements.push (elems [i]); } } return elements; } function resetMissedFields (){ var els = getElementsByClassName ('required_missed'); for ( var i1 = 0; i1 < els.length; i1++ ){ replaceClass (els [i1], 'required_missed', 'required'); } } function replaceClass (el, oldClass, newClass){ var thisClass = (' ' + el.className + ' '); // Add padding spaces to make sure that we can find whole class names. if ( thisClass.indexOf (' ' + oldClass + ' ') == -1 ){ // The old class isn't in the class list for this element. return; } var tOldClass = ' ' + oldClass + ' '; var tNewClass = ' ' + newClass + ' '; while ( thisClass.indexOf (' ' + oldClass + ' ') > -1 ){ thisClass = thisClass.replace (tOldClass, tNewClass); } el.className = thisClass.trim (); } function checkPreConference (){ var elRoomNotNeeded = document.getElementById ("room_needed"); var elUsed = document.getElementById ('pre_conf_used'); var elNotUsed = document.getElementById ('pre_conf_not_used'); var els = getElementsStartsWithId ('pre_conf_events_'); var eventEls = getElementsStartsWithId ('pre_conf_event_'); var i1; if ( elUsed.checked ){ adjustCheckInDate (pre_conf_start_date_eve); }else{ adjustCheckInDate (conf_start_date_eve); } if ( elRoomNotNeeded.checked ){ // If we don't need a room, force adjust the check in date to the first event evening day, independent of whether they are going to the pre-conference or not. // (If they are not attending the pre-conference, they are still welcome to come to the event the on the pre-conference day, and if they're going to the pre-conference, there is no event the day before the pre-conference, so there's no reason for them to check-in the day/night before the pre-conference.) adjustCheckInDate (conf_start_date_eve); } for ( i1 = 0; i1 < els.length; i1++ ){ if ( elUsed.checked ){ replaceClass (els [i1], "optional", "required"); replaceClass (els [i1], "required_missed", "required"); }else{ replaceClass (els [i1], "required", "optional"); replaceClass (els [i1], "required_missed", "optional"); } } if ( elUsed.checked ){ replaceClass (document.getElementById ('pre_conf_coverage'), "optional", "required"); replaceClass (document.getElementById ('pre_conf_coverage'), "required_missed", "required"); replaceClass (document.getElementById ('pre_conf_coverage_span'), "optional", "required"); replaceClass (document.getElementById ('pre_conf_coverage_span'), "required_missed", "required"); }else{ replaceClass (document.getElementById ('pre_conf_coverage'), "required", "optional"); replaceClass (document.getElementById ('pre_conf_coverage'), "required_missed", "optional"); replaceClass (document.getElementById ('pre_conf_coverage_span'), "required", "optional"); replaceClass (document.getElementById ('pre_conf_coverage_span'), "required_missed", "optional"); } for ( i1 = 0; i1 < eventEls.length; i1++ ){ if ( elUsed.checked ){ // eventEls [i1].disabled = false; }else{ // eventEls [i1].disabled = true; eventEls [i1].checked = false; } } checkLabelEnables (); } function checkPreConferenceRoleRestrictions (){ var selectedRoles = []; var roleEls = getElementsStartsWithId ('role_val_'); var preConfEventEls = getElementsStartsWithId ('pre_conf_event_'); var preConfEventsWithRestriction = []; var preConfEventsWithRequirements = []; var i1; // Start off by making sure everything is enabled, and then disable things as needed below. document.getElementById ('pre_conf_used').disabled = false; for ( i1 = 0; i1 < preConfEventEls.length; i1++ ){ preConfEventEls [i1].disabled = false; } for ( i1 = 0; i1 < roleEls.length; i1++ ){ if ( roleEls [i1].checked ){ selectedRoles.push (roleEls [i1].value); } } // Find restricted events and events that are required. for ( i1 = 0; i1 < preConfEventEls.length; i1++ ){ if ( preConfEventEls [i1].getAttribute ('restrict_to_roles') != null ){ preConfEventsWithRestriction.push (preConfEventEls [i1]); } if ( preConfEventEls [i1].getAttribute ('require_for_roles') != null ){ preConfEventsWithRequirements.push (preConfEventEls [i1]); } } // Apply restrictions based on currently selected roles. for ( i1 = 0; i1 < preConfEventsWithRestriction.length; i1++ ){ var restrictions = preConfEventsWithRestriction [i1].getAttribute ('restrict_to_roles'); var allowed = false; for ( var i2 = 0; i2 < selectedRoles.length; i2++ ){ if ( (',' + restrictions + ',').indexOf (',' + selectedRoles [i2] + ',') > -1 ){ // One of the roles selected is in the "restricted to" list, so we can allow this event to be selected. No need to continue. allowed = true; break; } } if ( allowed ){ preConfEventsWithRestriction [i1].disabled = false; }else{ preConfEventsWithRestriction [i1].disabled = true; preConfEventsWithRestriction [i1].checked = false; } } // Apply requirements based on currently selected roles. var foundRequirement = false; var requiredEventEls = []; for ( i1 = 0; i1 < preConfEventsWithRequirements.length; i1++ ){ var requirements = preConfEventsWithRequirements [i1].getAttribute ('require_for_roles'); var required = false; for ( var i2 = 0; i2 < selectedRoles.length; i2++ ){ if ( (',' + requirements + ',').indexOf (',' + selectedRoles [i2] + ',') > -1 ){ // One of the roles selected is in the "restricted to" list, so we can allow this event to be selected. No need to continue. required = true; break; } } if ( required ){ foundRequirement = true; requiredEventEls.push (preConfEventsWithRequirements [i1]); preConfEventsWithRequirements [i1].disabled = false; preConfEventsWithRequirements [i1].checked = true; } } if ( foundRequirement ){ document.getElementById ('pre_conf_used').disabled = true; document.getElementById ('pre_conf_not_used').disabled = true; for ( i1 = 0; i1 < preConfEventEls.length; i1++ ){ var exclude = false; for ( var i2 = 0; i2 < requiredEventEls.length; i2++ ){ if ( requiredEventEls [i2].id == preConfEventEls [i1].id ){ exclude = true; break; } } if ( ! exclude ){ preConfEventEls [i1].disabled = true; } } } // If we forced any sessions, make sure that the pre-conference box is checked. if ( ! document.getElementById ('pre_conf_used').checked ){ for ( i1 = 0; i1 < preConfEventEls.length; i1++ ){ if ( preConfEventEls [i1].checked ){ document.getElementById ('pre_conf_used').checked = true; break; } } } checkPreConference (); checkLabelEnables (); } function preConferenceEventChecked (){ // If the user selects a pre-conference, then force the Checkbox for the pre-conference to be checked. if ( document.getElementById ('pre_conf_used').checked ){ // Already checked, so nothing to do. return; } document.getElementById ('pre_conf_used').checked = true; checkPreConference (); } function checkSharingDates (idx){ var elShare = document.getElementById ("share_" + idx + "_dates"); var elShareDetail = document.getElementById ("share_" + idx + "_dates_detail"); elShareDetail.style.display = ( ! elShare.checked ? 'block' : 'none' ); } function checkSharing (){ var elShare = document.getElementById ("sharing"); var elShareDetail = document.getElementById ("sharing_detail"); elShareDetail.style.display = ( elShare.checked ? 'block' : 'none' ); checkSharingDates (0); } function checkAirTransportation (){ var elAirTransArrive = document.getElementById ("air_trans_arrive_used"); var elDrivingArrive = document.getElementById ("air_trans_arrive_not_used"); var elAirTransDepart = document.getElementById ("air_trans_depart_used"); var elDrivingDepart = document.getElementById ("air_trans_depart_not_used"); var elAirTransArriveDetail = document.getElementById ("air_trans_arrive_detail"); var elDrivingArriveDetail = document.getElementById ("driving_arrive_detail"); var elAirTransDepartDetail = document.getElementById ("air_trans_depart_detail"); var elDrivingDepartDetail = document.getElementById ("driving_depart_detail"); elAirTransArriveDetail.style.display = ( elAirTransArrive.checked ? 'block' : 'none' ); elDrivingArriveDetail.style.display = ( elDrivingArrive.checked ? 'block' : 'none' ); elAirTransDepartDetail.style.display = ( elAirTransDepart.checked ? 'block' : 'none' ); elDrivingDepartDetail.style.display = ( elDrivingDepart.checked ? 'block' : 'none' ); } function checkGroundTransportation (){ var elArrival = document.getElementById ("ground_arrival_needs"); var elArrivalDetail = document.getElementById ("ground_arrival_needs_detail"); elArrivalDetail.style.display = ( elArrival.value == 2 ? 'block' : 'none' ); var elDeparture = document.getElementById ("ground_departure_needs"); var elDepartureDetail = document.getElementById ("ground_departure_needs_detail"); elDepartureDetail.style.display = ( elDeparture.value == 2 ? 'block' : 'none' ); var elAirTransArrive = document.getElementById ("air_trans_arrive_used"); var elDrivingArrive = document.getElementById ("air_trans_arrive_not_used"); document.getElementById ('arrival_date').disabled = false; document.getElementById ('arrival_date_driving').disabled = false; switch ( parseInt (elArrival.options [elArrival.selectedIndex].value) ){ case 0 : elDrivingArrive.checked = true; break; case 1 : elAirTransArrive.checked = true; break; case 2 : elDrivingArrive.checked = true; break; case 3 : elDrivingArrive.checked = true; document.getElementById ('arrival_date').value = '1611810000'; document.getElementById ('arrival_date').disabled = true; document.getElementById ('arrival_date_driving').value = '1611810000'; document.getElementById ('arrival_date_driving').disabled = true; break; } var elAirTransDepart = document.getElementById ("air_trans_depart_used"); var elDrivingDepart = document.getElementById ("air_trans_depart_not_used"); document.getElementById ('departure_date').disabled = false; document.getElementById ('departure_date_driving').disabled = false; switch ( parseInt (elDeparture.options [elDeparture.selectedIndex].value) ){ case 0 : elDrivingDepart.checked = true; break; case 1 : elAirTransDepart.checked = true; break; case 2 : elDrivingDepart.checked = true; break; case 3 : elDrivingDepart.checked = true; document.getElementById ('departure_date').value = '1612069200'; document.getElementById ('departure_date').disabled = true; document.getElementById ('departure_date_driving').value = '1612069200'; document.getElementById ('departure_date_driving').disabled = true; break; } checkAirTransportation (); } function checkLodging (){ var elRoomNotNeeded = document.getElementById ("room_needed"); var elLodgingDetail = document.getElementById ("lodging_detail"); elLodgingDetail.style.display = ( elRoomNotNeeded.checked ? 'none' : 'block' ); if ( elRoomNotNeeded.checked ){ // If we don't need a room, make sure that we are not specifying additional nights. var elNights = ['addtl_night_1612069200','addtl_night_1612155600','addtl_night_1612242000','addtl_night_1612328400','addtl_night_1612414800','addtl_night_1612501200']; for ( var i1 = 0; i1 < elNights.length; i1++ ){ var el = document.getElementById (elNights [i1]); el.checked = false; } } // Then make sure to update the estimated check-in/out dates and additional night enabled/disabled. checkExtraLodgingDays (); checkPreConference (); } function checkGuest (){ var elGuest = document.getElementById ("guest"); var elGuestDetail = document.getElementById ("guest_detail"); elGuestDetail.style.display = ( elGuest.checked ? 'block' : 'none' ); if ( elGuest.checked ){ if ( document.getElementById ("guest_0_travel").checked ){ replaceClass (document.getElementById ("guest_0_email"), "required", "optional"); replaceClass (document.getElementById ("guest_0_email_span"), "required", "optional"); replaceClass (document.getElementById ("guest_0_phone_cell"), "required", "optional"); replaceClass (document.getElementById ("guest_0_phone_cell_span"), "required", "optional"); replaceClass (document.getElementById ("guest_0_email"), "required_missed", "optional"); replaceClass (document.getElementById ("guest_0_email_span"), "required_missed", "optional"); replaceClass (document.getElementById ("guest_0_phone_cell"), "required_missed", "optional"); replaceClass (document.getElementById ("guest_0_phone_cell_span"), "required_missed", "optional"); }else{ replaceClass (document.getElementById ("guest_0_email"), "optional", "required"); replaceClass (document.getElementById ("guest_0_email_span"), "optional", "required"); replaceClass (document.getElementById ("guest_0_phone_cell"), "optional", "required"); replaceClass (document.getElementById ("guest_0_phone_cell_span"), "optional", "required"); replaceClass (document.getElementById ("guest_0_email"), "required_missed", "required"); replaceClass (document.getElementById ("guest_0_email_span"), "required_missed", "required"); replaceClass (document.getElementById ("guest_0_phone_cell"), "required_missed", "required"); replaceClass (document.getElementById ("guest_0_phone_cell_span"), "required_missed", "required"); } } } function validateForm (){ var missCnt = 0; var msgs = []; resetMissedFields (); // Registrant Section document.getElementById ("email").value = document.getElementById ("email").value.trim (); if ( document.getElementById ("email").value == "" ){ replaceClass (document.getElementById ("email"), "required", "required_missed"); replaceClass (document.getElementById ("email_span"), "required", "required_missed"); missCnt++; } document.getElementById ("first_name").value = document.getElementById ("first_name").value.trim (); if ( document.getElementById ("first_name").value == "" ){ replaceClass (document.getElementById ("first_name"), "required", "required_missed"); replaceClass (document.getElementById ("first_name_span"), "required", "required_missed"); missCnt++; } document.getElementById ("last_name").value = document.getElementById ("last_name").value.trim (); if ( document.getElementById ("last_name").value == "" ){ replaceClass (document.getElementById ("last_name"), "required", "required_missed"); replaceClass (document.getElementById ("last_name_span"), "required", "required_missed"); missCnt++; } var roleCnt = 0; if ( document.getElementById ("role_val_1").checked ){ roleCnt++; } if ( document.getElementById ("role_val_2").checked ){ roleCnt++; } if ( document.getElementById ("role_val_3").checked ){ roleCnt++; } if ( document.getElementById ("role_val_4").checked ){ roleCnt++; } if ( document.getElementById ("role_val_5").checked ){ roleCnt++; } if ( document.getElementById ("role_val_6").checked ){ roleCnt++; } if ( document.getElementById ("role_val_7").checked ){ roleCnt++; } if ( document.getElementById ("role_val_8").checked ){ roleCnt++; } if ( document.getElementById ("role_val_9").checked ){ roleCnt++; } if ( document.getElementById ("role_val_10").checked ){ roleCnt++; } if ( document.getElementById ("role_val_11").checked ){ roleCnt++; } if ( document.getElementById ("role_val_12").checked ){ roleCnt++; } if ( document.getElementById ("role_val_13").checked ){ roleCnt++; } if ( document.getElementById ("role_val_14").checked ){ roleCnt++; document.getElementById ("role_other").value = document.getElementById ("role_other").value.trim (); if ( document.getElementById ("role_other").value == "" ){ replaceClass (document.getElementById ("role_other"), "required", "required_missed"); replaceClass (document.getElementById ("role_other_span"), "required", "required_missed"); missCnt++; } } if ( roleCnt == 0 ){ replaceClass (document.getElementById ("role_ul"), "required", "required_missed"); missCnt++; } document.getElementById ("state").value = document.getElementById ("state").value.trim (); if ( document.getElementById ("state").value == "" ){ replaceClass (document.getElementById ("state"), "required", "required_missed"); replaceClass (document.getElementById ("state_span"), "required", "required_missed"); missCnt++; } document.getElementById ("daytime_phone").value = document.getElementById ("daytime_phone").value.trim (); if ( document.getElementById ("daytime_phone").value == "" ){ replaceClass (document.getElementById ("daytime_phone"), "required", "required_missed"); replaceClass (document.getElementById ("daytime_phone_span"), "required", "required_missed"); missCnt++; } document.getElementById ("cell_phone").value = document.getElementById ("cell_phone").value.trim (); if ( document.getElementById ("cell_phone").value == "" ){ replaceClass (document.getElementById ("cell_phone"), "required", "required_missed"); replaceClass (document.getElementById ("cell_phone_span"), "required", "required_missed"); missCnt++; } // Conference Section var elConfCover = document.getElementById ("conf_coverage"); switch ( parseInt (elConfCover.options [elConfCover.selectedIndex].value) ){ default : // We have an unknown choice replaceClass (document.getElementById ("conf_coverage"), "required", "required_missed"); replaceClass (document.getElementById ("conf_coverage_span"), "required", "required_missed"); missCnt++; break; case 0 : case 1 : case 2 : case 3 : // Any of these are valid options, and need no further validation. break; } if (( ! document.getElementById ("pre_conf_used").checked ) && ( ! document.getElementById ("pre_conf_not_used").checked )){ // Must indicate whether attending the pre-conference, or not replaceClass (document.getElementById ("pre_conf_ul"), "required", "required_missed"); missCnt++; } if ( document.getElementById ("pre_conf_used").checked ){ var elPreConfCover = document.getElementById ("pre_conf_coverage"); switch ( parseInt (elPreConfCover.options [elPreConfCover.selectedIndex].value) ){ default : // We have an unknown choice replaceClass (document.getElementById ("pre_conf_coverage"), "required", "required_missed"); replaceClass (document.getElementById ("pre_conf_coverage_span"), "required", "required_missed"); missCnt++; break; case 0 : case 1 : case 2 : case 3 : // Any of these are valid options, and need no further validation. break; } var events_1611810000_cnt = 0; if ( document.getElementById ("pre_conf_event_1").checked ){ events_1611810000_cnt++; } if ( document.getElementById ("pre_conf_event_2").checked ){ events_1611810000_cnt++; } if ( document.getElementById ("pre_conf_event_3").checked ){ events_1611810000_cnt++; } if ( document.getElementById ("pre_conf_event_4").checked ){ events_1611810000_cnt++; } if ( events_1611810000_cnt == 0 ){ replaceClass (document.getElementById ("pre_conf_events_1611810000"), "required", "required_missed"); missCnt++; } } // Lodging Section if ( document.getElementById ("sharing").checked ){ document.getElementById ("share_0_email").value = document.getElementById ("share_0_email").value.trim (); document.getElementById ("share_0_name").value = document.getElementById ("share_0_name").value.trim (); if ( document.getElementById ("share_0_name").value == "" ){ replaceClass (document.getElementById ("share_0_name"), "required", "required_missed"); replaceClass (document.getElementById ("share_0_name_span"), "required", "required_missed"); missCnt++; } if ( ! document.getElementById ("share_0_dates").checked ){ var foundOtherError = false; var elFirst = document.getElementById ("share_0_dates_first"); if ( elFirst.selectedIndex == -1 ){ replaceClass (document.getElementById ("share_0_dates_first"), "required", "required_missed"); replaceClass (document.getElementById ("share_0_dates_first_span"), "required", "required_missed"); missCnt++; foundOtherError = true; }else if ( parseInt (elFirst.options [elFirst.selectedIndex].value) == 0 ){ replaceClass (document.getElementById ("share_0_dates_first"), "required", "required_missed"); replaceClass (document.getElementById ("share_0_dates_first_span"), "required", "required_missed"); missCnt++; foundOtherError = true } var elLast = document.getElementById ("share_0_dates_last"); if ( elLast.selectedIndex == -1 ){ replaceClass (document.getElementById ("share_0_dates_last"), "required", "required_missed"); replaceClass (document.getElementById ("share_0_dates_last_span"), "required", "required_missed"); missCnt++; foundOtherError = true; }else if ( parseInt (elLast.options [elLast.selectedIndex].value) == 0 ){ replaceClass (document.getElementById ("share_0_dates_last"), "required", "required_missed"); replaceClass (document.getElementById ("share_0_dates_last_span"), "required", "required_missed"); missCnt++; foundOtherError = true; } if ( ! foundOtherError ){ if ( parseInt (elLast.options [elLast.selectedIndex].value) < parseInt (elFirst.options [elFirst.selectedIndex].value) ){ replaceClass (document.getElementById ("share_0_dates_first"), "required", "required_missed"); replaceClass (document.getElementById ("share_0_dates_first_span"), "required", "required_missed"); replaceClass (document.getElementById ("share_0_dates_last"), "required", "required_missed"); replaceClass (document.getElementById ("share_0_dates_last_span"), "required", "required_missed"); missCnt++; msgs.push ("When sharing a room, the Last Night Sharing cannot come before the First Night Sharing."); } } } } // Transportation Section // Arrival if (( ! document.getElementById ("air_trans_arrive_used").checked ) && ( ! document.getElementById ("air_trans_arrive_not_used").checked )){ // Must indicate whether flying or driving replaceClass (document.getElementById ("air_trans_arrive_ul"), "required", "required_missed"); missCnt++; } // Depart if (( ! document.getElementById ("air_trans_depart_used").checked ) && ( ! document.getElementById ("air_trans_depart_not_used").checked )){ // Must indicate whether flying or driving replaceClass (document.getElementById ("air_trans_depart_ul"), "required", "required_missed"); missCnt++; } var elGroundArrive = document.getElementById ("ground_arrival_needs"); var flightMsgSet = false; var groundMsgSet = false; switch ( parseInt (elGroundArrive.options [elGroundArrive.selectedIndex].value) ){ default : // We have an unknown choice replaceClass (document.getElementById ("ground_arrival_needs"), "required", "required_missed"); replaceClass (document.getElementById ("ground_arrival_needs_span"), "required", "required_missed"); missCnt++; break; case 0 : // This is the case for not needing transportation, so nothing to check. break; case 1 : // This is the case for matching the arriving flights. // So, make sure they have at least specified they will be using air transportation. if ( ! document.getElementById ("air_trans_arrive_used").checked ){ replaceClass (document.getElementById ("ground_arrival_needs"), "required", "required_missed"); replaceClass (document.getElementById ("ground_arrival_needs_span"), "required", "required_missed"); missCnt++; msgs.push ("If you need ground transportation to match your flight arrival/depature, make sure to indicate you will be flying to/from the conference, even if you don't have specific flight information, yet."); flightMsgSet = true; } break; case 3 : break; case 2 : // This is the case for not needing transportation at a specific time. var el1 = document.getElementById ("ground_arrival_date_hour"); var el2 = document.getElementById ("ground_arrival_date_min"); var el3 = document.getElementById ("ground_arrival_date_ampm"); if ( el1.options [el1.selectedIndex].value == "" ){ replaceClass (document.getElementById ("ground_arrival_date_hour"), "required", "required_missed"); replaceClass (document.getElementById ("ground_arrival_time_span"), "required", "required_missed"); missCnt++; if ( ! groundMsgSet ){ msgs.push ("If you need ground transportation at a specific time, please indicate the specific time needed."); groundMsgSet = true; } } if ( el2.options [el2.selectedIndex].value == "" ){ replaceClass (document.getElementById ("ground_arrival_date_min"), "required", "required_missed"); replaceClass (document.getElementById ("ground_arrival_time_span"), "required", "required_missed"); missCnt++; if ( ! groundMsgSet ){ msgs.push ("If you need ground transportation at a specific time, please indicate the specific time needed."); groundMsgSet = true; } } if ( el3.options [el3.selectedIndex].value == "" ){ replaceClass (document.getElementById ("ground_arrival_date_ampm"), "required", "required_missed"); replaceClass (document.getElementById ("ground_arrival_time_span"), "required", "required_missed"); missCnt++; if ( ! groundMsgSet ){ msgs.push ("If you need ground transportation at a specific time, please indicate the specific time needed."); groundMsgSet = true; } } break; } var elGroundDepart = document.getElementById ("ground_departure_needs"); switch ( parseInt (elGroundDepart.options [elGroundDepart.selectedIndex].value) ){ default : // We have an unknown choice replaceClass (document.getElementById ("ground_departure_needs"), "required", "required_missed"); replaceClass (document.getElementById ("ground_departure_needs_span"), "required", "required_missed"); missCnt++; break; case 0 : // This is the case for not needing transportation, so nothing to check. break; case 1 : // This is the case for matching the departing flights. // So, make sure they have at least specified they will be using air transportation. if ( ! document.getElementById ("air_trans_depart_used").checked ){ replaceClass (document.getElementById ("ground_departure_needs"), "required", "required_missed"); replaceClass (document.getElementById ("ground_departure_needs_span"), "required", "required_missed"); missCnt++; if ( ! flightMsgSet ){ msgs.push ("If you need ground transportation to match your flight arrival/depature, make sure to indicate you will be flying to/from the conference, even if you don't have specific flight information, yet."); flightMsgSet = true; } } break; case 3 : break; case 2 : // This is the case for not needing transportation at a specific time. var el1 = document.getElementById ("ground_departure_date_hour"); var el2 = document.getElementById ("ground_departure_date_min"); var el3 = document.getElementById ("ground_departure_date_ampm"); if ( el1.options [el1.selectedIndex].value == "" ){ replaceClass (document.getElementById ("ground_departure_date_hour"), "required", "required_missed"); replaceClass (document.getElementById ("ground_departure_time_span"), "required", "required_missed"); missCnt++; if ( ! groundMsgSet ){ msgs.push ("If you need ground transportation at a specific time, please indicate the specific time needed."); groundMsgSet = true; } } if ( el2.options [el2.selectedIndex].value == "" ){ replaceClass (document.getElementById ("ground_departure_date_min"), "required", "required_missed"); replaceClass (document.getElementById ("ground_departure_time_span"), "required", "required_missed"); missCnt++; if ( ! groundMsgSet ){ msgs.push ("If you need ground transportation at a specific time, please indicate the specific time needed."); groundMsgSet = true; } } if ( el3.options [el3.selectedIndex].value == "" ){ replaceClass (document.getElementById ("ground_departure_date_ampm"), "required", "required_missed"); replaceClass (document.getElementById ("ground_departure_time_span"), "required", "required_missed"); missCnt++; if ( ! groundMsgSet ){ msgs.push ("If you need ground transportation at a specific time, please indicate the specific time needed."); groundMsgSet = true; } } break; } // Guest Section if ( document.getElementById ("guest").checked ){ document.getElementById ("guest_0_email").value = document.getElementById ("guest_0_email").value.trim (); document.getElementById ("guest_0_phone_cell").value = document.getElementById ("guest_0_phone_cell").value.trim (); document.getElementById ("guest_0_name").value = document.getElementById ("guest_0_name").value.trim (); // document.getElementById ("guest_0_relation").value = document.getElementById ("guest_0_relation").value.trim (); if ( document.getElementById ("guest_0_name").value == "" ){ replaceClass (document.getElementById ("guest_0_name"), "required", "required_missed"); replaceClass (document.getElementById ("guest_0_name_span"), "required", "required_missed"); missCnt++; } /* if ( document.getElementById ("guest_0_relation").value == "" ){ replaceClass (document.getElementById ("guest_0_relation"), "required", "required_missed"); replaceClass (document.getElementById ("guest_0_relation_span"), "required", "required_missed"); missCnt++; } */ if ( ! document.getElementById ("guest_0_travel").checked ){ if ( document.getElementById ("guest_0_email").value == "" ){ replaceClass (document.getElementById ("guest_0_email"), "required", "required_missed"); replaceClass (document.getElementById ("guest_0_email_span"), "required", "required_missed"); missCnt++; } if ( document.getElementById ("guest_0_phone_cell").value == "" ){ replaceClass (document.getElementById ("guest_0_phone_cell"), "required", "required_missed"); replaceClass (document.getElementById ("guest_0_phone_cell_span"), "required", "required_missed"); missCnt++; } } } if ( missCnt > 0 ){ var msg = 'Some required fields were not specified. Please fill out the missing required information (fields marked with red), and try submitting the form again.'; if ( msgs.length > 0 ){ msg += "\n\nSpecial Notes:"; for ( var msgCnt = 0; msgCnt < msgs.length; msgCnt++ ){ msg += "\n - " + msgs [msgCnt]; } } alert (msg); return false; } if ( ! captchaVerified ){ verifyCAPTCHA (); // Return false so that the form does not submit, and we can process the AJAX verification of the CAPTCHA and resubmit the form upon successful validation. return false; } // If everything validated, we need to re-enable any form controls that are disabled, so they will be submitted by the browser. reenableControls (); return true; } function verifyCAPTCHA (){ var elChecking = document.getElementById ("captcha_check"); var checkCAPTCHA = document.getElementById ("ct_captcha").value.trim (); document.getElementById ("ct_captcha").value = checkCAPTCHA; // If we did need to trim it, put the trimmed text back in the box. elChecking.style.display = 'block'; var url = "captcha_check.php?t=400&ct_captcha=" + checkCAPTCHA; makeRequest (url, processCAPTCHACheck); } function processCAPTCHACheck (xhr){ if ( xhr.readyState == 4 ){ if ( xhr.status == 200 ){ var checkRetData = JSON.parse (xhr.responseText); document.getElementById ("captcha_check").style.display = 'none'; if ( checkRetData ['error'] == '' ){ captchaVerified = true; // Verified, so resubmit the form. document.getElementById ("form_submit").click (); }else{ captchaVerified = false; replaceClass (document.getElementById ("ct_captcha"), "required", "required_missed"); alert (checkRetData ['error']); } }else{ alert ("There was a problem with the request " + xhr.status); } } } function initPage (){ checkPreConferenceRoleRestrictions (); checkPreConference (); checkLodging (); checkExtraLodgingDays (); checkSharing (); checkAirTransportation (); checkGroundTransportation (); checkGuest (); checkLabelEnables (); captchaVerified = false; }