Changing game states

I’m trying to change the game states of my game. When gameState = 0, it is the intro screen, when it is 1, it is the actual game, when it is 2, it is the repair screen,and when it is 3, it is the game over screen. I can go from the intro to the game screen easy, but when i try to add the game state change to a timer function it does not work. Please help me…I’m right there at the brink of being finished with this thing! Thanks a million.

//===========================================================
//PROTOTYPE
//===========================================================

package {
    import flash.display.*;
    import flash.events.*;
    import flash.utils.Timer;

    public class nHarden_project_3 extends MovieClip {
        //background variables
        private var atmosphere:MovieClip = new Atmosphere();
        private var bg:Bg;
        private var bgPosX:Number = 250;
        private var bgPosY:Number = 200;
        //game state count
        private var gameStateCount:uint;
        //test planet variables
        private var planet:Planet = new Planet();
        private var testPlanet:Planet = new Planet();
        //building variables
        private var building_1:Building_1 = new Building_1();
        private var building_2:Building_2 = new Building_2();
        private var building_3:Building_3 = new Building_3();
        //meteor variables
        private var newMeteor:Meteor;
        private var meteorArray:Array = new Array();
        //timer variables
        private var timerBar:TimerBar = new TimerBar();
        private var counter:Number = 1;
        private var time:Number = 1500;
        private var delay:Number = 10;
        private var timer:Timer = new Timer(delay);
        //screen variables
        var introScreen:MovieClip = new IntroScreen();

        public function nHarden_project_3() {
            init();
        }

        private function init():void {
            //adding in the background
            bg = new Bg();
            bg.x = bgPosX;
            bg.y = bgPosY;
            addChild(bg);
            
            gameStateCount = 0;
            checkGameState(gameStateCount);
        }
        //=====================================================
        //CHECK THE GAME STATE
        //=====================================================
        private function checkGameState(gState){
            if (gState == 0){
                introState();
            }else if (gState == 1){
                gameState(gState);
            }else if (gState == 2){
                repairState();
            }else if (gState == 3){
                gameOverState(gState);
            }
        }
        
        //======================================================
        //INTRO SCREEN
        //======================================================
        private function introState(){
            
            introScreen.x = 260;
            introScreen.y = 190;
            addChild(introScreen);
            
            introScreen.begin_btn.buttonMode = true;
            introScreen.begin_btn.addEventListener(MouseEvent.CLICK, onBegin);
        }
        
        private function onBegin(gState1:uint){
            removeChild(introScreen);
            gState1 = 1;
            checkGameState(gState1);
        }
        
        //-------------------------------------------------------------------------
        // GAME SCREEN CODE
        //-------------------------------------------------------------------------
        private function gameState(gState:uint){
            gState = 1;
            addChild(bg);
            //start the timer
            timer.addEventListener(TimerEvent.TIMER, gameTimer)
            stage.addEventListener(Event.ENTER_FRAME, checkGameState);
            gameScreen();
        }
        
        private function gameScreen() {
            var midPosX:Number = 250;
            var midPosY:Number = 200;
            
            atmosphere.x = midPosX;
            atmosphere.y = midPosY;
            
            building_1.rotation = 15;
            building_2.rotation = 103;
            building_3.rotation = 223;
            testPlanet.x = midPosX;
            testPlanet.y = midPosY;
            planet.x = midPosX;
            planet.y = midPosY;
            
            addChild(atmosphere);
            addChild(testPlanet);
            addChild(planet);
            planet.addChild(building_1);
            planet.addChild(building_2);
            planet.addChild(building_3);
            
            timerBar.x = 0;
            timerBar.y = 400;
            addChild(timerBar);
            timer.start();
                        
            //call function to get random x and y points off of the stage for meteor
            randMeteorCoordinates(-100, 0, 501, 601, -100, 0, 401, 501);
            //check to make a new meteor
            stage.addEventListener(Event.ENTER_FRAME, checkOnMeteors);
        }

        // ----------create meteor code
        private function createMeteor(randX, randY) {
            newMeteor = new Meteor();
            newMeteor.x = randX;
            newMeteor.y = randY;
            newMeteor.angleRad = Math.atan2(planet.y - newMeteor.y, planet.x - newMeteor.x);

            addChild(newMeteor);
            meteorArray.push(newMeteor);
            
            newMeteor.addEventListener(Event.ENTER_FRAME, moveMeteor);
        }

        // ---------move meteor toward planet and when it entered atmosphere, create another meteor
        private function moveMeteor(e:Event):void {
            var atmosDx:Number = newMeteor.x - atmosphere.x;
            var atmosDy:Number = newMeteor.y - atmosphere.y;
            
            e.currentTarget.x += Math.cos(e.currentTarget.angleRad) * e.currentTarget.meteorSpeed;
            e.currentTarget.y += Math.sin(e.currentTarget.angleRad) * e.currentTarget.meteorSpeed;
            e.currentTarget.atmosDist = Math.sqrt(atmosDx * atmosDx + atmosDy * atmosDy);
        }

        private function checkOnMeteors(e:Event):void {
            for (var k:uint = 0; k < meteorArray.length; k++){
                var planDx:Number = meteorArray[k].x - testPlanet.x;
                var planDy:Number = meteorArray[k].y - testPlanet.y;
                meteorArray[k].planDist = Math.sqrt(planDx * planDx + planDy * planDy);
                
                //check if meteor hits the planet
                if (meteorArray[k].planDist < meteorArray[k].diameter / 2 + testPlanet.width / 2){
                    meteorArray[k].isDestroyed = true;
                }
                //check if meteor hits any of the buildings
                if (meteorArray[k].hitTestObject(building_1)){
                    building_1.setMeteorArray(new Array(meteorArray[k]));
                    meteorArray[k].isDestroyed = true;
                    building_1.i**** = true;
                }
                if (meteorArray[k].hitTestObject(building_2)){
                    building_2.setMeteorArray(new Array(meteorArray[k]));
                    meteorArray[k].isDestroyed = true;
                    building_2.i**** = true;
                }
                if (meteorArray[k].hitTestObject(building_3)){
                    building_3.setMeteorArray(new Array(meteorArray[k]));
                    meteorArray[k].isDestroyed = true;
                    building_3.i**** = true;
                }
                //check if meteor enters the atmosphere
                if (meteorArray[k].atmosDist < meteorArray[k].diameter / 2 + atmosphere.width / 2){
                    meteorArray[k].enteredAtmosphere = true;
                    if (meteorArray[k].enteredAtmosphere == true){
                        randMeteorCoordinates(-200, 0, 201, 601, -100, 0, 401, 501);
                    }
                }
                
                //remove the destroyed meteor from the stage and array
                if (meteorArray[k].isDestroyed == true){
                    removeChild(meteorArray[k]);
                    meteorArray.splice(k, 1);
                }
            }
        }
        
        private function randMeteorCoordinates( xLow:Number, xLMid:Number, xHMid:Number, xHigh:Number, yLow:Number, yLMid:Number, yHMid:Number, yHigh:Number ):Number {
            var xRange:Number = (xLMid - xLow) + (xHigh - xHMid);
            var yRange:Number = (yLMid - yLow) + (yHigh - yHMid);

            xRange *= Math.random();
            yRange *= Math.random();

            xRange += xLow;
            yRange += yLow;
            
            if (xRange > xLMid) {
                xRange += xHMid - xLMid;
            }

            if (yRange > yLMid) {
                yRange += yHMid - yLMid;
            }

            createMeteor(xRange, yRange);

            return xRange;
            return yRange;
        }
        
        //================================================
        //REPAIR SCREEN CODE
        //================================================
        private function repairState(){
            trace ("on repair state");
            //stop the new meteor from moving and remove it
            newMeteor.removeEventListener(Event.ENTER_FRAME, moveMeteor);
            removeChild(newMeteor);
            //remove all meteors from the stage and array
            for (var k:uint = 0; k < meteorArray[k].length; k++){
                removeChild(meteorArray[k]);
                meteorArray.splice(0, meteorArray.length);
            }
            building_1.isBeingRepaired = true;
            building_2.isBeingRepaired = true;
            building_3.isBeingRepaired = true;
        }
        
        private function gameTimer(e:TimerEvent):void{
            timerBar.width = counter/3;
                if(counter >= time){
                    counter = 1;
                    if(gameState == 2){
                        building_1.isBeingRepaired = false;
                        building_2.isBeingRepaired = false;
                        building_3.isBeingRepaired = false;
                        checkGameState(1);
                    }else if (gameState == 1){
                        checkGameState(2);
                    }
                }
            counter ++;
        }
    }
}