﻿/* ********************************************************** */
/* Initialise tab manager                                     */        
/* ********************************************************** */
(function () {

    // Add tab to the tab manager.
    if (!ECBCalculator.tabManager.tab2) {
        var tab = ECBCalculatorTab( { index: 1, validationGroupCount: 6 } );
        ECBCalculator.tabManager.addTab(tab);
        ECBCalculator.tabManager.tab2 = tab;
    }
            
})();

/* ********************************************************** */
/* Initialise tab                                             */        
/* ********************************************************** */
(function() {

    /* *************************************** */
    /*  Tab2Panel1                             */
    /* *************************************** */

    /* Control group toggling */
    if (typeof ECBCalculator.tabManager.tab2.toggleBasementOrCellar !== 'function') {
        ECBCalculator.tabManager.tab2.toggleBasementOrCellar = function(index) {
            // Toggle input control state.
            var validatorState = (index === 0 ? true : false);
            ECBCalculator.toggleInputControlState('_t2p1_BasementHeatingLevel', validatorState, true);

            // Toggle visibility state.
            var visibilityState = (index === 0 ? true : false);
            KeaneUtils.toggleVisibilityState('_t2p1_div8', visibilityState);
        };
    }

    /* Control group toggling */
    if (typeof ECBCalculator.tabManager.tab2.toggleAtticFloorOrRoof !== 'function') {
        ECBCalculator.tabManager.tab2.toggleAtticFloorOrRoof = function(index) {
            // Toggle input control state.
            var validatorState = (index === 0 ? true : false);
            ECBCalculator.toggleInputControlState('_t2p1_AtticFloorHeatingLevel', validatorState, true);

            // Toggle visibility state.
            var visibilityState = (index === 0 ? true : false);
            KeaneUtils.toggleVisibilityState('_t2p1_div12', visibilityState);
        };
    }

    /* ********************************************** */
    // Toggling Panel3. When roof is flat -> no Attic
    /* ********************************************** */

    /* Roof type change event handler. */
    if (typeof ECBCalculator.tabManager.tab2.onRoofTypeChange !== 'function') {
        ECBCalculator.tabManager.tab2.onRoofTypeChange = function(roofTypeAsString) {
            if (roofTypeAsString) {
                // Derive building type.
                var roofType = parseInt(roofTypeAsString);
                // Toggle input control state.
                var validatorState = (roofType !== 1 ? true : false);
                ECBCalculator.toggleInputControlState('_t2p3_AtticFloorConstructionType', validatorState, true);
                ECBCalculator.toggleInputControlState('_t2p3_AtticFloorRenovationYear', validatorState, true);
                ECBCalculator.toggleInputControlState('_t2p3_AtticFloorAdditionalInsulationThickness', validatorState, true);
                ECBCalculator.toggleInputControlState('_t2p3_AtticFloorAdditionalInsulationPercentage', validatorState, true);
                // Initialize renovation year.
                ECBCalculator.tabManager.tab2.initializeRenovationYear('_t2p3_AtticFloorRenovationYear', validatorState);
                // Toggle visibility state.
                var visibilityState = (roofType !== 1 && roofType !== 4 ? true : false);
                KeaneUtils.toggleVisibilityState('_t2p3Div', visibilityState);

                // issue 255
                var displayRoofRenovation = (roofType !== 2 ? true : false);
                ECBCalculator.toggleInputControlState('_t2p1_CorrectionFactorForRoofWindows', displayRoofRenovation);
                ECBCalculator.toggleInputControlState('_t2p2_HasRoofRenovated', displayRoofRenovation);
                KeaneUtils.toggleVisibilityState('_t2p1_div14', displayRoofRenovation);
                KeaneUtils.toggleVisibilityState('_t2p2_div2', displayRoofRenovation);
                if (!displayRoofRenovation) {
                    KeaneUtils.initIndexControl('_t2p2_HasRoofRenovated', 1);
                    ECBCalculator.tabManager.tab2.toggleHasRoofRenovated(1);
                }
            }
        };
    }

    /* *************************************** */
    /*  Tab2Panel2                             */
    /* *************************************** */

    /* Control group toggling */
    if (typeof ECBCalculator.tabManager.tab2.toggleHasRoofRenovated !== 'function') {
        ECBCalculator.tabManager.tab2.toggleHasRoofRenovated = function(index) {
            // Toggle input control state.
            var validatorState = (index === 0 ? true : false);
            ECBCalculator.toggleInputControlState('_t2p2_RoofRenovationYear', validatorState, true);
            ECBCalculator.toggleInputControlState('_t2p2_RoofAdditionalInsulationThickness', validatorState, true);
            ECBCalculator.toggleInputControlState('_t2p2_RoofAdditionalInsulationPercentage', validatorState, true);
            // Initialize renovation year.
            ECBCalculator.tabManager.tab2.initializeRenovationYear('_t2p2_RoofRenovationYear', validatorState);
            // Toggle visibility state.
            var visibilityState = (index === 0 ? true : false);
            KeaneUtils.toggleVisibilityState('_t2p2_div3', visibilityState);
            KeaneUtils.toggleVisibilityState('_t2p2_div4', visibilityState);
            KeaneUtils.toggleVisibilityState('_t2p2_div5', visibilityState);
        };
    }

    /* *************************************** */
    /*  Tab2Panel3                             */
    /* *************************************** */

    /* Control group toggling */
    if (typeof ECBCalculator.tabManager.tab2.toggleHasAtticFloorRenovated !== 'function') {
        ECBCalculator.tabManager.tab2.toggleHasAtticFloorRenovated = function(index) {
            // Toggle input control state.
            var validatorState = (index === 0 ? true : false);
            ECBCalculator.toggleInputControlState('_t2p3_AtticFloorRenovationYear', validatorState, true);
            ECBCalculator.toggleInputControlState('_t2p3_AtticFloorAdditionalInsulationThickness', validatorState, true);
            ECBCalculator.toggleInputControlState('_t2p3_AtticFloorAdditionalInsulationPercentage', validatorState, true);
            // Initialize renovation year.
            ECBCalculator.tabManager.tab2.initializeRenovationYear('_t2p3_AtticFloorRenovationYear', validatorState);
            // Toggle visibility state.
            var visibilityState = (index === 0 ? true : false);
            KeaneUtils.toggleVisibilityState('_t2p3_div3', visibilityState);
            KeaneUtils.toggleVisibilityState('_t2p3_div4', visibilityState);
            KeaneUtils.toggleVisibilityState('_t2p3_div5', visibilityState);
        };
    }

    /* *************************************** */
    /*  Tab2Panel4                             */
    /* *************************************** */

    /* Control group toggling */
    if (typeof ECBCalculator.tabManager.tab2.toggleHasExternalWallsRenovated !== 'function') {
        ECBCalculator.tabManager.tab2.toggleHasExternalWallsRenovated = function(index) {
            // Toggle input control state.
            var validatorState = (index === 0 ? true : false);
            ECBCalculator.toggleInputControlState('_t2p4_ExternalWallsRenovationYear', validatorState, true);
            ECBCalculator.toggleInputControlState('_t2p4_ExternalWallsAdditionalInsulationThickness', validatorState, true);
            ECBCalculator.toggleInputControlState('_t2p4_ExternalWallsAdditionalInsulationPercentage', validatorState, true);
            // Initialize renovation year.
            ECBCalculator.tabManager.tab2.initializeRenovationYear('_t2p4_ExternalWallsRenovationYear', validatorState);
            // Toggle visibility state.
            var visibilityState = (index === 0 ? true : false);
            KeaneUtils.toggleVisibilityState('_t2p4_div3', visibilityState);
            KeaneUtils.toggleVisibilityState('_t2p4_div4', visibilityState);
            KeaneUtils.toggleVisibilityState('_t2p4_div5', visibilityState);
        };
    }

    /* *************************************** */
    /*  Tab2Panel5                             */
    /* *************************************** */

    /* Control group toggling */
    if (typeof ECBCalculator.tabManager.tab2.toggleHasPartsNearEarthRenovated !== 'function') {
        ECBCalculator.tabManager.tab2.toggleHasPartsNearEarthRenovated = function(index) {
            // Toggle input control state.
            var validatorState = (index === 0 ? true : false);
            ECBCalculator.toggleInputControlState('_t2p5_PartsNearEarthRenovationYear', validatorState, true);
            ECBCalculator.toggleInputControlState('_t2p5_PartsNearEarthAdditionalInsulationThickness', validatorState, true);
            ECBCalculator.toggleInputControlState('_t2p5_PartsNearEarthAdditionalInsulationPercentage', validatorState, true);
            // Initialize renovation year.
            ECBCalculator.tabManager.tab2.initializeRenovationYear('_t2p5_PartsNearEarthRenovationYear', validatorState);
            // Toggle visibility state.
            var visibilityState = (index === 0 ? true : false);
            KeaneUtils.toggleVisibilityState('_t2p5_div3', visibilityState);
            KeaneUtils.toggleVisibilityState('_t2p5_div4', visibilityState);
            KeaneUtils.toggleVisibilityState('_t2p5_div5', visibilityState);
        };
    }

    /* *************************************** */
    /*  Tab2Panel6                             */
    /* *************************************** */

    /* Control group toggling */
    if (typeof ECBCalculator.tabManager.tab2.toggleHasWindowsRenovated !== 'function') {
        ECBCalculator.tabManager.tab2.toggleHasWindowsRenovated = function(index) {
            // Toggle input control state.
            var validatorState = (index === 0 ? true : false);
            ECBCalculator.toggleInputControlState('_t2p6_WindowsRenovationYear', validatorState, true);
            ECBCalculator.toggleInputControlState('_t2p6_WindowsRenovationPercentage', validatorState, true);
            ECBCalculator.toggleInputControlState('_t2p6_WindowsRenovationGlassPaneType', validatorState, true);
            ECBCalculator.toggleInputControlState('_t2p6_WindowsRenovationFrameType', validatorState, true);
            // Initialize renovation year.
            ECBCalculator.tabManager.tab2.initializeRenovationYear('_t2p6_WindowsYearOfBuilt', true);
            ECBCalculator.tabManager.tab2.initializeRenovationYear('_t2p6_WindowsRenovationYear', validatorState);
            // Toggle visibility state.
            var visibilityState = (index === 0 ? true : false);
            KeaneUtils.toggleVisibilityState('_t2p6_div7', visibilityState);
            KeaneUtils.toggleVisibilityState('_t2p6_div8', visibilityState);
            KeaneUtils.toggleVisibilityState('_t2p6_div9', visibilityState);
            KeaneUtils.toggleVisibilityState('_t2p6_div10', visibilityState);
        };
    }

    /* Initialize renovation year */
    if (typeof ECBCalculator.tabManager.tab2.initializeRenovationYear !== 'function') {
        ECBCalculator.tabManager.tab2.initializeRenovationYear = function(renovationYearControl, visibilityState) {
            if (visibilityState) {
                var controlConstYear = window['_t1p2_YearOfConstruction'];
                var controlRenovYear = window[renovationYearControl];
                if (controlConstYear !== null && controlRenovYear !== null && 
                    controlConstYear !== undefined && controlRenovYear !== undefined &&
                    controlRenovYear.GetValue() < controlConstYear.GetValue()) {
                    controlRenovYear.SetValue(controlConstYear.GetValue());
                }
            }
        };
    }

})();