﻿Type.registerNamespace('RIV.Web');

RIV.Web.Recall = function(oArgs) {
    _service = oArgs.service;
    _root = oArgs.root;
    _ctrlVehicle = oArgs.ctrlVehicle;
    _ctrlMfr = oArgs.ctrlMfr;
    _ctrlYears = oArgs.ctrlYears;
    _defaultContent = oArgs.defaultContent;
    _defaultContentMfr = oArgs.defaultContentMfr;
    _divId = oArgs.divId;
    _language = oArgs.language;
    _notFoundMsg = oArgs.notFoundMsg;
    _timeoutMsg = oArgs.timeoutMsg;
    _waitMsg = oArgs.waitMsg;
    _vehDefaultItem = oArgs.vehDefaultItem;
    _mfrDefaultItem = oArgs.mfrDefaultItem;
    _ctrlVehicle.recall = this;
    _ctrlMfr.recall = this;

    _ctrlVehicle.onchange = function() {


        var selectedIndex = _ctrlVehicle.selectedIndex;

        if (selectedIndex == 0) {
            this.recall.getManufacturers();
        }
        else {
            var vtype = parseInt(_ctrlVehicle.options[selectedIndex].value);
            var vtext = _ctrlVehicle.options[selectedIndex].text;

            this.recall.getManufacturersByVehicle(vtype, vtext);
            if (_ctrlYears) {
                var yr = 0;
                var selYr = _ctrlYears.options[_ctrlYears.selectedIndex].value;
                var endYear = new Date().getFullYear() - 15;

                if (vtext == 'Buses' || vtext == 'School Buses' || vtext == 'Autobus' || vtext == 'Autobus scolaires') {
                    endYear = 1971;
                }
                _ctrlYears.options.length = 1;
                for (yr = new Date().getFullYear() + 1; yr >= endYear; yr--) {
                    var newopt = document.createElement("OPTION");
                    newopt.text = yr;
                    newopt.value = yr;
                    _ctrlYears.options.add(newopt);
                    if (yr == selYr)
                        _ctrlYears.selectedIndex = newopt.index;
                }
            }
        }
    }


    /*


        if (selectedIndex == 0) {
    this.recall.getManufacturersByVehicle(-1, "");
    if (_ctrlMfr.selectedIndex == 0) {
    this.recall.resetV();
    this.recall.showDefaultContent();
    }
    this.recall.getManufacturers();
    } else {
    var vtype = parseInt(_ctrlVehicle.options[selectedIndex].value);
    this.recall.getManufacturersByVehicle(vtype, _ctrlVehicle.options[selectedIndex].text);
    this.recall.showDefaultContentMfr();
    }
    }
    */

    _ctrlMfr.onchange = function() {
        var selectedIndex = _ctrlMfr.selectedIndex;

        if (selectedIndex == 0) {
            this.recall.resetM();
            if (_ctrlVehicle.selectedIndex == 0)
                this.recall.showDefaultContent();
            else
                this.recall.showDefaultContentMfr();
        } else {
            var mtype = parseInt(_ctrlMfr.options[selectedIndex].value);
            this.recall.showContactInfo(mtype);
        }
    }
}

RIV.Web.Recall.prototype = {
    init: function() {
        this.getVehicles();
        this.showDefaultContent();
    },

    getVehicles: function() {
    
        _ctrlVehicle.options[0] = new Option(_waitMsg, '-1');
        _ctrlVehicle.disabled = 'true';
        _service.GetVehicleTypes(
            _language,
            function(data) {
                RIV.Web.Recall.locLoadVehicleTypes(data);
            },
            function() { }
         );
    },

    getManufacturers: function() {

        RIV.Web.Recall.locResetManufacturers();

        _service.GetManufacturers(
            function(data) {
                RIV.Web.Recall.locLoadManufacturers(data);
            },
            function() { });
    },

    getManufacturersByVehicle: function(vehicleType, vehicleTypeText) {

        RIV.Web.Recall.locResetManufacturers();

        _service.GetManufacturersByVehicle(
            vehicleType,
            vehicleTypeText,
            function(data) {
                RIV.Web.Recall.locLoadManufacturers(data);
            },
            function() { });
    },

    showContactInfo: function(manufacturerID) {
        _service.GetContactInfo(
            manufacturerID,
            _language,
            function(data) {
                if (data == '')
                    RIV.Web.Recall.locShowContent(_notFoundMsg);
                else {
                    RIV.Web.Recall.locShowContent(data);
                }
            },
            function() { });
    },

    openMfrWindow: function() {
        window.open(_root + _language + '/RecallClearanceMfr.aspx', '', 'toolbar=yes,scrollbars=yes,width=650,height=710,left=75,top=75');
    },

    resetM: function() {
        _service.ResetManufacturer(
            function(data) { },
            function() { });
    },

    resetV: function() {
        _service.ResetVehicle(
            function(data) { },
            function() { });
    },

    showDefaultContent: function() {
        RIV.Web.Recall.locShowContent(_defaultContent)
    },

    showDefaultContentMfr: function() {
        RIV.Web.Recall.locShowContent(_defaultContentMfr)
    }
}

RIV.Web.Recall.locLoadVehicleTypes = function(data) {
    _ctrlVehicle.remove(0);
    _ctrlVehicle.options[0] = new Option(_vehDefaultItem, '0');

    var selectedIndex = 0;

    for (var i = 0; i < data.length; ++i) {
        if (data[i].IsSelected)
            selectedIndex = i + 1;

        _ctrlVehicle.options[_ctrlVehicle.length] = new Option(data[i].Name, data[i].Value);
    }

    if (selectedIndex > 0) {
        var vtype = parseInt(_ctrlVehicle.options[selectedIndex].value);
        var vtext = _ctrlVehicle.options[selectedIndex].text;

        _ctrlVehicle.recall.getManufacturersByVehicle(vtype, vtext);
        if (_ctrlYears) {
            var yr = 0;
            var selYr = _ctrlYears.options[_ctrlYears.selectedIndex].value;
            var endYear = new Date().getFullYear() - 15;

            if (vtext == 'Buses' || vtext == 'School Buses' || vtext == 'Autobus' || vtext == 'Autobus scolaires') {
                endYear = 1971;
            }
            _ctrlYears.options.length = 1;
            for (yr = new Date().getFullYear() + 1; yr >= endYear; yr--) {
                var newopt = document.createElement("OPTION");
                newopt.text = yr;
                newopt.value = yr;
                _ctrlYears.options.add(newopt);
                if (yr == selYr)
                    _ctrlYears.selectedIndex = newopt.index;
            }
        }
    } else {
        _ctrlVehicle.recall.getManufacturers();
    }

    _ctrlVehicle.selectedIndex = selectedIndex;
}

RIV.Web.Recall.locLoadManufacturers = function(data) {
    _ctrlVehicle.disabled = false;
    _ctrlMfr.disabled = false;
    _ctrlMfr.remove(0);
    _ctrlMfr.options[0] = new Option(_mfrDefaultItem, '0');

    var selectedIndex = 0;

    if (data.length > 0) {
        for (var i = 0; i < data.length; ++i) {
            if (data[i].IsSelected)
                selectedIndex = i + 1;

            _ctrlMfr.options[_ctrlMfr.length] = new Option(data[i].Name, data[i].Value);
        }

        if (selectedIndex > 0) {
            var mtype = parseInt(_ctrlMfr.options[selectedIndex].value);
            _ctrlMfr.recall.showContactInfo(mtype);
        }
    } else {
        RIV.Web.Recall.locShowContent(_notFoundMsg);
    }

    _ctrlMfr.selectedIndex = selectedIndex;
}

RIV.Web.Recall.locResetManufacturers = function() {
    while (_ctrlMfr.length > 0)
        _ctrlMfr.remove(0);

    _ctrlMfr.options[0] = new Option(_waitMsg, '-1');
    _ctrlMfr.selectedIndex = 0;
    _ctrlMfr.disabled = true;
}

RIV.Web.Recall.locShowContent = function(html) {
    if (!(_divId && html))
        return;
        
    var div = $get(_divId);

    if (div != null) {
        div.innerHTML = html;
    }
}

RIV.Web.Recall.registerClass('RIV.Web.Recall');

if (typeof (Sys) !== 'undefined') Sys.Application.notifyScriptLoaded();
