﻿var MotosCountDown = 0;
var loopCounter = 0

function MotorsB() {
    MotosCountDown--;
    if (MotosCountDown == 0) {
        document.getElementById(MotorsUiClientUpdate).click();
        document.getElementById('JsUpdating').style.visibility = 'visible';
    } else if (MotosCountDown > 0) {
        setTimeout("MotorsB();", 10);
    }
}
function MotorsAd() {
    MotosCountDown = 800;
    MotorsB();
}
//Record the number of characters the user has typed into a field
function CountChars(field, count) {
    var f = document.getElementById(MotorsPrefix + field);
    var c = document.getElementById(MotorsPrefix + count);
    c.innerHTML = f.value.length;
}
function Select(i) {
    i.select();
}
function BindMotorWordCount() {
    var clientID = MotorsUiAdditionalText;
    var textbox = document.getElementById(clientID);
    var sentenceSplit = jQuery.trim(textbox.value).split('.');
    var numWords = 0
    for (i = 0; i < sentenceSplit.length; i++) {
        numWords = numWords + parseInt(jQuery.trim(sentenceSplit[i]).split(' ').length);
    }
    if (textbox.value == '') {
        numWords = 0
    }
    document.getElementById(clientID + 'Count').innerHTML = 'Word Count: ' + numWords;
}
function loadStartingDropDowns() {
    getMakes();
    getFuelTypes();
    getYears();
}
function WSCallFailed(functionName) {
    if (loopCounter <= 10) {
        loopCounter++;
        //Lets try again
        if (functionName == 'makes') {
            setTimeout("getMakes();", 100)
        }
        else if (functionName == 'models') {
            setTimeout("getModels();", 100)
        }
        else if (functionName == 'trims') {
            setTimeout("getTrims();", 100)
        }
        else if (functionName == 'enginesize') {
            setTimeout("getEngineSizes();", 100)
        }
        else if (functionName == 'bodytype') {
            setTimeout("getBodyTypes();", 100)
        }
        else if (functionName == 'doors') {
            setTimeout("getDoors();", 100)
        }
        else if (functionName == 'fuels') {
            setTimeout("getFuelTypes();", 100)
        }
        else if (functionName == 'years') {
            setTimeout("getYears();", 100)
        }
        else if (functionName == 'regs') {
            setTimeout("getRegistrations();", 100)
        }
    }
}
function getMakes() {
    $.ajax({
        type: "POST",
        url: "WebServices/MotorsConfig.asmx/GetMakes",
        data: "{}",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function(response) {
            var makes = (typeof response.d) == 'string' ? eval('(' + response.d + ')') : response.d;
            $('#' + MotorsUiMake).attr('disabled', false).change(getModels).removeOption(/./).addOption('', ' -- Select Make -- ');
            $('#' + MotorsUiModel).attr('disabled', true).removeOption(/./);
            $('#' + MotorsUiTrim).attr('disabled', true).removeOption(/./);
            $('#' + MotorsUiEngineSize).attr('disabled', true).removeOption(/./);
            $('#' + MotorsUiBodyType).attr('disabled', true).removeOption(/./);
            $('#' + MotorsUiDoors).attr('disabled', true).removeOption(/./);
            var make
            if (document.getElementById(MotorsUiChosenMake).value != "") {
                make = document.getElementById(MotorsUiChosenMake).value;
            }
            else if (classificationName != "") {
                make = classificationName;
            }
            var makeFound = 0;
            for (var i = 0; i < makes.length; i++) {
                var val = makes[i];
                var text = makes[i];
                if (make == val) {
                    $('#' + MotorsUiMake).addOption(val, text, true);
                    makeFound = 1;
                }
                else {
                    $('#' + MotorsUiMake).addOption(val, text, false);
                }
            }
            if (makeFound == 1) {
                $('#' + MotorsUiMake).selectOptions(make);
                getModels();
            }
        },
        error: function(response) {
            WSCallFailed('makes');
        }
    });
} function getModels() {
    $('#' + MotorsUiModel).addOption("Loading", "Loading", true);
    $.ajax({
        type: "POST",
        url: "WebServices/MotorsConfig.asmx/GetModels",
        data: "{make: '" + $('#' + MotorsUiMake).val() + "'}",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function(response) {
            var models = (typeof response.d) == 'string' ? eval('(' + response.d + ')') : response.d;
            $('#' + MotorsUiModel).attr('disabled', false).change(getTrims).removeOption(/./).addOption('', ' -- Select Model -- ');
            $('#' + MotorsUiTrim).attr('disabled', true).removeOption(/./);

            $('#' + MotorsUiEngineSize).attr('disabled', true).removeOption(/./);
            $('#' + MotorsUiBodyType).attr('disabled', true).removeOption(/./);
            $('#' + MotorsUiDoors).attr('disabled', true).removeOption(/./);

            var selectedMake = $('#' + MotorsUiMake).val()

            if (document.getElementById(MotorsUiChosenMake).value != selectedMake && selectedMake != "Loading") {
                document.getElementById(MotorsUiChosenTrim).value = "";
                document.getElementById(MotorsUiChosenEngineSize).value = "";
                document.getElementById(MotorsUiChosenBodyType).value = "";
                document.getElementById(MotorsUiChosenDoors).value = "";
                document.getElementById(MotorsUiChosenMake).value = selectedMake;
                MotorsAd();
            }
            var model
            if (document.getElementById(MotorsUiChosenModel).value != "") {
                model = document.getElementById(MotorsUiChosenModel).value;
            }

            var modelFound = 0;
            for (var i = 0; i < models.length; i++) {
                var val = models[i];
                var text = models[i];
                if (model == val) {
                    $('#' + MotorsUiModel).addOption(val, text, true);
                    modelFound = 1;
                }
                else {
                    $('#' + MotorsUiModel).addOption(val, text, false);
                }

            }
            if (modelFound == 1) {
                $('#' + MotorsUiModel).selectOptions(model);
                getTrims();
            }
        },
        error: function(response) {
            WSCallFailed('models');
        }
    });
}
function getTrims() {
    $('#' + MotorsUiTrim).addOption("Loading", "Loading", true);
    $.ajax({
        type: "POST",
        url: "WebServices/MotorsConfig.asmx/GetTrims",
        data: "{make: '" + $('#' + MotorsUiMake).val() + "', model: '" + $('#' + MotorsUiModel).val() + "'}",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function(response) {
            var models = (typeof response.d) == 'string' ? eval('(' + response.d + ')') : response.d;
            $('#' + MotorsUiTrim).attr('disabled', false).change(getEngineSizes).removeOption(/./).addOption('', ' -- Select Trim -- ');
            $('#' + MotorsUiEngineSize).attr('disabled', true).removeOption(/./);
            $('#' + MotorsUiBodyType).attr('disabled', true).removeOption(/./);
            $('#' + MotorsUiDoors).attr('disabled', true).removeOption(/./);
            var selectedModel = $('#' + MotorsUiModel).val()
            if (document.getElementById(MotorsUiChosenModel).value != selectedModel && selectedModel != "Loading") {
                document.getElementById(MotorsUiChosenEngineSize).value = "";
                document.getElementById(MotorsUiChosenBodyType).value = "";
                document.getElementById(MotorsUiChosenDoors).value = "";
                document.getElementById(MotorsUiChosenModel).value = selectedModel;
                MotorsAd();
            }
            var trim
            if (document.getElementById(MotorsUiChosenTrim).value != "") {
                trim = document.getElementById(MotorsUiChosenTrim).value;
            }

            var trimFound = 0;
            for (var i = 0; i < models.length; i++) {
                var val = models[i];
                var text = models[i];
                if (trim == val) {
                    $('#' + MotorsUiTrim).addOption(val, text, true);
                    trimFound = 1;
                }
                else {
                    $('#' + MotorsUiTrim).addOption(val, text, false);
                }
            }
            if (trimFound == 1) {
                $('#' + MotorsUiTrim).selectOptions(trim);
                getEngineSizes();
            }
        },
        error: function(response) {
            WSCallFailed('trims');
        }
    });
}
function getEngineSizes() {
    $('#' + MotorsUiEngineSize).addOption("Loading", "Loading", true);
    $.ajax({
        type: "POST",
        url: "WebServices/MotorsConfig.asmx/GetEngineSizes",
        data: "{make: '" + $('#' + MotorsUiMake).val() + "', model: '" + $('#' + MotorsUiModel).val() + "', trim: '" + $('#' + MotorsUiTrim).val() + "'}",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function(response) {
            var models = (typeof response.d) == 'string' ? eval('(' + response.d + ')') : response.d;
            $('#' + MotorsUiEngineSize).attr('disabled', false).change(getBodyTypes).removeOption(/./).addOption('', ' -- Select Engine Size -- ');
            $('#' + MotorsUiBodyType).attr('disabled', true).removeOption(/./);
            $('#' + MotorsUiDoors).attr('disabled', true).removeOption(/./);

            var selectedTrim = $('#' + MotorsUiTrim).val();

            if (document.getElementById(MotorsUiChosenTrim).value != selectedTrim && selectedTrim != "Loading") {
                document.getElementById(MotorsUiChosenBodyType).value = "";
                document.getElementById(MotorsUiChosenDoors).value = "";
                document.getElementById(MotorsUiChosenTrim).value = selectedTrim;
                MotorsAd();
            }
            var enginesize
            if (document.getElementById(MotorsUiChosenEngineSize).value != "") {
                enginesize = document.getElementById(MotorsUiChosenEngineSize).value;
            }
            var engineSizeFound = 0;
            for (var i = 0; i < models.length; i++) {
                var val = models[i];
                var text = models[i];
                if (enginesize == val) {
                    $('#' + MotorsUiEngineSize).addOption(val, text, true);
                    engineSizeFound = 1;
                }
                else {
                    $('#' + MotorsUiEngineSize).addOption(val, text, false);
                }
            }
            if (engineSizeFound == 1) {
                $('#' + MotorsUiEngineSize).selectOptions(enginesize);
                getBodyTypes();
            }
        },
        error: function(response) {
            WSCallFailed('enginesizes');
        }
    });
}
function getBodyTypes() {
    $('#' + MotorsUiBodyType).addOption("Loading", "Loading", true);
    $.ajax({
        type: "POST",
        url: "WebServices/MotorsConfig.asmx/GetBodyTypes",
        data: "{make: '" + $('#' + MotorsUiMake).val() + "', model: '" + $('#' + MotorsUiModel).val() + "', trim: '" + $('#' + MotorsUiTrim).val() + "', enginesize: '" + $('#' + MotorsUiEngineSize).val() + "'}",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function(response) {
            var models = (typeof response.d) == 'string' ? eval('(' + response.d + ')') : response.d;
            $('#' + MotorsUiBodyType).attr('disabled', false).change(getDoors).removeOption(/./).addOption('', ' -- Select Body Type -- ');
            $('#' + MotorsUiDoors).attr('disabled', true).removeOption(/./);

            var selectedEngineSize = $('#' + MotorsUiEngineSize).val();

            if (document.getElementById(MotorsUiChosenEngineSize).value != selectedEngineSize && selectedEngineSize != "Loading") {
                document.getElementById(MotorsUiChosenDoors).value = "";
                document.getElementById(MotorsUiChosenEngineSize).value = selectedEngineSize;
                MotorsAd();
            }
            var bodytype
            if (document.getElementById(MotorsUiChosenBodyType).value != "") {
                bodytype = document.getElementById(MotorsUiChosenBodyType).value;
            }
            var bodyTypeFound = 0;
            for (var i = 0; i < models.length; i++) {
                var val = models[i];
                var text = models[i];
                if (bodytype == val) {
                    $('#' + MotorsUiBodyType).addOption(val, text, true);
                    bodyTypeFound = 1;
                }
                else {
                    $('#' + MotorsUiBodyType).addOption(val, text, false);
                }
            }
            if (bodyTypeFound == 1) {
                $('#' + MotorsUiBodyType).selectOptions(bodytype);
                getDoors();
            }
        },
        error: function(response) {
            WSCallFailed('bodytypes');
        }
    });
}
function getDoors() {
    $('#' + MotorsUiDoors).addOption("Loading", "Loading", true);
    $.ajax({
        type: "POST",
        url: "WebServices/MotorsConfig.asmx/GetDoors",
        data: "{make: '" + $('#' + MotorsUiMake).val() + "', model: '" + $('#' + MotorsUiModel).val() + "', trim: '" + $('#' + MotorsUiTrim).val() + "', enginesize: '" + $('#' + MotorsUiEngineSize).val() + "', bodytype: '" + $('#' + MotorsUiBodyType).val() + "'}",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function(response) {
            var models = (typeof response.d) == 'string' ? eval('(' + response.d + ')') : response.d;
            $('#' + MotorsUiDoors).attr('disabled', false).change(updateDoorsField).removeOption(/./).addOption('', ' -- Select Doors -- ');

            var selectedBodyType = $('#' + MotorsUiBodyType).val();

            if (document.getElementById(MotorsUiChosenBodyType).value != selectedBodyType && selectedBodyType != "Loading") {
                document.getElementById(MotorsUiChosenBodyType).value = selectedBodyType;
                MotorsAd();
            }

            if (document.getElementById(MotorsUiChosenDoors).value != "") {
                var doors = document.getElementById(MotorsUiChosenDoors).value;
            }

            for (var i = 0; i < models.length; i++) {
                var val = models[i];
                var text = models[i];
                if (doors == val) {
                    $('#' + MotorsUiDoors).addOption(val, text, true);
                }
                else {
                    $('#' + MotorsUiDoors).addOption(val, text, false);
                }
            }
        },
        error: function(response) {
            WSCallFailed('doors');
        }
    });
}

function updateDoorsField() {
    var selectedDoors = $('#' + MotorsUiDoors).val();
    if (document.getElementById(MotorsUiChosenDoors).value != selectedDoors && selectedDoors != "Loading") {
        document.getElementById(MotorsUiChosenDoors).value = selectedDoors;
        MotorsAd();
    }
}
function getRegistrations() {
    $('#' + MotorsUiRegistration).addOption("Loading", "Loading", true);
    $.ajax({
        type: "POST",
        url: "WebServices/MotorsConfig.asmx/GetRegistrations",
        data: "{year: '" + $('#' + MotorsUiYear).val() + "'}",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function(response) {
            var models = (typeof response.d) == 'string' ? eval('(' + response.d + ')') : response.d;
            $('#' + MotorsUiRegistration).attr('disabled', false).change(updateRegistrationField).removeOption(/./).addOption('', ' -- Select Registration -- ');
            var selectedYear = $('#' + MotorsUiYear).val();
            if (document.getElementById(MotorsUiChosenYear).value != selectedYear && selectedYear != "Loading") {
                document.getElementById(MotorsUiChosenRegistration).value = "";
                document.getElementById(MotorsUiChosenYear).value = selectedYear;
                MotorsAd();
            }
            if (document.getElementById(MotorsUiChosenRegistration).value != "") {
                var reg = document.getElementById(MotorsUiChosenRegistration).value;
            }

            for (var i = 0; i < models.length; i++) {
                var val = models[i];
                var text = models[i];
                if (reg == val) {
                    $('#' + MotorsUiRegistration).addOption(val, text, true);
                }
                else {
                    $('#' + MotorsUiRegistration).addOption(val, text, false);
                }
            }
        },
        error: function(response) {
            WSCallFailed('regs');
        }
    });
}
function updateRegistrationField() {
    document.getElementById(MotorsUiChosenRegistration).value = $('#' + MotorsUiRegistration).val();
    MotorsAd();
}
function getYears() {
    $('#' + MotorsUiYear).addOption("Loading", "Loading", true);
    $.ajax({
        type: "POST",
        url: "WebServices/MotorsConfig.asmx/GetYears",
        data: "{}",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function(response) {
            var models = (typeof response.d) == 'string' ? eval('(' + response.d + ')') : response.d;
            $('#' + MotorsUiYear).attr('disabled', false).change(getRegistrations).removeOption(/./).addOption('', ' -- Select Year -- ');
            $('#' + MotorsUiRegistration).attr('disabled', true).removeOption(/./);
            if (document.getElementById(MotorsUiChosenYear).value != "") {
                var year = document.getElementById(MotorsUiChosenYear).value;
            }
            for (var i = 0; i < models.length; i++) {
                var val = models[i];
                var text = models[i];
                if (year == val) {
                    $('#' + MotorsUiYear).addOption(val, text, true);
                    getRegistrations()
                }
                else {
                    $('#' + MotorsUiYear).addOption(val, text, false);
                }
            }
        },
        error: function(response) {
            WSCallFailed('years');
        }
    });
}
function getFuelTypes() {
    $('#' + MotorsUiFuel).addOption("Loading", "Loading", true);
    $.ajax({
        type: "POST",
        url: "WebServices/MotorsConfig.asmx/GetFuelTypes",
        data: "{}",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function(response) {
            var models = (typeof response.d) == 'string' ? eval('(' + response.d + ')') : response.d;
            $('#' + MotorsUiFuel).attr('disabled', false).change(updateFuelField).removeOption(/./).addOption('', ' -- Select Fuel -- ');

            if (document.getElementById(MotorsUiChosenFuel).value != "") {
                var fuel = document.getElementById(MotorsUiChosenFuel).value;
            }
            for (var i = 0; i < models.length; i++) {
                var val = models[i];
                var text = models[i];
                if (fuel == val) {
                    $('#' + MotorsUiFuel).addOption(val, text, true);
                }
                else {
                    $('#' + MotorsUiFuel).addOption(val, text, false);
                }
            }
        },
        error: function(response) {
            WSCallFailed('fuels');
        }
    });
}
function updateFuelField() {
    document.getElementById(MotorsUiChosenFuel).value = $('#' + MotorsUiFuel).val();
    MotorsAd();
}
