var EHDI = EHDI || Object.create(null);

EHDI.scene = EHDI.scene || Object.create(null);

EHDI.scene.TitleScene = function() {
    EHDI.aka.Container.call(this);
    this.count = 1;
}

EHDI.scene.TitleScene.prototype = Object.create(EHDI.aka.Container.prototype);

EHDI.scene.TitleScene.prototype.screenWillAppear = function() {
    var bg = new EHDI.aka.Sprite(EHDI.Assets.images["title_ls_bg"]);

    this.addChild(bg);
};

EHDI.scene.TitleScene.prototype.screenDidAppear = function() {
    EHDI.GAME.soundManager.sfxVolume = 0.5;

    this.glow = new EHDI.aka.Sprite(EHDI.Assets.images["title_ls_glow"]);
    this.glow.anchor.set(0.5, 0.5);
    this.glow.position.set(EHDI.GAME.sceneManager.getStageWidth() * 0.5, EHDI.GAME.sceneManager.getStageHeight() * 0.5);
    this.addChild(this.glow);

    this.gizmo = new EHDI.aka.Sprite(EHDI.Assets.images["title_ls_gizmo"]);
    this.gizmo.anchor.set(0.5, 0.5);
    this.gizmo.position.set(EHDI.GAME.sceneManager.getStageWidth() * 0.5, EHDI.GAME.sceneManager.getStageHeight() * 0.5);
    this.addChild(this.gizmo);

    this.thelost = new EHDI.aka.Sprite(EHDI.Assets.images["title_ls_txt_thelost"]);
    this.thelost.anchor.set(0.5, 0.5);
    this.thelost.position.set(EHDI.GAME.sceneManager.getStageWidth() * 0.55, EHDI.GAME.sceneManager.getStageHeight() * 0.425);
    this.addChild(this.thelost);

    this.sheep = new EHDI.aka.Sprite(EHDI.Assets.images["title_ls_txt_sheep"]);
    this.sheep.anchor.set(0.5, 0.5);
    this.sheep.position.set(EHDI.GAME.sceneManager.getStageWidth () * 0.5, EHDI.GAME.sceneManager.getStageHeight() * 0.525);
    this.addChild(this.sheep);

    this.left = new EHDI.aka.Sprite(EHDI.Assets.images["title_ls_sparkles1"]);
    this.left.anchor.set(0.5, 0.5);
    this.left.position.set(EHDI.GAME.sceneManager.getStageWidth() * 0.27, EHDI.GAME.sceneManager.getStageHeight() * 0.4);
    this.addChild(this.left);


    this.right = new EHDI.aka.Sprite(EHDI.Assets.images["title_ls_sparkles2"]);
    this.right.anchor.set(0.5, 0.5);
    this.right.position.set(EHDI.GAME.sceneManager.getStageWidth() * 0.7, EHDI.GAME.sceneManager.getStageHeight() * 0.625);
    this.addChild(this.right);

    this.sound = new EHDI.displays.ToggleButton(EHDI.Assets.images["btn_audio1"], EHDI.Assets.images["btn_audio3"], EHDI.Assets.images["btn_audio2"], EHDI.Assets.images["btn_audio4"], EHDI.GAME.soundManager.getMuted());
    this.sound.setOnClickFunction(this.toggleAudio);
    this.sound.position.set(EHDI.GAME.sceneManager.getStageWidth() * 0.1, EHDI.GAME.sceneManager.getStageHeight() * 0.09);

    this.addChild(this.sound);

    this.highScoreHolder = new EHDI.components.HighScoreHolder(this, EHDI.GAME.saveData.highScore);

    this.highScoreHolder.setXY(EHDI.GAME.sceneManager.getStageWidth() * 0.723, EHDI.GAME.sceneManager.getStageHeight() * 0.0417);


    this.playBtn = new EHDI.displays.Button(EHDI.Assets.images["btn_play"], EHDI.Assets.images["btn_play2"], null, null);

    this.playBtn.position.set(EHDI.GAME.sceneManager.getStageWidth() * 0.5, EHDI.GAME.sceneManager.getStageHeight() * 0.85);

    this.playBtn.visible = false;
    this.playBtn.alpha = 0;

    this.addChild(this.playBtn);

    this.playBtn.setOnClickFunction(this.startGame.bind(this));

    this.playTxt = new EHDI.aka.PixiText("PLAY", {fontFamily: 'proximanova-black', fill: 0xFFFFFF, fontSize : 32});

    this.playTxt.anchor.set(0.75, 0.5);

    this.playBtn.addChild(this.playTxt);

    /*
    if(!EHDI.GAME.debugUtils) {
        EHDI.GAME.debugUtils = new EHDI.debugUtils.debugUtilsContainer("v0.2.7");
        EHDI.GAME.sceneManager.addNotification(EHDI.GAME.debugUtils);
    }*/

    this.entranceTimeline = new TimelineMax();
    this.entranceTimeline.from(this.sheep, 0.3, {y : EHDI.GAME.sceneManager.getStageHeight() * 0.6, ease : Elastic.easeOut});
    this.entranceTimeline.from(this.thelost, 0.3, {y : EHDI.GAME.sceneManager.getStageHeight() * 0.1, ease : Bounce.easeOut}, 0);
    this.entranceTimeline.from(this.thelost, 0.3, {alpha : 0, ease : Power0.easeNone}, "-=0.4");
    this.entranceTimeline.from(this.glow.scale, 0.2, {x : 0, y : 0, ease : Back.easeOut});;
    this.entranceTimeline.add(this.loopAnimation.bind(this));
    this.entranceTimeline.to(this.playBtn, 0.1, {alpha : 1});

    EHDI.GAME.soundManager.playBGM("lostsheep_bgm");
};

EHDI.scene.TitleScene.prototype.loopAnimation = function() {
    this.loopTimeline = new TimelineMax({repeat : -1, yoyo: true});
    this.loopTimeline.to(this.gizmo, 1, {rotation : -0.1, ease : Power0.easeNone});
    this.loopTimeline.to(this.gizmo, 1, {rotation : 0, ease: Power0.easeNone} );

    this.sparkleTimeline = new TimelineMax({repeat : -1, repeatDelay : 0.5});
    this.sparkleTimeline.add(this.changeLeft.bind(this));
    this.sparkleTimeline.add(this.changeRight.bind(this), "+=0.25");

    this.playBtn.visible = true;

    this.playBtnTimeline = new TimelineMax({repeat : -1, repeatDelay : 1.5, delay : 3});
    this.playBtnTimeline.to(this.playBtn.scale, 0.1, {x : 1.1, y: 1.2});
    this.playBtnTimeline.to(this.playBtn.scale, 0.1, {x : 1, y: 1});
    this.playBtnTimeline.to(this.playBtn.scale, 0.1, {x : 1.1, y: 1.2});
    this.playBtnTimeline.to(this.playBtn.scale, 0.1, {x : 1, y: 1});

    this.playBtn.touchstart = (function(touchstart, titlescene) {
        return function() {
            titlescene.playBtn.scale.set(1, 1);
            titlescene.playBtnTimeline.pause();
            return touchstart.apply(this, arguments);
        }
    }(this.playBtn.touchstart, this));

    this.playBtn.mousedown = (function(mousedown, titlescene) {
        return function() {
            titlescene.playBtn.scale.set(1, 1);
            titlescene.playBtnTimeline.pause();
            return mousedown.apply(this, arguments);
        }
    }(this.playBtn.mousedown, this));

    this.playBtn.touchendoutside = (function(touchendoutside, titlescene) {
        return function() {
            titlescene.playBtnTimeline.restart()
            titlescene.playBtnTimeline.play();
            return touchendoutside.apply(this, arguments);
        }
    }(this.playBtn.touchendoutside, this));

    this.playBtn.mouseout = (function(mouseout, titlescene) {
        return function() {
            titlescene.playBtnTimeline.restart()
            titlescene.playBtnTimeline.play();
            return mouseout.apply(this, arguments);
        }
    }(this.playBtn.mouseout, this));
}

EHDI.scene.TitleScene.prototype.changeLeft = function() {
    this.count++;
    if(this.count > 2)
        this.count = 1;
    this.left.texture = EHDI.Assets.images["title_ls_sparkles" + this.count];
}

EHDI.scene.TitleScene.prototype.changeRight = function() {
    this.right.texture = EHDI.Assets.images["title_ls_sparkles" + this.count];
}

EHDI.scene.TitleScene.prototype.toggleAudio = function(enable) {
    EHDI.GAME.soundManager.setMute(enable);
    var cache = EHDI.GAME.storageManager.getLocalInfo(EHDI.GAME.id);
    cache.isMuted = enable;
    EHDI.GAME.storageManager.setLocalInfo(EHDI.GAME.id, cache);
}


EHDI.scene.TitleScene.prototype.startGame = function() {
    this.loopTimeline.kill();
    this.sparkleTimeline.kill();
    this.playBtnTimeline.kill();
    EHDI.GAME.soundManager.playSFX("button_sfx");
    EHDI.GAME.sceneManager.changeScene(new EHDI.scene.GameScene(), {x : new EHDI.scene.TransitionParameter(-EHDI.GAME.sceneManager.getStageWidth(), 0), duration : 0.25});
};

EHDI.scene.TitleScene.prototype.screenDidDisappear = function() {
    this.destroy({children: true});
    delete this;
}