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

    components.Reef = function( type ){
        this.super.call(this);

        var _init = function(){
            // init stuff here
            this._reefType = type;

            if( this._reefType === 3 ){
                this._armature = ITW.DBoneFactory.createArmature( "Seaweed" );
                this._sprMain = this._armature.display;

                this._armature.animation.gotoAndPlay( "seaweed", -1, -1, 0 );
            }
            else{
                var _texMain = EHDI.Assets.images[ "reef" + this._reefType ];
                this._sprMain = new EHDI.aka.Sprite( _texMain );
            }


            this._sprMain.x = this._sprMain.width * -0.5;
            this._sprMain.y = this._sprMain.height * -0.5;

            this.addChild( this._sprMain );

            this.x = -( this._sprMain.width * 0.5 );
            this.y = ITW.SceneMgr.getStageHeight() - ( this._sprMain.height * 0.6 );
        }.bind(this);
        _init();
    }

    protot = components.Reef.prototype = Object.create(EHDI.aka.Container.prototype);
    protot.constructor = components.Reef;
    protot.super = EHDI.aka.Container;

    protot.getCollisionArea = function(){
        switch( this._reefType ){
            case 1:
                return {
                    x: this.x - ( this._sprMain.width * 0.03 ),
                    y: this.y + ( this._sprMain.height * 0.05 ),
                    r: ( this._sprMain.width * 0.26 )
                };
                break;

            case 2:
                return {
                    x: this.x - ( this._sprMain.width * 0.085 ),
                    y: this.y - ( this._sprMain.height * 0.03 ),
                    r: ( this._sprMain.height * 0.42 )
                };
                break;

            case 3:
                return {
                    x: this.x + ( this._sprMain.width * 0.05 ),
                    y: this.y + ( this._sprMain.height * 0.05 ),
                    r: ( this._sprMain.height * 0.45 )
                };
                break;
        }
    }

    protot.resetState = function(){
        this._sprMain.scale.set( EHDI.NumberUtil.randomRange(0.5, 1) );

        this._sprMain.x = this._sprMain.width * -0.5;
        this._sprMain.y = this._sprMain.height * -0.5;

        this.x = ITW.SceneMgr.getStageWidth() + ( this._sprMain.width * 0.5 );
        this.y = ITW.SceneMgr.getStageHeight() - ( this._sprMain.height * 0.6 );

        if( ITW.GameMgr.getDebug() === true ){
            if( typeof this.pixiCircle !== "undefined" ){
                if( this.pixiCircle.parent !== null ) this.removeChild( this.pixiCircle );
            }

            this.pixiCircle = new EHDI.aka.Graphics();
            this.pixiCircle.beginFill( 0xFF00FF, 0.5 );

            switch( this._reefType ){
                case 1:
                    this.pixiCircle.drawCircle( ( -( this._sprMain.width * 0.03 ) ),
                                                ( this._sprMain.height * 0.05 ),
                                                ( this._sprMain.width * 0.26 ) );   //(x,y,radius)
                    break;

                case 2:
                    this.pixiCircle.drawCircle( ( -( this._sprMain.width * 0.085 ) ),
                                                ( -( this._sprMain.height * 0.03 ) ),
                                                ( this._sprMain.height * 0.42 ) );   //(x,y,radius)
                    break;

                case 3:
                    this.pixiCircle.drawCircle( ( this._sprMain.width * 0.05 ),
                                                ( this._sprMain.height * 0.05 ),
                                                ( this._sprMain.height * 0.45 ) );   //(x,y,radius)
                    break;
            }

            this.pixiCircle.endFill();
            this.addChild( this.pixiCircle );
        }
    }

    protot.destroy = function(){
        if( this._reefType === 3 ) ITW.DBoneFactory.destroyArmature( this._armature );
        this.super.prototype.destroy.call(this, {children: true});
    }

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