/* * JS used to submit and validate search form */ var initForm = false; function initializeForm() { var makes = getAllSelections('makeList'); if ( makes != null && makes[0] != 'ALL' ) { initForm = true; var preSelectedModels = getCookieValue('manheim.powersearch.model').split('|'); reloadAllModels(makes, preSelectedModels, ''); } } function concatArrays( array1, array2 ) { if ( array1 != null ){ if (array2 != null){ for ( var i = 0; i < array2.length; i++ ) { array1[array1.length] = array2[i]; } } return array1; } else if ( array2 != null ) { return array2; } return new Array(); } // function reloadToYears( formElement ) { // var fromYear = document.getElementById('year_begin').value; // url = 'json.php?mode=year&fromYear=' + fromYear; // loadXMLDoc(url, 'toYear', formElement.name); // } var executeTrimAjax = true; function reloadAllTrims( makes, models, defaults, inventory ) { if ( executeTrimAjax ) { if ( makes.length == 0 || makes[0] == 'ALL' || models.length == 0 || models[0] == 'ALL' ) { var trimList = document.getElementById('trimList'); trimList.innerHTML = ''; trimList.appendChild(createTrimCheck(allLabel, 'ALL')); } else { var ajaxUrl = 'json.php?mode=trims&inventory=' + inventory; for (var i = 0; i < makes.length; i++) { ajaxUrl += '&make[]=' + makes[i]; } for (var i = 0; i < models.length; i++) { ajaxUrl += '&model[]=' + models[i]; } //alert(ajaxUrl); loadJSON( ajaxUrl, 'showTrims', concatArrays( defaults, getAllSelections('trimList') ) ); } } } function showTrims( trimInfo, extraParams ) { var trimData = trimInfo.trims; var trimList = document.getElementById('trimList'); showDebug( 'Clearing existing content for: ' + trimList.id); trimList.innerHTML = ''; for ( i = 0; i < trimData.length; i++ ) { trimList.appendChild(createTrimCheck(trimData[i].label, trimData[i].value)); } setAllChecked('trimList', true, extraParams); } function createTrimCheck( label, value ) { //alert(label); var itemElement = document.createElement('li'); var labelElement = document.createElement('label'); var checkbox = document.createElement('input'); checkbox.id = value; checkbox.type = 'checkbox'; checkbox.name = 'series'; checkbox.className = 'checkbox'; checkbox.value = value; checkbox.onclick = function() { toggleAllCheckbox(this, 'trimList'); }; labelElement.appendChild(checkbox); labelElement.appendChild(document.createTextNode(unescape(label))); itemElement.appendChild(labelElement); return itemElement; } var executeModelAjax = true; function reloadAllModels( makes, defaults, inventory ) { if ( executeModelAjax ) { if ( makes.length == 0 || makes[0] == 'ALL' ) { var modelList = document.getElementById('modelList'); modelList.innerHTML = ''; modelList.appendChild(createModelCheck(allLabel, 'ALL')); } else { var ajaxUrl = 'json.php?mode=models&inventory=' + inventory; for (var i = 0; i < makes.length; i++) { ajaxUrl += '&make=' + makes[i]; } loadJSON( ajaxUrl, 'showModels', concatArrays( defaults, getAllSelections('modelList') ) ); } } } var modelData = null; function showModels( modelInfo, extraParams ) { modelData = modelInfo.models; var modelList = document.getElementById('modelList'); showDebug( 'Clearing existing content for: ' + modelList.id); modelList.innerHTML = ''; for ( i = 0; i < modelData.length; i++ ) { modelList.appendChild(createModelCheck(modelData[i].label, modelData[i].value)); } setAllChecked('modelList', true, extraParams, false); var trimDefaults = null; if ( initForm ) { var trimDefaults = getCookieValue('manheim.powersearch.trim').split('|'); initForm = false; } reloadAllTrims(getAllSelections('makeList'), getAllSelections('modelList'), trimDefaults, ''); } function createModelCheck( label, value ) { var itemElement = document.createElement('li'); var labelElement = document.createElement('label'); var checkbox = document.createElement('input'); checkbox.id = value; checkbox.type = 'checkbox'; checkbox.name = 'model'; checkbox.className = 'checkbox'; checkbox.value = value; checkbox.onclick = function() { if ( this.value == 'ALL' ) { executeTrimAjax=false; } toggleAllCheckbox(this, 'modelList'); if ( this.value == 'ALL' ) { executeTrimAjax=true; } reloadAllTrims(getAllSelections('makeList'), getAllSelections('modelList'), null, ''); //toggleModels(this); }; labelElement.appendChild(checkbox); labelElement.appendChild(document.createTextNode(unescape(label))); itemElement.appendChild(labelElement); return itemElement; } function toggleModels( checkbox ) { if ( modelData != null ) { for ( i = 0; i < modelData.length; i++ ) { if ( modelData[i].value == checkbox.value ) { if ( modelData[i].parentId > 0 ) { var parentCheck = document.getElementById(modelData[i].parentId ); if ( parentCheck != null ) { parentCheck.checked = false; } } if ( modelData[i].childIds != null && modelData[i].childIds.length > 0 ) { for ( var j = 0 ; j < modelData[i].childIds.length; j++ ) { var childCheck = document.getElementById(modelData[i].childIds[j] ); if ( childCheck != null ) { childCheck.checked = checkbox.checked; } } } break; } } } } function writeModelCookie() { document.cookie = 'manheim.powersearch.model=' + getAllSelections('modelList').join('|') + '; path=/;'; } function writeTrimCookie() { document.cookie = 'manheim.powersearch.trim=' + getAllSelections('trimList').join('|') + '; path=/;'; } function getCookieValue( cookieName ) { var cookieValue = ''; if (document.cookie.length > 0) { var startIndex = document.cookie.indexOf(cookieName + '='); if (startIndex != -1) { startIndex = startIndex + cookieName.length + 1; var endIndex = document.cookie.indexOf(';', startIndex); if (endIndex == -1) { endIndex = document.cookie.length; } cookieValue = document.cookie.substring(startIndex, endIndex); } } return cookieValue; } function submitSearch( newSearch ) { document.searchForm.submittedQstr.value = ''; if ( validateForm() ) { if ( newSearch ) { //clearRefinementCookies(document.cookie); writeModelCookie(); writeTrimCookie(); } document.searchForm.newSort.value = false; document.searchForm.searchOperation.value = 'Search'; document.searchForm.action = 'searchSubmit.do'; document.searchForm.submit(); } } function validateForm() { var valid = validateSaleDate(); return valid; } function validateSaleDate() { var saleDateField = document.getElementById('saleDate'); if ( saleDateField != null ) { saleDateField.value = saleDateField.value.trim(); if ( saleDateField.value == '' || saleDateField.value == defaultSaleDateText ) { saleDateField.value = ''; } else if ( saleDateField.value.length != 10 || isNaN(saleDateField.value.substring(0, 2)) || isNaN(saleDateField.value.substring(3, 5)) || isNaN(saleDateField.value.substring(6)) ) { // Format = MM/DD/YYYY saleDateField.select(); alert(saleDateErrMsg); return false; } else { var oldestDate = new Date(); oldestDate.setDate(oldestDate.getDate() - 1); var day = saleDateField.value.substring(3, 5); var month = saleDateField.value.substring(0, 2); var year = saleDateField.value.substring(6); var selectedDate = new Date(); selectedDate.setFullYear(year, month - 1, day); if ( selectedDate < oldestDate ) { saleDateField.select(); alert(saleDateErrMsg); return false; } } } return true; } function validateSaveSearchForm() { var valid = validateSearchName(); valid = valid && validatePhoneNumber(); valid = valid && validateNotification(); return valid; } function validateSearchName() { var nameField = document.getElementById('searchName'); if ( nameField != null ) { nameField.value = nameField.value.trim(); if (nameField.value == '') { nameField.focus(); alert(nameRequiredMsg); return false; } } return true; } function validateNotification() { var format = document.getElementById('searchForm').emailFormat; if ( format != null ) { for ( var i = 0; i < format.length; i++ ) { if ( format[i].checked ) { if ( format[i].value == 'T' ) { var emailAddress = document.getElementById('emailAddress'); if ( emailAddress != null && (emailAddress.value == '' || emailAddress.value.indexOf('@') == -1) ) { emailAddress.focus(); alert(emailRequiredMsg); return false; } } else if ( format[i].value == 'S' ) { var phoneNumber = document.getElementById('phone'); if ( phoneNumber != null && phoneNumber.value == '' ) { phoneNumber.focus(); alert(phoneRequiredMsg); return false; } var provider = document.getElementById('sms'); if ( provider != null && provider.value == '' ) { provider.focus(); alert(providerRequiredMsg); return false; } } } } } return true; } function validatePhoneNumber() { var phoneField = document.getElementById('phone'); if ( phoneField != null ) { phoneField.value = phoneField.value.trim(); if ( phoneField.value == '' || phoneField.value == defaultPhoneText ) { phoneField.value = ''; } else { phoneField.value = phoneField.value.replace( /-/g, '' ); if ( phoneField.value.length != 10 || isNaN(phoneField.value) ) { phoneField.select(); alert(phoneErrMsg); return false; } } } return true; } // enable/disable form elements as user selects different // notification types on the saved search form function chgNotify(obj) { // email if (obj == 'T') { document.getElementById('notificationEnabled').value = 'true'; document.getElementById('emailAddress').className = ''; document.getElementById('emailAddress').disabled = false; document.getElementById('phone').className = 'disabledText'; document.getElementById('phone').disabled = true; document.getElementById('sms').disabled = true; document.getElementById('sms').className = 'disabledText'; document.getElementById('emailAddress').focus(); // sms } else if (obj == 'S') { document.getElementById('notificationEnabled').value = 'true'; document.getElementById('emailAddress').className = 'disabledText'; document.getElementById('emailAddress').disabled = true; document.getElementById('phone').className = ''; document.getElementById('phone').disabled = false; document.getElementById('phone').className = ''; document.getElementById('sms').disabled = false; document.getElementById('sms').className = ''; document.getElementById('phone').focus(); // none } else { document.getElementById('alertTo').checked = true; document.getElementById('notificationEnabled').value = 'false'; document.getElementById('emailAddress').className = 'disabledText'; document.getElementById('emailAddress').disabled = true; document.getElementById('phone').className = 'disabledText'; document.getElementById('phone').disabled = true; document.getElementById('sms').disabled = true; document.getElementById('sms').className = 'disabledText'; } } function clearSearchForm() { resetSearchForm(true); setChecked('vehicleTypes', true, vehicleTypeIdCar); setChecked('vehicleTypes', true, vehicleTypeIdTruck); setChecked('vehicleTypes', true, vehicleTypeIdSUV); setChecked('vehicleTypes', true, vehicleTypeIdVan); } function resetSearchForm( refreshAll ) { document.getElementById('searchForm').reset(); if ( refreshAll ) { var sortElement = document.getElementById('sort'); if ( sortElement != null ) { sortElement.value = ''; } setOptions('vehicleType', 0); setChecks('vehicleTypes', false); reloadToYears( document.getElementById('searchForm') ); setOptions('year_begin', defaultFromYearIndex); setOptions('year_end', 0); setChecks('makeList', false); setChecks('modelList', false); setChecks('trimList', false); setChecks('odometerList', false); setChecks('extColorList', false); setChecks('onlyWithPhoto', false); setChecks('onlyWithECR', false); clearAdvancedOptions(); setChecks('regionList', false); setChecks('stateList', false); setChecks('locationList', false); toggleElements('regionList', true); toggleElements('stateList', true); toggleElements('locationList', true); setChecks('sellerList', false); setChecks('inventoryList', false); document.getElementById('saleDate').value = ''; } showHideAdvancedOptions(); if ( document.getElementById('makeList') != null ) { reloadAllModels(getAllSelections('makeList'), null, ''); if ( document.getElementById('modelList') != null ) { reloadAllTrims(getAllSelections('makeList'), getAllSelections('modelList'), null, ''); } } if ( document.getElementById('saleDate').value == '' ) { document.getElementById('saleDate').value = defaultSaleDateText; } } function clearAdvancedOptions() { setChecks('mmrList', false); setChecks('conditionList', false); setChecks('driveTrainList', false); setChecks('transList', false); setChecks('engineList', false); setChecks('intColorList', false); setChecks('topList', false); setChecks('intTypeList', false); setChecks('doorsList', false); } function toggleAllCheckbox( checkbox, containerId ) { if ( checkbox.value == 'ALL' ) { // check or uncheck all checkboxes setChecks(containerId, checkbox.checked) } else if ( !checkbox.checked ) { // uncheck 'ALL' option if checked var container = document.getElementById(containerId); var ifields = container.getElementsByTagName('input'); for (var i = 0; i < ifields.length; i++) { if (ifields[i].value == 'ALL') { ifields[i].checked = false; break; } } } return false; } function toggleLocationElements( containerId ) { var selections = getAllSelections(containerId); if ( containerId != 'regionList' ) { toggleElements('regionList', selections.length == 0); } if ( containerId != 'stateList' ) { toggleElements('stateList', selections.length == 0); } if ( containerId != 'locationList' ) { toggleElements('locationList', selections.length == 0); } } /* function toggleRegionRelations() { var stateIds = getAllChildren( getAllSelections('regionList'), regionStates ); enableElements( 'stateList', stateIds ); var locationIds = getAllChildren( stateIds, stateAuctions ) enableElements( 'locationList', locationIds ); } function toggleStateRelations() { var stateIds = getAllSelections('stateList'); enableElements( 'regionList', getAllParents( stateIds, regionStates ) ); enableElements( 'locationList', getAllChildren( stateIds, stateAuctions ) ); } function toggleLocationRelations() { var stateIds = getAllParents( getAllSelections('locationList'), stateAuctions ); enableElements( 'stateList', stateIds ); enableElements( 'regionList', getAllParents( stateIds, regionStates ) ); } function getAllParents( children, relations ) { var parents = new Array(); for ( var i = 0; i < relations.length; i++ ) { for (var j = 0; j < relations[i].childIds.length; j++) { for ( var k = 0; k < children.length; k++ ) { if ( relations[i].childIds[j] == children[k] ) { parents[parents.length] = relations[i].parentId; } } } } return parents; } function getAllChildren( parents, relations ) { var children = new Array(); for ( var i = 0; i < relations.length; i++ ) { for ( var j = 0; j < parents.length; j++ ) { if ( relations[i].parentId == parents[j] ) { for ( var k = 0; k < relations[i].childIds.length; k++ ) { children[children.length] = relations[i].childIds[k]; } } } } return children; } function enableElements( containerId, values ) { var container = document.getElementById(containerId); if ( container != null ) { var ifields = container.getElementsByTagName('input'); for (var i = 0; i < ifields.length; i++) { var disable = true; if ( values == null || values.length == 0 ) { disable = false; } else { for (var j = 0; j < values.length; j++) { if ( ifields[i].value == values[j] ) { disable = false; break; } } } ifields[i].disabled = disable; } } } */ /* function toggleParentChild( checkbox, relations, containerId ) { var parentValue = checkbox.value; for ( var i = 0; i < relations.length; i++ ) { if ( parentValue == relations[i].parentId ) { var container = document.getElementById(containerId); var ifields = container.getElementsByTagName('input'); for (var j = 0; j < ifields.length; j++) { var childValue = ifields[j].value; for (var k = 0; k < relations[i].childIds.length; k++) { if (relations[i].childIds[k] == childValue) { if ( ifields[j].checked != checkbox.checked ) { ifields[j].click(); } break; } } } break; } } return false; } */ /* function toggleChildParent( checkbox, relations, containerId ) { if ( !checkbox.checked ) { var childValue = checkbox.value; for ( var i = 0; i < relations.length; i++ ) { var parentId = relations[i].parentId; for (var j = 0; j < relations[i].childIds.length; j++) { if ( relations[i].childIds[j] == childValue ) { var container = document.getElementById(containerId); var ifields = container.getElementsByTagName('input'); for (var k = 0; k < ifields.length; k++) { if ( ifields[k].value == parentId ) { ifields[k].checked = false; break; } } break; } } } } return false; } */ function setOptions(elementId, optionIndex) { var container = document.getElementById(elementId); if ( container != null && optionIndex >= 0 ) { if ( container.nodeName.toUpperCase() == 'SELECT' && container.options.length > optionIndex ) { container.options[optionIndex].selected = true; } var selectFields = container.getElementsByTagName('select'); for (var i = 0; i < selectFields.length; i++) { if ( selectFields[i].options.length > optionIndex ) { selectFields[i].options[optionIndex].selected = true; } } } } // Finds all SELECT or INPUT tags within the specified element // and returns the values of all that are currently selected function getAllSelections(elementId) { var selectedValues = new Array(); var container = document.getElementById(elementId); if ( container != null ) { if ( container.nodeName.toUpperCase() == 'SELECT' ) { for (var i = 0; i < container.options.length; i++) { if ( container.options[i].selected ) { selectedValues[selectedValues.length] = container.options[i].value; } } } if ( container.nodeName.toUpperCase() == 'INPUT' ) { if ( container.checked ) { selectedValues[selectedValues.length] = container.value; } } var ifields = container.getElementsByTagName('input'); for (var i = 0; i < ifields.length; i++) { if ( ifields[i].checked ) { selectedValues[selectedValues.length] = ifields[i].value; } } } return selectedValues; } // Finds a SELECT or INPUT tag with the specified values // and makes sure it is selected or unselected depending // on the isChecked parameter function setAllChecked(elementId, isChecked, itemValues, executeClick) { for (var i = 0; i < itemValues.length; i++) { setChecked(elementId, isChecked, itemValues[i], executeClick) } } // Finds a SELECT or INPUT tag with the specified value // and makes sure it is selected or unselected depending // on the isChecked parameter function setChecked(elementId, isChecked, itemValue, executeClick) { var container = document.getElementById(elementId); if ( container != null ) { if ( container.nodeName.toUpperCase() == 'SELECT' ) { if ( isChecked ) { for (var i = 0; i < container.options.length; i++) { if ( container.options[i].value == itemValue ) { container.options[i].selected = isChecked; } } } else { container.options[0].selected = true; } } if ( container.nodeName.toUpperCase() == 'INPUT' ) { if ( container.checked != isChecked && container.value == itemValue ) { if ( typeof executeClick == 'undefined' || executeClick == true ) { container.click(); } else { container.checked = isChecked; } } } var ifields = container.getElementsByTagName('input'); for (var i = 0; i < ifields.length; i++) { if ( ifields[i].checked != isChecked && ifields[i].value == itemValue ) { if ( typeof executeClick == 'undefined' || executeClick == true ) { ifields[i].click(); } else { ifields[i].checked = isChecked; } } } } } // Finds all SELECT or INPUT tags within the specified element // and makes sure they are selected or unselected depending // on the isChecked parameter function setChecks(elementId, isChecked) { var container = document.getElementById(elementId); if ( container != null ) { if ( container.nodeName.toUpperCase() == 'SELECT' && !isChecked ) { container.options[0].selected = true; } if ( container.nodeName.toUpperCase() == 'INPUT' ) { if ( container.checked != isChecked ) { container.click(); } } var ifields = container.getElementsByTagName('input'); for (var i = 0; i < ifields.length; i++) { if ( ifields[i].checked != isChecked ) { ifields[i].click(); } } } } // Was used to enable/disable form elements within a specified element function toggleElements(elementId, enabled) { var element = document.getElementById(elementId); if (element != null) { if (enabled) { element.className = element.className.replace( /\sdisabledText/g, ''); } else { element.className += ' disabledText'; } // disable input fields var container = element; var ifields = container.getElementsByTagName('input'); for (var i = 0; i < ifields.length; i++) { ifields[i].disabled = !enabled; } // disable select fields var sfields = container.getElementsByTagName('select'); for (var i = 0; i < sfields.length; i++) { sfields[i].disabled = !enabled; } // disable links var afields = container.getElementsByTagName('a'); for (var i = 0; i < afields.length; i++) { afields[i].disabled = !enabled; } } }