﻿   String.prototype.trim = function () {
        return this.replace(/^\s*/, "").replace(/\s*$/, "");
    }

    function showRegionDesc() {
        if ( typeof parent.showRegionList != 'undefined' ) {
            parent.showRegionList();
        } else {
            showRegionList();
        }
    }
    function reloadStates( region, inventory ) {
        if ( region == 'ALL' ) region = '';
        url = buildUrl('json.php') + '?mode=states&region=' + region + '&inventory=' + inventory;
        loadXMLDoc(url, 'stateList');
    }

    function reloadModels( make, inventory ) {
        if ( make == 'ALL' ) {
            toggleElements('modelList', false);
        } else {
            toggleElements('modelList', true);
        }

        var ajaxUrl = buildUrl('json.php');
        ajaxUrl += '?mode=models&make=' + make + '&inventory=' + inventory;
        loadJSON( ajaxUrl, 'showModels', null );
    }
    var modelData = null;

    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 reloadMakes( inventory ) {
       if ( inventory == 'ALL' ) inventory = '';
       url = buildUrl('json.php') + '?mode=makes&inventory=' + inventory;
       loadJSON( url, 'showMakes', getAllSelections('modelList') );       
   }
    
        function showMakes( modelInfo, extraParams ) {
        modelData = modelInfo.makes;

        var makeList = document.getElementById('makeList');
        showDebug( 'Clearing existing content for: ' + makeList.id);
        makeList.innerHTML = '';

        for ( i = 0; i < modelInfo.makes.length; i++ ) {
            
            var option = document.createElement('option');
            	option.value = modelInfo.makes[i].value;
            	//option.name  = modelInfo.makes[i].label;
            	//option.text  = modelInfo.makes[i].label;
				option.innerHTML = modelInfo.makes[i].label;
      			makeList.appendChild(option);
            };
}
    function reloadCertifications( inventory ) {
        if ( inventory == 'ALL' ) inventory = '';
        url = buildUrl('json.php') + '?mode=certifications&inventory=' + inventory;
        loadXMLDoc(url, 'certification', document.forms[0].name);
    }
    function reloadAuctions( inventory ) {
        if ( inventory == 'ALL' ) inventory = '';
        url = buildUrl('json.php') + '?mode=auctions&inventory=' + inventory;
        loadXMLDoc(url, 'auctionLocations', document.forms[0].name);
    }
    function clearAdvancedOptions() {
        // reset all links to default color
        var linkcontainer = document.getElementById('advancedLinks');
        var ifields = linkcontainer.getElementsByTagName('a');
        for (var i = 0; i < ifields.length; i++) {
            ifields[i].className = '';
        }
        setChecks('odometerList', false);
        document.getElementById('gOdometer').style.display = "none";
        setChecks('driveTrainList', false);
        document.getElementById('gDriveTrain').style.display = "none";
        setChecks('topList', false);
        document.getElementById('gTopType').style.display = "none";
        setChecks('engineList', false);
        document.getElementById('gEngineType').style.display = "none";
        setChecks('extColorList', false);
        document.getElementById('gExtColor').style.display = "none";
        setChecks('intColorList', false);
        document.getElementById('gIntColor').style.display = "none";
        setChecks('intTypeList', false);
        document.getElementById('gInteriorType').style.display = "none";
        setChecks('transList', false);
        document.getElementById('gTransmission').style.display = "none";
        setChecks('mmrList', false);
        document.getElementById('gMMR').style.display = "none";
        setChecks('conditionList', false);
        document.getElementById('gCondition').style.display = "none";
    }

    function resetSearchForm( refreshAll ) {
        document.forms[0].reset();

        var sortElement = document.getElementById('sort');
        if ( sortElement != null ) {
            sortElement.value = '';
        }

        document.getElementById('year_begin').options[5].selected = true;
        document.getElementById('year_end').options[0].selected = true;
        document.getElementById('make').options[0].selected = true;
        document.getElementById('distance').options[0].selected = true;
        if ( document.getElementById('saleDate').value == '' ) {
            document.getElementById('saleDate').value = 'Sale Date';
        }
        if ( document.getElementById('zipcode').value == '' ) {
            document.getElementById('zipcode').value = 'Zip Code';
        }
        document.getElementById('resultsPerPage').options[0].selected = true;

        clearAdvancedOptions();

        toggleElements('modelList', false);
        setChecks('modelList', false);
        setChecks('auctionLocation', false);
        setChecks('regionGroup', false);
        setChecks('stateList', false);

        if ( refreshAll ) {
            reloadToYears();
            reloadModels('ALL', '');
        }
    }
function validateNotification() {
        var format = document.forms[0].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.focus();
                         alert('Please enter a valid email address');
                         return false;
                     }
                 } else if ( format[i].value == 'S' ) {
                     var phoneNumber = document.getElementById('phone');
                     if ( phoneNumber != null && phoneNumber.value == '' ) {
                         phoneNumber.focus();
                         alert('Please enter a valid phone number');
                         return false;
                     }
                     var provider = document.getElementById('sms');
                     if ( provider != null && provider.value == '' ) {
                         provider.focus();
                         alert('Please select a carrier');
                         return false;
                     }
                 }
              }
           }
        }
        return true;
    }
    function validateSearchName() {
        var nameField = document.getElementById('searchName');
        if ( nameField != null ) {
            nameField.value = nameField.value.trim();
            if (nameField.value == '') {
                nameField.focus();
                alert('Search Name is required');
                return false;
            }
        }
        return true;
    }

    function validatePhoneNumber() {
        var phoneField = document.getElementById('phone');
        if ( phoneField != null ) {
            phoneField.value = phoneField.value.trim();
            if ( phoneField.value == '' || phoneField.value == 'Phone Number' ) {
                phoneField.value = '';
            } else {
                phoneField.value = phoneField.value.replace( /-/g, '' );
                if ( phoneField.value.length != 10 || isNaN(phoneField.value) ) {
                    phoneField.select();
                    alert('Invalid phone number. Please enter a valid 10 digit phone number.');
                    return false;
                }
            }
        }
        return true;
    }

    function validateSaleDate() {
    if (document.getElementById("saleDate").value == ""||document.getElementById("saleDate").value == "Дата продажи") {
        return true;
    }       
        var saleDateField = document.getElementById('saleDate');
        if ( saleDateField != null ) {
            saleDateField.value = saleDateField.value.trim();
            if ( saleDateField.value == '' || saleDateField.value == 'Дата продажи' ) {
                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('Неправильная дата продажи. Дата продажи не может быть более 1 дня назад  и вводится в формате мм/дд/гггг.');
                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('Неправильная дата продажи. Дата продажи не может быть более 1 дня назад  и вводится в формате мм/дд/гггг.');
                    return false;
                }
            }
        }
        return true;
    }
    function validateZipCode() {
        var distance = document.getElementById('distance');
        var zipField = document.getElementById('zipcode');
        if ( distance != null && zipField != null ) {
            zipField.value = zipField.value.trim();
            if ( distance.options[0].selected == false ) {
                if ( zipField.value == 'Zip Code' ) {
                    zipField.select();
                    alert('Invalid zip code. Please enter a valid zip code.');
                    return false;
                } else if ( isNaN(zipField.value) ) {
                    zipField.select();
                    alert('Invalid zip code. Please enter a valid zip code.');
                    return false;
                }
            }
        }
        return true;
    }
    function advancedSearch() {
        if (document.getElementById('advanced')) {
        	if (document.getElementById('advanced').style.display == 'none') {
        		document.getElementById('advanced').style.display =  'block';
        	} else {
        		document.getElementById('advanced').style.display =  'none';
        	}
        }
    }
    function criteria_switch(element, show_tab, show_group) {
        // hide all lists
        var container = document.getElementById('advancedGroup');
        var ifields = container.getElementsByTagName('li');
        for (var i = 0; i < ifields.length; i++) {
            ifields[i].style.display = 'none';
        }
        // reset all links to default color
        var linkcontainer = document.getElementById('advancedLinks');
        var ifields = linkcontainer.getElementsByTagName('a');
        for (var i = 0; i < ifields.length; i++) {
            ifields[i].className = '';
        }

        // set current link color and display current list
        document.getElementById(show_tab).className = "activeLink";
        document.getElementById(show_group).style.display = "block";

        var subcontainer = document.getElementById(show_group);
        var ifields = subcontainer.getElementsByTagName('li');
        for (var i = 0; i < ifields.length; i++) {
            ifields[i].style.display = 'block';
        }
    }
    function disableSearch() {
        var fromYear = document.getElementById('year_begin');
        if (fromYear != null) {
            fromYear.value = '';
            fromYear.disabled = true;
        }

        var toYear = document.getElementById('year_end');
        if (toYear != null) {
            toYear.value = '';
            toYear.disabled = true;
        }

        var make = document.getElementById('make');
        if (make != null) {
            make.value = '';
            make.disabled = true;
        }

        var mileage = document.getElementById('mileage');
        if ( mileage != null ) {
            mileage.value = '';
            mileage.disabled = true;
        }

        toggleElements('modelList', false);
        toggleElements('photoCR', false);
    }

    function enableSearch() {
        var fromYear = document.getElementById('year_begin');
        fromYear.options[5].selected = true;
        fromYear.disabled = false;

        var toYear = document.getElementById('year_end');
        toYear.options[0].selected = true;
        toYear.disabled = false;

        var make = document.getElementById('make');
        make.options[0].selected = true;
        make.disabled = false;

        var mileage = document.getElementById('mileage');
        if ( mileage != null ) {
            mileage.options[0].selected = true;
            mileage.disabled = false;
        }

        toggleElements('modelList', true);
    }

    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 hasChecked(elementId) {
        var container = document.getElementById(elementId);
        var ifields = container.getElementsByTagName('input');
        for (var i = 0; i < ifields.length; i++) {
            if (ifields[i].checked) {
                return true;
            }
        }

        return false;
    }

    function setChecks(elementId, isChecked) {
        var container = document.getElementById(elementId);
        var ifields = container.getElementsByTagName('input');
        for (var i = 0; i < ifields.length; i++) {
            ifields[i].checked = isChecked;
        }
    }

    function toggleElements(elementId, enabled) {
        var element = document.getElementById(elementId);

        if (element != null) {
            if (enabled) {
                element.className = element.className.replace(' disabledText','');
            } 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;
            }
        }
    }


    function showHideAdvancedOptions() {
        var vehicleType = document.getElementById('vehicleType');
        if (vehicleType != null && document.getElementById('advanced')) {
            if (vehicleType.value == '4294967293+4294967291+4294967292+4294967290') {
                document.getElementById('advanced').style.display = 'block';
            } else {
                document.getElementById('advanced').style.display = 'none';
            }
        }
    }
	
	function reloadToYears( elementId ) {
	 		var fromYear = 	document.getElementById('year_begin').value;
 			if ( fromYear == 'ALL' ) {
 				fromYear = 1950;
 			}
 			var toYear = new Date().getFullYear() + 1;
			 var options = new Array();
			for ( var i = toYear; i >= fromYear; i-- ) {
 				options[options.length] = {'option' : i, 'value' : i};
			 }
			updateFormOptions(elementId, options);
	}

function $(elementId){
	return document.getElementById(elementId);	
	}




 function updateFormOptions( elementId, options ) {
 		var optionElement = document.getElementById(elementId);
		if ( optionElement != null ) {
 			optionElement.options.length = 0;
		 	for ( var i = 0; i < options.length; i++ ) {
		 		var newOption = document.createElement('option');	 
		 		newOption.text  = options[i].value ;
         		newOption.value = options[i].value ;
   				optionElement.options.add(newOption);	 				
 			}
 		}
 	}
	
function vehicleTypeChanged(elementId) {
    var vehicleTypeValue = "";
    if ($("vehicleType")) {
        vehicleTypeValue = $("vehicleType").value;
    }
    if ($("advancedOptions")) {
        if (vehicleTypeValue.indexOf("4294967293") != -1 ||
            vehicleTypeValue.indexOf("4294967292") != -1 ||
            vehicleTypeValue.indexOf("4294967291") != -1 ||
            vehicleTypeValue.indexOf("4294967290") != -1) {
            $("advancedOptions").style.display = "block";
        } else {
            $("advancedOptions").style.display = "none";
        }
    }
    var reload = true;
    var formElement = $("searchForm").vehicleTypes;
    if (formElement != null) {
        if (formElement.value == vehicleTypeValue) {
            reload = false;
        } else {
            formElement.value = vehicleTypeValue;
        }
    }
    if (reload) {
        var preSelectedMakes = getCookieValueAsArray("manheim.powersearch.make", "|");
       
    }
     reloadMakes(vehicleTypeValue);
}	
function getAllSelections(elementId) {
    var selectedValues = new Array;
    var container = $(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 elements = container.getElementsByTagName("input");
        for (var i = 0; i < elements.length; i++) {
            if (elements[i].checked) {
                selectedValues[selectedValues.length] = elements[i].value;
            }
        }
    }
    return selectedValues;
}
function toggleLocations(checkbox, relations) {
    var locationId = checkbox.value;
    var isChecked = checkbox.checked;
    toggleChildLocations(locationId, isChecked, relations);
    toggleParentLocation(locationId, isChecked, relations);
}
function toggleParentLocation(childId, isChecked, relations) {
    var parentId = getParentLocationId(childId, relations);
    if (!isChecked) {
        while (parentId != null) {
            var parentElement = $("location" + "-" + parentId);
            if (parentElement != null) {
                parentElement.checked = false;
            }
            parentId = getParentLocationId(parentId, relations);
        }
    } else {
        var children = getChildLocations(parentId, relations);
        if (children != null && children.length > 0) {
            var allChildrenChecked = true;
            for (var i = 0; i < children.length; i++) {
                var childElement = $("location" + "-" + children[i].id);
                if (childElement != null && !childElement.checked) {
                    allChildrenChecked = false;
                    break;
                }
            }
            if (allChildrenChecked) {
                var parentElement = $("location" + "-" + parentId);
                if (parentElement != null && !parentElement.checked) {
                    parentElement.click();
                }
            }
        }
    }
}
function toggleChildLocations(parentId, isChecked, relations) {
    var children = getChildLocations(parentId, relations);
    if (children != null && children.length > 0) {
        for (var i = 0; i < children.length; i++) {
            var childElement = $("location" + "-" + children[i].id);
            if (childElement != null && isChecked != childElement.checked) {
                childElement.click();
            }
        }
    }
    return false;
}
function getChildLocations(parentId, relations) {
    for (var i = 0; i < relations.length; i++) {
        if (parentId == relations[i].id) {
            return relations[i].children;
        } else {
            var children = getChildLocations(parentId, relations[i].children);
            if (children != null) {
                return children;
            }
        }
    }
    return null;
}
function getParentLocationId(childId, relations) {
    for (var i = 0; i < relations.length; i++) {
        var childList = relations[i].children;
        for (var j = 0; j < childList.length; j++) {
            if (childId == childList[j].id) {
                return relations[i].id;
            } else {
                var parentId = getParentLocationId(childId, childList);
                if (parentId != null) {
                    return parentId;
                }
            }
        }
    }
    return null;
}    