//Augment Module
var ITW = (function(itw){
    "use strict";
    //aliases
    var managers, protot, _this, _super;
    itw.managers = itw.managers || Object.create(null);
    managers = itw.managers;

    //CONST
    var AIR_REP = 18;
    var AIR_DEP = 3;

    //privates - initialize on constructor function
    var _airContainer, _airBG, _airIcon;
    var _airHeader, _airLabel;
    var _air, _airCeil;
    var _airDangerTL;
    var _player;

    managers.AirManager = function( player ){
        this.super.call(this);
        _this = this;
        _super = _this.super;
        _player = player;

        var _init = function(){
            // init stuff here
            _this.jonah = null;

            _air = _airCeil = 100;

            _airContainer = new EHDI.aka.Container();
            _this.addChild( _airContainer );

            _airBG = new EHDI.aka.Sprite( EHDI.Assets.images[ "gfx_container" ] );
            _airContainer.addChild( _airBG );

            // _airHeader = new EHDI.aka.PixiText("AIR: ", {fontFamily: 'proximanova-black', fill: 0xFFFFFF, fontSize: 17});
            _airHeader = new EHDI.displays.TextSprite(EHDI.GAME.JSONMgr.getLocale("LBL_AIR_HEADER"));
            _airHeader.anchor.x = 0.5;
            _airHeader.anchor.y = 0.5;
            _airHeader.position.set( _airBG.width * 0.19, _airBG.height * 0.4 );
            _airContainer.addChild( _airHeader );

            // _airLabel = new EHDI.aka.PixiText("100", {fontFamily: 'proximanova-black', fill: 0xFFFFFF, fontSize: 36});
            _airLabel = new EHDI.displays.TextSprite(EHDI.GAME.JSONMgr.getLocale("AIR_FORMAT"));
            _airLabel.anchor.x = 0.5;
            _airLabel.anchor.y = 0.5;
            _airLabel.position.set( _airBG.width * 0.575, _airBG.height * 0.45 );
            _airContainer.addChild( _airLabel );

            _airIcon = new EHDI.aka.Sprite( EHDI.Assets.images[ "air_ico" ] );
            _airIcon.anchor.x = 0.5;
            _airIcon.anchor.y = 0.5;
            _airIcon.position.set( _airLabel.x + ( _airLabel.width * 0.95 ), _airLabel.y );
            _airContainer.addChild( _airIcon );

            _airDangerTL = new TimelineMax();
            _airDangerTL.to( _airLabel.scale, 0.1, {x: 1.4, y: 1.4} );
            _airDangerTL.to( _airLabel.scale, 0.1, {x: 1, y: 1} );
            _airDangerTL.pause();
        }
        _init();
    }

    protot = managers.AirManager.prototype = Object.create(EHDI.aka.Container.prototype);
    protot.constructor = managers.AirManager;
    protot.super = EHDI.aka.Container;

    protot.loop = function( dt ){
      if(!!_player.isDead) return;
        if( _player.getSurfaceStatus() === true ){
            _air += AIR_REP * dt;
            if( _air > 100 ) _air = 100;
        }
        else{
            _air -= AIR_DEP * dt;
            if( _air <= 0 ){
                _air = 0;
                _airLabel.text = "0";
                // ITW.GameMgr.setLoop("bg", false);
                ITW.GameMgr.setLoop("player", false);
                _player.animateDeath(false, function(){
                  ITW.DBoneFactory.enableClock = false;
                  ITW.GameMgr.setGameOver( true );
                });
                //ITW.DBoneFactory.enableClock = false;
                //ITW.GameMgr.setGameOver( true );

                return;
            }
        }

        if( _air > 20 && _air < 50 ){
          _airLabel.style.fill = 0xFFCC00;
          if(!_player.nearCollision) _player.updateState("danger");
          this.jonah.updateExpression(1);
        }else if( _air < 20 ){
          _airLabel.style.fill = 0xFF0000;
          this.jonah.updateExpression(2);
        }else{
          _airLabel.style.fill = 0xFFFFFF;
          this.jonah.updateExpression(0);
          if(_player.currentState !== "blink" && !_player.nearCollision) _player.updateState("normal");
        }

        if( _airCeil !== Math.ceil( _air ) ){
            _airCeil = Math.ceil( _air );
            _airLabel.text = _airCeil;

            if( _player.getSurfaceStatus() === false && (
                ( _airCeil >= 20 && _airCeil <= 50 && _airCeil % 5 === 0 ) ||
                ( _airCeil < 20 && _airCeil % 3 === 0 ) )
              ){
                _airDangerTL.restart();
                _airDangerTL.play();
            }
        }
    }

    protot.setContainerPosition = function(x,y) {
        _airContainer.position.set(x,y);
    }

    protot.destroy = function(){
        _airDangerTL.stop();
        _airDangerTL.kill();
        _super.prototype.destroy.call(this, {children: true});
    }

    return itw;
}(ITW || Object.create(null)));